Re: Propagating addresses from linker to the runtie

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Segher Boessenkool:

> On Fri, Oct 18, 2019 at 12:47:49PM +0200, Florian Weimer wrote:
>> >   #define symbol_set_declare(set) \
>> >     extern char const __start_##set[] __symbol_set_attribute; \
>> >     extern char const __stop_##set[] __symbol_set_attribute;
>> >
>> > Due to symbol_set_declare, those symbols expand to two unrelated
>> > symbols. Using unrelated symbols for pointer arithmetic again violates the
>> > standard.
>> 
>> Ah.  So we need more uintptr_t casts here.
>
> Using reserved names (like those starting with two underscores) is UB
> already.  And those particular names actually clash with names GNU LD
> already creates!

Well, those names are created by BFD ld for us as well.

But that doesn't mean that GNU C will do anything sensible with them.
You do not need C language extensions for that.  Some of them an
non-controversial, others less so.

>> > Thus, the issue that Martin mentioned applies here, too.
>> >
>> > To get this conforming, the linker would need to export a symbol to the start
>> > of the section and the length of the section, IMHO.
>> 
>> Right, but we do not have that today. 8-(
>
> We have had it since over 25 years:
>
> Thu Aug 18 15:37:45 1994  Ian Lance Taylor  (ian@xxxxxxxxxxxxxxxxxxx)
>
> 	Make the ELF linker handle orphaned sections reasonably.  Also,
> 	define __start_SECNAME and __stop_SECNAME around sections whose
> 	names can be represented in C, for the benefit of symbol sets in
> 	glibc.
>
> You just need to have linker scripts that do not sabotage this :-)

But it doesn't work on s390x if the section has a size that is not a
multiple of 2 because all global symbols must have alignment 2 or more
on that architecture (of course __alignof (symbol) may still say 1
because *that* has to reflect C semantics).

Thanks,
Florian



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux