aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa/som.h
diff options
context:
space:
mode:
authorJohn David Anglin <dave@hiauly1.hia.nrc.ca>2001-09-24 16:30:28 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2001-09-24 16:30:28 +0000
commitf3403757ec3409d713ace35f9ff07988667560ac (patch)
treeb06e7c8820f44a68ca39ebd1ec45fea1e2ce38e6 /gcc/config/pa/som.h
parent8e1494b72c6ee911ae8db9584b5bb180538b7c0c (diff)
downloadgcc-f3403757ec3409d713ace35f9ff07988667560ac.zip
gcc-f3403757ec3409d713ace35f9ff07988667560ac.tar.gz
gcc-f3403757ec3409d713ace35f9ff07988667560ac.tar.bz2
som.h (ASM_OUTPUT_EXTERNAL): Improve formatting.
* som.h (ASM_OUTPUT_EXTERNAL): Improve formatting. (ASM_OUTPUT_EXTERNAL_LIBCALL): Only generate a .IMPORT statement for the libcall if there isn't a referenced identifier for the symbol. From-SVN: r45777
Diffstat (limited to 'gcc/config/pa/som.h')
-rw-r--r--gcc/config/pa/som.h23
1 files changed, 17 insertions, 6 deletions
diff --git a/gcc/config/pa/som.h b/gcc/config/pa/som.h
index 7588b66d..7ce97ef 100644
--- a/gcc/config/pa/som.h
+++ b/gcc/config/pa/som.h
@@ -312,8 +312,8 @@ readonly_data () \
#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
do { int save_referenced; \
save_referenced = TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL)); \
- fputs ("\t.IMPORT ", FILE); \
- assemble_name (FILE, NAME); \
+ fputs ("\t.IMPORT ", FILE); \
+ assemble_name (FILE, NAME); \
if (FUNCTION_NAME_P (NAME)) \
fputs (",CODE\n", FILE); \
else \
@@ -327,14 +327,25 @@ readonly_data () \
Also note not all libcall names are passed to ENCODE_SECTION_INFO
(__main for example). To make sure all libcall names have section
- info recorded in them, we do it here. */
+ info recorded in them, we do it here. We must also ensure that
+ we don't import a libcall that has been previously exported since
+ the HP assembler may change an ENTRY symbol to a CODE symbol. */
#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, RTL) \
- do { fputs ("\t.IMPORT ", FILE); \
+ do { const char *name; \
+ tree id; \
+ \
if (!function_label_operand (RTL, VOIDmode)) \
hppa_encode_label (RTL); \
- assemble_name (FILE, XSTR ((RTL), 0)); \
- fputs (",CODE\n", FILE); \
+ \
+ STRIP_NAME_ENCODING (name, XSTR ((RTL), 0)); \
+ id = maybe_get_identifier (name); \
+ if (! id || ! TREE_SYMBOL_REFERENCED (id)) \
+ { \
+ fputs ("\t.IMPORT ", FILE); \
+ assemble_name (FILE, XSTR ((RTL), 0)); \
+ fputs (",CODE\n", FILE); \
+ } \
} while (0)
#define ASM_FILE_END(FILE) output_deferred_plabels (FILE)