OLD | NEW |
1 /* BFD back-end for Intel 960 COFF files. | 1 /* BFD back-end for Intel 960 COFF files. |
2 Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1997, 1999, 2000, 2001, | 2 Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1997, 1999, 2000, 2001, |
3 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2011 | 3 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2011, 2012 |
4 Free Software Foundation, Inc. | 4 Free Software Foundation, Inc. |
5 Written by Cygnus Support. | 5 Written by Cygnus Support. |
6 | 6 |
7 This file is part of BFD, the Binary File Descriptor library. | 7 This file is part of BFD, the Binary File Descriptor library. |
8 | 8 |
9 This program is free software; you can redistribute it and/or modify | 9 This program is free software; you can redistribute it and/or modify |
10 it under the terms of the GNU General Public License as published by | 10 it under the terms of the GNU General Public License as published by |
11 the Free Software Foundation; either version 3 of the License, or | 11 the Free Software Foundation; either version 3 of the License, or |
12 (at your option) any later version. | 12 (at your option) any later version. |
13 | 13 |
(...skipping 15 matching lines...) Expand all Loading... |
29 #include "libbfd.h" | 29 #include "libbfd.h" |
30 #include "coff/i960.h" | 30 #include "coff/i960.h" |
31 #include "coff/internal.h" | 31 #include "coff/internal.h" |
32 | 32 |
33 #ifndef bfd_pe_print_pdata | 33 #ifndef bfd_pe_print_pdata |
34 #define bfd_pe_print_pdata NULL | 34 #define bfd_pe_print_pdata NULL |
35 #endif | 35 #endif |
36 | 36 |
37 #include "libcoff.h" /* To allow easier abstraction-breaking. */ | 37 #include "libcoff.h" /* To allow easier abstraction-breaking. */ |
38 | 38 |
39 static bfd_boolean coff_i960_is_local_label_name | |
40 PARAMS ((bfd *, const char *)); | |
41 static bfd_reloc_status_type optcall_callback | |
42 PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); | |
43 static bfd_reloc_status_type coff_i960_relocate | |
44 PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); | |
45 static reloc_howto_type *coff_i960_reloc_type_lookup | |
46 PARAMS ((bfd *, bfd_reloc_code_real_type)); | |
47 static bfd_boolean coff_i960_start_final_link | |
48 PARAMS ((bfd *, struct bfd_link_info *)); | |
49 static bfd_boolean coff_i960_relocate_section | |
50 PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, | |
51 struct internal_reloc *, struct internal_syment *, asection **)); | |
52 static bfd_boolean coff_i960_adjust_symndx | |
53 PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, | |
54 struct internal_reloc *, bfd_boolean *)); | |
55 | 39 |
56 #define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3) | 40 #define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3) |
57 #define COFF_ALIGN_IN_SECTION_HEADER 1 | 41 #define COFF_ALIGN_IN_SECTION_HEADER 1 |
58 | 42 |
59 #define GET_SCNHDR_ALIGN H_GET_32 | 43 #define GET_SCNHDR_ALIGN H_GET_32 |
60 #define PUT_SCNHDR_ALIGN H_PUT_32 | 44 #define PUT_SCNHDR_ALIGN H_PUT_32 |
61 | 45 |
62 /* The i960 does not support an MMU, so COFF_PAGE_SIZE can be | 46 /* The i960 does not support an MMU, so COFF_PAGE_SIZE can be |
63 arbitrarily small. */ | 47 arbitrarily small. */ |
64 #define COFF_PAGE_SIZE 1 | 48 #define COFF_PAGE_SIZE 1 |
65 | 49 |
66 #define COFF_LONG_FILENAMES | 50 #define COFF_LONG_FILENAMES |
67 | 51 |
68 /* This set of local label names is taken from gas. */ | 52 /* This set of local label names is taken from gas. */ |
69 | 53 |
70 static bfd_boolean | 54 static bfd_boolean |
71 coff_i960_is_local_label_name (abfd, name) | 55 coff_i960_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name) |
72 bfd *abfd ATTRIBUTE_UNUSED; | |
73 const char *name; | |
74 { | 56 { |
75 return (name[0] == 'L' | 57 return (name[0] == 'L' |
76 || (name[0] == '.' | 58 || (name[0] == '.' |
77 && (name[1] == 'C' | 59 && (name[1] == 'C' |
78 || name[1] == 'I' | 60 || name[1] == 'I' |
79 || name[1] == '.'))); | 61 || name[1] == '.'))); |
80 } | 62 } |
81 | 63 |
82 /* This is just like the usual CALC_ADDEND, but it includes the | 64 /* This is just like the usual CALC_ADDEND, but it includes the |
83 section VMA for PC relative relocs. */ | 65 section VMA for PC relative relocs. */ |
(...skipping 17 matching lines...) Expand all Loading... |
101 if (ptr && (reloc.r_type == 25 || reloc.r_type == 27)) \ | 83 if (ptr && (reloc.r_type == 25 || reloc.r_type == 27)) \ |
102 cache_ptr->addend += asect->vma; \ | 84 cache_ptr->addend += asect->vma; \ |
103 } | 85 } |
104 #endif | 86 #endif |
105 | 87 |
106 #define CALLS 0x66003800 /* Template for 'calls' instruction */ | 88 #define CALLS 0x66003800 /* Template for 'calls' instruction */ |
107 #define BAL 0x0b000000 /* Template for 'bal' instruction */ | 89 #define BAL 0x0b000000 /* Template for 'bal' instruction */ |
108 #define BAL_MASK 0x00ffffff | 90 #define BAL_MASK 0x00ffffff |
109 | 91 |
110 static bfd_reloc_status_type | 92 static bfd_reloc_status_type |
111 optcall_callback (abfd, reloc_entry, symbol_in, data, | 93 optcall_callback (bfd *abfd, |
112 » » input_section, ignore_bfd, error_message) | 94 » » arelent *reloc_entry, |
113 bfd *abfd; | 95 » » asymbol *symbol_in, |
114 arelent *reloc_entry; | 96 » » void * data, |
115 asymbol *symbol_in; | 97 » » asection *input_section, |
116 PTR data; | 98 » » bfd *ignore_bfd ATTRIBUTE_UNUSED, |
117 asection *input_section; | 99 » » char **error_message) |
118 bfd *ignore_bfd ATTRIBUTE_UNUSED; | |
119 char **error_message; | |
120 { | 100 { |
121 /* This item has already been relocated correctly, but we may be | 101 /* This item has already been relocated correctly, but we may be |
122 * able to patch in yet better code - done by digging out the | 102 * able to patch in yet better code - done by digging out the |
123 * correct info on this symbol */ | 103 * correct info on this symbol */ |
124 bfd_reloc_status_type result; | 104 bfd_reloc_status_type result; |
125 coff_symbol_type *cs = coffsymbol(symbol_in); | 105 coff_symbol_type *cs = coffsymbol(symbol_in); |
126 | 106 |
127 /* Don't do anything with symbols which aren't tied up yet, | 107 /* Don't do anything with symbols which aren't tied up yet, |
128 except move the reloc. */ | 108 except move the reloc. */ |
129 if (bfd_is_und_section (cs->symbol.section)) { | 109 if (bfd_is_und_section (cs->symbol.section)) { |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 file. | 171 file. |
192 | 172 |
193 Note that this function is only called if we are not using the COFF | 173 Note that this function is only called if we are not using the COFF |
194 specific backend linker. It only does something when doing a | 174 specific backend linker. It only does something when doing a |
195 relocatable link, which will almost certainly fail when not | 175 relocatable link, which will almost certainly fail when not |
196 generating COFF i960 output, so this function is actually no longer | 176 generating COFF i960 output, so this function is actually no longer |
197 useful. It was used before this target was converted to use the | 177 useful. It was used before this target was converted to use the |
198 COFF specific backend linker. */ | 178 COFF specific backend linker. */ |
199 | 179 |
200 static bfd_reloc_status_type | 180 static bfd_reloc_status_type |
201 coff_i960_relocate (abfd, reloc_entry, symbol, data, input_section, | 181 coff_i960_relocate (bfd *abfd, |
202 » » output_bfd, error_message) | 182 » » arelent *reloc_entry, |
203 bfd *abfd; | 183 » » asymbol *symbol, |
204 arelent *reloc_entry; | 184 » » void * data ATTRIBUTE_UNUSED, |
205 asymbol *symbol; | 185 » » asection *input_section ATTRIBUTE_UNUSED, |
206 PTR data ATTRIBUTE_UNUSED; | 186 » » bfd *output_bfd, |
207 asection *input_section ATTRIBUTE_UNUSED; | 187 » » char **error_message ATTRIBUTE_UNUSED) |
208 bfd *output_bfd; | |
209 char **error_message ATTRIBUTE_UNUSED; | |
210 { | 188 { |
211 asection *osec; | 189 asection *osec; |
212 | 190 |
213 if (output_bfd == NULL) | 191 if (output_bfd == NULL) |
214 { | 192 { |
215 /* Not generating relocatable output file. */ | 193 /* Not generating relocatable output file. */ |
216 return bfd_reloc_continue; | 194 return bfd_reloc_continue; |
217 } | 195 } |
218 | 196 |
219 if (bfd_is_und_section (bfd_get_section (symbol))) | 197 if (bfd_is_und_section (bfd_get_section (symbol))) |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 } | 232 } |
255 | 233 |
256 if (syms >= sym_end) | 234 if (syms >= sym_end) |
257 abort (); | 235 abort (); |
258 | 236 |
259 reloc_entry->sym_ptr_ptr = syms; | 237 reloc_entry->sym_ptr_ptr = syms; |
260 | 238 |
261 if (coff_section_data (output_bfd, osec) == NULL) | 239 if (coff_section_data (output_bfd, osec) == NULL) |
262 { | 240 { |
263 bfd_size_type amt = sizeof (struct coff_section_tdata); | 241 bfd_size_type amt = sizeof (struct coff_section_tdata); |
264 » osec->used_by_bfd = (PTR) bfd_zalloc (abfd, amt); | 242 » osec->used_by_bfd = bfd_zalloc (abfd, amt); |
265 if (osec->used_by_bfd == NULL) | 243 if (osec->used_by_bfd == NULL) |
266 return bfd_reloc_overflow; | 244 return bfd_reloc_overflow; |
267 } | 245 } |
268 coff_section_data (output_bfd, osec)->tdata = (PTR) syms; | 246 coff_section_data (output_bfd, osec)->tdata = syms; |
269 } | 247 } |
270 | 248 |
271 /* Let bfd_perform_relocation do its thing, which will include | 249 /* Let bfd_perform_relocation do its thing, which will include |
272 stuffing the symbol addend into the object file. */ | 250 stuffing the symbol addend into the object file. */ |
273 return bfd_reloc_continue; | 251 return bfd_reloc_continue; |
274 } | 252 } |
275 | 253 |
276 static reloc_howto_type howto_rellong = | 254 static reloc_howto_type howto_rellong = |
277 HOWTO ((unsigned int) R_RELLONG, 0, 2, 32,FALSE, 0, | 255 HOWTO ((unsigned int) R_RELLONG, 0, 2, 32,FALSE, 0, |
278 complain_overflow_bitfield, coff_i960_relocate,"rellong", TRUE, | 256 complain_overflow_bitfield, coff_i960_relocate,"rellong", TRUE, |
279 0xffffffff, 0xffffffff, 0); | 257 0xffffffff, 0xffffffff, 0); |
280 static reloc_howto_type howto_iprmed = | 258 static reloc_howto_type howto_iprmed = |
281 HOWTO (R_IPRMED, 0, 2, 24,TRUE,0, complain_overflow_signed, | 259 HOWTO (R_IPRMED, 0, 2, 24,TRUE,0, complain_overflow_signed, |
282 coff_i960_relocate, "iprmed ", TRUE, 0x00ffffff, 0x00ffffff, 0); | 260 coff_i960_relocate, "iprmed ", TRUE, 0x00ffffff, 0x00ffffff, 0); |
283 static reloc_howto_type howto_optcall = | 261 static reloc_howto_type howto_optcall = |
284 HOWTO (R_OPTCALL, 0,2,24,TRUE,0, complain_overflow_signed, | 262 HOWTO (R_OPTCALL, 0,2,24,TRUE,0, complain_overflow_signed, |
285 optcall_callback, "optcall", TRUE, 0x00ffffff, 0x00ffffff, 0); | 263 optcall_callback, "optcall", TRUE, 0x00ffffff, 0x00ffffff, 0); |
286 | 264 |
287 static reloc_howto_type * | 265 static reloc_howto_type * |
288 coff_i960_reloc_type_lookup (abfd, code) | 266 coff_i960_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, |
289 bfd *abfd ATTRIBUTE_UNUSED; | 267 » » » bfd_reloc_code_real_type code) |
290 bfd_reloc_code_real_type code; | |
291 { | 268 { |
292 switch (code) | 269 switch (code) |
293 { | 270 { |
294 default: | 271 default: |
295 return 0; | 272 return 0; |
296 case BFD_RELOC_I960_CALLJ: | 273 case BFD_RELOC_I960_CALLJ: |
297 return &howto_optcall; | 274 return &howto_optcall; |
298 case BFD_RELOC_32: | 275 case BFD_RELOC_32: |
299 case BFD_RELOC_CTOR: | 276 case BFD_RELOC_CTOR: |
300 return &howto_rellong; | 277 return &howto_rellong; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 /* i960 COFF is used by VxWorks 5.1. However, VxWorks 5.1 does not | 311 /* i960 COFF is used by VxWorks 5.1. However, VxWorks 5.1 does not |
335 appear to correctly handle a reloc against a symbol defined in the | 312 appear to correctly handle a reloc against a symbol defined in the |
336 same object file. It appears to simply discard such relocs, rather | 313 same object file. It appears to simply discard such relocs, rather |
337 than adding their values into the object file. We handle this by | 314 than adding their values into the object file. We handle this by |
338 converting all relocs against global symbols into relocs against | 315 converting all relocs against global symbols into relocs against |
339 internal symbols at the start of the section. This routine is | 316 internal symbols at the start of the section. This routine is |
340 called at the start of the linking process, and it creates the | 317 called at the start of the linking process, and it creates the |
341 necessary symbols. */ | 318 necessary symbols. */ |
342 | 319 |
343 static bfd_boolean | 320 static bfd_boolean |
344 coff_i960_start_final_link (abfd, info) | 321 coff_i960_start_final_link (bfd *abfd, struct bfd_link_info *info) |
345 bfd *abfd; | |
346 struct bfd_link_info *info; | |
347 { | 322 { |
348 bfd_size_type symesz = bfd_coff_symesz (abfd); | 323 bfd_size_type symesz = bfd_coff_symesz (abfd); |
349 asection *o; | 324 asection *o; |
350 bfd_byte *esym; | 325 bfd_byte *esym; |
351 | 326 |
352 if (! info->relocatable) | 327 if (! info->relocatable) |
353 return TRUE; | 328 return TRUE; |
354 | 329 |
355 esym = (bfd_byte *) bfd_malloc (symesz); | 330 esym = (bfd_byte *) bfd_malloc (symesz); |
356 if (esym == NULL) | 331 if (esym == NULL) |
357 return FALSE; | 332 return FALSE; |
358 | 333 |
359 if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0) | 334 if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0) |
360 return FALSE; | 335 return FALSE; |
361 | 336 |
362 for (o = abfd->sections; o != NULL; o = o->next) | 337 for (o = abfd->sections; o != NULL; o = o->next) |
363 { | 338 { |
364 struct internal_syment isym; | 339 struct internal_syment isym; |
365 | 340 |
366 strncpy (isym._n._n_name, o->name, SYMNMLEN); | 341 strncpy (isym._n._n_name, o->name, SYMNMLEN); |
367 isym.n_value = 0; | 342 isym.n_value = 0; |
368 isym.n_scnum = o->target_index; | 343 isym.n_scnum = o->target_index; |
369 isym.n_type = T_NULL; | 344 isym.n_type = T_NULL; |
370 isym.n_sclass = C_STAT; | 345 isym.n_sclass = C_STAT; |
371 isym.n_numaux = 0; | 346 isym.n_numaux = 0; |
372 | 347 |
373 bfd_coff_swap_sym_out (abfd, (PTR) &isym, (PTR) esym); | 348 bfd_coff_swap_sym_out (abfd, &isym, esym); |
374 | 349 |
375 if (bfd_bwrite (esym, symesz, abfd) != symesz) | 350 if (bfd_bwrite (esym, symesz, abfd) != symesz) |
376 { | 351 { |
377 free (esym); | 352 free (esym); |
378 return FALSE; | 353 return FALSE; |
379 } | 354 } |
380 | 355 |
381 obj_raw_syment_count (abfd) += 1; | 356 obj_raw_syment_count (abfd) += 1; |
382 } | 357 } |
383 | 358 |
384 free (esym); | 359 free (esym); |
385 | 360 |
386 return TRUE; | 361 return TRUE; |
387 } | 362 } |
388 | 363 |
389 /* The reloc processing routine for the optimized COFF linker. */ | 364 /* The reloc processing routine for the optimized COFF linker. */ |
390 | 365 |
391 static bfd_boolean | 366 static bfd_boolean |
392 coff_i960_relocate_section (output_bfd, info, input_bfd, input_section, | 367 coff_i960_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, |
393 » » » contents, relocs, syms, sections) | 368 » » » struct bfd_link_info *info, |
394 bfd *output_bfd ATTRIBUTE_UNUSED; | 369 » » » bfd *input_bfd, |
395 struct bfd_link_info *info; | 370 » » » asection *input_section, |
396 bfd *input_bfd; | 371 » » » bfd_byte *contents, |
397 asection *input_section; | 372 » » » struct internal_reloc *relocs, |
398 bfd_byte *contents; | 373 » » » struct internal_syment *syms, |
399 struct internal_reloc *relocs; | 374 » » » asection **sections) |
400 struct internal_syment *syms; | |
401 asection **sections; | |
402 { | 375 { |
403 struct internal_reloc *rel; | 376 struct internal_reloc *rel; |
404 struct internal_reloc *relend; | 377 struct internal_reloc *relend; |
405 | 378 |
406 rel = relocs; | 379 rel = relocs; |
407 relend = rel + input_section->reloc_count; | 380 relend = rel + input_section->reloc_count; |
408 for (; rel < relend; rel++) | 381 for (; rel < relend; rel++) |
409 { | 382 { |
410 long symndx; | 383 long symndx; |
411 struct coff_link_hash_entry *h; | 384 struct coff_link_hash_entry *h; |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 olf = h->aux[1].x_bal.x_balntry; | 496 olf = h->aux[1].x_bal.x_balntry; |
524 } | 497 } |
525 else | 498 else |
526 { | 499 { |
527 bfd_byte *esyms; | 500 bfd_byte *esyms; |
528 union internal_auxent aux; | 501 union internal_auxent aux; |
529 | 502 |
530 BFD_ASSERT (sym->n_numaux == 2); | 503 BFD_ASSERT (sym->n_numaux == 2); |
531 esyms = (bfd_byte *) obj_coff_external_syms (input_bfd); | 504 esyms = (bfd_byte *) obj_coff_external_syms (input_bfd); |
532 esyms += (symndx + 2) * bfd_coff_symesz (input_bfd); | 505 esyms += (symndx + 2) * bfd_coff_symesz (input_bfd); |
533 » » bfd_coff_swap_aux_in (input_bfd, (PTR) esyms, sym->n_type, | 506 » » bfd_coff_swap_aux_in (input_bfd, esyms, sym->n_type, |
534 sym->n_sclass, 1, sym->n_numaux, | 507 sym->n_sclass, 1, sym->n_numaux, |
535 » » » » » (PTR) &aux); | 508 » » » » » &aux); |
536 olf = aux.x_bal.x_balntry; | 509 olf = aux.x_bal.x_balntry; |
537 } | 510 } |
538 | 511 |
539 word = bfd_get_32 (input_bfd, | 512 word = bfd_get_32 (input_bfd, |
540 (contents | 513 (contents |
541 + (rel->r_vaddr - input_section->vma))); | 514 + (rel->r_vaddr - input_section->vma))); |
542 word = ((word + olf - val) & BAL_MASK) | BAL; | 515 word = ((word + olf - val) & BAL_MASK) | BAL; |
543 bfd_put_32 (input_bfd, | 516 bfd_put_32 (input_bfd, |
544 (bfd_vma) word, | 517 (bfd_vma) word, |
545 contents + (rel->r_vaddr - input_section->vma)); | 518 contents + (rel->r_vaddr - input_section->vma)); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 } | 567 } |
595 | 568 |
596 return TRUE; | 569 return TRUE; |
597 } | 570 } |
598 | 571 |
599 /* Adjust the symbol index of any reloc against a global symbol to | 572 /* Adjust the symbol index of any reloc against a global symbol to |
600 instead be a reloc against the internal symbol we created specially | 573 instead be a reloc against the internal symbol we created specially |
601 for the section. */ | 574 for the section. */ |
602 | 575 |
603 static bfd_boolean | 576 static bfd_boolean |
604 coff_i960_adjust_symndx (obfd, info, ibfd, sec, irel, adjustedp) | 577 coff_i960_adjust_symndx (bfd *obfd ATTRIBUTE_UNUSED, |
605 bfd *obfd ATTRIBUTE_UNUSED; | 578 » » » struct bfd_link_info *info ATTRIBUTE_UNUSED, |
606 struct bfd_link_info *info ATTRIBUTE_UNUSED; | 579 » » » bfd *ibfd, |
607 bfd *ibfd; | 580 » » » asection *sec ATTRIBUTE_UNUSED, |
608 asection *sec ATTRIBUTE_UNUSED; | 581 » » » struct internal_reloc *irel, |
609 struct internal_reloc *irel; | 582 » » » bfd_boolean *adjustedp) |
610 bfd_boolean *adjustedp; | |
611 { | 583 { |
612 struct coff_link_hash_entry *h; | 584 struct coff_link_hash_entry *h; |
613 | 585 |
614 *adjustedp = FALSE; | 586 *adjustedp = FALSE; |
615 | 587 |
616 h = obj_coff_sym_hashes (ibfd)[irel->r_symndx]; | 588 h = obj_coff_sym_hashes (ibfd)[irel->r_symndx]; |
617 if (h == NULL | 589 if (h == NULL |
618 || (h->root.type != bfd_link_hash_defined | 590 || (h->root.type != bfd_link_hash_defined |
619 && h->root.type != bfd_link_hash_defweak)) | 591 && h->root.type != bfd_link_hash_defweak)) |
620 return TRUE; | 592 return TRUE; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
680 BFD_JUMP_TABLE_SYMBOLS (coff), | 652 BFD_JUMP_TABLE_SYMBOLS (coff), |
681 BFD_JUMP_TABLE_RELOCS (coff), | 653 BFD_JUMP_TABLE_RELOCS (coff), |
682 BFD_JUMP_TABLE_WRITE (coff), | 654 BFD_JUMP_TABLE_WRITE (coff), |
683 BFD_JUMP_TABLE_LINK (coff), | 655 BFD_JUMP_TABLE_LINK (coff), |
684 BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), | 656 BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), |
685 | 657 |
686 & icoff_little_vec, | 658 & icoff_little_vec, |
687 | 659 |
688 COFF_SWAP_TABLE | 660 COFF_SWAP_TABLE |
689 }; | 661 }; |
OLD | NEW |