aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-02-28 10:46:14 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-02-28 13:58:08 -0300
commitb5b7fb76e15c0db545aa11a3ce88f836e5d01a19 (patch)
treef8bd338ae575d200bc8742b5e7c6687a64b16d23 /elf
parent4068b54c702113905427bf0fd698c93081e9d672 (diff)
downloadglibc-b5b7fb76e15c0db545aa11a3ce88f836e5d01a19.tar
glibc-b5b7fb76e15c0db545aa11a3ce88f836e5d01a19.tar.gz
glibc-b5b7fb76e15c0db545aa11a3ce88f836e5d01a19.tar.bz2
glibc-b5b7fb76e15c0db545aa11a3ce88f836e5d01a19.zip
i386: Use comdat instead of .gnu.linkonce for i386 setup pic register (BZ #20543)
GCC has moved from using .gnu.linkonce for i386 setup pic register with minimum current version (as for binutils minimum binutils that support comdat). Trying to pinpoint when binutils has added comdat support for i686, it seems it was around 2004 [1]. I also checking with some ancient binutils older than 2.16 I see: test.o: In function `__x86.get_pc_thunk.bx': test.o(.text.__x86.get_pc_thunk.bx+0x0): multiple definition of `__x86.get_pc_thunk.bx' /usr/lib/gcc/x86_64-linux-gnu/5/../../../i386-linux-gnu/crti.o(.gnu.linkonce.t.__x86.get_pc_thunk.bx+0x0): first defined here Which seems that such version can not handle either comdat at all or a mix of linkonce and comdat. For binutils 2.16.1 I am getting a different issue trying to link a binary with and more recent ctri.o (unrecognized relocation (0x2b) in section `.init', which is R_386_GOT32X and old binutils won't generate it anyway). So I think that either unlikely someone will use an older binutils than the one used to glibc and even this scenario may fail with some issue as the R_386_GOT32X. Also, 2.16.1 is quite old and not really supported (glibc itself required 2.25). Checked on i686-linux-gnu. [1] https://gcc.gnu.org/ml/gcc/2004-05/msg00030.html
Diffstat (limited to 'elf')
0 files changed, 0 insertions, 0 deletions