[GLIBC][AARCH64]Rewrite elf_machine_load_address using _DYNAMIC symbol

Szabolcs Nagy szabolcs.nagy@arm.com
Mon Nov 7 15:52:00 GMT 2016


On 07/11/16 15:23, Szabolcs Nagy wrote:
> On 07/11/16 15:15, Szabolcs Nagy wrote:
>> On 04/11/16 21:24, Roland McGrath wrote:
>>> On many or perhaps all machines, elf_machine_load_address could now be
>>> implemented purely in C by using a link-time trick.
>>>
>>> In C, just:
>>>
>>> 	static inline ElfW(Addr) __attribute__ ((unused))
>>> 	elf_machine_load_address (void)
>>> 	{
>>> 	  extern const char _BASE[] __attribute__ ((visibility ("hidden")));
>>> 	  return (ElfW(Addr)) _BASE;
>>> 	}
>>>
>>> Then add a trivial input linker script to the ld.so link:
>>>
>>> 	PROVIDE_HIDDEN(_BASE = 0);
> 
> on a second thought:
> why is it not ok to use _DYNAMIC instead of _BASE?
> 
> then no linker script is needed (_DYNAMIC is in the elf spec).
> 

hidden symbol is not accessed with direct pc relative addressing on mips

so this approach does not work in general.



More information about the Libc-alpha mailing list