* configure.in: Set em=linux for frv-*-*linux*.
[deliverable/binutils-gdb.git] / gas / config / tc-frv.h
index b399cd933102c1b880a1c027ef63905a68966146..8bc3c7c29790992dd150259336fcc0ce89e1e268 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-frv.h -- Header file for tc-frv.c.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright 2002 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
 /* The target BFD architecture.  */
 #define TARGET_ARCH bfd_arch_frv
 
-#define TARGET_FORMAT "elf32-frv"
+#define TARGET_FORMAT (frv_md_fdpic_enabled () \
+                      ? "elf32-frvfdpic" : "elf32-frv")
+extern bfd_boolean frv_md_fdpic_enabled (void);
 
 #define TARGET_BYTES_BIG_ENDIAN 1
 
-/* call md_pcrel_from_section, not md_pcrel_from */
-long md_pcrel_from_section PARAMS ((struct fix *, segT));
-#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC)
-
 /* Permit temporary numeric labels.  */
 #define LOCAL_LABELS_FB 1
 
@@ -46,7 +44,8 @@ long md_pcrel_from_section PARAMS ((struct fix *, segT));
 /* We don't need to handle .word strangely.  */
 #define WORKING_DOT_WORD
 
-#define md_apply_fix3 gas_cgen_md_apply_fix3
+/* Values passed to md_apply_fix3 don't include the symbol value.  */
+#define MD_APPLY_SYM_VALUE(FIX) 0
 
 extern void frv_tomcat_workaround PARAMS ((void));
 #define md_cleanup frv_tomcat_workaround
@@ -56,19 +55,19 @@ extern void frv_tomcat_workaround PARAMS ((void));
 extern long frv_relax_frag PARAMS ((fragS *, long));
 #define md_relax_frag(segment, fragP, stretch) frv_relax_frag(fragP, stretch)
 
-#define obj_fix_adjustable(fixP) frv_fix_adjustable (fixP)
-extern boolean frv_fix_adjustable PARAMS ((struct fix *));
-
-#ifdef OBJ_ELF
-/* This arranges for gas/write.c to not apply a relocation if
-   obj_fix_adjustable() says it is not adjustable.  */
-#define TC_FIX_ADJUSTABLE(fixP) obj_fix_adjustable (fixP)
-#endif
+#define tc_fix_adjustable(FIX) frv_fix_adjustable (FIX)
+struct fix;
+extern bfd_boolean frv_fix_adjustable PARAMS ((struct fix *));
 
 /* When relaxing, we need to emit various relocs we otherwise wouldn't.  */
 #define TC_FORCE_RELOCATION(fix) frv_force_relocation (fix)
 extern int frv_force_relocation PARAMS ((struct fix *));
 
+/* If we simplify subtractions that aren't SUB_SAME or SUB_ABS, we end
+   up with PCrel fixups, but since we don't have any PCrel relocs, we
+   crash.  Preventing simplification gets us a good, early error.  */
+#define TC_FORCE_RELOCATION_SUB_LOCAL(fixP) 1
+
 #undef GAS_CGEN_MAX_FIXUPS
 #define GAS_CGEN_MAX_FIXUPS 1
 
@@ -80,7 +79,7 @@ void frv_frob_label PARAMS ((symbolS *));
 #define md_cgen_record_fixup_exp frv_cgen_record_fixup_exp
 
 /* Call md_pcrel_from_section(), not md_pcrel_from().  */
-#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC)
+#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
 extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
 
 /* After all of the symbols have been adjusted, go over the file looking
This page took 0.023858 seconds and 4 git commands to generate.