Instead of emitting an initialized variable in .data at compile time, gcc-4.2.0 emits a variable in .bss and a static constructor to initialize the variable at run time. This is a regression from previous gcc versions.
Example code: class T { static void (*handler)(); static void func() {}; }; void (*T::handler)() = func; int main() { T t; return 0; } gcc version 4.2.0 20060908 (experimental) emits: 08048416 t global constructors keyed to _ZN1T7handlerE 08049664 B T::handler 4.1.1 and 3.4.6 emit: 0804962c D T::handler -- Summary: Static constructor emitted instead of initialized variable Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: us15 at os dot inf dot tu-dresden dot de GCC build triplet: i486-slackware-linux GCC host triplet: i486-slackware-linux GCC target triplet: i486-slackware-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28991