[SLOF] [PATCH] Align stage2 TOC to 256 bytes for binutils 2.25.1.

Alexey Kardashevskiy aik at ozlabs.ru
Thu Oct 22 12:45:53 AEDT 2015


On 10/22/2015 11:39 AM, Alexey Kardashevskiy wrote:
> On 10/09/2015 03:22 PM, William Grant wrote:
>> 2.25.1 changed BFD to align the TOC to 256 rather than 8 bytes, so
>> __toc_start pointed to the wrong place and stage2's TOC references were
>> wrong. This caused an inevitable crash just after entering C.
>
>
> "sob" is missing, could you please repost it?
> Otherwise it is good.

Although the patch itself does not seem to be the problem, new binutils (or 
new gcc - 5.2.1) compile SLOF which cannot boot over the net which works 
with "gcc version 4.8.3 20140911 (Red Hat 4.8.3-7) (GCC)".


Nikunj,

could you please take a look?


/home/aik/qemu-system-ppc64 -enable-kvm -m 2048 -machine pseries -nographic 
-vga none -boot strict=on -netdev user,id=id3,hostfwd=tcp::5000-:22 -device 
e1000,id=id4,netdev=id3,bootindex=1 -bios ./slof-binutils-2-25-51.bin



SLOF **********************************************************************
QEMU Starting
  Build Date = Oct 22 2015 11:18:36
  FW Version = git-9ecf0ae95ece078a
  Press "s" to enter Open Firmware.

Populating /vdevice methods
Populating /vdevice/vty at 71000000
Populating /vdevice/nvram at 71000001
Populating /vdevice/v-scsi at 71000002
        SCSI: Looking for devices
           8200000000000000 CD-ROM   : "QEMU     QEMU CD-ROM      2.4."
Populating /pci at 800000020000000
                      00 0000 (D) : 8086 100e    e1000 [ net ]
No NVRAM common partition, re-initializing...
Scanning USB
Using default console: /vdevice/vty at 71000000

   Welcome to Open Firmware

   Copyright (c) 2004, 2011 IBM Corporation All rights reserved.
   This program and the accompanying materials are made available
   under the terms of the BSD License available at
   http://www.opensource.org/licenses/bsd-license.php


Trying to load:  from: /pci at 800000020000000/ethernet at 0 ...

( 700 ) Program Exception [ 4c ]


     R0 .. R7           R8 .. R15         R16 .. R23         R24 .. R31
000000007eae190c   0000000000000020   0000000000000000   0000000000000000
000000007ebf0d10   0000000000000001   0000000000000000   0000000000000000
000000007eaf8870   000000007eaeea40   0000000000000000   0000000000000000
000000007ebf0e00   0000000000000108   0000000000000000   0000000000000000
000000007ebf0f90   000000007fb977c8   0000000000000000   000000007ebf0f70
000000000000004c   0000000000000000   0000000000000000   0000000000000000
0000000000000000   0000000000000000   0000000000000000   0000000000000000
000000007dbe04f0   0000000000000000   0000000000000000   000000007eaeea50

     CR / XER           LR / CTR          SRR0 / SRR1        DAR / DSISR
         80000004   000000007eae2918   000000007ebf0f90   0000000000000000
0000000000000000   000000007ebf0f90   8000000000083000           00000000


3 >



>
>
>> ---
>>   board-js2x/llfw/stage2.lds | 3 ++-
>>   board-qemu/llfw/stage2.lds | 3 ++-
>>   2 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/board-js2x/llfw/stage2.lds b/board-js2x/llfw/stage2.lds
>> index f91f065..f60cf5a 100644
>> --- a/board-js2x/llfw/stage2.lds
>> +++ b/board-js2x/llfw/stage2.lds
>> @@ -41,7 +41,8 @@ SECTIONS {
>>           *(.bss)
>>       }
>>
>> -    . = ALIGN(8);
>> +    /* binutils >= 2.25.1 require the TOC to be 256-byte aligned. */
>> +    . = ALIGN(256);
>>       __bss_end = .;
>>       __bss_size = (__bss_end - __bss_start);
>>
>> diff --git a/board-qemu/llfw/stage2.lds b/board-qemu/llfw/stage2.lds
>> index e060dd1..002b871 100644
>> --- a/board-qemu/llfw/stage2.lds
>> +++ b/board-qemu/llfw/stage2.lds
>> @@ -45,7 +45,8 @@ SECTIONS {
>>           *(.bss)
>>       }
>>
>> -    . = ALIGN(8);
>> +    /* binutils >= 2.25.1 require the TOC to be 256-byte aligned. */
>> +    . = ALIGN(256);
>>       __bss_end = .;
>>       __bss_size = (__bss_end - __bss_start);
>
>


-- 
Alexey


More information about the SLOF mailing list