Support building glibc with gold 1.14 or above [BZ #14995]
This patch changes configure.ac to allow gold 1.14 or above to be used
to configire glibc so that gold glibc bugs can be fixed. Tested with
CC="gcc -fuse-ld=gold" CXX="g++ -fuse-ld=gold"
on Fedora 25 with gold 1.14 (
20170623). Gold 1.14 was first released
in binutils 2.28.
On x86-64, for "make check", I got
Error in `/export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload1': double free or corruption (fasttop): 0x00000000008755f0 ***
======= Backtrace: =========
/export/build/gnu/glibc-gold/build-x86_64-linux/libc.so.6(+0x772fb)[0x7f85225b52fb]
/export/build/gnu/glibc-gold/build-x86_64-linux/libc.so.6(+0x7d6c6)[0x7f85225bb6c6]
/export/build/gnu/glibc-gold/build-x86_64-linux/libc.so.6(+0x7df0e)[0x7f85225bbf0e]
/export/build/gnu/glibc-gold/build-x86_64-linux/dlfcn/libdl.so.2(+0x182d)[0x7f85226e682d]
/export/build/gnu/glibc-gold/build-x86_64-linux/dlfcn/libdl.so.2(dlclose+0x1f)[0x7f85226e623f]
/export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload2.so(+0x933)[0x7f8522539933]
/export/build/gnu/glibc-gold/build-x86_64-linux/elf/ld.so(+0xfd1a)[0x7f85226fbd1a]
/export/build/gnu/glibc-gold/build-x86_64-linux/libc.so.6(+0x3c5e0)[0x7f852257a5e0]
/export/build/gnu/glibc-gold/build-x86_64-linux/libc.so.6(+0x3c63a)[0x7f852257a63a]
/export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload2.so(+0x9aa)[0x7f85225399aa]
/export/build/gnu/glibc-gold/build-x86_64-linux/elf/ld.so(+0xf74a)[0x7f85226fb74a]
/export/build/gnu/glibc-gold/build-x86_64-linux/elf/ld.so(+0xf85b)[0x7f85226fb85b]
/export/build/gnu/glibc-gold/build-x86_64-linux/elf/ld.so(+0x13e98)[0x7f85226ffe98]
/export/build/gnu/glibc-gold/build-x86_64-linux/libc.so.6(_dl_catch_error+0x71)[0x7f85226643c1]
/export/build/gnu/glibc-gold/build-x86_64-linux/elf/ld.so(+0x13639)[0x7f85226ff639]
/export/build/gnu/glibc-gold/build-x86_64-linux/dlfcn/libdl.so.2(+0x1156)[0x7f85226e6156]
/export/build/gnu/glibc-gold/build-x86_64-linux/libc.so.6(_dl_catch_error+0x71)[0x7f85226643c1]
/export/build/gnu/glibc-gold/build-x86_64-linux/dlfcn/libdl.so.2(+0x1789)[0x7f85226e6789]
/export/build/gnu/glibc-gold/build-x86_64-linux/dlfcn/libdl.so.2(dlopen+0x32)[0x7f85226e61e2]
/export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload1[0x4009ca]
/export/build/gnu/glibc-gold/build-x86_64-linux/libc.so.6(__libc_start_main+0xf1)[0x7f8522565231]
/export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload1[0x400a5a]
======= Memory map: ========
00400000-
00401000 r-xp
00000000 08:11
26334965 /export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload1
00401000-
00402000 r--p
00000000 08:11
26334965 /export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload1
00402000-
00403000 rw-p
00001000 08:11
26334965 /export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload1
00875000-
00896000 rw-p
00000000 00:00 0 [heap]
7f851c000000-
7f851c021000 rw-p
00000000 00:00 0
7f851c021000-
7f8520000000 ---p
00000000 00:00 0
7f85222f3000-
7f8522309000 r-xp
00000000 08:02 136658 /usr/lib64/libgcc_s-6.3.1-
20170216.so.1
7f8522309000-
7f8522508000 ---p
00016000 08:02 136658 /usr/lib64/libgcc_s-6.3.1-
20170216.so.1
7f8522508000-
7f8522509000 r--p
00015000 08:02 136658 /usr/lib64/libgcc_s-6.3.1-
20170216.so.1
7f8522509000-
7f852250a000 rw-p
00016000 08:02 136658 /usr/lib64/libgcc_s-6.3.1-
20170216.so.1
7f8522539000-
7f852253a000 r-xp
00000000 08:11
26334619 /export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload2.so
7f852253a000-
7f852253b000 r--p
00000000 08:11
26334619 /export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload2.so
7f852253b000-
7f852253c000 rw-p
00001000 08:11
26334619 /export/build/gnu/glibc-gold/build-x86_64-linux/elf/constload2.so
7f852253c000-
7f852253e000 rw-p
00000000 00:00 0
7f852253e000-
7f85226da000 r-xp
00000000 08:11
26309973 /export/build/gnu/glibc-gold/build-x86_64-linux/libc.so
7f85226da000-
7f85226db000 ---p
0019c000 08:11
26309973 /export/build/gnu/glibc-gold/build-x86_64-linux/libc.so
7f85226db000-
7f85226de000 r--p
0019c000 08:11
26309973 /export/build/gnu/glibc-gold/build-x86_64-linux/libc.so
7f85226de000-
7f85226e1000 rw-p
0019f000 08:11
26309973 /export/build/gnu/glibc-gold/build-x86_64-linux/libc.so
7f85226e1000-
7f85226e5000 rw-p
00000000 00:00 0
7f85226e5000-
7f85226e8000 r-xp
00000000 08:11
26313777 /export/build/gnu/glibc-gold/build-x86_64-linux/dlfcn/libdl.so
7f85226e8000-
7f85226e9000 r--p
00002000 08:11
26313777 /export/build/gnu/glibc-gold/build-x86_64-linux/dlfcn/libdl.so
7f85226e9000-
7f85226ea000 rw-p
00003000 08:11
26313777 /export/build/gnu/glibc-gold/build-x86_64-linux/dlfcn/libdl.so
7f85226ea000-
7f85226ec000 rw-p
00000000 00:00 0
7f85226ec000-
7f8522711000 r-xp
00000000 08:11
26309972 /export/build/gnu/glibc-gold/build-x86_64-linux/elf/ld.so
7f8522711000-
7f8522712000 rw-p
00000000 00:00 0
7f8522712000-
7f8522713000 r--p
00025000 08:11
26309972 /export/build/gnu/glibc-gold/build-x86_64-linux/elf/ld.so
7f8522713000-
7f8522714000 rw-p
00026000 08:11
26309972 /export/build/gnu/glibc-gold/build-x86_64-linux/elf/ld.so
7f8522714000-
7f8522715000 rw-p
00000000 00:00 0
7ffc5a2bd000-
7ffc5a2df000 rw-p
00000000 00:00 0 [stack]
7ffc5a32c000-
7ffc5a32e000 r--p
00000000 00:00 0 [vvar]
7ffc5a32e000-
7ffc5a330000 r-xp
00000000 00:00 0 [vdso]
ffffffffff600000-
ffffffffff601000 r-xp
00000000 00:00 0 [vsyscall]
and
make[4]: *** [/export/build/gnu/glibc-gold/build-x86_64-linux/elf/vismain] Error 1
This is because gold doesn't support protected data symbols:
configure:5672: checking linker support for protected data symbol
configure:5682: gcc -fuse-ld=gold -nostdlib -nostartfiles -fno-stack-protector -fPIC -shared conftest.c -o conftest.so
configure:5685: $? = 0
configure:5692: gcc -fuse-ld=gold -nostdlib -nostartfiles -fno-stack-protector conftest.c -o conftest conftest.so
/usr/local/bin/ld.gold: error: /tmp/ccXWoofs.o: cannot make copy relocation for protected symbol 'bar', defined in conftest.so
collect2: error: ld returned 1 exit status
make[4]: *** [/export/build/gnu/glibc-gold/build-x86_64-linux/elf/tst-split-dynreloc] Error 1
This is because gold doesn't support INSERT in linker script:
https://sourceware.org/bugzilla/show_bug.cgi?id=21676
The total failures are
FAIL: dlfcn/bug-dl-leaf
FAIL: elf/constload1
FAIL: elf/global
FAIL: elf/ifuncmain1
FAIL: elf/ifuncmain1pic
FAIL: elf/ifuncmain1pie
FAIL: elf/ifuncmain1vis
FAIL: elf/ifuncmain1vispic
FAIL: elf/ifuncmain1vispie
FAIL: elf/ifuncmain3
FAIL: elf/initfirst
FAIL: elf/preloadtest
FAIL: elf/tst-audit11
FAIL: elf/tst-audit12
FAIL: elf/tst-audit4
FAIL: elf/tst-audit5
FAIL: elf/tst-audit6
FAIL: elf/tst-audit7
FAIL: elf/tst-dlmodcount
FAIL: elf/tst-dlmopen1
FAIL: elf/tst-dlmopen3
FAIL: elf/tst-dlopenrpath
FAIL: elf/tst-latepthread
FAIL: elf/tst-leaks1-mem
FAIL: elf/tst-nodelete-dlclose
FAIL: elf/unload6
FAIL: nss/test-netdb
FAIL: nss/tst-nss-test1
FAIL: posix/tst-getaddrinfo5
[BZ #14995]
* configure.ac: Allow gold 1.14 or above to configire glibc
* configure: Regenerated.