This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Enable 0x10 alignment for aarch64 symbols as is done for x86_64
- From: K Jski <bielsk1 at vt dot edu>
- To: Cary Coutant <ccoutant at gmail dot com>
- Cc: Binutils <binutils at sourceware dot org>, Antonio Barbalace <antoniob at vt dot edu>
- Date: Thu, 16 Apr 2015 18:16:44 -0400
- Subject: Re: Enable 0x10 alignment for aarch64 symbols as is done for x86_64
- Authentication-results: sourceware.org; auth=none
- References: <CAH=yU0YozLe6hgeQK_1ni8CWT9Na6U2WV3GYgFE-moq46DEqfQ at mail dot gmail dot com> <CAJimCsHhQfsTh4GnzAajB_P5foDxew9utz606T=0z8sLQ1eGew at mail dot gmail dot com> <CAH=yU0YLyuR72bQwQZ6Zw4OvkMj3wZOc_bmBeV_6xAju=r+NCQ at mail dot gmail dot com> <CAH=yU0bDBTzPUQssERB=THs-6HzH1Q2SmAtzgzH2bJ+i9ofzYA at mail dot gmail dot com> <CAJimCsGDiYipS4fzAJaWBg77QHc1_SbXQGH0Q_Wu6-FARB7bfA at mail dot gmail dot com> <CAH=yU0YcrNWUN=K9xD6Dg8uAZ=hA5H6WE+gOZ-e82iSAzT5NyA at mail dot gmail dot com> <CAH=yU0ZtcEjmp4EjqBdSk+J36m1G79x2rOKbDG1waTVt8FfN6g at mail dot gmail dot com> <CAJimCsGFFZkniJCwJe0ifA9e2VX8Jy7ThFpLwoDNiWAdfW-djw at mail dot gmail dot com>
To put a long story short, I am trying to create an alignment tool for
x86_64/ aarch64 binaries to align sections/symbols to be at the same
addresses within both binaries (to enable cross architecture migration
of the program, this way both architectures have the same symbol
alignment when moving the program between ISAs and will access the
correct address when on either system). I am also providing gold with
a linker script to align .text, .rodata, .data, and .bss symbols.
e.g. function foo, will be at 0x4100000 for both the x86 binary and
aarch64 binary, as well as __args_for_foo will be at 0x4f0030 within
both the x86 and aarch64 binary, etc.
For the time being I've copied over the x86_64 implementation of
Target_aarch64::do_code_fill() into aarch64.cc so that it is still
possible to fille the section with something.
The actual problem I am running into is that I am finding I have no
control over alignment of bss symbols even though I have wrote it in
the linker script.
e.g. __args_for_foo is at 0x4f00238 on aarch64 (not aligned) and is at
0x4f00240 on x86_64 (aligned to 0x10)
even though I have :
. = ALIGN(0x10);
*(.bss.__args_for_foo);
within the bss section of the aarch64 linker script.
Sincerely,
Chris
On Thu, Apr 16, 2015 at 6:01 PM, Cary Coutant <ccoutant@gmail.com> wrote:
>> Another more direct question is:
>> Where are code fill sections inserted? At what point are this->table_
>> elements put into the Output_section::Input_section object that has
>> access via "this->input_sections()"
>>
>> There are no relo's in my code, i am linking statically also btw.
>
> I'm concerned that I still don't know what you're really trying to
> accomplish, and that you may be headed down the wrong path. If you can
> describe what problem you're trying to solve, I might be able to help.
>
> -cary