Merge from vendor branch OPENSSH:
[dragonfly.git] / contrib / binutils / gas / config / obj-multi.h
1 /* Multiple object format emulation.
2    Copyright 1995, 1996, 1997, 1999, 2000
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 2, 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, 59 Temple Place - Suite 330, Boston, MA
20    02111-1307, 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)                              \
41         (this_format->app_file                          \
42          ? (*this_format->app_file) (NAME)              \
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_after_relocs()                    \
59         (this_format->frob_file_after_relocs            \
60          ? (*this_format->frob_file_after_relocs) ()    \
61          : (void) 0)
62
63 #define obj_ecoff_set_ext                               \
64         (*this_format->ecoff_set_ext)
65
66 #define obj_pop_insert                                  \
67         (*this_format->pop_insert)
68
69 #define obj_read_begin_hook()                           \
70         (this_format->read_begin_hook                   \
71          ? (*this_format->read_begin_hook) ()           \
72          : (void) 0)
73
74 #define obj_symbol_new_hook(S)                          \
75         (this_format->symbol_new_hook                   \
76          ? (*this_format->symbol_new_hook) (S)          \
77          : (void) 0)
78
79 #define obj_sec_sym_ok_for_reloc(A)                     \
80         (this_format->sec_sym_ok_for_reloc              \
81          ? (*this_format->sec_sym_ok_for_reloc) (A)     \
82          : 0)
83
84 #define S_GET_SIZE                                      \
85         (*this_format->s_get_size)
86
87 #define S_SET_SIZE(S, N)                                \
88         (this_format->s_set_size                        \
89          ? (*this_format->s_set_size) (S, N)            \
90          : (void) 0)
91
92 #define S_GET_ALIGN                                     \
93         (*this_format->s_get_align)
94
95 #define S_SET_ALIGN(S, N)                               \
96         (this_format->s_set_align                       \
97          ? (*this_format->s_set_align) (S, N)           \
98          : (void) 0)
99
100 #define S_GET_OTHER                                     \
101         (*this_format->s_get_other)
102
103 #define S_SET_OTHER(S, O)                               \
104         (this_format->s_set_other                       \
105          ? (*this_format->s_set_other) (S, O)           \
106          : (void) 0)
107
108 #define S_GET_DESC                                      \
109         (*this_format->s_get_desc)
110
111 #define S_SET_DESC(S, D)                                \
112         (this_format->s_set_desc                        \
113          ? (*this_format->s_set_desc) (S, D)            \
114          : (void) 0)
115
116 #define S_GET_TYPE                                      \
117         (*this_format->s_get_desc)
118
119 #define S_SET_TYPE(S, T)                                \
120         (this_format->s_set_type                        \
121          ? (*this_format->s_set_type) (S, T)            \
122          : (void) 0)
123
124 #define OBJ_COPY_SYMBOL_ATTRIBUTES(d,s)                 \
125         (this_format->copy_symbol_attributes            \
126          ? (*this_format->copy_symbol_attributes) (d, s) \
127          : (void) 0)
128
129 #define OBJ_PROCESS_STAB(SEG,W,S,T,O,D)                 \
130         (this_format->process_stab                      \
131          ? (*this_format->process_stab) (SEG,W,S,T,O,D) \
132          : (void) 0)
133
134 #define SEPARATE_STAB_SECTIONS \
135         ((*this_format->separate_stab_sections) ())
136
137 #define INIT_STAB_SECTION(S)                            \
138         (this_format->init_stab_section                 \
139          ? (*this_format->init_stab_section) (S)        \
140          : (void) 0)
141
142 #define EMIT_SECTION_SYMBOLS (this_format->emit_section_symbols)
143
144 #ifdef OBJ_MAYBE_ELF
145 /* We need OBJ_SYMFIELD_TYPE so that symbol_get_obj is defined in symbol.c
146    We also need various STAB defines for stab.c  */
147 #include "obj-elf.h"
148 #endif
149
150 #ifdef OBJ_MAYBE_AOUT
151 /* We want aout_process_stab in stabs.c for the aout table.  Defining this
152    macro will have no other effect.  */
153 #define AOUT_STABS
154 #endif
155
156 #endif /* !OBJ_HEADER */
157 #endif /* _OBJ_MULTI_H */