4.0.x and mainline have regressed WRT 3.4.x // Ensure freelist is constructed first. static int freelist_mutex = 1;
static void _M_destroy_thread_key(void* __id) { int i = 0; } void _M_destroy_thread(void* __id) { int i = 0; } gives: %gcc -x c -g -O0 -c testme.cc %nm testme.o 00000000 d freelist_mutex 0000000f T _M_destroy_thread 00000000 t _M_destroy_thread_key %gcc -x c++ -g -O0 -c testme.cc %nm testme.o 00000000 T _Z17_M_destroy_threadPv -- Summary: no static definition Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bkoz at gcc dot gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24561