gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gas / config / tc-v850.h
index fad4d1cf8501d47155df4d685f9be0dbdcbcbdd3..daeba877dfb68af9fdc4934811876ad77e1813e2 100644 (file)
@@ -1,11 +1,11 @@
 /* tc-v850.h -- Header file for tc-v850.c.
 /* tc-v850.h -- Header file for tc-v850.c.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996-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
 
    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,
    any later version.
 
    GAS is distributed in the hope that it will be useful,
 
    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
 
    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, 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA. */
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 #define TC_V850
 
 
 #define TC_V850
 
-#include <elf/v850.h>
+#include "elf/v850.h"
 
 #define TARGET_BYTES_BIG_ENDIAN 0
 
 
 #define TARGET_BYTES_BIG_ENDIAN 0
 
-#ifndef BFD_ASSEMBLER
- #error V850 support requires BFD_ASSEMBLER
-#endif
-
 /* The target BFD architecture.  */
 /* The target BFD architecture.  */
-#define TARGET_ARCH            bfd_arch_v850
+#define TARGET_ARCH            v850_target_arch
+extern enum bfd_architecture v850_target_arch;
 
 /* The target BFD format.  */
 
 /* The target BFD format.  */
-#define TARGET_FORMAT          "elf32-v850"
+#define TARGET_FORMAT          v850_target_format
+extern const char * v850_target_format;
 
 
-#define MD_APPLY_FIX3
 #define md_operand(x)
 
 #define md_operand(x)
 
-#define obj_fix_adjustable(fixP) v850_fix_adjustable(fixP)
-#define TC_FORCE_RELOCATION(fixp) v850_force_relocation(fixp)
-extern int v850_force_relocation PARAMS ((struct fix *));
+#define tc_fix_adjustable(FIX) v850_fix_adjustable (FIX)
+extern bfd_boolean v850_fix_adjustable (struct fix *);
+
+#define TC_FORCE_RELOCATION(FIX) v850_force_relocation(FIX)
+extern int v850_force_relocation (struct fix *);
+
+#ifdef OBJ_ELF
+/* Values passed to md_apply_fix don't include the symbol value.  */
+#define MD_APPLY_SYM_VALUE(FIX) 0
+#endif
 
 /* Permit temporary numeric labels.  */
 #define LOCAL_LABELS_FB 1
 
 
 /* Permit temporary numeric labels.  */
 #define LOCAL_LABELS_FB 1
 
-#define DIFF_EXPR_OK           /* foo-. gets turned into PC relative relocs */
+#define DIFF_EXPR_OK           /* foo-. gets turned into PC relative relocs */
 
 /* We don't need to handle .word strangely.  */
 #define WORKING_DOT_WORD
 
 #define md_number_to_chars number_to_chars_littleendian
 
 /* We don't need to handle .word strangely.  */
 #define WORKING_DOT_WORD
 
 #define md_number_to_chars number_to_chars_littleendian
-     
+
 /* We need to handle lo(), hi(), etc etc in .hword, .word, etc
    directives, so we have to parse "cons" expressions ourselves.  */
 #define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) parse_cons_expression_v850 (EXP)
 /* We need to handle lo(), hi(), etc etc in .hword, .word, etc
    directives, so we have to parse "cons" expressions ourselves.  */
 #define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) parse_cons_expression_v850 (EXP)
+extern bfd_reloc_code_real_type parse_cons_expression_v850 (expressionS *);
+
 #define TC_CONS_FIX_NEW cons_fix_new_v850
 #define TC_CONS_FIX_NEW cons_fix_new_v850
-extern const struct relax_type md_relax_table[];
+extern void cons_fix_new_v850 (fragS *, int, int, expressionS *,
+                              bfd_reloc_code_real_type);
+
 #define TC_GENERIC_RELAX_TABLE md_relax_table
 #define TC_GENERIC_RELAX_TABLE md_relax_table
+extern const struct relax_type md_relax_table[];
+
+/* When relaxing, we need to generate
+   relocations for alignment directives.  */
+#define HANDLE_ALIGN(frag) v850_handle_align (frag)
+extern void v850_handle_align (fragS *);
+
+/* We need space in a frag's fixed size to allow for alignment when relaxing.  */
+#define TC_FX_SIZE_SLACK(FIX) 2
+
+#define MD_PCREL_FROM_SECTION(FIX, SEC) v850_pcrel_from_section (FIX, SEC)
+extern long v850_pcrel_from_section (struct fix *, asection *);
+
+#define DWARF2_LINE_MIN_INSN_LENGTH 2
 
 
+/* We need to record the operand involved when a pseudo-reloc is
+   processed so that the resulting value can be inserted correctly.  */
+#define TC_FIX_TYPE             void *
+#define TC_INIT_FIX_DATA(fixP)  (fixP)->tc_fix_data = NULL
 
 
-/* This section must be in the small data area (pointed to by GP).  */
-#define SHF_V850_GPREL         0x10000000
-/* This section must be in the tiny data area (pointed to by EP).  */
-#define SHF_V850_EPREL         0x20000000
-/* This section must be in the zero data area (pointed to by R0).  */
-#define SHF_V850_R0REL         0x40000000
-
-#define ELF_TC_SPECIAL_SECTIONS \
-  { ".sdata",  SHT_PROGBITS,           SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL  }, \
-  { ".rosdata",        SHT_PROGBITS,           SHF_ALLOC +             SHF_V850_GPREL  }, \
-  { ".sbss",   SHT_NOBITS,             SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL  }, \
-  { ".scommon",        SHT_V850_SCOMMON,       SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL  }, \
-  { ".tdata",  SHT_PROGBITS,           SHF_ALLOC + SHF_WRITE + SHF_V850_EPREL  }, \
-  { ".tbss",   SHT_NOBITS,             SHF_ALLOC + SHF_WRITE + SHF_V850_EPREL  }, \
-  { ".tcommon",        SHT_V850_TCOMMON,       SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL  }, \
-  { ".zdata",  SHT_PROGBITS,           SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL  }, \
-  { ".rozdata",        SHT_PROGBITS,           SHF_ALLOC +             SHF_V850_R0REL  }, \
-  { ".zbss",   SHT_NOBITS,             SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL  }, \
-  { ".zcommon",        SHT_V850_ZCOMMON,       SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL  }, \
-  { ".call_table_data",        SHT_PROGBITS,   SHF_ALLOC + SHF_WRITE },           \
-  { ".call_table_text",        SHT_PROGBITS,   SHF_ALLOC + SHF_WRITE + SHF_EXECINSTR },
-
-#define MD_PCREL_FROM_SECTION(fixP,section) v850_pcrel_from_section (fixP, section)
-extern long v850_pcrel_from_section ();
+#define md_end v850_md_end
+extern void    v850_md_end (void);
This page took 0.030015 seconds and 4 git commands to generate.