diff options
author | Tobias Schlüter <tobi@gcc.gnu.org> | 2007-04-17 02:09:34 +0200 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2007-04-17 02:09:34 +0200 |
commit | 9998ef84d3cce0db7c2e6722eaf602172aaeb63e (patch) | |
tree | f711bd52fba52696fadfe25931ef6c7b88b3eae7 /gcc | |
parent | 597cab4f831dbc639dc64f07b5446fe35dc4b6a8 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/module_naming_1.f90 | 31 |
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 |