Summary: | Missing IFUNC support is not detected for gcc --enable-default-pie, breaks at least ia64 target | ||
---|---|---|---|
Product: | glibc | Reporter: | Sergei Trofimovich <slyich> |
Component: | dynamic-link | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | vapier |
Priority: | P2 | Flags: | fweimer:
security-
|
Version: | 2.27 | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Last reconfirmed: |
Description
Sergei Trofimovich
2017-12-20 08:37:53 UTC
As I understand we need a few moving parts to make IFUNC to work: 1. binutils gas frontend to parse '.type foo,%gnu_indirect_function' statement Status: works everywhere? (assume new binutils) 2. binutils gas backend to generate relevant relocations with symbol type IFUNC Status: works everywhere? (assume new binutils) 3. binutils ld to convert IFUNC into dynamic relocation, like R_X86_64_IRELATIV Status: architecture dependent. Not all target have relocation assigned but ld does not fail on IFUNC symbols and converts them into something that does not work. Why? 4. glibc runtime loader to handle R_.+_IRELATIV relocations Status: architeture dependent? Worth filing a separate bug report for [3.] against ld? The master branch has been updated by Adhemerval Zanella <azanella@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=460860f457e2a889785c506e8c77d4a7dff24d3e commit 460860f457e2a889785c506e8c77d4a7dff24d3e Author: Adhemerval Zanella <adhemerval.zanella@linaro.org> Date: Mon Jan 8 10:21:17 2024 -0300 Remove ia64-linux-gnu Linux 6.7 removed ia64 from the official tree [1], following the general principle that a glibc port needs upstream support for the architecture in all the components it depends on (binutils, GCC, and the Linux kernel). Apart from the removal of sysdeps/ia64 and sysdeps/unix/sysv/linux/ia64, there are updates to various comments referencing ia64 for which removal of those references seemed appropriate. The configuration is removed from README and build-many-glibcs.py. The CONTRIBUTED-BY, elf/elf.h, manual/contrib.texi (the porting mention), *.po files, config.guess, and longlong.h are not changed. For Linux it allows cleanup some clone2 support on multiple files. The following bug can be closed as WONTFIX: BZ 22634 [2], BZ 14250 [3], BZ 21634 [4], BZ 10163 [5], BZ 16401 [6], and BZ 11585 [7]. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43ff221426d33db909f7159fdf620c3b052e2d1c [2] https://sourceware.org/bugzilla/show_bug.cgi?id=22634 [3] https://sourceware.org/bugzilla/show_bug.cgi?id=14250 [4] https://sourceware.org/bugzilla/show_bug.cgi?id=21634 [5] https://sourceware.org/bugzilla/show_bug.cgi?id=10163 [6] https://sourceware.org/bugzilla/show_bug.cgi?id=16401 [7] https://sourceware.org/bugzilla/show_bug.cgi?id=11585 Reviewed-by: Carlos O'Donell <carlos@redhat.com> Looking at the current `configure.ac` it's already fixed with: commit 87a698a21646b7ee620923ef5ffa9735471a8ddd Author: Fangrui Song <maskray@google.com> Date: Tue Feb 4 21:55:44 2020 -0800 Improve IFUNC check [BZ #25506] *** This bug has been marked as a duplicate of bug 25506 *** |