OSDN Git Service

PR fortran/31144
authortobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Apr 2007 00:09:34 +0000 (00:09 +0000)
committertobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Apr 2007 00:09:34 +0000 (00:09 +0000)
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: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123904 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/module_naming_1.f90 [new file with mode: 0644]

index cb5666b..d9cfc3f 100644 (file)
@@ -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
index fa75260..15cf6aa 100644 (file)
@@ -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);
     }
 }
index be2334a..8b844f7 100644 (file)
@@ -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 (file)
index 0000000..2a2d00b
--- /dev/null
@@ -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