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.