X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fconfig%2Ftc-m68hc11.h;h=35ac16d148c4a2a521c40c18434c009e1602eb41;hb=39d911fc3c6519799ca1af4365d4b56f9d71ca94;hp=8a1000dfd83f5e68cbff379b0f15a9fbc9e6f30d;hpb=4dc7ead9fdf2143fa28755909c2cf9f47659aca4;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/config/tc-m68hc11.h b/gas/config/tc-m68hc11.h index 8a1000dfd8..35ac16d148 100644 --- a/gas/config/tc-m68hc11.h +++ b/gas/config/tc-m68hc11.h @@ -1,11 +1,11 @@ /* tc-m68hc11.h -- Header file for tc-m68hc11.c. - Copyright (C) 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1999-2016 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, @@ -15,12 +15,14 @@ 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_M68HC11 #define TC_M68HC12 +struct fix; + /* Define TC_M68K so that we can use the MRI mode. */ #define TC_M68K @@ -29,58 +31,38 @@ /* Motorola assembler specs does not require '.' before pseudo-ops. */ #define NO_PSEUDO_DOT 1 -#if 0 -/* Treat the single quote as a string delimiter. - ??? This does not work at all. */ -#define SINGLE_QUOTE_STRINGS 1 -#endif - -#ifndef BFD_ASSEMBLER -#error M68HC11 support requires BFD_ASSEMBLER -#endif - /* The target BFD architecture. */ #define TARGET_ARCH (m68hc11_arch ()) -extern enum bfd_architecture m68hc11_arch PARAMS ((void)); +extern enum bfd_architecture m68hc11_arch (void); #define TARGET_MACH (m68hc11_mach ()) -extern int m68hc11_mach PARAMS ((void)); +extern int m68hc11_mach (void); #define TARGET_FORMAT (m68hc11_arch_format ()) -extern const char *m68hc11_arch_format PARAMS ((void)); - -/* Specific sections: - - The .page0 is a data section that is mapped in [0x0000..0x00FF]. - Page0 accesses are faster on the M68HC11. Soft registers used by GCC-m6811 - are located in .page0. - - The .vectors is the data section that represents the interrupt - vectors. */ -#define ELF_TC_SPECIAL_SECTIONS \ - { ".page0", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \ - { ".vectors", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, +extern const char *m68hc11_arch_format (void); #define LISTING_WORD_SIZE 1 /* A word is 1 bytes */ #define LISTING_LHS_WIDTH 4 /* One word on the first line */ #define LISTING_LHS_WIDTH_SECOND 4 /* One word on the second line */ #define LISTING_LHS_CONT_LINES 4 /* And 4 lines max */ -#define LISTING_HEADER "M68HC11 GAS " - -/* call md_pcrel_from_section, not md_pcrel_from */ -#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC) +#define LISTING_HEADER m68hc11_listing_header () +extern const char *m68hc11_listing_header (void); /* Permit temporary numeric labels. */ #define LOCAL_LABELS_FB 1 -#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ - -extern void m68hc11_init_after_args PARAMS ((void)); #define tc_init_after_args m68hc11_init_after_args +extern void m68hc11_init_after_args (void); -extern int m68hc11_parse_long_option PARAMS ((char *)); #define md_parse_long_option m68hc11_parse_long_option +extern int m68hc11_parse_long_option (char *); #define DWARF2_LINE_MIN_INSN_LENGTH 1 +/* Use 32-bit address to represent a symbol address so that we can + represent them with their page number. */ +#define DWARF2_ADDR_SIZE(bfd) 4 + /* We don't need to handle .word strangely. */ #define WORKING_DOT_WORD @@ -88,19 +70,39 @@ extern int m68hc11_parse_long_option PARAMS ((char *)); /* Relax table to translate short relative branches (-128..127) into absolute branches. */ -extern struct relax_type md_relax_table[]; #define TC_GENERIC_RELAX_TABLE md_relax_table +extern struct relax_type md_relax_table[]; -extern int m68hc11_cleanup PARAMS ((void)); +/* GAS only handles relaxations for pc-relative data targeting addresses + in the same segment, so we have to handle the rest on our own. */ +#define md_relax_frag(SEG, FRAGP, STRETCH) \ + ((FRAGP)->fr_symbol != NULL \ + && S_GET_SEGMENT ((FRAGP)->fr_symbol) == (SEG) \ + ? relax_frag (SEG, FRAGP, STRETCH) \ + : m68hc11_relax_frag (SEG, FRAGP, STRETCH)) +extern long m68hc11_relax_frag (segT, fragS*, long); + +#define TC_HANDLES_FX_DONE + +#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ + +/* Values passed to md_apply_fix don't include the symbol value. */ +#define MD_APPLY_SYM_VALUE(FIX) 0 + +/* No shared lib support, so we don't need to ensure externally + visible symbols can be overridden. */ +#define EXTERN_FORCE_RELOC 0 + +#define TC_FORCE_RELOCATION(fix) tc_m68hc11_force_relocation (fix) +extern int tc_m68hc11_force_relocation (struct fix *); + +#define tc_fix_adjustable(X) tc_m68hc11_fix_adjustable(X) +extern int tc_m68hc11_fix_adjustable (struct fix *); #define md_operand(x) -#define md_after_pass_hook() m68hc11_cleanup() -#define md_cleanup() m68hc11_cleanup() -#define md_do_align(a,b,c,d,e) m68hc11_cleanup() -#define tc_frob_label(sym) do {\ - m68hc11_cleanup(); \ - S_SET_VALUE (sym, (valueT) frag_now_fix ()); \ -} while (0) - -#define tc_print_statistics m68hc11_print_statistics -extern void m68hc11_print_statistics PARAMS ((FILE *)); + +#define elf_tc_final_processing m68hc11_elf_final_processing +extern void m68hc11_elf_final_processing (void); + +#define tc_print_statistics(FILE) m68hc11_print_statistics (FILE) +extern void m68hc11_print_statistics (FILE *);