/* tc-hppa.h -- Header file for the PA
- Copyright (C) 1989, 93, 94, 95, 96, 97, 98, 99, 2000
- Free Software Foundation, Inc.
+ Copyright 1989, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002,
+ 2003 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
#ifdef OBJ_ELF
#if TARGET_ARCH_SIZE == 64
#include "bfd/elf64-hppa.h"
-#define TARGET_FORMAT "elf64-hppa"
+#ifdef TE_LINUX
+#define TARGET_FORMAT "elf64-hppa-linux"
#else
+#define TARGET_FORMAT "elf64-hppa"
+#endif
+#else /* TARGET_ARCH_SIZE == 32 */
#include "bfd/elf32-hppa.h"
+#ifdef TE_LINUX
+#define TARGET_FORMAT "elf32-hppa-linux"
+#else
#define TARGET_FORMAT "elf32-hppa"
#endif
#endif
+#endif
#ifdef OBJ_SOM
#include "bfd/som.h"
#define TARGET_FORMAT "som"
#endif
-#ifdef TE_LINUX
+#if defined(TE_LINUX) || defined(TE_NetBSD)
/* Define to compile in an extra assembler option, -c, which enables a
warning (once per file) when a comment is encountered.
The hppa comment char is a `;' which tends to occur in random C asm
#define WARN_COMMENTS 1
#endif
+#ifdef TE_NetBSD
+/* XXX the original OpenBSD code has labels without colons,
+ so this is required, for now -- fredette@netbsd.org */
+/* Labels are not required to have a colon for a suffix. */
+#define LABELS_WITHOUT_COLONS 1
+#endif
+
/* FIXME. Why oh why aren't these defined somewhere globally? */
#ifndef FALSE
#define FALSE (0)
#define tc_frob_label(sym) pa_define_label (sym)
+extern const char hppa_symbol_chars[];
+#define tc_symbol_chars hppa_symbol_chars
+
/* The PA does not need support for either of these. */
#define tc_crawl_symbol_chain(headers) {;}
#define tc_headers_hook(headers) {;}
int hppa_fix_adjustable PARAMS((struct fix *));
#define tc_fix_adjustable hppa_fix_adjustable
+#define EXTERN_FORCE_RELOC 1
+
/* Because of the strange PA calling conventions, it is sometimes
necessary to emit a relocation for a call even though it would
normally appear safe to handle it completely within GAS. */
-#define TC_FORCE_RELOCATION(FIXP) hppa_force_relocation (FIXP)
+#define TC_FORCE_RELOCATION(FIX) hppa_force_relocation (FIX)
+
+/* Values passed to md_apply_fix3 don't include the symbol value. */
+#define MD_APPLY_SYM_VALUE(FIX) 0
#ifdef OBJ_SOM
/* If a symbol is imported, but never used, then the symbol should
#endif
#ifdef OBJ_ELF
-/* It's OK to subtract two symbols in the same section without
- emitting a relocation. */
-#define TC_FORCE_RELOCATION_SECTION(FIXP, SEC) 0
+#define DIFF_EXPR_OK 1
/* Handle .type psuedo. Given a type string of `millicode', set the
internal elf symbol type to STT_PARISC_MILLI, and return
#define tc_frob_symbol(sym,punt) \
{ \
- if ((S_GET_SEGMENT (sym) == &bfd_und_section && ! symbol_used_p (sym)) \
+ if ((S_GET_SEGMENT (sym) == &bfd_und_section && ! symbol_used_p (sym) && \
+ ELF_ST_VISIBILITY (S_GET_OTHER (sym)) == STV_DEFAULT) \
|| (S_GET_SEGMENT (sym) == &bfd_abs_section \
&& ! S_IS_EXTERNAL (sym)) \
|| strcmp (S_GET_NAME (sym), "$global$") == 0 \
#define elf_tc_final_processing elf_hppa_final_processing
void elf_hppa_final_processing PARAMS ((void));
-#define md_end() pa_end_of_source ()
-void pa_end_of_source PARAMS ((void));
+#define DWARF2_LINE_MIN_INSN_LENGTH 4
#endif /* OBJ_ELF */
#define md_operand(x)
PARAMS ((expressionS *, operatorT, expressionS *));
#define TC_FIX_TYPE PTR
-#define TC_INIT_FIX_DATA(FIXP) ((FIXP)->tc_fix_data = NULL)
+#define TC_INIT_FIX_DATA(FIX) ((FIX)->tc_fix_data = NULL)
#endif /* _TC_HPPA_H */