aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Schlüter <tobi@gcc.gnu.org>2007-04-17 02:09:34 +0200
committerTobias Schlüter <tobi@gcc.gnu.org>2007-04-17 02:09:34 +0200
commit9998ef84d3cce0db7c2e6722eaf602172aaeb63e (patch)
treef711bd52fba52696fadfe25931ef6c7b88b3eae7 /gcc
parent597cab4f831dbc639dc64f07b5446fe35dc4b6a8 (diff)
downloadgcc-9998ef84d3cce0db7c2e6722eaf602172aaeb63e.zip
gcc-9998ef84d3cce0db7c2e6722eaf602172aaeb63e.tar.gz
gcc-9998ef84d3cce0db7c2e6722eaf602172aaeb63e.tar.bz2
re PR fortran/31144 (gfortran module symbol names are not standard compliant)
PR fortran/31144 fortran/ * decl.c (gfc_sym_mangled_identifier): Use capital letters in name mangling. (gfc_sym_mangled_function_id): Likewise. testsuite/ * gfortran.dg/module_naming_1.f90: New. From-SVN: r123904
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/trans-decl.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/module_naming_1.f9031
4 files changed, 45 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index cb5666b..d9cfc3f 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2007-04-17 Tobias Schlüter <tobi@gcc.gnu.org>
+
+ PR fortran/31144
+ * decl.c (gfc_sym_mangled_identifier): Use capital letters in name
+ mangling.
+ (gfc_sym_mangled_function_id): Likewise.
+
2007-04-15 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31204
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index fa75260..15cf6aa 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -299,7 +299,7 @@ gfc_sym_mangled_identifier (gfc_symbol * sym)
return gfc_sym_identifier (sym);
else
{
- snprintf (name, sizeof name, "__%s__%s", sym->module, sym->name);
+ snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name);
return get_identifier (name);
}
}
@@ -335,7 +335,7 @@ gfc_sym_mangled_function_id (gfc_symbol * sym)
}
else
{
- snprintf (name, sizeof name, "__%s__%s", sym->module, sym->name);
+ snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name);
return get_identifier (name);
}
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index be2334a..8b844f7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-17 Tobias Schlüter <tobi@gcc.gnu.org>
+
+ PR fortran/31144
+ * gfortran.dg/module_naming_1.f90: New.
+
2007-04-16 Richard Sandiford <richard@codesourcery.com>
* lib/target-supports.exp (check_profiling_available): Return
diff --git a/gcc/testsuite/gfortran.dg/module_naming_1.f90 b/gcc/testsuite/gfortran.dg/module_naming_1.f90
new file mode 100644
index 0000000..2a2d00b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/module_naming_1.f90
@@ -0,0 +1,31 @@
+! { dg-do assemble }
+! PR 31144
+! Makes sure that our name mangling scheme can't be outwitted
+
+! old scheme
+module m1
+contains
+ subroutine m2__m3()
+ end subroutine m2__m3
+end module m1
+
+module m1__m2
+contains
+ subroutine m3()
+ end subroutine m3
+end module m1__m2
+
+! New scheme, relies on capitalization
+module m2
+contains
+ subroutine m2_MOD_m3()
+ ! mangled to __m2_MOD_m2_mod_m3
+ end subroutine m2_MOD_m3
+end module m2
+
+module m2_MOD_m2
+contains
+ subroutine m3()
+ ! mangled to __m2_mod_m2_MOD_m3
+ end subroutine m3
+end module m2_MOD_m2