From 9998ef84d3cce0db7c2e6722eaf602172aaeb63e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tobias=20Schl=C3=BCter?= Date: Tue, 17 Apr 2007 02:09:34 +0200 Subject: [PATCH] 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 --- gcc/fortran/ChangeLog | 7 +++++ gcc/fortran/trans-decl.c | 4 +-- gcc/testsuite/ChangeLog | 5 +++ gcc/testsuite/gfortran.dg/module_naming_1.f90 | 31 +++++++++++++++++++ 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/module_naming_1.f90 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 + + 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 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 + + PR fortran/31144 + * gfortran.dg/module_naming_1.f90: New. + 2007-04-16 Richard Sandiford * 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 -- 2.30.2