This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Fortran, (RFC) patch] PR49110/51055 Assignment to alloc. deferred-length character vars


Tobias,

Sorry to return to this patch so long after the discussion, but I have
been investigating testsuite failures on AIX and this patch introduced
a number of Fortran failures.

+      if (sym->module)
+	name = gfc_get_string (".__%s_MOD_%s", sym->module, sym->name);
+      else
+	name = gfc_get_string (".%s", sym->name);

Symbols beginning with "." have a well-known meaning on AIX, so the
compiler cannot assume that it is safe to mangle a name by prepending
a period.

For instance, the test allocatable_function_5.s generates the
following global symbol definitions in the assembler:

        .globl __m_MOD_mbar
        .globl .__m_MOD_mbar
        .csect __m_MOD_mbar[DS]
__m_MOD_mbar:                                   <--- function
descriptor __m_MOD_mbar
        .long .__m_MOD_mbar, TOC[tc0], 0
        .csect .text[PR]
.__m_MOD_mbar:                                  <--- function address
.__m_MOD_mbar

...

        .globl .__m_MOD_mbar
        .csect .data[RW],4
        .align 2
.__m_MOD_mbar:                                  <--- mangled string
name .__m_MOD_mbar
        .space 4

Unsurprisingly, two symbols with the same name are a problem and the
AIX assembler complains about the redefinition.

I am not sure why you chose a period and how best to correct this.

Thanks, David


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]