[llvm-branch-commits] [lld] ELF: Only rewrite non-preemptible IFUNCs to IPLT functions if a non-IRELATIVE relocation is needed. (PR #133531)

Peter Smith via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Apr 11 02:49:02 PDT 2025


smithp35 wrote:

I had been assuming that this patch didn't change lld behaviour from the comment in handleNonPreemptibleIfunc()

I've had some time to build and run lld on my example with this change and I notice that with this change I'm seeing the dynamic symbol table use the ifunc resolver.
```
     7: 0000000000210814    12 IFUNC   GLOBAL DEFAULT    14 ifn
```
Whereas my old lld uses
```
     7: 00000000002108d0     0 FUNC    GLOBAL DEFAULT   18 ifn
```

So as you say this will work and the comparison will go through OK. With that in mind this might be part of the reason why 3 tests are failing (visible in the CI):
  lld :: ELF/gnu-ifunc-canon.s
  lld :: ELF/ppc32-ifunc-nonpreemptible-pic.s
  lld :: ELF/ppc64-toc-relax-ifunc.s
The last one (ppc64...) looks to be crashing.

Will be good to update the comment in handleNonPreemptibleIfunc() https://github.com/llvm/llvm-project/blob/main/lld/ELF/Relocations.cpp#L1759 

https://github.com/llvm/llvm-project/pull/133531


More information about the llvm-branch-commits mailing list