This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ALIGN directive showing different behavior than documented


On 08/01/2015 01:41 AM, Alan Modra wrote:

The change in ALIGN behaviour only affected those ". = ALIGN (8)"
statements, not the align on the section here:
   .cs3.internalram : ALIGN (8)
Yet the LMA for .cs3.internalram has changed.  This indicates to me
that something before the snippet you posted caused the problem.

Hmmmm, yes.  Backing up a bit, I see that this in the linker script:

  .rodata : ALIGN (4)
  {
    ...
    __cs3_regions_end = .;
    . = ALIGN (8);
    _etext = .;
  } >rom

gives this map output without the patch:
                0xa00003b8                __cs3_regions_end = .
                0xa00003b8                . = ALIGN (0x8)
                0xa00003b8                _etext = .

and this with it:
                0xa00003b8                __cs3_regions_end = .
                0xa00003bc                . = ALIGN (0x8)
 *fill*         0xa00003b8        0x4
                0xa00003bc                _etext = .

That ALIGN directive is definitely doing the wrong thing -- "." is already aligned and inserting the fill is making it unaligned. :-(

I'm not sure how the LMA is going backwards.  Even if
.cs3.internalram.bss was stripped from the output, it still should
have its LMA updated on each phase of lang_size_sections.  Can you
post a complete testcase?

It'll take me a while to reduce the example to something standalone (not requiring libraries, etc), but I've attached the full linker script and map files. This is for arm-none-eabi target, BTW, but I don't think that should matter in terms of linker script processing.

-Sandra

Attachment: imx31-rom.ld
Description: Text document

Attachment: patched.map
Description: Text document

Attachment: reverted.map
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]