1 /* This file is tc-alpha.h
2 Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
3 Written by Ken Raeburn <raeburn@cygnus.com>.
5 This file is part of GAS, the GNU Assembler.
7 GAS is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
12 GAS is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GAS; see the file COPYING. If not, write to the Free
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
24 #define TARGET_BYTES_BIG_ENDIAN 0
26 #define TARGET_ARCH bfd_arch_alpha
28 #define TARGET_FORMAT (OUTPUT_FLAVOR == bfd_target_ecoff_flavour \
29 ? "ecoff-littlealpha" \
30 : OUTPUT_FLAVOR == bfd_target_elf_flavour \
32 : OUTPUT_FLAVOR == bfd_target_evax_flavour \
36 #define NEED_LITERAL_POOL
37 #define TC_HANDLES_FX_DONE
38 #define REPEAT_CONS_EXPRESSIONS
40 extern int alpha_force_relocation PARAMS ((struct fix *));
41 extern int alpha_fix_adjustable PARAMS ((struct fix *));
43 extern unsigned long alpha_gprmask, alpha_fprmask;
44 extern valueT alpha_gp_value;
46 #define TC_FORCE_RELOCATION(FIXP) alpha_force_relocation (FIXP)
47 #define tc_fix_adjustable(FIXP) alpha_fix_adjustable (FIXP)
48 #define RELOC_REQUIRES_SYMBOL
50 #define md_convert_frag(b,s,f) as_fatal ("alpha convert_frag\n")
51 #define md_create_long_jump(p,f,t,fr,s) as_fatal("alpha_create_long_jump")
52 #define md_create_short_jump(p,f,t,fr,s) as_fatal("alpha_create_short_jump")
53 #define md_estimate_size_before_relax(f,s) \
54 (as_fatal("estimate_size_before_relax called"),1)
59 /* This field keeps the symbols position in the link section. */
60 #define OBJ_SYMFIELD_TYPE valueT
62 #define TC_CONS_FIX_NEW(FRAG,OFF,LEN,EXP) \
63 fix_new_exp (FRAG, OFF, (int)LEN, EXP, 0, \
64 LEN == 2 ? BFD_RELOC_16 \
65 : LEN == 4 ? BFD_RELOC_32 \
66 : LEN == 8 ? BFD_RELOC_64 \
67 : BFD_RELOC_ALPHA_LINKAGE);
70 #define md_number_to_chars number_to_chars_littleendian
72 extern int tc_get_register PARAMS ((int frame));
73 extern void alpha_frob_ecoff_data PARAMS ((void));
75 #define tc_frob_label(sym) alpha_define_label (sym)
76 extern void alpha_define_label PARAMS ((struct symbol *));
78 #define md_cons_align(nbytes) alpha_cons_align (nbytes)
79 extern void alpha_cons_align PARAMS ((int));
82 #define tc_frob_file_before_adjust() alpha_frob_file_before_adjust ()
83 extern void alpha_frob_file_before_adjust PARAMS ((void));
86 #define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */
89 #define ELF_TC_SPECIAL_SECTIONS \
90 { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_ALPHA_GPREL }, \
91 { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_ALPHA_GPREL },