https://sourceware.org/bugzilla/show_bug.cgi?id=23169
Fangrui Song <i at maskray dot me> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |i at maskray dot me --- Comment #8 from Fangrui Song <i at maskray dot me> --- Can https://sourceware.org/glibc/wiki/GNU_IFUNC to updated to document what is supported and what isn't supported? For the https://sourceware.org/bugzilla/show_bug.cgi?id=23169#c0 example, if you run: gcc -fpie -g -c -o main.o main.c gcc -fpie -g -c -o func.o func.c gcc -g -fPIC -c -o foo.o foo.c gcc -shared -o libfoo.so foo.o gcc -pie -o x main.o func.o libfoo.so -Wl,-R,. Previously, a STT_GNU_IFUNC did not need to be converted to STT_FUNC if there were only GOT-generating or PLT-generating relocations. func.o had only a GOT-generating relocation: R_X86_64_REX_GOTPCRELX. func was STT_GNU_IFUNC. After the recent GNU ld commit https://sourceware.org/bugzilla/show_bug.cgi?id=23169#c7 STT_GNU_IFUNC is converted to STT_FUNC regardless of the relocation type. func is STT_FUNC. Is the idea that (1) the main executable is relocated the last. (2) by making the main executable STT_GNU_IFUNC STT_FUNC, ifunc resolver will not be called while the main executable is unresolved (3) How does an ifunc resolver defined in another DSO work? Let the user ensures DT_NEEDED BFS order or the ld.so itself does topological sorting? -- You are receiving this mail because: You are on the CC list for the bug.