------- Comment #9 from iains at gcc dot gnu dot org 2010-05-27 23:34 ------- using the example at #5
apollo:gcc-4-6-trunk-build$ ./gcc/xgcc -B gcc ../tests/trivial.m -flto -o t -lobjc -save-temps trivial.s:unknown:Undefined local symbol L_OBJC_CLASS_myRootObject.2084 trivial.s:unknown:Undefined local symbol L_OBJC_METACLASS_myRootObject.2083 looking at the asm with lto: L_OBJC_SYMBOLS.2087: .long 0 .long 0 .word 1 .word 0 .long L_OBJC_CLASS_myRootObject.2084 .no_dead_strip L_OBJC_METH_VAR_NAME_12.2082 .objc_meth_var_names L_OBJC_METH_VAR_NAME_12.2082: .ascii "class\0" .no_dead_strip L_OBJC_CLASS_myRootObject.2088 .objc_class .align 5 L_OBJC_CLASS_myRootObject.2088: .long L_OBJC_METACLASS_myRootObject.2083 it seems that there's a later edition of the variable which becomes the label for the table and the reference fails. similarly with metaclass table. .no_dead_strip L_OBJC_METACLASS_myRootObject.2092 .objc_meta_class .align 5 L_OBJC_METACLASS_myRootObject.2092: .long L_OBJC_CLASS_NAME_0.2080 .long 0 .long L_OBJC_CLASS_NAME_0.2080 .long 0 ==== I must confess, I haven't got much idea where to look for the problem at this juncture.. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44140