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] | |
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] |