https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108183
Bug ID: 108183 Summary: wrong code generated in the modula2 scaffold mechanism Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: modula2 Assignee: gaius at gcc dot gnu.org Reporter: iains at gcc dot gnu.org Target Milestone: --- On m32 Darwin, we see very many failures like: /Volumes/ramdisk/ccPnX6B8.s:379:non-relocatable subtraction expression, "__M2_dtoa_ctor" minus "L5$pb" /Volumes/ramdisk/ccPnX6B8.s:379:symbol: "__M2_dtoa_ctor" can't be undefined in a subtraction expression === It seems that the function declarations for '__M2_dtoa_ctor' (and other imported module ctors) are declared with TREE_STATIC() set, which indicates that there is a definition in the TU (which there is not) - they should be declared as external. So far, I could not figure out where these decls are built and what controls whether they are considered external or not.