diff options
author | Jason Thorpe <thorpej@netbsd.org> | 2002-06-09 00:45:42 +0000 |
---|---|---|
committer | Jason Thorpe <thorpej@netbsd.org> | 2002-06-09 00:45:42 +0000 |
commit | 7542c0f275dbb7217ddec0beea4985ba4a2f24b3 (patch) | |
tree | ff11d446c10f0144d8ff1c78ab38a251a48f11a1 /gas/config/tc-vax.h | |
parent | 05b65acb41e3fe35b45387e64a8f2f50b94935b6 (diff) | |
download | gdb-7542c0f275dbb7217ddec0beea4985ba4a2f24b3.zip gdb-7542c0f275dbb7217ddec0beea4985ba4a2f24b3.tar.gz gdb-7542c0f275dbb7217ddec0beea4985ba4a2f24b3.tar.bz2 |
2002-06-08 Matt Thomas <matt@3am-software.com>
* configure.in (vax-*-netbsdelf*, vax-*-netbsdaout*)
(vax-*-netbsd*): New targets.
* configure: Regenerate.
* config/aout_gnu.h (enum machine_type): Add M_VAX4K_NETBSD.
* config/tc-vax.c: Add support for ELF and PIC.
(flag_want_pic): New flag.
(float_cons): Fix prototype.
(md_apply_fix3): Adjust for BFD_ASSEMBLER.
(md_assemble): Introduce a new is_absolute local, and use it
rather than repeating the test. Make fatal errors actually
fatal by using as_fatal as appropriate. Adjust for BFD_ASSEMBLER.
Add support for ELF. Add support for PIC.
(md_convert_frag): Adjust for BFD_ASSEMBLER.
(tc_aout_fix_to_chars): Only include if OBJ_AOUT and not
BFD_ASSEMBLER.
(vax_reg_parse): Make the % register prefix mandatory for ELF,
optional for a.out, and not allowed for VMS. Adjust all callers.
(md_create_short_jump): Add ATTRIBUTE_UNUSED to unused arguments.
(md_create_long_jump): Likewise.
(md_undefined_symbol): Likewise.
(md_section_align): Likewise.
(md_shortopts): Allow -k and -K for ELF.
(md_parse_option): Set flag_want_pic if -k or -K.
(tc_headers_hook): New function if OBJ_AOUT and not BFD_ASSEMBLER.
(tc_gen_reloc): New function if BFD_ASSEMBLER.
* config/tc-vax.h (tc_headers_hook): Remove.
(TARGET_FORMAT): Set according to object format and target
environment.
(BFD_ARCH, TARGET_ARCH): Define.
(NO_RELOC): Adjust for BFD_ASSEMBLER.
(TC_RELOC_RTSYM_LOC_FIXUP, TC_FIX_ADJUSTABLE)
(tc_fix_adjustable): Define if BFD_ASSEMBLER.
* config/vax-inst.h (VAX_JSB, VAX_CALLS, VAX_CALLG): Define.
Diffstat (limited to 'gas/config/tc-vax.h')
-rw-r--r-- | gas/config/tc-vax.h | 58 |
1 files changed, 55 insertions, 3 deletions
diff --git a/gas/config/tc-vax.h b/gas/config/tc-vax.h index dbd8be1..4953ff4 100644 --- a/gas/config/tc-vax.h +++ b/gas/config/tc-vax.h @@ -23,12 +23,35 @@ #define TARGET_BYTES_BIG_ENDIAN 0 -#define NO_RELOC 0 -#define NOP_OPCODE 0x01 +#ifdef OBJ_AOUT +#ifdef TE_NetBSD +#define TARGET_FORMAT "a.out-vax-netbsd" +#endif +#ifndef TARGET_FORMAT +#define TARGET_FORMAT "a.out-vax-bsd" +#endif +#endif + +#ifdef OBJ_VMS +#define TARGET_FORMAT "vms-vax" +#endif + +#ifdef OBJ_ELF +#define TARGET_FORMAT "elf32-vax" +#endif + +#define BFD_ARCH bfd_arch_vax /* for non-BFD_ASSEMBLER */ +#define TARGET_ARCH bfd_arch_vax /* BFD_ASSEMBLER */ + +#ifdef BFD_ASSEMBLER +#define NO_RELOC BFD_RELOC_NONE +#else +#define NO_RELOC 0 +#endif +#define NOP_OPCODE 0x01 #define tc_aout_pre_write_hook(x) {;} /* not used */ #define tc_crawl_symbol_chain(a) {;} /* not used */ -#define tc_headers_hook(a) {;} /* not used */ #define md_operand(x) long md_chars_to_number PARAMS ((unsigned char *, int)); @@ -36,6 +59,35 @@ long md_chars_to_number PARAMS ((unsigned char *, int)); extern const struct relax_type md_relax_table[]; #define TC_GENERIC_RELAX_TABLE md_relax_table +/* This expression evaluates to false if the relocation is for a local object + for which we still want to do the relocation at runtime. True if we + are willing to perform this relocation while building the .o file. If + the reloc is against an externally visible symbol, then the assembler + should never do the relocation. */ + +#ifdef BFD_ASSEMBLER +#define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \ + ((FIX)->fx_addsy == NULL \ + || (! S_IS_EXTERNAL ((FIX)->fx_addsy) \ + && ! S_IS_WEAK ((FIX)->fx_addsy) \ + && S_IS_DEFINED ((FIX)->fx_addsy) \ + && ! S_IS_COMMON ((FIX)->fx_addsy))) +#define TC_FIX_ADJUSTABLE(FIX) \ + (!symbol_used_in_reloc_p ((FIX)) && tc_fix_adjustable ((FIX))) +#define tc_fix_adjustable(FIX) \ + ((FIX)->fx_r_type != BFD_RELOC_VTABLE_INHERIT \ + && (FIX)->fx_r_type != BFD_RELOC_32_PLT_PCREL \ + && (FIX)->fx_r_type != BFD_RELOC_32_GOT_PCREL \ + && (FIX)->fx_r_type != BFD_RELOC_VTABLE_ENTRY \ + && ! S_IS_EXTERNAL ((FIX)->fx_addsy) \ + && ! S_IS_WEAK ((FIX)->fx_addsy) \ + && ((FIX)->fx_pcrel \ + || ((FIX)->fx_subsy != NULL \ + && (S_GET_SEGMENT ((FIX)->fx_subsy) \ + == S_GET_SEGMENT ((FIX)->fx_addsy))) \ + || S_IS_LOCAL ((FIX)->fx_addsy))) +#endif + /* * Local Variables: * comment-column: 0 |