https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87380
--- Comment #7 from Iain Sandoe <iains at gcc dot gnu.org> --- it's been broken a looooong time - even apple-gcc-4.2.1 is broken, I don't have 3.3 anywhere without booting an old machine. clang produces: .section __DATA,__data .globl __ZN1AIiE6memberE ## @_ZN1AIiE6memberE .weak_definition __ZN1AIiE6memberE .p2align 2 __ZN1AIiE6memberE: .long 0 ## 0x0 ==== it doesn't *look* like a back-end issue (the weak is missing by the time we get to varpool_node::assemble_decl) - present in the decl for Linux, missing for Darwin. Darwin declares MAKE_DECL_ONE_ONLY() => weak and that should fire up SUPPORTS_ONE_ONLY. so... now to figure out where the divergence is.