https://sourceware.org/bugzilla/show_bug.cgi?id=32443
H.J. Lu <hjl.tools at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Blocks| |25749
CC| |hjl.tools at gmail dot com
Status|UNCONFIRMED |WAITING
Last reconfirmed| |2025-05-10
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Stephen Kell from comment #0)
> Created attachment 15835 [details]
> reproducer
>
> If I define an ABS symbol preemptibly in a shared object, such that its GOT
> entry is relocated by the ld.so and a `R_*_GLOB_DAT` relocation, the ABS
> symbol takes the value I expect.
> ```
> $ grep . exe.c lib.c lib.lds
> exe.c:extern void lib_func(void);
> exe.c:int main(void)
> exe.c:{
> exe.c: lib_func();
> exe.c:}
> lib.c:#include <stdio.h>
> lib.c:extern void value;
If the above line is changed to:
extern void value __attribute__ ((visibility("hidden")));
what should be the expected behavior?
> lib.c:void lib_func(void)
> lib.c:{
> lib.c: printf("In lib, value is %lx\n", (long) &value);
> lib.c:}
> lib.lds:PROVIDE (value = 42);
> $ cc -fPIC -shared -o lib.so lib.c lib.lds -Wl,-rpath,`pwd`
> $ cc -fPIC -o exe exe.c lib.so -Wl,-rpath,`pwd`
> $ ./exe
> exe: In lib, value is 2a
> ```
>
Referenced Bugs:
https://sourceware.org/bugzilla/show_bug.cgi?id=25749
[Bug 25749] Non-const relocation against SHN_ABS symbol in PIE or shared
library should be disallowed
--
You are receiving this mail because:
You are on the CC list for the bug.