RISC-V: Support assembler modifier %got_pcrel_hi.
[deliverable/binutils-gdb.git] / gas / config / tc-mcore.h
index 9e487c92a3b32a3cc479ea692aee0976a2900010..370a319496314ae7e812f863981a997d5f65dbf3 100644 (file)
@@ -1,12 +1,12 @@
 /* This file is tc-mcore.h
 
-   Copyright (C) 1999 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
    GAS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    GAS is distributed in the hope that it will be useful,
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with GAS; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   along with GAS; see the file COPYING.  If not, write to the
+   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 #ifndef        TC_MCORE
 #define TC_MCORE 1
 
-#ifndef BFD_ASSEMBLER
- #error MCORE support requires BFD_ASSEMBLER
-#endif
-
 #define TARGET_ARCH    bfd_arch_mcore
-#define TARGET_BYTES_BIG_ENDIAN 1
-
-/* Don't write out relocs for pcrel stuff.  */
-#define TC_COUNT_RELOC(x) (((x)->fx_addsy || (x)->fx_subsy) && \
-                          (x)->fx_r_type < BFD_RELOC_MCORE_PCREL_IMM8BY4)
+/* Used to initialise target_big_endian.  */
+#define TARGET_BYTES_BIG_ENDIAN 0
 
 #define IGNORE_NONSTANDARD_ESCAPES
 
-#define TC_RELOC_MANGLE(a,b,c) tc_reloc_mangle (a, b, c)
-
 /* Some pseudo-op semantic extensions.  */
 #define        PSEUDO_LCOMM_OPTIONAL_ALIGN
 
-#define LISTING_HEADER         "M.CORE GAS Version 2.9.4"
+#define LISTING_HEADER         "M.CORE GAS"
 #define LISTING_LHS_CONT_LINES 4
 
-#define NEED_FX_R_TYPE 1
-#define COFF_FLAGS     1
-
 /* We want local label support.  */
 #define LOCAL_LABELS_FB 1
-     
-#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag)
-  
+
 extern const struct relax_type md_relax_table[];
 #define TC_GENERIC_RELAX_TABLE md_relax_table
 #define md_end md_mcore_end
 
-/* Want the section information too... */
-#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC)
-
-#define MD_APPLY_FIX3  /* We want the segment as well.  */
-
-
+/* Want the section information too...  */
+#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
 
 #ifdef  OBJ_COFF
 
 #define TARGET_FORMAT  (target_big_endian ? "pe-mcore-big" : "pe-mcore-little")
 
-#define TARGET_SYMBOL_FIELDS  int sy_flags ;
+struct mcore_tc_sy
+{
+  int sy_flags;
+};
 
-#endif /* OBJ_COFF */
+#define TC_SYMFIELD_TYPE struct mcore_tc_sy
 
+# if defined TE_PE
+#  define TC_FORCE_RELOCATION(x) \
+     ((x)->fx_r_type == BFD_RELOC_RVA || generic_force_reloc (x))
+# endif
+
+#endif /* OBJ_COFF */
 
 #ifdef OBJ_ELF
 
 #define TARGET_FORMAT (target_big_endian ? "elf32-mcore-big" : "elf32-mcore-little")
 
-#define ELF_TC_SPECIAL_SECTIONS \
-  { ".ctors",  SHT_PROGBITS,   SHF_ALLOC + SHF_WRITE }, \
-  { ".dtors",  SHT_PROGBITS,   SHF_ALLOC + SHF_WRITE }, \
-/* Other special sections not generated by the assembler: .reginfo,
-   .liblist, .conflict, .gptab, .got, .dynamic, .rel.dyn.  */
+/* No shared lib support, so we don't need to ensure externally
+   visible symbols can be overridden.  */
+#define EXTERN_FORCE_RELOC 0
 
 /* When relaxing, we need to emit various relocs we otherwise wouldn't.  */
 #define TC_FORCE_RELOCATION(fix) mcore_force_relocation (fix)
-extern int mcore_force_relocation PARAMS ((struct fix *));
 
-#define obj_fix_adjustable(fixP) mcore_fix_adjustable (fixP)
-extern boolean mcore_fix_adjustable PARAMS ((struct fix *));
+#define tc_fix_adjustable(FIX) mcore_fix_adjustable (FIX)
+
+/* Values passed to md_apply_fix don't include the symbol value.  */
+#define MD_APPLY_SYM_VALUE(FIX) 0
 
 #endif /* OBJ_ELF */
 
@@ -93,27 +84,12 @@ extern boolean mcore_fix_adjustable PARAMS ((struct fix *));
 # error No target format specified.
 #endif
 
-#include "struc-symbol.h" /* For definition of symbolS */
 #include "write.h"        /* For definition of fixS */
-  
-extern void      md_begin            PARAMS ((void));
-extern void      md_assemble         PARAMS ((char *));
-extern symbolS * md_undefined_symbol PARAMS ((char *));
-extern void      md_mcore_end        PARAMS ((void));
-extern char *    md_atof             PARAMS ((int, char *, int *));
-extern int       md_parse_option     PARAMS ((int, char *));
-extern void      md_show_usage       PARAMS ((FILE *));
-extern void      md_create_short_jump 
-  PARAMS ((char *, addressT, addressT, fragS *, symbolS *));
-extern void      md_create_long_jump
-  PARAMS ((char *, addressT, addressT, fragS *, symbolS *));
-extern void      md_convert_frag               PARAMS ((bfd *, segT, fragS *));
-extern int       md_apply_fix3                 PARAMS ((fixS *, valueT *, segT));
-extern void      md_operand                    PARAMS ((expressionS *));
-extern int       md_estimate_size_before_relax PARAMS ((fragS *, segT));
-extern void      md_number_to_chars            PARAMS ((char *, valueT, int));
-extern valueT    md_section_align              PARAMS ((segT, valueT));
-extern long      md_pcrel_from_section         PARAMS ((fixS *, segT));
-extern arelent * tc_gen_reloc                  PARAMS ((asection *, fixS *));
+
+extern void        md_mcore_end           (void);
+extern long        md_pcrel_from_section  (fixS *, segT);
+extern arelent *   tc_gen_reloc           (asection *, fixS *);
+extern int         mcore_force_relocation (fixS *);
+extern bfd_boolean mcore_fix_adjustable   (fixS *);
 
 #endif /* TC_MCORE */
This page took 0.025333 seconds and 4 git commands to generate.