diff options
author | Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> | 2007-04-17 00:09:34 +0000 |
---|---|---|
committer | Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> | 2007-04-17 00:09:34 +0000 |
commit | 60051139506b6327bee353c6ad6c9c0aba2c7119 (patch) | |
tree | f711bd52fba52696fadfe25931ef6c7b88b3eae7 | |
parent | c54dfbc08519937040e47562c928ad11c555e888 (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/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 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 |