Description of problem: When rebuilding java-1.6.0-openjdk-1.6.0.0-51.1.9.5.fc15 on x86_64 adlc segfaults when ld is set to gold: [...] g++ -m64 -Xlinker -O1 -Wl,--hash-style=both -m64 -export-dynamic -o ../generated/adfiles/adlc ../generated/adfiles/adlparse.o ../generated/adfiles/archDesc.o ../generated/adfiles/arena.o ../generated/adfiles/dfa.o ../generated/adfiles/dict2.o ../generated/adfiles/filebuff.o ../generated/adfiles/forms.o ../generated/adfiles/formsopt.o ../generated/adfiles/formssel.o ../generated/adfiles/main.o ../generated/adfiles/adlc-opcodes.o ../generated/adfiles/output_c.o ../generated/adfiles/output_h.o /usr/bin/ld: warning: cannot find entry symbol 'xport-dynamic' ../generated/adfiles/adlc -DLINUX -D_GNU_SOURCE -DAMD64 -q -T -g -D_LP64 ../generated/adfiles/linux_x86_64.ad \ -c../generated/adfiles/mktmp18097/ad_x86_64.cpp -h../generated/adfiles/mktmp18097/ad_x86_64.hpp -a../generated/adfiles/mktmp18097/dfa_x86_64.cpp -v../generated/adfiles/mktmp18097/adGlobals_x86_64.hpp \ || { rm -rf ../generated/adfiles/mktmp18097; exit 1; } /bin/sh: line 2: 18153 Segmentation fault (core dumped) ../generated/adfiles/adlc -DLINUX -D_GNU_SOURCE -DAMD64 -q -T -g -D_LP64 ../generated/adfiles/linux_x86_64.ad -c../generated/adfiles/mktmp18097/ad_x86_64.cpp -h../generated/adfiles/mktmp18097/ad_x86_64.hpp -a../generated/adfiles/mktmp18097/dfa_x86_64.cpp -v../generated/adfiles/mktmp18097/adGlobals_x86_64.hpp make[7]: *** [refresh_adfiles] Error 1 From To Syms Read Shared Object Library 0x0000003993659410 0x00000039936c1c8a No /usr/lib64/libstdc++.so.6 0x0000003992a03ef0 0x0000003992a43a9c No /lib64/libm.so.6 0x0000003992202880 0x0000003992211fac No /lib64/libgcc_s.so.1 0x000000399121eb60 0x00000039913428cc No /lib64/libc.so.6 0x0000003990e00b20 0x0000003990e1929a No /lib64/ld-linux-x86-64.so.2 0x00007fff7d3e9600 0x00007fff7d3e9990 No /lib/modules/2.6.38-0.rc4.git0.1.fc15.x86_64/vdso/vdso.so No symbol "__abort_msg" in current context. No symbol "__glib_assert_msg" in current context. rax 0x1c 28 rbx 0x0 0 rcx 0x20 32 rdx 0x3990e0ed30 247243795760 rsi 0x7fff7d36a6b8 140735294121656 rdi 0x39910222a8 247245972136 rbp 0x0 0x0 rsp 0x7fff7d36a6b0 0x7fff7d36a6b0 r8 0x8 8 r9 0xb 11 r10 0x7fff7d36a3a0 140735294120864 r11 0x39936b91e0 247286436320 r12 0x0 0 r13 0x7fff7d36a6b0 140735294121648 r14 0x0 0 r15 0x0 0 rip 0x0 0 eflags 0x10206 [ PF IF RF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0 No function contains program counter for selected frame. %----cmdline ../generated/adfiles/adlc -DLINUX -D_GNU_SOURCE -DAMD64 -q -T -g -D_LP64 ../generated/adfiles/linux_x86_64.ad -c../generated/adfiles/mktmp26822/ad_x86_64.cpp -h../generated/adfiles/mktmp26822/ad_x86_64.hpp -a../generated/adfiles/mktmp26822/dfa_x86_64.cpp -v../generated/adfiles/mktmp26822/adGlobals_x86_64.hpp
I think -export-dynamic should be --export-dynamic.
After some digging, this seems to be a regression in gcc. The -export-dynamic flag is broken in gcc 4.6 [1]. gcc now treats xport-dynamic as the entry point. The standard bfd-based linker prints a warning: /usr/bin/ld: warning: cannot find entry symbol xport-dynamic; defaulting to 00000000004013a0 Apparently this address is fine. gold, I assume does something different which causes the executable to be invalid. The man page for gcc claims -rdynamic should be used to pass -export-dynamic, but that's a recent addition [2] and not usable when we need to work with older versions of gcc too. What works for me is using -Wl,-export-dynamic instead of -export-dynamic. [1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47390 [2] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37454
Created attachment 478327 [details] make hotspot use -Wl,-export-dynamic instead of -export-dynamic I have tested this on gcc 4.6.0 + gold and gcc 4.6.0 + ld as well as gcc 4.4.5 + ld.
Omair, this patch just seems to remove -export-dynamic not replace it.
It's ok, saw the full version on the list. Looks fine, I'll include it in the upcoming releases.
Thanks for the patch Omair.
(In reply to comment #4) > Omair, this patch just seems to remove -export-dynamic not replace it. Hm.. the bugzilla viewer has some issues with nested patches. The path shows up fine using "View" (https://bugzilla.redhat.com/attachment.cgi?id=478327) but looks broken everywhere else.
In new releases: http://blog.fuseyism.com/index.php/2011/02/15/security-icedtea6-1710-187-and-197-released/ Should hit Fedora RPMs soon.
This fix is present in 1.10 which was built for F15: http://koji.fedoraproject.org/koji/buildinfo?buildID=235771