Upload Tizen:Base source
[external/binutils.git] / gas / config / obj-multi.h
1 /* Multiple object format emulation.
2    Copyright 1995, 1996, 1997, 1999, 2000, 2002, 2004, 2005, 2007, 2009, 2010
3    Free Software Foundation, Inc.
4
5    This file is part of GAS, the GNU Assembler.
6
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 3, or (at your option)
10    any later version.
11
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.
16
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, 51 Franklin Street - Fifth Floor, Boston, MA
20    02110-1301, USA.  */
21
22 #ifndef _OBJ_MULTI_H
23 #define _OBJ_MULTI_H
24
25 #ifdef OBJ_HEADER
26 #include OBJ_HEADER
27 #else
28
29 #include "emul.h"
30 #include "targ-cpu.h"
31
32 #define OUTPUT_FLAVOR                                   \
33         (this_format->flavor)
34
35 #define obj_begin()                                     \
36         (this_format->begin                             \
37          ? (*this_format->begin) ()                     \
38          : (void) 0)
39
40 #define obj_app_file(NAME, APPFILE)                     \
41         (this_format->app_file                          \
42          ? (*this_format->app_file) (NAME, APPFILE)     \
43          : (void) 0)
44
45 #define obj_frob_symbol(S,P)                            \
46         (*this_format->frob_symbol) (S, &(P))
47
48 #define obj_frob_file()                                 \
49         (this_format->frob_file                         \
50          ? (*this_format->frob_file) ()                 \
51          : (void) 0)
52
53 #define obj_frob_file_before_adjust()                   \
54         (this_format->frob_file_before_adjust           \
55          ? (*this_format->frob_file_before_adjust) ()   \
56          : (void) 0)
57
58 #define obj_frob_file_before_fix()                      \
59         (this_format->frob_file_before_fix              \
60          ? (*this_format->frob_file_before_fix) ()      \
61          : (void) 0)
62
63 #define obj_frob_file_after_relocs()                    \
64         (this_format->frob_file_after_relocs            \
65          ? (*this_format->frob_file_after_relocs) ()    \
66          : (void) 0)
67
68 #define obj_ecoff_set_ext                               \
69         (*this_format->ecoff_set_ext)
70
71 #define obj_pop_insert                                  \
72         (*this_format->pop_insert)
73
74 #define obj_read_begin_hook()                           \
75         (this_format->read_begin_hook                   \
76          ? (*this_format->read_begin_hook) ()           \
77          : (void) 0)
78
79 #define obj_symbol_new_hook(S)                          \
80         (this_format->symbol_new_hook                   \
81          ? (*this_format->symbol_new_hook) (S)          \
82          : (void) 0)
83
84 #define obj_symbol_clone_hook(N, O)                     \
85         (this_format->symbol_clone_hook                 \
86          ? (*this_format->symbol_clone_hook) (N, O)     \
87          : (void) 0)
88
89 #define obj_sec_sym_ok_for_reloc(A)                     \
90         (this_format->sec_sym_ok_for_reloc              \
91          ? (*this_format->sec_sym_ok_for_reloc) (A)     \
92          : 0)
93
94 #define obj_adjust_symtab()                             \
95         (this_format->adjust_symtab                     \
96          ? (*this_format->adjust_symtab) ()             \
97          : (void) 0)
98
99 #define S_GET_SIZE                                      \
100         (*this_format->s_get_size)
101
102 #define S_SET_SIZE(S, N)                                \
103         (this_format->s_set_size                        \
104          ? (*this_format->s_set_size) (S, N)            \
105          : (void) 0)
106
107 #define S_GET_ALIGN                                     \
108         (*this_format->s_get_align)
109
110 #define S_SET_ALIGN(S, N)                               \
111         (this_format->s_set_align                       \
112          ? (*this_format->s_set_align) (S, N)           \
113          : (void) 0)
114
115 #define S_GET_OTHER                                     \
116         (*this_format->s_get_other)
117
118 #define S_SET_OTHER(S, O)                               \
119         (this_format->s_set_other                       \
120          ? (*this_format->s_set_other) (S, O)           \
121          : (void) 0)
122
123 #define S_GET_DESC                                      \
124         (*this_format->s_get_desc)
125
126 #define S_SET_DESC(S, D)                                \
127         (this_format->s_set_desc                        \
128          ? (*this_format->s_set_desc) (S, D)            \
129          : (void) 0)
130
131 #define S_GET_TYPE                                      \
132         (*this_format->s_get_desc)
133
134 #define S_SET_TYPE(S, T)                                \
135         (this_format->s_set_type                        \
136          ? (*this_format->s_set_type) (S, T)            \
137          : (void) 0)
138
139 #define OBJ_COPY_SYMBOL_ATTRIBUTES(d,s)                 \
140         (this_format->copy_symbol_attributes            \
141          ? (*this_format->copy_symbol_attributes) (d, s) \
142          : (void) 0)
143
144 #define OBJ_PROCESS_STAB(SEG,W,S,T,O,D)                 \
145         (this_format->process_stab                      \
146          ? (*this_format->process_stab) (SEG,W,S,T,O,D) \
147          : (void) 0)
148
149 #define SEPARATE_STAB_SECTIONS \
150         ((*this_format->separate_stab_sections) ())
151
152 #define INIT_STAB_SECTION(S)                            \
153         (this_format->init_stab_section                 \
154          ? (*this_format->init_stab_section) (S)        \
155          : (void) 0)
156
157 #define EMIT_SECTION_SYMBOLS (this_format->emit_section_symbols)
158
159 #define FAKE_LABEL_NAME (this_emulation->fake_label_name)
160
161 #ifdef OBJ_MAYBE_ELF
162 /* We need OBJ_SYMFIELD_TYPE so that symbol_get_obj is defined in symbol.c
163    We also need various STAB defines for stab.c  */
164 #include "obj-elf.h"
165 #endif
166
167 #ifdef OBJ_MAYBE_AOUT
168 /* We want aout_process_stab in stabs.c for the aout table.  Defining this
169    macro will have no other effect.  */
170 #define AOUT_STABS
171 #endif
172
173 #endif /* !OBJ_HEADER */
174 #endif /* _OBJ_MULTI_H */