[Bug 919819] New: ld failure with error: corrupted double-linked list
http://bugzilla.opensuse.org/show_bug.cgi?id=919819 Bug ID: 919819 Summary: ld failure with error: corrupted double-linked list Classification: openSUSE Product: openSUSE Distribution Version: 13.2 Hardware: 32bit OS: openSUSE 13.2 Status: NEW Severity: Normal Priority: P5 - None Component: Development Assignee: bnc-team-screening@forge.provo.novell.com Reporter: comes@naic.edu QA Contact: qa-bugs@suse.de Found By: --- Blocker: --- On a 32-bit 13.2 installation while I try to compile the latest libsodium (https://github.com/jedisct1/libsodium/releases) during the execution of configure there is the following error: checking if gcc -std=gnu99 static flag -static works... *** Error in `/usr/lib/gcc/i586-suse-linux/4.8/../../../../i586-suse-linux/bin/ld': corrupted double-linked list: 0x0a611508 *** whith ps -ef I see this process hanging: root 16214 16213 0 17:46 pts/0 00:00:00 /usr/lib/gcc/i586-suse-linux/4.8/../../../../i586-suse-linux/bin/ld --build-id -m elf_i386 -static -pie -o conftest /usr/lib/gcc/i586-suse-linux/4.8/../../../Scrt1.o /usr/lib/gcc/i586-suse-linux/4.8/../../../crti.o /usr/lib/gcc/i586-suse-linux/4.8/crtbeginT.o -L/usr/lib/gcc/i586-suse-linux/4.8 -L/usr/lib/gcc/i586-suse-linux/4.8/../../../../i586-suse-linux/lib -L/usr/lib/gcc/i586-suse-linux/4.8/../../.. -z relro -z now -z noexecstack /tmp/cchSl2a7.o --start-group -lgcc -lgcc_eh -lc --end-group /usr/lib/gcc/i586-suse-linux/4.8/crtendS.o /usr/lib/gcc/i586-suse-linux/4.8/../../../crtn.o once I kill it, configure continue and complete without other error. This happens only on 32-bit, no problem on 64-bit. Tested in a VM and real hardware. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=919819
Bernhard Wiedemann
http://bugzilla.opensuse.org/show_bug.cgi?id=919819
Giacomo Comes
http://bugzilla.opensuse.org/show_bug.cgi?id=919819
--- Comment #5 from Giacomo Comes
Confirmed. The issue is combining -pie -fPIE and -static. On x86_64 you instead get
gcc -o ct -fPIE -pie -static t.c /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/gcc/x86_64-suse-linux/4.8/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC /usr/lib64/gcc/x86_64-suse-linux/4.8/crtbeginT.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
that's because there isn't a PIE static crtbegin.o. On i?86 you are just lucky. Combining PIE and -static is simply not supported.
Tha fact that it is not supported is just fine. The problem is that configure hangs and do not complete on 32-bit. That's because ld does not terminate with an error but it hangs. You need to kill the ld process in order to let configure continue.
New linker from Factory seems to handle this fine (in some sense - it produces a shared object with no dependencies).
What is the configure test testing?
checking if gcc -std=gnu99 static flag -static works. The answer should be no, but on 32-bit it never gets there. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=919819
--- Comment #9 from Giacomo Comes
participants (1)
-
bugzilla_noreply@novell.com