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

Alexey Kardashevskiy aik at ozlabs.ru
Mon Oct 26 16:58:18 AEDT 2015


On 10/26/2015 04:32 PM, Nikunj A Dadhania wrote:
> Alexey Kardashevskiy <aik at ozlabs.ru> writes:
>
>> On 10/25/2015 01:27 AM, Segher Boessenkool wrote:
>>> On Thu, Oct 22, 2015 at 12:45:53PM +1100, Alexey Kardashevskiy wrote:
>>>> ( 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
>>>
>>> Where does this 7ebf0f90 point?  It seems to be on the stack, not likely
>>> a good place to jump.  The link register (7eae2918) will probably help
>>> you find the code that did the wrong jump.
>>>
>>>
>>> Segher
>>>
>>
>> At least this is missing:
>>
>> diff --git a/clients/net-snk/client.lds b/clients/net-snk/client.lds
>> index ab013d5..4deec66 100644
>> --- a/clients/net-snk/client.lds
>> +++ b/clients/net-snk/client.lds
>> @@ -44,7 +44,7 @@ SECTIONS {
>>             *(.opd)
>>           }
>>
>> -       . = ALIGN(0x10);
>> +       . = ALIGN(0x100);
>>
>>           .got :
>>
>>
>> what else is missing and just does not hit us yet...
>
>
> $ find ./ -name "*.lds" -type f | xargs grep -in ALIGN
>
> And filtering less than 256


No, this is only about .toc, I received a lesson from Paul (Alan got 
another one :) ) and will rework the original patch. Here is some explanation:
https://sourceware.org/ml/binutils/2015-10/msg00124.html


>
> ./slof/OF.lds:27:	. = ALIGN(8);
> ./slof/OF.lds:36:	. = ALIGN(8);
> ./slof/OF.lds:51:	. = ALIGN(8);
> ./board-js2x/llfw/stage2.lds:24:	. = ALIGN(8);
> ./board-js2x/llfw/stage2.lds:36:	. = ALIGN(8);
> ./board-js2x/llfw/stage2.lds:44:	. = ALIGN(8);
> ./board-js2x/llfw/stage2.lds:53:	. = ALIGN(8);
> ./clients/takeover/client.lds:46:	  . = ALIGN(8);
> ./clients/net-snk/client.lds:32:	. = ALIGN(0x10);
> ./clients/net-snk/client.lds:41:	. = ALIGN(0x10);
> ./clients/net-snk/client.lds:47:	. = ALIGN(0x10);
> ./clients/net-snk/client.lds:65:	. = ALIGN(0x10);
> ./clients/net-snk/client.lds:69:	. = ALIGN(0x10);
> ./clients/net-snk/sec-client.lds:33:	  . = ALIGN(8);
> ./board-qemu/llfw/stage2.lds:28:	. = ALIGN(8);
> ./board-qemu/llfw/stage2.lds:40:	. = ALIGN(8);
> ./board-qemu/llfw/stage2.lds:48:	. = ALIGN(8);
> ./board-qemu/llfw/stage2.lds:57:	. = ALIGN(8);
> ./rtas/rtas.lds:36:	  . = ALIGN(4);
>
> Regards
> Nikunj
>


-- 
Alexey


More information about the SLOF mailing list