aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>2007-04-17 00:09:34 +0000
committerTobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>2007-04-17 00:09:34 +0000
commit60051139506b6327bee353c6ad6c9c0aba2c7119 (patch)
treef711bd52fba52696fadfe25931ef6c7b88b3eae7
parentc54dfbc08519937040e47562c928ad11c555e888 (diff)
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. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@123904 138bc75d-0d04-0410-961f-82ee72b054a4
-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 cb5666b8c5d..d9cfc3f70a1 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 fa75260d00b..15cf6aa313f 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 be2334ab408..8b844f7948f 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 00000000000..2a2d00b1d30
--- /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