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: Enable 0x10 alignment for aarch64 symbols as is done for x86_64


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

What does code fill have to do with all of this?

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

What does the output of 'nm' show for the object file that contains
the definition of __args_for_foo? I'm guessing it's not actually a
defined symbol in its own section, but a common symbol instead. There
is no way to control the allocation of common symbols in a linker
script. You can try using the GCC -fno-common option to force the
compiler to allocate uninitialized definitions in the .bss section (or
in their own .bss.* section if you are using -fdata-sections).

-cary


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