/src/binutils-gdb/bfd/coffswap.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* Generic COFF swapping routines, for BFD. |
2 | | Copyright (C) 1990-2023 Free Software Foundation, Inc. |
3 | | Written by Cygnus Support. |
4 | | |
5 | | This file is part of BFD, the Binary File Descriptor library. |
6 | | |
7 | | This program 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 of the License, or |
10 | | (at your option) any later version. |
11 | | |
12 | | This program 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 this program; if not, write to the Free Software |
19 | | Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
20 | | MA 02110-1301, USA. */ |
21 | | |
22 | | /* This file contains routines used to swap COFF data. It is a header |
23 | | file because the details of swapping depend on the details of the |
24 | | structures used by each COFF implementation. This is included by |
25 | | coffcode.h, as well as by the ECOFF backend. |
26 | | |
27 | | Any file which uses this must first include "coff/internal.h" and |
28 | | "coff/CPU.h". The functions will then be correct for that CPU. */ |
29 | | |
30 | | #ifndef GET_FCN_LNNOPTR |
31 | | #define GET_FCN_LNNOPTR(abfd, ext) \ |
32 | 0 | H_GET_32 (abfd, ext->x_sym.x_fcnary.x_fcn.x_lnnoptr) |
33 | | #endif |
34 | | |
35 | | #ifndef GET_FCN_ENDNDX |
36 | | #define GET_FCN_ENDNDX(abfd, ext) \ |
37 | 0 | H_GET_32 (abfd, ext->x_sym.x_fcnary.x_fcn.x_endndx) |
38 | | #endif |
39 | | |
40 | | #ifndef PUT_FCN_LNNOPTR |
41 | | #define PUT_FCN_LNNOPTR(abfd, in, ext) \ |
42 | 0 | H_PUT_32 (abfd, in, ext->x_sym.x_fcnary.x_fcn.x_lnnoptr) |
43 | | #endif |
44 | | #ifndef PUT_FCN_ENDNDX |
45 | | #define PUT_FCN_ENDNDX(abfd, in, ext) \ |
46 | 0 | H_PUT_32 (abfd, in, ext->x_sym.x_fcnary.x_fcn.x_endndx) |
47 | | #endif |
48 | | #ifndef GET_LNSZ_LNNO |
49 | | #define GET_LNSZ_LNNO(abfd, ext) \ |
50 | 0 | H_GET_16 (abfd, ext->x_sym.x_misc.x_lnsz.x_lnno) |
51 | | #endif |
52 | | #ifndef GET_LNSZ_SIZE |
53 | | #define GET_LNSZ_SIZE(abfd, ext) \ |
54 | 0 | H_GET_16 (abfd, ext->x_sym.x_misc.x_lnsz.x_size) |
55 | | #endif |
56 | | #ifndef PUT_LNSZ_LNNO |
57 | | #define PUT_LNSZ_LNNO(abfd, in, ext) \ |
58 | 0 | H_PUT_16 (abfd, in, ext->x_sym.x_misc.x_lnsz.x_lnno) |
59 | | #endif |
60 | | #ifndef PUT_LNSZ_SIZE |
61 | | #define PUT_LNSZ_SIZE(abfd, in, ext) \ |
62 | 0 | H_PUT_16 (abfd, in, ext->x_sym.x_misc.x_lnsz.x_size) |
63 | | #endif |
64 | | #ifndef GET_SCN_SCNLEN |
65 | | #define GET_SCN_SCNLEN(abfd, ext) \ |
66 | 0 | H_GET_32 (abfd, ext->x_scn.x_scnlen) |
67 | | #endif |
68 | | #ifndef GET_SCN_NRELOC |
69 | | #define GET_SCN_NRELOC(abfd, ext) \ |
70 | 0 | H_GET_16 (abfd, ext->x_scn.x_nreloc) |
71 | | #endif |
72 | | #ifndef GET_SCN_NLINNO |
73 | | #define GET_SCN_NLINNO(abfd, ext) \ |
74 | 0 | H_GET_16 (abfd, ext->x_scn.x_nlinno) |
75 | | #endif |
76 | | #ifndef PUT_SCN_SCNLEN |
77 | | #define PUT_SCN_SCNLEN(abfd, in, ext) \ |
78 | 0 | H_PUT_32 (abfd, in, ext->x_scn.x_scnlen) |
79 | | #endif |
80 | | #ifndef PUT_SCN_NRELOC |
81 | | #define PUT_SCN_NRELOC(abfd, in, ext) \ |
82 | 0 | H_PUT_16 (abfd, in, ext->x_scn.x_nreloc) |
83 | | #endif |
84 | | #ifndef PUT_SCN_NLINNO |
85 | | #define PUT_SCN_NLINNO(abfd, in, ext) \ |
86 | 0 | H_PUT_16 (abfd, in, ext->x_scn.x_nlinno) |
87 | | #endif |
88 | | #ifndef GET_LINENO_LNNO |
89 | | #define GET_LINENO_LNNO(abfd, ext) \ |
90 | 0 | H_GET_16 (abfd, ext->l_lnno); |
91 | | #endif |
92 | | #ifndef PUT_LINENO_LNNO |
93 | | #define PUT_LINENO_LNNO(abfd, val, ext) \ |
94 | 0 | H_PUT_16 (abfd, val, ext->l_lnno); |
95 | | #endif |
96 | | |
97 | | /* The f_symptr field in the filehdr is sometimes 64 bits. */ |
98 | | #ifndef GET_FILEHDR_SYMPTR |
99 | 0 | #define GET_FILEHDR_SYMPTR H_GET_32 |
100 | | #endif |
101 | | #ifndef PUT_FILEHDR_SYMPTR |
102 | 0 | #define PUT_FILEHDR_SYMPTR H_PUT_32 |
103 | | #endif |
104 | | |
105 | | /* Some fields in the aouthdr are sometimes 64 bits. */ |
106 | | #ifndef GET_AOUTHDR_TSIZE |
107 | 0 | #define GET_AOUTHDR_TSIZE H_GET_32 |
108 | | #endif |
109 | | #ifndef PUT_AOUTHDR_TSIZE |
110 | 0 | #define PUT_AOUTHDR_TSIZE H_PUT_32 |
111 | | #endif |
112 | | #ifndef GET_AOUTHDR_DSIZE |
113 | 0 | #define GET_AOUTHDR_DSIZE H_GET_32 |
114 | | #endif |
115 | | #ifndef PUT_AOUTHDR_DSIZE |
116 | 0 | #define PUT_AOUTHDR_DSIZE H_PUT_32 |
117 | | #endif |
118 | | #ifndef GET_AOUTHDR_BSIZE |
119 | 0 | #define GET_AOUTHDR_BSIZE H_GET_32 |
120 | | #endif |
121 | | #ifndef PUT_AOUTHDR_BSIZE |
122 | 0 | #define PUT_AOUTHDR_BSIZE H_PUT_32 |
123 | | #endif |
124 | | #ifndef GET_AOUTHDR_ENTRY |
125 | 0 | #define GET_AOUTHDR_ENTRY H_GET_32 |
126 | | #endif |
127 | | #ifndef PUT_AOUTHDR_ENTRY |
128 | 0 | #define PUT_AOUTHDR_ENTRY H_PUT_32 |
129 | | #endif |
130 | | #ifndef GET_AOUTHDR_TEXT_START |
131 | 0 | #define GET_AOUTHDR_TEXT_START H_GET_32 |
132 | | #endif |
133 | | #ifndef PUT_AOUTHDR_TEXT_START |
134 | 0 | #define PUT_AOUTHDR_TEXT_START H_PUT_32 |
135 | | #endif |
136 | | #ifndef GET_AOUTHDR_DATA_START |
137 | 0 | #define GET_AOUTHDR_DATA_START H_GET_32 |
138 | | #endif |
139 | | #ifndef PUT_AOUTHDR_DATA_START |
140 | 0 | #define PUT_AOUTHDR_DATA_START H_PUT_32 |
141 | | #endif |
142 | | |
143 | | /* Some fields in the scnhdr are sometimes 64 bits. */ |
144 | | #ifndef GET_SCNHDR_PADDR |
145 | 0 | #define GET_SCNHDR_PADDR H_GET_32 |
146 | | #endif |
147 | | #ifndef PUT_SCNHDR_PADDR |
148 | 0 | #define PUT_SCNHDR_PADDR H_PUT_32 |
149 | | #endif |
150 | | #ifndef GET_SCNHDR_VADDR |
151 | 0 | #define GET_SCNHDR_VADDR H_GET_32 |
152 | | #endif |
153 | | #ifndef PUT_SCNHDR_VADDR |
154 | 0 | #define PUT_SCNHDR_VADDR H_PUT_32 |
155 | | #endif |
156 | | #ifndef GET_SCNHDR_SIZE |
157 | 0 | #define GET_SCNHDR_SIZE H_GET_32 |
158 | | #endif |
159 | | #ifndef PUT_SCNHDR_SIZE |
160 | 0 | #define PUT_SCNHDR_SIZE H_PUT_32 |
161 | | #endif |
162 | | #ifndef GET_SCNHDR_SCNPTR |
163 | 0 | #define GET_SCNHDR_SCNPTR H_GET_32 |
164 | | #endif |
165 | | #ifndef PUT_SCNHDR_SCNPTR |
166 | 0 | #define PUT_SCNHDR_SCNPTR H_PUT_32 |
167 | | #endif |
168 | | #ifndef GET_SCNHDR_RELPTR |
169 | 0 | #define GET_SCNHDR_RELPTR H_GET_32 |
170 | | #endif |
171 | | #ifndef PUT_SCNHDR_RELPTR |
172 | 0 | #define PUT_SCNHDR_RELPTR H_PUT_32 |
173 | | #endif |
174 | | #ifndef GET_SCNHDR_LNNOPTR |
175 | 0 | #define GET_SCNHDR_LNNOPTR H_GET_32 |
176 | | #endif |
177 | | #ifndef PUT_SCNHDR_LNNOPTR |
178 | 0 | #define PUT_SCNHDR_LNNOPTR H_PUT_32 |
179 | | #endif |
180 | | #ifndef GET_SCNHDR_NRELOC |
181 | 0 | #define GET_SCNHDR_NRELOC H_GET_16 |
182 | | #endif |
183 | | #ifndef MAX_SCNHDR_NRELOC |
184 | 0 | #define MAX_SCNHDR_NRELOC 0xffff |
185 | | #endif |
186 | | #ifndef PUT_SCNHDR_NRELOC |
187 | 0 | #define PUT_SCNHDR_NRELOC H_PUT_16 |
188 | | #endif |
189 | | #ifndef GET_SCNHDR_NLNNO |
190 | 0 | #define GET_SCNHDR_NLNNO H_GET_16 |
191 | | #endif |
192 | | #ifndef MAX_SCNHDR_NLNNO |
193 | 0 | #define MAX_SCNHDR_NLNNO 0xffff |
194 | | #endif |
195 | | #ifndef PUT_SCNHDR_NLNNO |
196 | 0 | #define PUT_SCNHDR_NLNNO H_PUT_16 |
197 | | #endif |
198 | | #ifndef GET_SCNHDR_FLAGS |
199 | 0 | #define GET_SCNHDR_FLAGS H_GET_32 |
200 | | #endif |
201 | | #ifndef PUT_SCNHDR_FLAGS |
202 | 0 | #define PUT_SCNHDR_FLAGS H_PUT_32 |
203 | | #endif |
204 | | |
205 | | #ifndef GET_RELOC_VADDR |
206 | 0 | #define GET_RELOC_VADDR H_GET_32 |
207 | | #endif |
208 | | #ifndef PUT_RELOC_VADDR |
209 | 0 | #define PUT_RELOC_VADDR H_PUT_32 |
210 | | #endif |
211 | | |
212 | | #ifndef NO_COFF_RELOCS |
213 | | |
214 | | static void |
215 | | coff_swap_reloc_in (bfd * abfd, void * src, void * dst) |
216 | 0 | { |
217 | 0 | RELOC *reloc_src = (RELOC *) src; |
218 | 0 | struct internal_reloc *reloc_dst = (struct internal_reloc *) dst; |
219 | |
|
220 | 0 | reloc_dst->r_vaddr = GET_RELOC_VADDR (abfd, reloc_src->r_vaddr); |
221 | 0 | reloc_dst->r_symndx = H_GET_S32 (abfd, reloc_src->r_symndx); |
222 | 0 | reloc_dst->r_type = H_GET_16 (abfd, reloc_src->r_type); |
223 | |
|
224 | | #ifdef SWAP_IN_RELOC_OFFSET |
225 | 0 | reloc_dst->r_offset = SWAP_IN_RELOC_OFFSET (abfd, reloc_src->r_offset); |
226 | | #endif |
227 | 0 | } Unexecuted instantiation: coff-x86_64.c:coff_swap_reloc_in Unexecuted instantiation: cf-i386lynx.c:coff_swap_reloc_in Unexecuted instantiation: coff-go32.c:coff_swap_reloc_in Unexecuted instantiation: coff-i386.c:coff_swap_reloc_in Unexecuted instantiation: coff-sh.c:coff_swap_reloc_in Unexecuted instantiation: coff-stgo32.c:coff_swap_reloc_in Unexecuted instantiation: coff-tic30.c:coff_swap_reloc_in Unexecuted instantiation: coff-tic4x.c:coff_swap_reloc_in Unexecuted instantiation: coff-tic54x.c:coff_swap_reloc_in Unexecuted instantiation: coff-z80.c:coff_swap_reloc_in Unexecuted instantiation: coff-z8k.c:coff_swap_reloc_in |
228 | | |
229 | | static unsigned int |
230 | | coff_swap_reloc_out (bfd * abfd, void * src, void * dst) |
231 | 0 | { |
232 | 0 | struct internal_reloc *reloc_src = (struct internal_reloc *) src; |
233 | 0 | struct external_reloc *reloc_dst = (struct external_reloc *) dst; |
234 | |
|
235 | 0 | PUT_RELOC_VADDR (abfd, reloc_src->r_vaddr, reloc_dst->r_vaddr); |
236 | 0 | H_PUT_32 (abfd, reloc_src->r_symndx, reloc_dst->r_symndx); |
237 | 0 | H_PUT_16 (abfd, reloc_src->r_type, reloc_dst->r_type); |
238 | |
|
239 | | #ifdef SWAP_OUT_RELOC_OFFSET |
240 | 0 | SWAP_OUT_RELOC_OFFSET (abfd, reloc_src->r_offset, reloc_dst->r_offset); |
241 | | #endif |
242 | | #ifdef SWAP_OUT_RELOC_EXTRA |
243 | 0 | SWAP_OUT_RELOC_EXTRA (abfd, reloc_src, reloc_dst); |
244 | | #endif |
245 | |
|
246 | 0 | return bfd_coff_relsz (abfd); |
247 | 0 | } Unexecuted instantiation: coff-x86_64.c:coff_swap_reloc_out Unexecuted instantiation: cf-i386lynx.c:coff_swap_reloc_out Unexecuted instantiation: coff-go32.c:coff_swap_reloc_out Unexecuted instantiation: coff-i386.c:coff_swap_reloc_out Unexecuted instantiation: coff-sh.c:coff_swap_reloc_out Unexecuted instantiation: coff-stgo32.c:coff_swap_reloc_out Unexecuted instantiation: coff-tic30.c:coff_swap_reloc_out Unexecuted instantiation: coff-tic4x.c:coff_swap_reloc_out Unexecuted instantiation: coff-tic54x.c:coff_swap_reloc_out Unexecuted instantiation: coff-z80.c:coff_swap_reloc_out Unexecuted instantiation: coff-z8k.c:coff_swap_reloc_out |
248 | | |
249 | | #ifdef TICOFF |
250 | | static void |
251 | | coff_swap_reloc_v0_in (bfd *abfd, void *src, void *dst) |
252 | 0 | { |
253 | 0 | struct external_reloc_v0 *reloc_src = (struct external_reloc_v0 *) src; |
254 | 0 | struct internal_reloc *reloc_dst = (struct internal_reloc *) dst; |
255 | |
|
256 | 0 | reloc_dst->r_vaddr = GET_RELOC_VADDR (abfd, reloc_src->r_vaddr); |
257 | 0 | reloc_dst->r_symndx = H_GET_16 (abfd, reloc_src->r_symndx); |
258 | 0 | reloc_dst->r_type = H_GET_16 (abfd, reloc_src->r_type); |
259 | 0 | } Unexecuted instantiation: coff-tic4x.c:coff_swap_reloc_v0_in Unexecuted instantiation: coff-tic54x.c:coff_swap_reloc_v0_in |
260 | | |
261 | | static unsigned int |
262 | | coff_swap_reloc_v0_out (bfd *abfd, void *src, void *dst) |
263 | 0 | { |
264 | 0 | struct internal_reloc *reloc_src = (struct internal_reloc *) src; |
265 | 0 | struct external_reloc_v0 *reloc_dst = (struct external_reloc_v0 *) dst; |
266 | |
|
267 | 0 | PUT_RELOC_VADDR (abfd, reloc_src->r_vaddr, reloc_dst->r_vaddr); |
268 | 0 | H_PUT_16 (abfd, reloc_src->r_symndx, reloc_dst->r_symndx); |
269 | 0 | H_PUT_16 (abfd, reloc_src->r_type, reloc_dst->r_type); |
270 | 0 | SWAP_OUT_RELOC_EXTRA (abfd, reloc_src, reloc_dst); |
271 | |
|
272 | 0 | return bfd_coff_relsz (abfd); |
273 | 0 | } Unexecuted instantiation: coff-tic4x.c:coff_swap_reloc_v0_out Unexecuted instantiation: coff-tic54x.c:coff_swap_reloc_v0_out |
274 | | #endif |
275 | | |
276 | | #endif /* NO_COFF_RELOCS */ |
277 | | |
278 | | static void |
279 | | coff_swap_filehdr_in (bfd * abfd, void * src, void * dst) |
280 | 0 | { |
281 | 0 | FILHDR *filehdr_src = (FILHDR *) src; |
282 | 0 | struct internal_filehdr *filehdr_dst = (struct internal_filehdr *) dst; |
283 | |
|
284 | | #ifdef COFF_ADJUST_FILEHDR_IN_PRE |
285 | | COFF_ADJUST_FILEHDR_IN_PRE (abfd, src, dst); |
286 | | #endif |
287 | 0 | filehdr_dst->f_magic = H_GET_16 (abfd, filehdr_src->f_magic); |
288 | 0 | filehdr_dst->f_nscns = H_GET_16 (abfd, filehdr_src->f_nscns); |
289 | 0 | filehdr_dst->f_timdat = H_GET_32 (abfd, filehdr_src->f_timdat); |
290 | 0 | filehdr_dst->f_symptr = GET_FILEHDR_SYMPTR (abfd, filehdr_src->f_symptr); |
291 | 0 | filehdr_dst->f_nsyms = H_GET_32 (abfd, filehdr_src->f_nsyms); |
292 | 0 | filehdr_dst->f_opthdr = H_GET_16 (abfd, filehdr_src->f_opthdr); |
293 | 0 | filehdr_dst->f_flags = H_GET_16 (abfd, filehdr_src->f_flags); |
294 | |
|
295 | | #ifdef COFF_ADJUST_FILEHDR_IN_POST |
296 | 0 | COFF_ADJUST_FILEHDR_IN_POST (abfd, src, dst); |
297 | | #endif |
298 | 0 | } Unexecuted instantiation: coff-alpha.c:alpha_ecoff_swap_filehdr_in Unexecuted instantiation: coff-x86_64.c:coff_swap_filehdr_in Unexecuted instantiation: coff64-rs6000.c:coff_swap_filehdr_in Unexecuted instantiation: cf-i386lynx.c:coff_swap_filehdr_in Unexecuted instantiation: coff-go32.c:coff_swap_filehdr_in Unexecuted instantiation: coff-i386.c:coff_swap_filehdr_in Unexecuted instantiation: coff-mips.c:mips_ecoff_swap_filehdr_in Unexecuted instantiation: coff-rs6000.c:coff_swap_filehdr_in Unexecuted instantiation: coff-sh.c:coff_swap_filehdr_in Unexecuted instantiation: coff-stgo32.c:coff_swap_filehdr_in Unexecuted instantiation: coff-tic30.c:coff_swap_filehdr_in Unexecuted instantiation: coff-tic4x.c:coff_swap_filehdr_in Unexecuted instantiation: coff-tic54x.c:coff_swap_filehdr_in Unexecuted instantiation: coff-z80.c:coff_swap_filehdr_in Unexecuted instantiation: coff-z8k.c:coff_swap_filehdr_in |
299 | | |
300 | | static unsigned int |
301 | | coff_swap_filehdr_out (bfd *abfd, void * in, void * out) |
302 | 0 | { |
303 | 0 | struct internal_filehdr *filehdr_in = (struct internal_filehdr *) in; |
304 | 0 | FILHDR *filehdr_out = (FILHDR *) out; |
305 | |
|
306 | | #ifdef COFF_ADJUST_FILEHDR_OUT_PRE |
307 | | COFF_ADJUST_FILEHDR_OUT_PRE (abfd, in, out); |
308 | | #endif |
309 | 0 | H_PUT_16 (abfd, filehdr_in->f_magic, filehdr_out->f_magic); |
310 | 0 | H_PUT_16 (abfd, filehdr_in->f_nscns, filehdr_out->f_nscns); |
311 | 0 | H_PUT_32 (abfd, filehdr_in->f_timdat, filehdr_out->f_timdat); |
312 | 0 | PUT_FILEHDR_SYMPTR (abfd, filehdr_in->f_symptr, filehdr_out->f_symptr); |
313 | 0 | H_PUT_32 (abfd, filehdr_in->f_nsyms, filehdr_out->f_nsyms); |
314 | 0 | H_PUT_16 (abfd, filehdr_in->f_opthdr, filehdr_out->f_opthdr); |
315 | 0 | H_PUT_16 (abfd, filehdr_in->f_flags, filehdr_out->f_flags); |
316 | |
|
317 | | #ifdef COFF_ADJUST_FILEHDR_OUT_POST |
318 | 0 | COFF_ADJUST_FILEHDR_OUT_POST (abfd, in, out); |
319 | | #endif |
320 | 0 | return bfd_coff_filhsz (abfd); |
321 | 0 | } Unexecuted instantiation: coff-alpha.c:alpha_ecoff_swap_filehdr_out Unexecuted instantiation: coff-x86_64.c:coff_swap_filehdr_out Unexecuted instantiation: coff64-rs6000.c:coff_swap_filehdr_out Unexecuted instantiation: cf-i386lynx.c:coff_swap_filehdr_out Unexecuted instantiation: coff-go32.c:coff_swap_filehdr_out Unexecuted instantiation: coff-i386.c:coff_swap_filehdr_out Unexecuted instantiation: coff-mips.c:mips_ecoff_swap_filehdr_out Unexecuted instantiation: coff-rs6000.c:coff_swap_filehdr_out Unexecuted instantiation: coff-sh.c:coff_swap_filehdr_out Unexecuted instantiation: coff-stgo32.c:coff_swap_filehdr_out Unexecuted instantiation: coff-tic30.c:coff_swap_filehdr_out Unexecuted instantiation: coff-tic4x.c:coff_swap_filehdr_out Unexecuted instantiation: coff-tic54x.c:coff_swap_filehdr_out Unexecuted instantiation: coff-z80.c:coff_swap_filehdr_out Unexecuted instantiation: coff-z8k.c:coff_swap_filehdr_out |
322 | | |
323 | | #ifndef NO_COFF_SYMBOLS |
324 | | |
325 | | static void |
326 | | coff_swap_sym_in (bfd * abfd, void * ext1, void * in1) |
327 | 0 | { |
328 | 0 | SYMENT *ext = (SYMENT *) ext1; |
329 | 0 | struct internal_syment *in = (struct internal_syment *) in1; |
330 | |
|
331 | 0 | if (ext->e.e_name[0] == 0) |
332 | 0 | { |
333 | 0 | in->_n._n_n._n_zeroes = 0; |
334 | 0 | in->_n._n_n._n_offset = H_GET_32 (abfd, ext->e.e.e_offset); |
335 | 0 | } |
336 | 0 | else |
337 | 0 | { |
338 | | #if SYMNMLEN != E_SYMNMLEN |
339 | | #error we need to cope with truncating or extending SYMNMLEN |
340 | | #else |
341 | 0 | memcpy (in->_n._n_name, ext->e.e_name, SYMNMLEN); |
342 | 0 | #endif |
343 | 0 | } |
344 | |
|
345 | 0 | in->n_value = H_GET_32 (abfd, ext->e_value); |
346 | 0 | in->n_scnum = (short) H_GET_16 (abfd, ext->e_scnum); |
347 | 0 | if (sizeof (ext->e_type) == 2) |
348 | 0 | in->n_type = H_GET_16 (abfd, ext->e_type); |
349 | 0 | else |
350 | 0 | in->n_type = H_GET_32 (abfd, ext->e_type); |
351 | 0 | in->n_sclass = H_GET_8 (abfd, ext->e_sclass); |
352 | 0 | in->n_numaux = H_GET_8 (abfd, ext->e_numaux); |
353 | | #ifdef COFF_ADJUST_SYM_IN_POST |
354 | 0 | COFF_ADJUST_SYM_IN_POST (abfd, ext1, in1); |
355 | | #endif |
356 | 0 | } Unexecuted instantiation: coff-x86_64.c:coff_swap_sym_in Unexecuted instantiation: cf-i386lynx.c:coff_swap_sym_in Unexecuted instantiation: coff-go32.c:coff_swap_sym_in Unexecuted instantiation: coff-i386.c:coff_swap_sym_in Unexecuted instantiation: coff-sh.c:coff_swap_sym_in Unexecuted instantiation: coff-stgo32.c:coff_swap_sym_in Unexecuted instantiation: coff-tic30.c:coff_swap_sym_in Unexecuted instantiation: coff-tic4x.c:coff_swap_sym_in Unexecuted instantiation: coff-tic54x.c:coff_swap_sym_in Unexecuted instantiation: coff-z80.c:coff_swap_sym_in Unexecuted instantiation: coff-z8k.c:coff_swap_sym_in |
357 | | |
358 | | static unsigned int |
359 | | coff_swap_sym_out (bfd * abfd, void * inp, void * extp) |
360 | 0 | { |
361 | 0 | struct internal_syment *in = (struct internal_syment *) inp; |
362 | 0 | SYMENT *ext =(SYMENT *) extp; |
363 | |
|
364 | | #ifdef COFF_ADJUST_SYM_OUT_PRE |
365 | | COFF_ADJUST_SYM_OUT_PRE (abfd, inp, extp); |
366 | | #endif |
367 | |
|
368 | 0 | if (in->_n._n_name[0] == 0) |
369 | 0 | { |
370 | 0 | H_PUT_32 (abfd, 0, ext->e.e.e_zeroes); |
371 | 0 | H_PUT_32 (abfd, in->_n._n_n._n_offset, ext->e.e.e_offset); |
372 | 0 | } |
373 | 0 | else |
374 | 0 | { |
375 | | #if SYMNMLEN != E_SYMNMLEN |
376 | | #error we need to cope with truncating or extending SYMNMLEN |
377 | | #else |
378 | 0 | memcpy (ext->e.e_name, in->_n._n_name, SYMNMLEN); |
379 | 0 | #endif |
380 | 0 | } |
381 | |
|
382 | 0 | H_PUT_32 (abfd, in->n_value, ext->e_value); |
383 | 0 | H_PUT_16 (abfd, in->n_scnum, ext->e_scnum); |
384 | |
|
385 | 0 | if (sizeof (ext->e_type) == 2) |
386 | 0 | H_PUT_16 (abfd, in->n_type, ext->e_type); |
387 | 0 | else |
388 | 0 | H_PUT_32 (abfd, in->n_type, ext->e_type); |
389 | |
|
390 | 0 | H_PUT_8 (abfd, in->n_sclass, ext->e_sclass); |
391 | 0 | H_PUT_8 (abfd, in->n_numaux, ext->e_numaux); |
392 | |
|
393 | | #ifdef COFF_ADJUST_SYM_OUT_POST |
394 | 0 | COFF_ADJUST_SYM_OUT_POST (abfd, inp, extp); |
395 | | #endif |
396 | |
|
397 | 0 | return SYMESZ; |
398 | 0 | } Unexecuted instantiation: coff-x86_64.c:coff_swap_sym_out Unexecuted instantiation: cf-i386lynx.c:coff_swap_sym_out Unexecuted instantiation: coff-go32.c:coff_swap_sym_out Unexecuted instantiation: coff-i386.c:coff_swap_sym_out Unexecuted instantiation: coff-sh.c:coff_swap_sym_out Unexecuted instantiation: coff-stgo32.c:coff_swap_sym_out Unexecuted instantiation: coff-tic30.c:coff_swap_sym_out Unexecuted instantiation: coff-tic4x.c:coff_swap_sym_out Unexecuted instantiation: coff-tic54x.c:coff_swap_sym_out Unexecuted instantiation: coff-z80.c:coff_swap_sym_out Unexecuted instantiation: coff-z8k.c:coff_swap_sym_out |
399 | | |
400 | | static void |
401 | | coff_swap_aux_in (bfd *abfd, |
402 | | void * ext1, |
403 | | int type, |
404 | | int in_class, |
405 | | int indx, |
406 | | int numaux, |
407 | | void * in1) |
408 | 0 | { |
409 | 0 | AUXENT *ext = (AUXENT *) ext1; |
410 | 0 | union internal_auxent *in = (union internal_auxent *) in1; |
411 | |
|
412 | | #ifdef COFF_ADJUST_AUX_IN_PRE |
413 | | COFF_ADJUST_AUX_IN_PRE (abfd, ext1, type, in_class, indx, numaux, in1); |
414 | | #endif |
415 | |
|
416 | 0 | switch (in_class) |
417 | 0 | { |
418 | 0 | case C_FILE: |
419 | 0 | if (ext->x_file.x_fname[0] == 0) |
420 | 0 | { |
421 | 0 | in->x_file.x_n.x_n.x_zeroes = 0; |
422 | 0 | in->x_file.x_n.x_n.x_offset = H_GET_32 (abfd, ext->x_file.x_n.x_offset); |
423 | 0 | } |
424 | 0 | else |
425 | 0 | { |
426 | | #if FILNMLEN != E_FILNMLEN |
427 | | #error we need to cope with truncating or extending FILNMLEN |
428 | | #else |
429 | 0 | if (numaux > 1 && obj_pe (abfd)) |
430 | 0 | { |
431 | 0 | if (indx == 0) |
432 | 0 | memcpy (in->x_file.x_n.x_fname, ext->x_file.x_fname, |
433 | 0 | numaux * sizeof (AUXENT)); |
434 | 0 | } |
435 | 0 | else |
436 | 0 | memcpy (in->x_file.x_n.x_fname, ext->x_file.x_fname, FILNMLEN); |
437 | 0 | #endif |
438 | 0 | } |
439 | 0 | goto end; |
440 | | |
441 | 0 | case C_STAT: |
442 | 0 | #ifdef C_LEAFSTAT |
443 | 0 | case C_LEAFSTAT: |
444 | 0 | #endif |
445 | 0 | case C_HIDDEN: |
446 | 0 | if (type == T_NULL) |
447 | 0 | { |
448 | 0 | in->x_scn.x_scnlen = GET_SCN_SCNLEN (abfd, ext); |
449 | 0 | in->x_scn.x_nreloc = GET_SCN_NRELOC (abfd, ext); |
450 | 0 | in->x_scn.x_nlinno = GET_SCN_NLINNO (abfd, ext); |
451 | | |
452 | | /* PE defines some extra fields; we zero them out for |
453 | | safety. */ |
454 | 0 | in->x_scn.x_checksum = 0; |
455 | 0 | in->x_scn.x_associated = 0; |
456 | 0 | in->x_scn.x_comdat = 0; |
457 | |
|
458 | 0 | goto end; |
459 | 0 | } |
460 | 0 | break; |
461 | 0 | } |
462 | | |
463 | 0 | in->x_sym.x_tagndx.u32 = H_GET_32 (abfd, ext->x_sym.x_tagndx); |
464 | 0 | #ifndef NO_TVNDX |
465 | 0 | in->x_sym.x_tvndx = H_GET_16 (abfd, ext->x_sym.x_tvndx); |
466 | 0 | #endif |
467 | |
|
468 | 0 | if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type) |
469 | 0 | || ISTAG (in_class)) |
470 | 0 | { |
471 | 0 | in->x_sym.x_fcnary.x_fcn.x_lnnoptr = GET_FCN_LNNOPTR (abfd, ext); |
472 | 0 | in->x_sym.x_fcnary.x_fcn.x_endndx.u32 = GET_FCN_ENDNDX (abfd, ext); |
473 | 0 | } |
474 | 0 | else |
475 | 0 | { |
476 | | #if DIMNUM != E_DIMNUM |
477 | | #error we need to cope with truncating or extending DIMNUM |
478 | | #endif |
479 | 0 | in->x_sym.x_fcnary.x_ary.x_dimen[0] = |
480 | 0 | H_GET_16 (abfd, ext->x_sym.x_fcnary.x_ary.x_dimen[0]); |
481 | 0 | in->x_sym.x_fcnary.x_ary.x_dimen[1] = |
482 | 0 | H_GET_16 (abfd, ext->x_sym.x_fcnary.x_ary.x_dimen[1]); |
483 | 0 | in->x_sym.x_fcnary.x_ary.x_dimen[2] = |
484 | 0 | H_GET_16 (abfd, ext->x_sym.x_fcnary.x_ary.x_dimen[2]); |
485 | 0 | in->x_sym.x_fcnary.x_ary.x_dimen[3] = |
486 | 0 | H_GET_16 (abfd, ext->x_sym.x_fcnary.x_ary.x_dimen[3]); |
487 | 0 | } |
488 | |
|
489 | 0 | if (ISFCN (type)) |
490 | 0 | in->x_sym.x_misc.x_fsize = H_GET_32 (abfd, ext->x_sym.x_misc.x_fsize); |
491 | 0 | else |
492 | 0 | { |
493 | 0 | in->x_sym.x_misc.x_lnsz.x_lnno = GET_LNSZ_LNNO (abfd, ext); |
494 | 0 | in->x_sym.x_misc.x_lnsz.x_size = GET_LNSZ_SIZE (abfd, ext); |
495 | 0 | } |
496 | |
|
497 | 0 | end: ; |
498 | |
|
499 | | #ifdef COFF_ADJUST_AUX_IN_POST |
500 | | COFF_ADJUST_AUX_IN_POST (abfd, ext1, type, in_class, indx, numaux, in1); |
501 | | #endif |
502 | 0 | } Unexecuted instantiation: coff-x86_64.c:coff_swap_aux_in Unexecuted instantiation: cf-i386lynx.c:coff_swap_aux_in Unexecuted instantiation: coff-go32.c:coff_swap_aux_in Unexecuted instantiation: coff-i386.c:coff_swap_aux_in Unexecuted instantiation: coff-sh.c:coff_swap_aux_in Unexecuted instantiation: coff-stgo32.c:coff_swap_aux_in Unexecuted instantiation: coff-tic30.c:coff_swap_aux_in Unexecuted instantiation: coff-tic4x.c:coff_swap_aux_in Unexecuted instantiation: coff-tic54x.c:coff_swap_aux_in Unexecuted instantiation: coff-z80.c:coff_swap_aux_in Unexecuted instantiation: coff-z8k.c:coff_swap_aux_in |
503 | | |
504 | | static unsigned int |
505 | | coff_swap_aux_out (bfd * abfd, |
506 | | void * inp, |
507 | | int type, |
508 | | int in_class, |
509 | | int indx ATTRIBUTE_UNUSED, |
510 | | int numaux ATTRIBUTE_UNUSED, |
511 | | void * extp) |
512 | 0 | { |
513 | 0 | union internal_auxent * in = (union internal_auxent *) inp; |
514 | 0 | AUXENT *ext = (AUXENT *) extp; |
515 | |
|
516 | | #ifdef COFF_ADJUST_AUX_OUT_PRE |
517 | | COFF_ADJUST_AUX_OUT_PRE (abfd, inp, type, in_class, indx, numaux, extp); |
518 | | #endif |
519 | |
|
520 | 0 | memset (ext, 0, AUXESZ); |
521 | |
|
522 | 0 | switch (in_class) |
523 | 0 | { |
524 | 0 | case C_FILE: |
525 | 0 | if (in->x_file.x_n.x_fname[0] == 0) |
526 | 0 | { |
527 | 0 | H_PUT_32 (abfd, 0, ext->x_file.x_n.x_zeroes); |
528 | 0 | H_PUT_32 (abfd, in->x_file.x_n.x_n.x_offset, ext->x_file.x_n.x_offset); |
529 | 0 | } |
530 | 0 | else |
531 | 0 | { |
532 | | #if FILNMLEN != E_FILNMLEN |
533 | | #error we need to cope with truncating or extending FILNMLEN |
534 | | #else |
535 | 0 | memcpy (ext->x_file.x_fname, in->x_file.x_n.x_fname, FILNMLEN); |
536 | 0 | #endif |
537 | 0 | } |
538 | 0 | goto end; |
539 | | |
540 | 0 | case C_STAT: |
541 | 0 | #ifdef C_LEAFSTAT |
542 | 0 | case C_LEAFSTAT: |
543 | 0 | #endif |
544 | 0 | case C_HIDDEN: |
545 | 0 | if (type == T_NULL) |
546 | 0 | { |
547 | 0 | PUT_SCN_SCNLEN (abfd, in->x_scn.x_scnlen, ext); |
548 | 0 | PUT_SCN_NRELOC (abfd, in->x_scn.x_nreloc, ext); |
549 | 0 | PUT_SCN_NLINNO (abfd, in->x_scn.x_nlinno, ext); |
550 | 0 | goto end; |
551 | 0 | } |
552 | 0 | break; |
553 | 0 | } |
554 | | |
555 | 0 | H_PUT_32 (abfd, in->x_sym.x_tagndx.u32, ext->x_sym.x_tagndx); |
556 | 0 | #ifndef NO_TVNDX |
557 | 0 | H_PUT_16 (abfd, in->x_sym.x_tvndx, ext->x_sym.x_tvndx); |
558 | 0 | #endif |
559 | |
|
560 | 0 | if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type) |
561 | 0 | || ISTAG (in_class)) |
562 | 0 | { |
563 | 0 | PUT_FCN_LNNOPTR (abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr, ext); |
564 | 0 | PUT_FCN_ENDNDX (abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.u32, ext); |
565 | 0 | } |
566 | 0 | else |
567 | 0 | { |
568 | | #if DIMNUM != E_DIMNUM |
569 | | #error we need to cope with truncating or extending DIMNUM |
570 | | #endif |
571 | 0 | H_PUT_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[0], |
572 | 0 | ext->x_sym.x_fcnary.x_ary.x_dimen[0]); |
573 | 0 | H_PUT_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[1], |
574 | 0 | ext->x_sym.x_fcnary.x_ary.x_dimen[1]); |
575 | 0 | H_PUT_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[2], |
576 | 0 | ext->x_sym.x_fcnary.x_ary.x_dimen[2]); |
577 | 0 | H_PUT_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[3], |
578 | 0 | ext->x_sym.x_fcnary.x_ary.x_dimen[3]); |
579 | 0 | } |
580 | |
|
581 | 0 | if (ISFCN (type)) |
582 | 0 | H_PUT_32 (abfd, in->x_sym.x_misc.x_fsize, ext->x_sym.x_misc.x_fsize); |
583 | 0 | else |
584 | 0 | { |
585 | 0 | PUT_LNSZ_LNNO (abfd, in->x_sym.x_misc.x_lnsz.x_lnno, ext); |
586 | 0 | PUT_LNSZ_SIZE (abfd, in->x_sym.x_misc.x_lnsz.x_size, ext); |
587 | 0 | } |
588 | |
|
589 | 0 | end: |
590 | | #ifdef COFF_ADJUST_AUX_OUT_POST |
591 | | COFF_ADJUST_AUX_OUT_POST (abfd, inp, type, in_class, indx, numaux, extp); |
592 | | #endif |
593 | 0 | return AUXESZ; |
594 | 0 | } Unexecuted instantiation: coff-x86_64.c:coff_swap_aux_out Unexecuted instantiation: cf-i386lynx.c:coff_swap_aux_out Unexecuted instantiation: coff-go32.c:coff_swap_aux_out Unexecuted instantiation: coff-i386.c:coff_swap_aux_out Unexecuted instantiation: coff-sh.c:coff_swap_aux_out Unexecuted instantiation: coff-stgo32.c:coff_swap_aux_out Unexecuted instantiation: coff-tic30.c:coff_swap_aux_out Unexecuted instantiation: coff-tic4x.c:coff_swap_aux_out Unexecuted instantiation: coff-tic54x.c:coff_swap_aux_out Unexecuted instantiation: coff-z80.c:coff_swap_aux_out Unexecuted instantiation: coff-z8k.c:coff_swap_aux_out |
595 | | |
596 | | #endif /* NO_COFF_SYMBOLS */ |
597 | | |
598 | | #ifndef NO_COFF_LINENOS |
599 | | |
600 | | static void |
601 | | coff_swap_lineno_in (bfd * abfd, void * ext1, void * in1) |
602 | 0 | { |
603 | 0 | LINENO *ext = (LINENO *) ext1; |
604 | 0 | struct internal_lineno *in = (struct internal_lineno *) in1; |
605 | |
|
606 | 0 | in->l_addr.l_symndx = H_GET_32 (abfd, ext->l_addr.l_symndx); |
607 | 0 | in->l_lnno = GET_LINENO_LNNO (abfd, ext); |
608 | 0 | } Unexecuted instantiation: coff-x86_64.c:coff_swap_lineno_in Unexecuted instantiation: cf-i386lynx.c:coff_swap_lineno_in Unexecuted instantiation: coff-go32.c:coff_swap_lineno_in Unexecuted instantiation: coff-i386.c:coff_swap_lineno_in Unexecuted instantiation: coff-rs6000.c:coff_swap_lineno_in Unexecuted instantiation: coff-sh.c:coff_swap_lineno_in Unexecuted instantiation: coff-stgo32.c:coff_swap_lineno_in Unexecuted instantiation: coff-tic30.c:coff_swap_lineno_in Unexecuted instantiation: coff-tic4x.c:coff_swap_lineno_in Unexecuted instantiation: coff-tic54x.c:coff_swap_lineno_in Unexecuted instantiation: coff-z80.c:coff_swap_lineno_in Unexecuted instantiation: coff-z8k.c:coff_swap_lineno_in |
609 | | |
610 | | static unsigned int |
611 | | coff_swap_lineno_out (bfd * abfd, void * inp, void * outp) |
612 | 0 | { |
613 | 0 | struct internal_lineno *in = (struct internal_lineno *) inp; |
614 | 0 | struct external_lineno *ext = (struct external_lineno *) outp; |
615 | 0 | H_PUT_32 (abfd, in->l_addr.l_symndx, ext->l_addr.l_symndx); |
616 | |
|
617 | 0 | PUT_LINENO_LNNO (abfd, in->l_lnno, ext); |
618 | 0 | return LINESZ; |
619 | 0 | } Unexecuted instantiation: coff-x86_64.c:coff_swap_lineno_out Unexecuted instantiation: cf-i386lynx.c:coff_swap_lineno_out Unexecuted instantiation: coff-go32.c:coff_swap_lineno_out Unexecuted instantiation: coff-i386.c:coff_swap_lineno_out Unexecuted instantiation: coff-rs6000.c:coff_swap_lineno_out Unexecuted instantiation: coff-sh.c:coff_swap_lineno_out Unexecuted instantiation: coff-stgo32.c:coff_swap_lineno_out Unexecuted instantiation: coff-tic30.c:coff_swap_lineno_out Unexecuted instantiation: coff-tic4x.c:coff_swap_lineno_out Unexecuted instantiation: coff-tic54x.c:coff_swap_lineno_out Unexecuted instantiation: coff-z80.c:coff_swap_lineno_out Unexecuted instantiation: coff-z8k.c:coff_swap_lineno_out |
620 | | |
621 | | #endif /* NO_COFF_LINENOS */ |
622 | | |
623 | | static void |
624 | | coff_swap_aouthdr_in (bfd * abfd, void * aouthdr_ext1, void * aouthdr_int1) |
625 | 0 | { |
626 | 0 | AOUTHDR *aouthdr_ext; |
627 | 0 | struct internal_aouthdr *aouthdr_int; |
628 | |
|
629 | 0 | aouthdr_ext = (AOUTHDR *) aouthdr_ext1; |
630 | 0 | aouthdr_int = (struct internal_aouthdr *) aouthdr_int1; |
631 | 0 | aouthdr_int->magic = H_GET_16 (abfd, aouthdr_ext->magic); |
632 | 0 | aouthdr_int->vstamp = H_GET_16 (abfd, aouthdr_ext->vstamp); |
633 | 0 | aouthdr_int->tsize = GET_AOUTHDR_TSIZE (abfd, aouthdr_ext->tsize); |
634 | 0 | aouthdr_int->dsize = GET_AOUTHDR_DSIZE (abfd, aouthdr_ext->dsize); |
635 | 0 | aouthdr_int->bsize = GET_AOUTHDR_BSIZE (abfd, aouthdr_ext->bsize); |
636 | 0 | aouthdr_int->entry = GET_AOUTHDR_ENTRY (abfd, aouthdr_ext->entry); |
637 | 0 | aouthdr_int->text_start = |
638 | 0 | GET_AOUTHDR_TEXT_START (abfd, aouthdr_ext->text_start); |
639 | 0 | aouthdr_int->data_start = |
640 | 0 | GET_AOUTHDR_DATA_START (abfd, aouthdr_ext->data_start); |
641 | |
|
642 | | #ifdef RS6000COFF_C |
643 | | #ifdef XCOFF64 |
644 | 0 | aouthdr_int->o_toc = H_GET_64 (abfd, aouthdr_ext->o_toc); |
645 | | #else |
646 | 0 | aouthdr_int->o_toc = H_GET_32 (abfd, aouthdr_ext->o_toc); |
647 | | #endif |
648 | 0 | aouthdr_int->o_snentry = H_GET_16 (abfd, aouthdr_ext->o_snentry); |
649 | 0 | aouthdr_int->o_sntext = H_GET_16 (abfd, aouthdr_ext->o_sntext); |
650 | 0 | aouthdr_int->o_sndata = H_GET_16 (abfd, aouthdr_ext->o_sndata); |
651 | 0 | aouthdr_int->o_sntoc = H_GET_16 (abfd, aouthdr_ext->o_sntoc); |
652 | 0 | aouthdr_int->o_snloader = H_GET_16 (abfd, aouthdr_ext->o_snloader); |
653 | 0 | aouthdr_int->o_snbss = H_GET_16 (abfd, aouthdr_ext->o_snbss); |
654 | 0 | aouthdr_int->o_algntext = H_GET_16 (abfd, aouthdr_ext->o_algntext); |
655 | 0 | aouthdr_int->o_algndata = H_GET_16 (abfd, aouthdr_ext->o_algndata); |
656 | 0 | aouthdr_int->o_modtype = H_GET_16 (abfd, aouthdr_ext->o_modtype); |
657 | 0 | aouthdr_int->o_cputype = H_GET_16 (abfd, aouthdr_ext->o_cputype); |
658 | | #ifdef XCOFF64 |
659 | 0 | aouthdr_int->o_maxstack = H_GET_64 (abfd, aouthdr_ext->o_maxstack); |
660 | 0 | aouthdr_int->o_maxdata = H_GET_64 (abfd, aouthdr_ext->o_maxdata); |
661 | | #else |
662 | 0 | aouthdr_int->o_maxstack = H_GET_32 (abfd, aouthdr_ext->o_maxstack); |
663 | 0 | aouthdr_int->o_maxdata = H_GET_32 (abfd, aouthdr_ext->o_maxdata); |
664 | | #endif |
665 | | #endif |
666 | |
|
667 | | #ifdef MIPSECOFF |
668 | 0 | aouthdr_int->bss_start = H_GET_32 (abfd, aouthdr_ext->bss_start); |
669 | 0 | aouthdr_int->gp_value = H_GET_32 (abfd, aouthdr_ext->gp_value); |
670 | 0 | aouthdr_int->gprmask = H_GET_32 (abfd, aouthdr_ext->gprmask); |
671 | 0 | aouthdr_int->cprmask[0] = H_GET_32 (abfd, aouthdr_ext->cprmask[0]); |
672 | 0 | aouthdr_int->cprmask[1] = H_GET_32 (abfd, aouthdr_ext->cprmask[1]); |
673 | 0 | aouthdr_int->cprmask[2] = H_GET_32 (abfd, aouthdr_ext->cprmask[2]); |
674 | 0 | aouthdr_int->cprmask[3] = H_GET_32 (abfd, aouthdr_ext->cprmask[3]); |
675 | | #endif |
676 | |
|
677 | | #ifdef ALPHAECOFF |
678 | 0 | aouthdr_int->bss_start = H_GET_64 (abfd, aouthdr_ext->bss_start); |
679 | 0 | aouthdr_int->gp_value = H_GET_64 (abfd, aouthdr_ext->gp_value); |
680 | 0 | aouthdr_int->gprmask = H_GET_32 (abfd, aouthdr_ext->gprmask); |
681 | 0 | aouthdr_int->fprmask = H_GET_32 (abfd, aouthdr_ext->fprmask); |
682 | | #endif |
683 | 0 | } Unexecuted instantiation: coff-alpha.c:alpha_ecoff_swap_aouthdr_in Unexecuted instantiation: coff-x86_64.c:coff_swap_aouthdr_in Unexecuted instantiation: coff64-rs6000.c:coff_swap_aouthdr_in Unexecuted instantiation: cf-i386lynx.c:coff_swap_aouthdr_in Unexecuted instantiation: coff-go32.c:coff_swap_aouthdr_in Unexecuted instantiation: coff-i386.c:coff_swap_aouthdr_in Unexecuted instantiation: coff-mips.c:mips_ecoff_swap_aouthdr_in Unexecuted instantiation: coff-rs6000.c:coff_swap_aouthdr_in Unexecuted instantiation: coff-sh.c:coff_swap_aouthdr_in Unexecuted instantiation: coff-stgo32.c:coff_swap_aouthdr_in Unexecuted instantiation: coff-tic30.c:coff_swap_aouthdr_in Unexecuted instantiation: coff-tic4x.c:coff_swap_aouthdr_in Unexecuted instantiation: coff-tic54x.c:coff_swap_aouthdr_in Unexecuted instantiation: coff-z80.c:coff_swap_aouthdr_in Unexecuted instantiation: coff-z8k.c:coff_swap_aouthdr_in |
684 | | |
685 | | static unsigned int |
686 | | coff_swap_aouthdr_out (bfd * abfd, void * in, void * out) |
687 | 0 | { |
688 | 0 | struct internal_aouthdr *aouthdr_in = (struct internal_aouthdr *) in; |
689 | 0 | AOUTHDR *aouthdr_out = (AOUTHDR *) out; |
690 | |
|
691 | 0 | H_PUT_16 (abfd, aouthdr_in->magic, aouthdr_out->magic); |
692 | 0 | H_PUT_16 (abfd, aouthdr_in->vstamp, aouthdr_out->vstamp); |
693 | 0 | PUT_AOUTHDR_TSIZE (abfd, aouthdr_in->tsize, aouthdr_out->tsize); |
694 | 0 | PUT_AOUTHDR_DSIZE (abfd, aouthdr_in->dsize, aouthdr_out->dsize); |
695 | 0 | PUT_AOUTHDR_BSIZE (abfd, aouthdr_in->bsize, aouthdr_out->bsize); |
696 | 0 | PUT_AOUTHDR_ENTRY (abfd, aouthdr_in->entry, aouthdr_out->entry); |
697 | 0 | PUT_AOUTHDR_TEXT_START (abfd, aouthdr_in->text_start, |
698 | 0 | aouthdr_out->text_start); |
699 | 0 | PUT_AOUTHDR_DATA_START (abfd, aouthdr_in->data_start, |
700 | 0 | aouthdr_out->data_start); |
701 | |
|
702 | | #ifdef RS6000COFF_C |
703 | | #ifdef XCOFF64 |
704 | 0 | H_PUT_64 (abfd, aouthdr_in->o_toc, aouthdr_out->o_toc); |
705 | | #else |
706 | 0 | H_PUT_32 (abfd, aouthdr_in->o_toc, aouthdr_out->o_toc); |
707 | | #endif |
708 | 0 | H_PUT_16 (abfd, aouthdr_in->o_snentry, aouthdr_out->o_snentry); |
709 | 0 | H_PUT_16 (abfd, aouthdr_in->o_sntext, aouthdr_out->o_sntext); |
710 | 0 | H_PUT_16 (abfd, aouthdr_in->o_sndata, aouthdr_out->o_sndata); |
711 | 0 | H_PUT_16 (abfd, aouthdr_in->o_sntoc, aouthdr_out->o_sntoc); |
712 | 0 | H_PUT_16 (abfd, aouthdr_in->o_snloader, aouthdr_out->o_snloader); |
713 | 0 | H_PUT_16 (abfd, aouthdr_in->o_snbss, aouthdr_out->o_snbss); |
714 | 0 | H_PUT_16 (abfd, aouthdr_in->o_algntext, aouthdr_out->o_algntext); |
715 | 0 | H_PUT_16 (abfd, aouthdr_in->o_algndata, aouthdr_out->o_algndata); |
716 | 0 | H_PUT_16 (abfd, aouthdr_in->o_modtype, aouthdr_out->o_modtype); |
717 | 0 | H_PUT_16 (abfd, aouthdr_in->o_cputype, aouthdr_out->o_cputype); |
718 | | #ifdef XCOFF64 |
719 | 0 | H_PUT_64 (abfd, aouthdr_in->o_maxstack, aouthdr_out->o_maxstack); |
720 | 0 | H_PUT_64 (abfd, aouthdr_in->o_maxdata, aouthdr_out->o_maxdata); |
721 | | #else |
722 | 0 | H_PUT_32 (abfd, aouthdr_in->o_maxstack, aouthdr_out->o_maxstack); |
723 | 0 | H_PUT_32 (abfd, aouthdr_in->o_maxdata, aouthdr_out->o_maxdata); |
724 | | #endif |
725 | | /* TODO: set o_*psize dynamically */ |
726 | 0 | H_PUT_8 (abfd, 0, aouthdr_out->o_textpsize); |
727 | 0 | H_PUT_8 (abfd, 0, aouthdr_out->o_datapsize); |
728 | 0 | H_PUT_8 (abfd, 0, aouthdr_out->o_stackpsize); |
729 | 0 | H_PUT_8 (abfd, aouthdr_in->o_flags, aouthdr_out->o_flags); |
730 | 0 | H_PUT_16 (abfd, aouthdr_in->o_sntdata, aouthdr_out->o_sntdata); |
731 | 0 | H_PUT_16 (abfd, aouthdr_in->o_sntbss, aouthdr_out->o_sntbss); |
732 | 0 | H_PUT_32 (abfd, 0, aouthdr_out->o_debugger); |
733 | | #ifdef XCOFF64 |
734 | 0 | H_PUT_16 (abfd, aouthdr_in->o_x64flags, aouthdr_out->o_x64flags); |
735 | | memset (aouthdr_out->o_resv3, 0, sizeof aouthdr_out->o_resv3); |
736 | | #endif |
737 | | #endif |
738 | |
|
739 | | #ifdef MIPSECOFF |
740 | 0 | H_PUT_32 (abfd, aouthdr_in->bss_start, aouthdr_out->bss_start); |
741 | 0 | H_PUT_32 (abfd, aouthdr_in->gp_value, aouthdr_out->gp_value); |
742 | 0 | H_PUT_32 (abfd, aouthdr_in->gprmask, aouthdr_out->gprmask); |
743 | 0 | H_PUT_32 (abfd, aouthdr_in->cprmask[0], aouthdr_out->cprmask[0]); |
744 | 0 | H_PUT_32 (abfd, aouthdr_in->cprmask[1], aouthdr_out->cprmask[1]); |
745 | 0 | H_PUT_32 (abfd, aouthdr_in->cprmask[2], aouthdr_out->cprmask[2]); |
746 | 0 | H_PUT_32 (abfd, aouthdr_in->cprmask[3], aouthdr_out->cprmask[3]); |
747 | | #endif |
748 | |
|
749 | | #ifdef ALPHAECOFF |
750 | | /* FIXME: What does bldrev mean? */ |
751 | 0 | H_PUT_16 (abfd, 2, aouthdr_out->bldrev); |
752 | 0 | H_PUT_16 (abfd, 0, aouthdr_out->padding); |
753 | 0 | H_PUT_64 (abfd, aouthdr_in->bss_start, aouthdr_out->bss_start); |
754 | 0 | H_PUT_64 (abfd, aouthdr_in->gp_value, aouthdr_out->gp_value); |
755 | 0 | H_PUT_32 (abfd, aouthdr_in->gprmask, aouthdr_out->gprmask); |
756 | 0 | H_PUT_32 (abfd, aouthdr_in->fprmask, aouthdr_out->fprmask); |
757 | | #endif |
758 | |
|
759 | 0 | return AOUTSZ; |
760 | 0 | } Unexecuted instantiation: coff-alpha.c:alpha_ecoff_swap_aouthdr_out Unexecuted instantiation: coff-x86_64.c:coff_swap_aouthdr_out Unexecuted instantiation: coff64-rs6000.c:coff_swap_aouthdr_out Unexecuted instantiation: cf-i386lynx.c:coff_swap_aouthdr_out Unexecuted instantiation: coff-go32.c:coff_swap_aouthdr_out Unexecuted instantiation: coff-i386.c:coff_swap_aouthdr_out Unexecuted instantiation: coff-mips.c:mips_ecoff_swap_aouthdr_out Unexecuted instantiation: coff-rs6000.c:coff_swap_aouthdr_out Unexecuted instantiation: coff-sh.c:coff_swap_aouthdr_out Unexecuted instantiation: coff-stgo32.c:coff_swap_aouthdr_out Unexecuted instantiation: coff-tic30.c:coff_swap_aouthdr_out Unexecuted instantiation: coff-tic4x.c:coff_swap_aouthdr_out Unexecuted instantiation: coff-tic54x.c:coff_swap_aouthdr_out Unexecuted instantiation: coff-z80.c:coff_swap_aouthdr_out Unexecuted instantiation: coff-z8k.c:coff_swap_aouthdr_out |
761 | | |
762 | | ATTRIBUTE_UNUSED |
763 | | static void |
764 | | coff_swap_scnhdr_in (bfd * abfd, void * ext, void * in) |
765 | 0 | { |
766 | 0 | SCNHDR *scnhdr_ext = (SCNHDR *) ext; |
767 | 0 | struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *) in; |
768 | |
|
769 | | #ifdef COFF_ADJUST_SCNHDR_IN_PRE |
770 | | COFF_ADJUST_SCNHDR_IN_PRE (abfd, ext, in); |
771 | | #endif |
772 | 0 | memcpy (scnhdr_int->s_name, scnhdr_ext->s_name, sizeof (scnhdr_int->s_name)); |
773 | |
|
774 | 0 | scnhdr_int->s_vaddr = GET_SCNHDR_VADDR (abfd, scnhdr_ext->s_vaddr); |
775 | 0 | scnhdr_int->s_paddr = GET_SCNHDR_PADDR (abfd, scnhdr_ext->s_paddr); |
776 | 0 | scnhdr_int->s_size = GET_SCNHDR_SIZE (abfd, scnhdr_ext->s_size); |
777 | |
|
778 | 0 | scnhdr_int->s_scnptr = GET_SCNHDR_SCNPTR (abfd, scnhdr_ext->s_scnptr); |
779 | 0 | scnhdr_int->s_relptr = GET_SCNHDR_RELPTR (abfd, scnhdr_ext->s_relptr); |
780 | 0 | scnhdr_int->s_lnnoptr = GET_SCNHDR_LNNOPTR (abfd, scnhdr_ext->s_lnnoptr); |
781 | 0 | scnhdr_int->s_flags = GET_SCNHDR_FLAGS (abfd, scnhdr_ext->s_flags); |
782 | 0 | scnhdr_int->s_nreloc = GET_SCNHDR_NRELOC (abfd, scnhdr_ext->s_nreloc); |
783 | 0 | scnhdr_int->s_nlnno = GET_SCNHDR_NLNNO (abfd, scnhdr_ext->s_nlnno); |
784 | | #ifdef COFF_ADJUST_SCNHDR_IN_POST |
785 | 0 | COFF_ADJUST_SCNHDR_IN_POST (abfd, ext, in); |
786 | | #endif |
787 | 0 | } Unexecuted instantiation: coff-alpha.c:alpha_ecoff_swap_scnhdr_in Unexecuted instantiation: coff-x86_64.c:coff_swap_scnhdr_in Unexecuted instantiation: coff64-rs6000.c:coff_swap_scnhdr_in Unexecuted instantiation: cf-i386lynx.c:coff_swap_scnhdr_in Unexecuted instantiation: coff-go32.c:coff_swap_scnhdr_in Unexecuted instantiation: coff-i386.c:coff_swap_scnhdr_in Unexecuted instantiation: coff-mips.c:mips_ecoff_swap_scnhdr_in Unexecuted instantiation: coff-rs6000.c:coff_swap_scnhdr_in Unexecuted instantiation: coff-sh.c:coff_swap_scnhdr_in Unexecuted instantiation: coff-stgo32.c:coff_swap_scnhdr_in Unexecuted instantiation: coff-tic30.c:coff_swap_scnhdr_in Unexecuted instantiation: coff-tic4x.c:coff_swap_scnhdr_in Unexecuted instantiation: coff-tic54x.c:coff_swap_scnhdr_in Unexecuted instantiation: coff-z80.c:coff_swap_scnhdr_in Unexecuted instantiation: coff-z8k.c:coff_swap_scnhdr_in |
788 | | |
789 | | ATTRIBUTE_UNUSED |
790 | | static unsigned int |
791 | | coff_swap_scnhdr_out (bfd * abfd, void * in, void * out) |
792 | 0 | { |
793 | 0 | struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *) in; |
794 | 0 | SCNHDR *scnhdr_ext = (SCNHDR *) out; |
795 | 0 | unsigned int ret = bfd_coff_scnhsz (abfd); |
796 | |
|
797 | | #ifdef COFF_ADJUST_SCNHDR_OUT_PRE |
798 | 0 | COFF_ADJUST_SCNHDR_OUT_PRE (abfd, in, out); |
799 | | #endif |
800 | 0 | memcpy (scnhdr_ext->s_name, scnhdr_int->s_name, sizeof (scnhdr_int->s_name)); |
801 | |
|
802 | 0 | PUT_SCNHDR_VADDR (abfd, scnhdr_int->s_vaddr, scnhdr_ext->s_vaddr); |
803 | 0 | PUT_SCNHDR_PADDR (abfd, scnhdr_int->s_paddr, scnhdr_ext->s_paddr); |
804 | 0 | PUT_SCNHDR_SIZE (abfd, scnhdr_int->s_size, scnhdr_ext->s_size); |
805 | 0 | PUT_SCNHDR_SCNPTR (abfd, scnhdr_int->s_scnptr, scnhdr_ext->s_scnptr); |
806 | 0 | PUT_SCNHDR_RELPTR (abfd, scnhdr_int->s_relptr, scnhdr_ext->s_relptr); |
807 | 0 | PUT_SCNHDR_LNNOPTR (abfd, scnhdr_int->s_lnnoptr, scnhdr_ext->s_lnnoptr); |
808 | 0 | PUT_SCNHDR_FLAGS (abfd, scnhdr_int->s_flags, scnhdr_ext->s_flags); |
809 | 0 | if (scnhdr_int->s_nlnno <= MAX_SCNHDR_NLNNO) |
810 | 0 | PUT_SCNHDR_NLNNO (abfd, scnhdr_int->s_nlnno, scnhdr_ext->s_nlnno); |
811 | 0 | else |
812 | 0 | { |
813 | 0 | char buf[sizeof (scnhdr_int->s_name) + 1]; |
814 | |
|
815 | 0 | memcpy (buf, scnhdr_int->s_name, sizeof (scnhdr_int->s_name)); |
816 | 0 | buf[sizeof (scnhdr_int->s_name)] = '\0'; |
817 | 0 | _bfd_error_handler |
818 | | /* xgettext:c-format */ |
819 | 0 | (_("%pB: warning: %s: line number overflow: 0x%lx > 0xffff"), |
820 | 0 | abfd, buf, scnhdr_int->s_nlnno); |
821 | 0 | PUT_SCNHDR_NLNNO (abfd, 0xffff, scnhdr_ext->s_nlnno); |
822 | 0 | } |
823 | |
|
824 | 0 | if (scnhdr_int->s_nreloc <= MAX_SCNHDR_NRELOC) |
825 | 0 | PUT_SCNHDR_NRELOC (abfd, scnhdr_int->s_nreloc, scnhdr_ext->s_nreloc); |
826 | 0 | else |
827 | 0 | { |
828 | 0 | char buf[sizeof (scnhdr_int->s_name) + 1]; |
829 | |
|
830 | 0 | memcpy (buf, scnhdr_int->s_name, sizeof (scnhdr_int->s_name)); |
831 | 0 | buf[sizeof (scnhdr_int->s_name)] = '\0'; |
832 | | /* xgettext:c-format */ |
833 | 0 | _bfd_error_handler (_("%pB: %s: reloc overflow: 0x%lx > 0xffff"), |
834 | 0 | abfd, buf, scnhdr_int->s_nreloc); |
835 | 0 | bfd_set_error (bfd_error_file_truncated); |
836 | 0 | PUT_SCNHDR_NRELOC (abfd, 0xffff, scnhdr_ext->s_nreloc); |
837 | 0 | ret = 0; |
838 | 0 | } |
839 | |
|
840 | | #ifdef COFF_ADJUST_SCNHDR_OUT_POST |
841 | 0 | COFF_ADJUST_SCNHDR_OUT_POST (abfd, in, out); |
842 | | #endif |
843 | 0 | return ret; |
844 | 0 | } Unexecuted instantiation: coff-alpha.c:alpha_ecoff_swap_scnhdr_out Unexecuted instantiation: coff-x86_64.c:coff_swap_scnhdr_out Unexecuted instantiation: coff64-rs6000.c:coff_swap_scnhdr_out Unexecuted instantiation: cf-i386lynx.c:coff_swap_scnhdr_out Unexecuted instantiation: coff-go32.c:coff_swap_scnhdr_out Unexecuted instantiation: coff-i386.c:coff_swap_scnhdr_out Unexecuted instantiation: coff-mips.c:mips_ecoff_swap_scnhdr_out Unexecuted instantiation: coff-rs6000.c:coff_swap_scnhdr_out Unexecuted instantiation: coff-sh.c:coff_swap_scnhdr_out Unexecuted instantiation: coff-stgo32.c:coff_swap_scnhdr_out Unexecuted instantiation: coff-tic30.c:coff_swap_scnhdr_out Unexecuted instantiation: coff-tic4x.c:coff_swap_scnhdr_out Unexecuted instantiation: coff-tic54x.c:coff_swap_scnhdr_out Unexecuted instantiation: coff-z80.c:coff_swap_scnhdr_out Unexecuted instantiation: coff-z8k.c:coff_swap_scnhdr_out |