daily update
[deliverable/binutils-gdb.git] / gas / config / tc-alpha.h
CommitLineData
252b5132 1/* This file is tc-alpha.h
94f592af 2 Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
f7e42eb4 3 Free Software Foundation, Inc.
252b5132
RH
4 Written by Ken Raeburn <raeburn@cygnus.com>.
5
6 This file is part of GAS, the GNU Assembler.
7
8 GAS is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2, or (at your option)
11 any later version.
12
13 GAS is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with GAS; see the file COPYING. If not, write to the Free
20 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
21 02111-1307, USA. */
22
23#define TC_ALPHA
24
25#define TARGET_BYTES_BIG_ENDIAN 0
26
27#define WORKING_DOT_WORD
28
29#define TARGET_ARCH bfd_arch_alpha
30
31#define TARGET_FORMAT (OUTPUT_FLAVOR == bfd_target_ecoff_flavour \
32 ? "ecoff-littlealpha" \
33 : OUTPUT_FLAVOR == bfd_target_elf_flavour \
34 ? "elf64-alpha" \
35 : OUTPUT_FLAVOR == bfd_target_evax_flavour \
36 ? "vms-alpha" \
37 : "unknown-format")
38
39#define NEED_LITERAL_POOL
252b5132
RH
40#define REPEAT_CONS_EXPRESSIONS
41
543833df 42extern void alpha_validate_fix PARAMS ((struct fix *));
252b5132
RH
43extern int alpha_force_relocation PARAMS ((struct fix *));
44extern int alpha_fix_adjustable PARAMS ((struct fix *));
45
46extern unsigned long alpha_gprmask, alpha_fprmask;
47extern valueT alpha_gp_value;
48
a7fda457 49#ifdef OBJ_ELF
543833df 50#define TC_VALIDATE_FIX(FIXP,SEGTYPE,SKIP) alpha_validate_fix (FIXP)
a7fda457
NC
51#endif
52
252b5132
RH
53#define TC_FORCE_RELOCATION(FIXP) alpha_force_relocation (FIXP)
54#define tc_fix_adjustable(FIXP) alpha_fix_adjustable (FIXP)
55#define RELOC_REQUIRES_SYMBOL
56
57/* This expression evaluates to false if the relocation is for a local
58 object for which we still want to do the relocation at runtime.
59 True if we are willing to perform this relocation while building
60 the .o file. This is only used for pcrel relocations. */
61
62#define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \
63 ((FIX)->fx_addsy == NULL \
64 || (! S_IS_EXTERNAL ((FIX)->fx_addsy) \
65 && ! S_IS_WEAK ((FIX)->fx_addsy) \
66 && S_IS_DEFINED ((FIX)->fx_addsy) \
67 && ! S_IS_COMMON ((FIX)->fx_addsy)))
68
69#define md_convert_frag(b,s,f) as_fatal ("alpha convert_frag\n")
70#define md_estimate_size_before_relax(f,s) \
07726851 71 (as_fatal ("estimate_size_before_relax called"),1)
252b5132
RH
72#define md_operand(x)
73
74#ifdef OBJ_EVAX
75
76/* This field keeps the symbols position in the link section. */
77#define OBJ_SYMFIELD_TYPE valueT
78
79#define TC_CONS_FIX_NEW(FRAG,OFF,LEN,EXP) \
80 fix_new_exp (FRAG, OFF, (int)LEN, EXP, 0, \
81 LEN == 2 ? BFD_RELOC_16 \
82 : LEN == 4 ? BFD_RELOC_32 \
83 : LEN == 8 ? BFD_RELOC_64 \
84 : BFD_RELOC_ALPHA_LINKAGE);
85#endif
86
87#define md_number_to_chars number_to_chars_littleendian
88
89extern int tc_get_register PARAMS ((int frame));
90extern void alpha_frob_ecoff_data PARAMS ((void));
91
92#define tc_frob_label(sym) alpha_define_label (sym)
49309057 93extern void alpha_define_label PARAMS ((symbolS *));
252b5132
RH
94
95#define md_cons_align(nbytes) alpha_cons_align (nbytes)
96extern void alpha_cons_align PARAMS ((int));
97
0a9ef439
RH
98#define HANDLE_ALIGN(fragp) alpha_handle_align (fragp)
99extern void alpha_handle_align PARAMS ((struct frag *));
100
101#define MAX_MEM_FOR_RS_ALIGN_CODE (3 + 4 + 8)
102
252b5132
RH
103#ifdef OBJ_ECOFF
104#define tc_frob_file_before_adjust() alpha_frob_file_before_adjust ()
105extern void alpha_frob_file_before_adjust PARAMS ((void));
106#endif
107
108#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */
109
110#ifdef OBJ_ELF
111#define ELF_TC_SPECIAL_SECTIONS \
112 { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_ALPHA_GPREL }, \
113 { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_ALPHA_GPREL },
d61a78a7
RH
114
115#define md_elf_section_letter alpha_elf_section_letter
116extern int alpha_elf_section_letter PARAMS ((int, char **));
117#define md_elf_section_flags alpha_elf_section_flags
118extern flagword alpha_elf_section_flags PARAMS ((flagword, int, int));
252b5132 119#endif
43b4c25e
MM
120
121/* Whether to add support for explict !relocation_op!sequence_number. At the
122 moment, only do this for ELF, though ECOFF could use it as well. */
123
124#ifdef OBJ_ELF
125#define RELOC_OP_P
126#endif
127
19f78583
RH
128/* Before the relocations are written, reorder them, so that user
129 supplied !lituse relocations follow the appropriate !literal
130 relocations. Also convert the gas-internal relocations to the
131 appropriate linker relocations. */
43b4c25e
MM
132#define tc_adjust_symtab() alpha_adjust_symtab ()
133extern void alpha_adjust_symtab PARAMS ((void));
134
135/* New fields for supporting explicit relocations (such as !literal to mark
136 where a pointer is loaded from the global table, and !lituse_base to track
137 all of the normal uses of that pointer). */
138
139#define TC_FIX_TYPE struct alpha_fix_tag
140
141struct alpha_fix_tag
142{
19f78583
RH
143 struct fix *next_reloc; /* next !lituse or !gpdisp */
144 struct alpha_reloc_tag *info; /* other members with same sequence */
43b4c25e
MM
145};
146
147/* Initialize the TC_FIX_TYPE field. */
148#define TC_INIT_FIX_DATA(fixP) \
149do { \
19f78583 150 fixP->tc_fix_data.next_reloc = (struct fix *)0; \
43b4c25e
MM
151 fixP->tc_fix_data.info = (struct alpha_literal_tag *)0; \
152} while (0)
153
154/* Work with DEBUG5 to print fields in tc_fix_type. */
155#define TC_FIX_DATA_PRINT(stream,fixP) \
156do { \
157 if (fixP->tc_fix_data.info) \
19f78583 158 fprintf (stderr, "\tinfo = 0x%lx, next_reloc = 0x%lx\n", \
43b4c25e 159 (long)fixP->tc_fix_data.info, \
19f78583 160 (long)fixP->tc_fix_data.next_reloc); \
43b4c25e 161} while (0)
4dc7ead9
RH
162
163#define DWARF2_LINE_MIN_INSN_LENGTH 4
This page took 0.141087 seconds and 4 git commands to generate.