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.

Reply via email to