Description of Problem: $ rpm --rebuild glibc-2.2.90-3.src.rpm --target=i386 ... make -C elf subdir_lib make[2]: Wechsel in das Verzeichnis Verzeichnis ;/var/volatile/rpm/BUILD/glibc-2.2.90/elf+ gcc -nostdlib -nostartfiles -shared \ -Wl,-z,combreloc -Wl,--verbose 2>&1 | \ sed -e '/^=========/,/^=========/!d;/^=========/d' \ -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ > /usr/src/redhat/BUILD/glibc-2.2.90/build-i386-linux/elf/ld.so.lds; \ gcc -nostdlib -nostartfiles -shared -o /usr/src/redhat/BUILD/glibc-2.2.90/build-i386-linux/elf/ld.so -Wl,-z,combreloc \ /usr/src/redhat/BUILD/glibc-2.2.90/build-i386-linux/elf/librtld.os -Wl,--version-script=/usr/src/redhat/BUILD/glibc-2.2.90/build-i386-linux/ld.map \ -Wl,-soname=ld-linux.so.2 -T /usr/src/redhat/BUILD/glibc-2.2.90/build-i386-linux/elf/ld.so.lds; \ rm -f /usr/src/redhat/BUILD/glibc-2.2.90/build-i386-linux/elf/ld.so.lds /usr/bool/long: char long double restrictmsigned char`int' collect2: ld returned 1 exit status rm -f /usr/src/redhat/BUILD/glibc-2.2.90/build-i386-linux/elf/ld-linux.so.2 ln -s ld.so /usr/src/redhat/BUILD/glibc-2.2.90/build-i386-linux/elf/ld-linux.so.2 make[2]: Verlassen des Verzeichnisses Verzeichnis ;/var/volatile/rpm/BUILD/glibc-2.2.90/elf+ make[1]: *** Keine Regel vorhanden, um das Target ;/usr/src/redhat/BUILD/glibc-2.2.90/build-i386-linux/elf/ld.so+, benvtigt von ;/usr/src/redhat/BUILD/glibc-2.2.90/build-i386-linux/libc.so+, zu erstellen. Schluss. make[1]: Verlassen des Verzeichnisses Verzeichnis ;/var/volatile/rpm/BUILD/glibc-2.2.90+ make: *** [all] Fehler 2 Version-Release number of selected/related component (if applicable): glibc-2.2.90-3 binutils-2.11.92.0.12-10 gcc-3.1-0.20 Kernelheaders from vanilla 2.4.17
This is because of a bogus libiberty/cp-demangler.c change which was fixed 2 days ago. Basically, the demangler would demangle everything, even if not starting with _Z, and collect2 uses demangler on ld's output.
Fixed in gcc-3.1-0.21.