[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