aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaius Mulley <gaiusmod2@gmail.com>2023-03-17 00:23:02 +0000
committerGaius Mulley <gaiusmod2@gmail.com>2023-03-17 00:23:02 +0000
commit6bf80413deb5c1eacbefd685e106c6351b75ecf2 (patch)
treef9138b2c71c22f014b278f0e1e4d1fdb35170afb
parent5c389a5c36f1c82fef82115270109f19c1237eaa (diff)
downloadgcc-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.mod28
-rw-r--r--gcc/m2/gm2-libs/SysStorage.mod2
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 ;