[patch, fortran] PR93461 - Bogus "symbol is already defined" with long subroutine names in submodule
Tobias Burnus
tobias@codesourcery.com
Tue Jan 28 08:21:00 GMT 2020
Hi Andrew,
On 1/27/20 9:57 PM, Andrew Benson wrote:
> The problem occurs because GFC_MAX_MANGLED_SYMBOL_LEN is set to
> GFC_MAX_SYMBOL_LEN*2+4, which is sufficient for a module name plus function name
> (plus the additional "_"'s that get prepended), but insufficient if a submodule
> name is included. The name then gets truncated and can lead to two different
> functions having the same (truncated) symbol name.
>
> The fix is to increase this length to GFC_MAX_SYMBOL_LEN*3+5 - which allows for
> the submodule name plus the "." added between module and submodule names.
>
> I've attached a patch for this which includes a new test case for this PR. The
> patch regression tests cleanly.
>
> OK to commit?
Can you also update the comment before the #define? It currently has:
/* Mangled symbols take the form __module__name. */
-#define GFC_MAX_MANGLED_SYMBOL_LEN (GFC_MAX_SYMBOL_LEN*2+4)
+#define GFC_MAX_MANGLED_SYMBOL_LEN (GFC_MAX_SYMBOL_LEN*3+5)
Otherweise, it LGTM.
Tobias
PS: I wonder whether there are relevant systems which will fail because they
do not handle that long symbol names...
More information about the Fortran
mailing list