[Bug target/68178] [arm] Relative address expressions bind at as-time, even if symbol is weak

rearnsha at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Nov 2 17:18:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68178

--- Comment #5 from Richard Earnshaw <rearnsha at gcc dot gnu.org> ---
This particular case is a very specific situation.

A definition of foo is guaranteed to exist (you've provided one); but it can be
overridden.

The definition (due to the use of hidden) has to exist in this share library.

Given the above, we can never get to the situation where the symbol could
resolve to null, nor could we ever get to the situation where the offset to the
definition can't be calculated when linking the shared library.  That makes it
perfectly reasonable to use a pc-relative relocation from within the literal
pool to hold the offset.

It's quite possible that with a subtle change to the conditions you could end
up requiring the compiler to generate another code sequence, but not in this
case.


More information about the Gcc-bugs mailing list