https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119751
--- Comment #5 from Gaius Mulley <gaius at gcc dot gnu.org> --- Thanks for the report. [As an aside gm2 from GCC-12 has a completely different linking mechanism to gm2 GCC-14.2] The file gcc/m2/gm2-libs/COROUTINES.def is a definition for "C" and thus has no accompanying .mod file (just like libc.def, libm.def, cxxabi.def). The reason for this stripped down version of COROUTINES.def is to provide a base layer compatibility between the runtime modules of the ISO and PIM dialects. The file gcc/m2/gm2-libs/COROUTINES.def is tiny: DEFINITION MODULE FOR "C" COROUTINES ; CONST UnassignedPriority = 0 ; TYPE INTERRUPTSOURCE = CARDINAL ; PROTECTION = [UnassignedPriority..7] ; END COROUTINES. and is only defining a constant and two types, just enough to satisfy the shared code between the ISO and PIM libraries. COROUTINES are not part of the PIM dialect (PIM uses the type PROCESS found in SYSTEM), so the application module should be compiled using the -fiso switch. $ gm2 -fiso coex.mod $ > ./a.out A B C D E It would be good to improve the gm2 error message saying wrong dialect (try -fiso) maybe with a yet to be implemented warning or error attribute.