From: Gaius Mulley Date: Fri, 17 Mar 2023 00:23:02 +0000 (+0000) Subject: [modula2] Bugfix local symbol names for -fm2-whole-program X-Git-Tag: basepoints/gcc-14~481 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6bf80413deb5c1eacbefd685e106c6351b75ecf2;p=thirdparty%2Fgcc.git [modula2] Bugfix local symbol names for -fm2-whole-program Local symbols must be prefixed by the modulename if -fm2-whole-program is used to avoid a name clash. gcc/m2/ChangeLog: * gm2-compiler/M2AsmUtil.mod (SymNeedsModulePrefix): Re-implemented. * gm2-libs/SysStorage.mod (enableTrace): Disable tracing. Signed-off-by: Gaius Mulley --- diff --git a/gcc/m2/gm2-compiler/M2AsmUtil.mod b/gcc/m2/gm2-compiler/M2AsmUtil.mod index 85bbceba3ea5..9ee5dd35df78 100644 --- a/gcc/m2/gm2-compiler/M2AsmUtil.mod +++ b/gcc/m2/gm2-compiler/M2AsmUtil.mod @@ -40,7 +40,7 @@ FROM SymbolTable IMPORT NulSym, IsProcedure, IsModule, IsDefImp, - IsExportQualified, + IsExportQualified, IsExportUnQualified, IsExported, IsPublic, IsExtern, IsMonoName, IsDefinitionForC ; @@ -146,28 +146,26 @@ END GetFullSymName ; (* - SymNeedsModulePrefix - + SymNeedsModulePrefix - return TRUE if symbol mod is required to have a prefix. *) PROCEDURE SymNeedsModulePrefix (sym, mod: CARDINAL) : BOOLEAN ; BEGIN - IF IsDefImp(mod) + IF IsDefImp (mod) THEN - IF WholeProgram + IF IsExportUnQualified (sym) THEN - IF NOT IsDefinitionForC(mod) - THEN - RETURN( TRUE ) - END - ELSIF IsExportQualified(sym) - THEN - RETURN( TRUE ) + RETURN FALSE + ELSE + (* We need to force the prefix if whole program is used otherwise + local symbols from multipl modules might conflict. *) + RETURN WholeProgram OR IsExportQualified (sym) END - ELSIF IsModule(mod) + ELSIF IsModule (mod) THEN - RETURN( WholeProgram ) + RETURN WholeProgram END ; - RETURN( FALSE ) + RETURN FALSE END SymNeedsModulePrefix ; @@ -185,7 +183,7 @@ BEGIN THEN RETURN( ConCat(ConCatChar(InitStringCharStar(KeyToCharStar(GetSymName(ModSym))), '_'), GetModulePrefix(Name, ModSym, GetScope(ModSym))) ) - ELSIF SymNeedsModulePrefix(Sym, ModSym) + ELSIF SymNeedsModulePrefix (Sym, ModSym) THEN RETURN( ConCatChar(ConCat(InitStringCharStar(KeyToCharStar(GetSymName(ModSym))), Mark(Name)), '_') ) END diff --git a/gcc/m2/gm2-libs/SysStorage.mod b/gcc/m2/gm2-libs/SysStorage.mod index 2277f93a3982..2318ab7a6c55 100644 --- a/gcc/m2/gm2-libs/SysStorage.mod +++ b/gcc/m2/gm2-libs/SysStorage.mod @@ -34,7 +34,7 @@ FROM SYSTEM IMPORT ADR ; CONST enableDeallocation = TRUE ; enableZero = TRUE ; - enableTrace = TRUE ; + enableTrace = FALSE ; VAR callno: CARDINAL ;