aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/pa/som.h23
2 files changed, 23 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d526acf..982fc5a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2001-09-24 John David Anglin <dave@hiauly1.hia.nrc.ca>
+ * 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.
+
+2001-09-24 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
* pa.h (TRAMPOLINE_TEMPLATE): Add two words to the template for
non 64-bit machines. Use these as a plabel for the trampoline.
(TRAMPOLINE_SIZE): Adjust size for new words.
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)