summaryrefslogtreecommitdiff
path: root/gas/config/tc-hppa.h
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2000-09-05 03:23:05 +0000
committerAlan Modra <amodra@bigpond.net.au>2000-09-05 03:23:05 +0000
commit87ebefbe65d855b0bab3d469c62b9afd4afdea69 (patch)
treef48975be9171045c487521f09ed6fb87776fc3d8 /gas/config/tc-hppa.h
parent185069e24c8617f48f8ba9fbe6d6079cbac06aad (diff)
downloadbinutils-redhat-87ebefbe65d855b0bab3d469c62b9afd4afdea69.tar.gz
Munge in vtable support for tc-hppa.c, inform elf back-end about
millicode, and make $PIC_pcrel$0 work.
Diffstat (limited to 'gas/config/tc-hppa.h')
-rw-r--r--gas/config/tc-hppa.h33
1 files changed, 20 insertions, 13 deletions
diff --git a/gas/config/tc-hppa.h b/gas/config/tc-hppa.h
index 1ea9daa3d4..dcd7966b36 100644
--- a/gas/config/tc-hppa.h
+++ b/gas/config/tc-hppa.h
@@ -99,14 +99,6 @@ extern void pa_check_eof PARAMS ((void));
#define RELOC_EXPANSION_POSSIBLE
#define MAX_RELOC_EXPANSION 6
-/* FIXME. More things which are both HPPA and ELF specific. There is
- nowhere to put such things. */
-#ifdef OBJ_ELF
-#define elf_tc_final_processing elf_hppa_final_processing
-void elf_hppa_final_processing PARAMS ((void));
-void pa_end_of_source PARAMS ((void));
-#endif
-
/* The PA needs to parse field selectors in .byte, etc. */
#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) \
@@ -154,20 +146,35 @@ int hppa_fix_adjustable PARAMS((struct fix *));
#endif
#ifdef OBJ_ELF
+/* Handle .type psuedo. Given a type string of `millicode', set the
+ internal elf symbol type to STT_PARISC_MILLI, and return
+ BSF_FUNCTION for the BFD symbol type. */
+#define md_elf_symbol_type(name, sym, elf) \
+ ((strcmp ((name), "millicode") == 0 \
+ || strcmp ((name), "STT_PARISC_MILLI") == 0) \
+ ? (((elf)->internal_elf_sym.st_info = ELF_ST_INFO \
+ (ELF_ST_BIND ((elf)->internal_elf_sym.st_info), STT_PARISC_MILLI)\
+ ), BSF_FUNCTION) \
+ : -1)
+
#define tc_frob_symbol(sym,punt) \
{ \
if ((S_GET_SEGMENT (sym) == &bfd_und_section && ! symbol_used_p (sym)) \
|| (S_GET_SEGMENT (sym) == &bfd_abs_section \
&& ! S_IS_EXTERNAL (sym)) \
- || strcmp (S_GET_NAME (sym), "$global$") == 0) \
+ || strcmp (S_GET_NAME (sym), "$global$") == 0 \
+ || strcmp (S_GET_NAME (sym), "$PIC_pcrel$0") == 0) \
punt = 1; \
}
-#endif
-#define md_operand(x)
-#ifdef OBJ_ELF
+#define elf_tc_final_processing elf_hppa_final_processing
+void elf_hppa_final_processing PARAMS ((void));
+
#define md_end() pa_end_of_source ()
-#endif
+void pa_end_of_source PARAMS ((void));
+#endif /* OBJ_ELF */
+
+#define md_operand(x)
#define TC_FIX_TYPE PTR
#define TC_INIT_FIX_DATA(FIXP) ((FIXP)->tc_fix_data = NULL)