diff options
author | Gaius Mulley <gaiusmod2@gmail.com> | 2023-03-17 00:23:02 +0000 |
---|---|---|
committer | Gaius Mulley <gaiusmod2@gmail.com> | 2023-03-17 00:23:02 +0000 |
commit | 6bf80413deb5c1eacbefd685e106c6351b75ecf2 (patch) | |
tree | f9138b2c71c22f014b278f0e1e4d1fdb35170afb | |
parent | 5c389a5c36f1c82fef82115270109f19c1237eaa (diff) | |
download | gcc-6bf80413deb5c1eacbefd685e106c6351b75ecf2.zip gcc-6bf80413deb5c1eacbefd685e106c6351b75ecf2.tar.gz gcc-6bf80413deb5c1eacbefd685e106c6351b75ecf2.tar.bz2 |
[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 <gaiusmod2@gmail.com>
-rw-r--r-- | gcc/m2/gm2-compiler/M2AsmUtil.mod | 28 | ||||
-rw-r--r-- | gcc/m2/gm2-libs/SysStorage.mod | 2 |
2 files changed, 14 insertions, 16 deletions
diff --git a/gcc/m2/gm2-compiler/M2AsmUtil.mod b/gcc/m2/gm2-compiler/M2AsmUtil.mod index 85bbceb..9ee5dd3 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 2277f93..2318ab7 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 ; |