This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] AIX declare aliases
- From: David Edelsohn <dje dot gcc at gmail dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 25 Nov 2015 07:51:01 -0500
- Subject: [PATCH] AIX declare aliases
- Authentication-results: sourceware.org; auth=none
The initial rs6000_declare_alais support fort handle AIX function
descriptors was no complete. For function descriptors, both the
undecorated symbols (the function descriptor) and the "dot" symbol
(the function entry point address) must be globalized and renamed.
Thanks, David
* config/rs6000/rs6000.c (rs6000_declare_alias): Rename and globalize
both the symbol and the "dot" symbol for function descriptors. Fix
inversion for rename of symbols with dollar sign.
Index: rs6000.c
===================================================================
--- rs6000.c (revision 230866)
+++ rs6000.c (working copy)
@@ -31888,13 +31888,15 @@ rs6000_declare_alias (struct symtab_node *n, void
if (dollar_inside) {
if (data->function_descriptor)
fprintf(data->file, "\t.rename .%s,\".%s\"\n", buffer, name);
- else
- fprintf(data->file, "\t.rename %s,\"%s\"\n", buffer, name);
+ fprintf(data->file, "\t.rename %s,\"%s\"\n", buffer, name);
}
if (data->function_descriptor)
- fputs ("\t.globl .", data->file);
- else
- fputs ("\t.globl ", data->file);
+ {
+ fputs ("\t.globl .", data->file);
+ RS6000_OUTPUT_BASENAME (data->file, buffer);
+ putc ('\n', data->file);
+ }
+ fputs ("\t.globl ", data->file);
RS6000_OUTPUT_BASENAME (data->file, buffer);
putc ('\n', data->file);
}
@@ -31908,14 +31910,16 @@ rs6000_declare_alias (struct symtab_node *n, void
if (dollar_inside)
{
if (data->function_descriptor)
- fprintf(data->file, "\t.rename %s,\"%s\"\n", buffer, name);
- else
fprintf(data->file, "\t.rename .%s,\".%s\"\n", buffer, name);
+ fprintf(data->file, "\t.rename %s,\"%s\"\n", buffer, name);
}
if (data->function_descriptor)
- fputs ("\t.lglobl .", data->file);
- else
- fputs ("\t.lglobl ", data->file);
+ {
+ fputs ("\t.lglobl .", data->file);
+ RS6000_OUTPUT_BASENAME (data->file, buffer);
+ putc ('\n', data->file);
+ }
+ fputs ("\t.lglobl ", data->file);
RS6000_OUTPUT_BASENAME (data->file, buffer);
putc ('\n', data->file);
}