------- Comment #3 from rguenth at gcc dot gnu dot org 2007-10-31 15:23 ------- The complete statically linked __cxa_guard_release looks like:
00000000005528d0 <__cxa_guard_release>: 5528d0: 53 push %rbx 5528d1: 48 89 fb mov %rdi,%rbx 5528d4: 48 83 ec 10 sub $0x10,%rsp 5528d8: 48 83 3d 90 e6 31 00 cmpq $0x0,0x31e690(%rip) # 870f70 <rtld_search_dirs+0xe0> 5528df: 00 5528e0: 74 4b je 55292d <__cxa_guard_release+0x5d> 5528e2: c6 44 24 0f 01 movb $0x1,0xf(%rsp) 5528e7: e8 c4 fd ff ff callq 5526b0 <_ZN12_GLOBAL__N_116get_static_mutexEv> 5528ec: 48 89 c7 mov %rax,%rdi 5528ef: e8 cc 44 01 00 callq 566dc0 <__pthread_mutex_lock> 5528f4: 85 c0 test %eax,%eax 5528f6: 75 3e jne 552936 <__cxa_guard_release+0x66> 5528f8: c6 43 01 00 movb $0x0,0x1(%rbx) 5528fc: c6 03 01 movb $0x1,(%rbx) 5528ff: e8 5c fe ff ff callq 552760 <_ZN12_GLOBAL__N_115get_static_condEv> 552904: 48 89 c7 mov %rax,%rdi 552907: e8 f4 d6 aa ff callq 0 <_nl_current_LC_CTYPE> 55290c: 85 c0 test %eax,%eax 55290e: 75 54 jne 552964 <__cxa_guard_release+0x94> 552910: 80 7c 24 0f 00 cmpb $0x0,0xf(%rsp) 552915: 74 10 je 552927 <__cxa_guard_release+0x57> 552917: 48 8b 3d aa 23 33 00 mov 0x3323aa(%rip),%rdi # 884cc8 <_ZN12_GLOBAL__N_1L12static_mutexE> 55291e: e8 0d 4f 01 00 callq 567830 <__pthread_mutex_unlock> 552923: 85 c0 test %eax,%eax 552925: 75 6b jne 552992 <__cxa_guard_release+0xc2> 552927: 48 83 c4 10 add $0x10,%rsp 55292b: 5b pop %rbx 55292c: c3 retq 55292d: c6 47 01 00 movb $0x0,0x1(%rdi) 552931: c6 07 01 movb $0x1,(%rdi) 552934: eb f1 jmp 552927 <__cxa_guard_release+0x57> 552936: bf 08 00 00 00 mov $0x8,%edi 55293b: e8 40 ec ff ff callq 551580 <__cxa_allocate_exception> 552940: 48 89 c7 mov %rax,%rdi 552943: 48 8b 05 3e e6 31 00 mov 0x31e63e(%rip),%rax # 870f88 <rtld_search_dirs+0xf8> 55294a: 48 8b 15 e7 e5 31 00 mov 0x31e5e7(%rip),%rdx # 870f38 <rtld_search_dirs+0xa8> 552951: 48 8b 35 40 e6 31 00 mov 0x31e640(%rip),%rsi # 870f98 <rtld_search_dirs+0x108> 552958: 48 83 c0 10 add $0x10,%rax 55295c: 48 89 07 mov %rax,(%rdi) 55295f: e8 0c fc ff ff callq 552570 <__cxa_throw> 552964: bf 08 00 00 00 mov $0x8,%edi 552969: e8 12 ec ff ff callq 551580 <__cxa_allocate_exception> 55296e: 48 89 c7 mov %rax,%rdi 552971: 48 8b 05 08 e6 31 00 mov 0x31e608(%rip),%rax # 870f80 <rtld_search_dirs+0xf0> 552978: 48 8b 15 41 e6 31 00 mov 0x31e641(%rip),%rdx # 870fc0 <rtld_search_dirs+0x130> 55297f: 48 8b 35 6a e5 31 00 mov 0x31e56a(%rip),%rsi # 870ef0 <rtld_search_dirs+0x60> 552986: 48 83 c0 10 add $0x10,%rax 55298a: 48 89 07 mov %rax,(%rdi) 55298d: e8 de fb ff ff callq 552570 <__cxa_throw> 552992: bf 08 00 00 00 mov $0x8,%edi 552997: e8 e4 eb ff ff callq 551580 <__cxa_allocate_exception> 55299c: 48 89 c7 mov %rax,%rdi 55299f: 48 8b 05 72 e5 31 00 mov 0x31e572(%rip),%rax # 870f18 <rtld_search_dirs+0x88> 5529a6: 48 8b 15 1b e6 31 00 mov 0x31e61b(%rip),%rdx # 870fc8 <rtld_search_dirs+0x138> 5529ad: 48 8b 35 2c e5 31 00 mov 0x31e52c(%rip),%rsi # 870ee0 <rtld_search_dirs+0x50> 5529b4: 48 83 c0 10 add $0x10,%rax 5529b8: 48 89 07 mov %rax,(%rdi) 5529bb: e8 b0 fb ff ff callq 552570 <__cxa_throw> 5529c0: 48 8d 7c 24 0f lea 0xf(%rsp),%rdi 5529c5: 48 89 c3 mov %rax,%rbx 5529c8: e8 c3 fd ff ff callq 552790 <_ZN10__cxxabiv113mutex_wrapperD1Ev> 5529cd: 48 89 df mov %rbx,%rdi 5529d0: e8 5b 07 01 00 callq 563130 <_Unwind_Resume> showing the obvious error. The shared libstdc++v3 has a relocation to pthread_cond_broadcast instead: c4aff: e8 5c fe ff ff callq c4960 <_ZN12_GLOBAL__N_115get_static_condEv> c4b04: 48 89 c7 mov %rax,%rdi c4b07: e8 24 0d f9 ff callq 55830 <[EMAIL PROTECTED]> c4b0c: 85 c0 test %eax,%eax -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33960