------- Comment #33 from mrs at gcc dot gnu dot org 2010-05-02 01:23 ------- So, mumble isn't defined in the wpa file. The .wpa. file has to be assembled at the same time as 20081111_1.s, or, different code would need to be generated. darwin.c manages the code gen by asking the question, is this symbol _defined_ in the translation unit or _must_ it be defined. The answer from that question must be valid. In this case, someone lied to us. So, if there is a new answer, like, is this symbol defined in an LTO segment, we could modify the underlying question do be:
is_defined(sym) { if (LTO_SYM(sym) return false; [ ... ] | which should be seamless, but, one then pays the price for this in less good codegen. If one bundles all the code into the wpa file, one can preserve _good_ codegen, which is the other way to fix this. machopic_symbol_defined_p is the is_defined predicate above, if you want to go that path. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43729