1 |
/* BFD back-end for Motorola MCore COFF/PE |
/* BFD back-end for Motorola MCore COFF/PE |
2 |
Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005 |
3 |
|
Free Software Foundation, Inc. |
4 |
|
|
5 |
This file is part of BFD, the Binary File Descriptor library. |
This file is part of BFD, the Binary File Descriptor library. |
6 |
|
|
38 |
|
|
39 |
/* This file is compiled more than once, but we only compile the |
/* This file is compiled more than once, but we only compile the |
40 |
final_link routine once. */ |
final_link routine once. */ |
41 |
extern boolean mcore_bfd_coff_final_link |
extern bfd_boolean mcore_bfd_coff_final_link |
42 |
PARAMS ((bfd *, struct bfd_link_info *)); |
PARAMS ((bfd *, struct bfd_link_info *)); |
43 |
#if 0 |
static bfd_reloc_status_type mcore_coff_unsupported_reloc |
|
static struct bfd_link_hash_table * coff_mcore_link_hash_table_create |
|
|
PARAMS ((bfd *)); |
|
|
#endif |
|
|
static bfd_reloc_status_type mcore_coff_unsupported_reloc |
|
44 |
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); |
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); |
45 |
static boolean coff_mcore_relocate_section |
static bfd_boolean coff_mcore_relocate_section |
46 |
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, |
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, |
47 |
struct internal_reloc *, struct internal_syment *, asection **)); |
struct internal_reloc *, struct internal_syment *, asection **)); |
48 |
static reloc_howto_type * mcore_coff_reloc_type_lookup |
static reloc_howto_type *mcore_coff_reloc_type_lookup |
49 |
PARAMS ((bfd *, bfd_reloc_code_real_type)); |
PARAMS ((bfd *, bfd_reloc_code_real_type)); |
50 |
static reloc_howto_type * coff_mcore_rtype_to_howto |
static reloc_howto_type *coff_mcore_rtype_to_howto |
51 |
PARAMS ((bfd *, asection *, struct internal_reloc *, |
PARAMS ((bfd *, asection *, struct internal_reloc *, |
52 |
struct coff_link_hash_entry *, struct internal_syment *, bfd_vma *)); |
struct coff_link_hash_entry *, struct internal_syment *, |
53 |
|
bfd_vma *)); |
54 |
static void mcore_emit_base_file_entry |
static void mcore_emit_base_file_entry |
55 |
PARAMS ((struct bfd_link_info *, bfd *, asection *, bfd_vma)); |
PARAMS ((struct bfd_link_info *, bfd *, asection *, bfd_vma)); |
56 |
static boolean in_reloc_p PARAMS ((bfd *, reloc_howto_type *)); |
static bfd_boolean in_reloc_p PARAMS ((bfd *, reloc_howto_type *)); |
57 |
|
|
58 |
/* The NT loader points the toc register to &toc + 32768, in order to |
/* The NT loader points the toc register to &toc + 32768, in order to |
59 |
use the complete range of a 16-bit displacement. We have to adjust |
use the complete range of a 16-bit displacement. We have to adjust |
75 |
0, /* rightshift */ |
0, /* rightshift */ |
76 |
0, /* size (0 = byte, 1 = short, 2 = long) */ |
0, /* size (0 = byte, 1 = short, 2 = long) */ |
77 |
0, /* bitsize */ |
0, /* bitsize */ |
78 |
false, /* pc_relative */ |
FALSE, /* pc_relative */ |
79 |
0, /* bitpos */ |
0, /* bitpos */ |
80 |
complain_overflow_dont, /* dont complain_on_overflow */ |
complain_overflow_dont, /* dont complain_on_overflow */ |
81 |
NULL, /* special_function */ |
NULL, /* special_function */ |
82 |
"ABSOLUTE", /* name */ |
"ABSOLUTE", /* name */ |
83 |
false, /* partial_inplace */ |
FALSE, /* partial_inplace */ |
84 |
0x00, /* src_mask */ |
0x00, /* src_mask */ |
85 |
0x00, /* dst_mask */ |
0x00, /* dst_mask */ |
86 |
false), /* pcrel_offset */ |
FALSE), /* pcrel_offset */ |
87 |
|
|
88 |
HOWTO (IMAGE_REL_MCORE_ADDR32,/* type */ |
HOWTO (IMAGE_REL_MCORE_ADDR32,/* type */ |
89 |
0, /* rightshift */ |
0, /* rightshift */ |
90 |
2, /* size (0 = byte, 1 = short, 2 = long) */ |
2, /* size (0 = byte, 1 = short, 2 = long) */ |
91 |
32, /* bitsize */ |
32, /* bitsize */ |
92 |
false, /* pc_relative */ |
FALSE, /* pc_relative */ |
93 |
0, /* bitpos */ |
0, /* bitpos */ |
94 |
complain_overflow_bitfield, /* complain_on_overflow */ |
complain_overflow_bitfield, /* complain_on_overflow */ |
95 |
NULL, /* special_function */ |
NULL, /* special_function */ |
96 |
"ADDR32", /* name */ |
"ADDR32", /* name */ |
97 |
true, /* partial_inplace */ |
TRUE, /* partial_inplace */ |
98 |
0xffffffff, /* src_mask */ |
0xffffffff, /* src_mask */ |
99 |
0xffffffff, /* dst_mask */ |
0xffffffff, /* dst_mask */ |
100 |
false), /* pcrel_offset */ |
FALSE), /* pcrel_offset */ |
101 |
|
|
102 |
/* 8 bits + 2 zero bits; jmpi/jsri/lrw instructions. |
/* 8 bits + 2 zero bits; jmpi/jsri/lrw instructions. |
103 |
Should not appear in object files. */ |
Should not appear in object files. */ |
105 |
2, /* rightshift */ |
2, /* rightshift */ |
106 |
1, /* size (0 = byte, 1 = short, 2 = long) */ |
1, /* size (0 = byte, 1 = short, 2 = long) */ |
107 |
8, /* bitsize */ |
8, /* bitsize */ |
108 |
true, /* pc_relative */ |
TRUE, /* pc_relative */ |
109 |
0, /* bitpos */ |
0, /* bitpos */ |
110 |
complain_overflow_bitfield, /* complain_on_overflow */ |
complain_overflow_bitfield, /* complain_on_overflow */ |
111 |
mcore_coff_unsupported_reloc, /* special_function */ |
mcore_coff_unsupported_reloc, /* special_function */ |
112 |
"IMM8BY4", /* name */ |
"IMM8BY4", /* name */ |
113 |
false, /* partial_inplace */ |
FALSE, /* partial_inplace */ |
114 |
0, /* src_mask */ |
0, /* src_mask */ |
115 |
0, /* dst_mask */ |
0, /* dst_mask */ |
116 |
true), /* pcrel_offset */ |
TRUE), /* pcrel_offset */ |
117 |
|
|
118 |
/* bsr/bt/bf/br instructions; 11 bits + 1 zero bit |
/* bsr/bt/bf/br instructions; 11 bits + 1 zero bit |
119 |
Span 2k instructions == 4k bytes. |
Span 2k instructions == 4k bytes. |
122 |
1, /* rightshift */ |
1, /* rightshift */ |
123 |
1, /* size (0 = byte, 1 = short, 2 = long) */ |
1, /* size (0 = byte, 1 = short, 2 = long) */ |
124 |
11, /* bitsize */ |
11, /* bitsize */ |
125 |
true, /* pc_relative */ |
TRUE, /* pc_relative */ |
126 |
0, /* bitpos */ |
0, /* bitpos */ |
127 |
complain_overflow_signed, /* complain_on_overflow */ |
complain_overflow_signed, /* complain_on_overflow */ |
128 |
NULL, /* special_function */ |
NULL, /* special_function */ |
129 |
"IMM11BY2", /* name */ |
"IMM11BY2", /* name */ |
130 |
false, /* partial_inplace */ |
FALSE, /* partial_inplace */ |
131 |
0x0, /* src_mask */ |
0x0, /* src_mask */ |
132 |
0x7ff, /* dst_mask */ |
0x7ff, /* dst_mask */ |
133 |
true), /* pcrel_offset */ |
TRUE), /* pcrel_offset */ |
134 |
|
|
135 |
/* 4 bits + 1 zero bit; 'loopt' instruction only; unsupported. */ |
/* 4 bits + 1 zero bit; 'loopt' instruction only; unsupported. */ |
136 |
HOWTO (IMAGE_REL_MCORE_PCREL_IMM4BY2, /* type */ |
HOWTO (IMAGE_REL_MCORE_PCREL_IMM4BY2, /* type */ |
137 |
1, /* rightshift */ |
1, /* rightshift */ |
138 |
1, /* size (0 = byte, 1 = short, 2 = long) */ |
1, /* size (0 = byte, 1 = short, 2 = long) */ |
139 |
4, /* bitsize */ |
4, /* bitsize */ |
140 |
true, /* pc_relative */ |
TRUE, /* pc_relative */ |
141 |
0, /* bitpos */ |
0, /* bitpos */ |
142 |
complain_overflow_bitfield, /* complain_on_overflow */ |
complain_overflow_bitfield, /* complain_on_overflow */ |
143 |
mcore_coff_unsupported_reloc, /* special_function */ |
mcore_coff_unsupported_reloc, /* special_function */ |
144 |
"IMM4BY2", /* name */ |
"IMM4BY2", /* name */ |
145 |
false, /* partial_inplace */ |
FALSE, /* partial_inplace */ |
146 |
0, /* src_mask */ |
0, /* src_mask */ |
147 |
0, /* dst_mask */ |
0, /* dst_mask */ |
148 |
true), /* pcrel_offset */ |
TRUE), /* pcrel_offset */ |
149 |
|
|
150 |
/* 32-bit pc-relative. Eventually this will help support PIC code. */ |
/* 32-bit pc-relative. Eventually this will help support PIC code. */ |
151 |
HOWTO (IMAGE_REL_MCORE_PCREL_32,/* type */ |
HOWTO (IMAGE_REL_MCORE_PCREL_32,/* type */ |
152 |
0, /* rightshift */ |
0, /* rightshift */ |
153 |
2, /* size (0 = byte, 1 = short, 2 = long) */ |
2, /* size (0 = byte, 1 = short, 2 = long) */ |
154 |
32, /* bitsize */ |
32, /* bitsize */ |
155 |
true, /* pc_relative */ |
TRUE, /* pc_relative */ |
156 |
0, /* bitpos */ |
0, /* bitpos */ |
157 |
complain_overflow_bitfield, /* complain_on_overflow */ |
complain_overflow_bitfield, /* complain_on_overflow */ |
158 |
NULL, /* special_function */ |
NULL, /* special_function */ |
159 |
"PCREL_32", /* name */ |
"PCREL_32", /* name */ |
160 |
false, /* partial_inplace */ |
FALSE, /* partial_inplace */ |
161 |
0x0, /* src_mask */ |
0x0, /* src_mask */ |
162 |
0xffffffff, /* dst_mask */ |
0xffffffff, /* dst_mask */ |
163 |
true), /* pcrel_offset */ |
TRUE), /* pcrel_offset */ |
164 |
|
|
165 |
/* Like PCREL_IMM11BY2, this relocation indicates that there is a |
/* Like PCREL_IMM11BY2, this relocation indicates that there is a |
166 |
'jsri' at the specified address. There is a separate relocation |
'jsri' at the specified address. There is a separate relocation |
173 |
1, /* rightshift */ |
1, /* rightshift */ |
174 |
1, /* size (0 = byte, 1 = short, 2 = long) */ |
1, /* size (0 = byte, 1 = short, 2 = long) */ |
175 |
11, /* bitsize */ |
11, /* bitsize */ |
176 |
true, /* pc_relative */ |
TRUE, /* pc_relative */ |
177 |
0, /* bitpos */ |
0, /* bitpos */ |
178 |
complain_overflow_signed, /* complain_on_overflow */ |
complain_overflow_signed, /* complain_on_overflow */ |
179 |
NULL, /* special_function */ |
NULL, /* special_function */ |
180 |
"JSR_IMM11BY2", /* name */ |
"JSR_IMM11BY2", /* name */ |
181 |
false, /* partial_inplace */ |
FALSE, /* partial_inplace */ |
182 |
0x0, /* src_mask */ |
0x0, /* src_mask */ |
183 |
0x7ff, /* dst_mask */ |
0x7ff, /* dst_mask */ |
184 |
true), /* pcrel_offset */ |
TRUE), /* pcrel_offset */ |
185 |
|
|
186 |
HOWTO (IMAGE_REL_MCORE_RVA, /* type */ |
HOWTO (IMAGE_REL_MCORE_RVA, /* type */ |
187 |
0, /* rightshift */ |
0, /* rightshift */ |
188 |
2, /* size (0 = byte, 1 = short, 2 = long) */ |
2, /* size (0 = byte, 1 = short, 2 = long) */ |
189 |
32, /* bitsize */ |
32, /* bitsize */ |
190 |
false, /* pc_relative */ |
FALSE, /* pc_relative */ |
191 |
0, /* bitpos */ |
0, /* bitpos */ |
192 |
complain_overflow_signed, /* complain_on_overflow */ |
complain_overflow_signed, /* complain_on_overflow */ |
193 |
NULL, /* special_function */ |
NULL, /* special_function */ |
194 |
"MCORE_RVA", /* name */ |
"MCORE_RVA", /* name */ |
195 |
true, /* partial_inplace */ |
TRUE, /* partial_inplace */ |
196 |
0xffffffff, /* src_mask */ |
0xffffffff, /* src_mask */ |
197 |
0xffffffff, /* dst_mask */ |
0xffffffff, /* dst_mask */ |
198 |
true) /* pcrel_offset */ |
TRUE) /* pcrel_offset */ |
199 |
}; |
}; |
200 |
|
|
201 |
/* Extend the coff_link_hash_table structure with a few M*Core specific fields. |
/* Extend the coff_link_hash_table structure with a few M*Core specific fields. |
218 |
#define coff_mcore_hash_table(info) \ |
#define coff_mcore_hash_table(info) \ |
219 |
((mcore_hash_table *) ((info)->hash)) |
((mcore_hash_table *) ((info)->hash)) |
220 |
|
|
|
#if 0 |
|
|
/* Create an MCore coff linker hash table. */ |
|
|
|
|
|
static struct bfd_link_hash_table * |
|
|
coff_mcore_link_hash_table_create (abfd) |
|
|
bfd * abfd; |
|
|
{ |
|
|
mcore_hash_table * ret; |
|
|
|
|
|
ret = (mcore_hash_table *) bfd_malloc ((bfd_size_type) sizeof (* ret)); |
|
|
if (ret == (mcore_hash_table *) NULL) |
|
|
return NULL; |
|
|
|
|
|
if (! _bfd_coff_link_hash_table_init |
|
|
(& ret->root, abfd, _bfd_coff_link_hash_newfunc)) |
|
|
{ |
|
|
free (ret); |
|
|
return (struct bfd_link_hash_table *) NULL; |
|
|
} |
|
|
|
|
|
ret->bfd_of_toc_owner = NULL; |
|
|
ret->global_toc_size = 0; |
|
|
ret->import_table_size = 0; |
|
|
ret->first_thunk_address = 0; |
|
|
ret->thunk_size = 0; |
|
|
|
|
|
return & ret->root.root; |
|
|
} |
|
|
#endif |
|
221 |
|
|
222 |
/* Add an entry to the base file. */ |
/* Add an entry to the base file. */ |
223 |
|
|
252 |
{ |
{ |
253 |
BFD_ASSERT (reloc_entry->howto != (reloc_howto_type *)0); |
BFD_ASSERT (reloc_entry->howto != (reloc_howto_type *)0); |
254 |
|
|
255 |
_bfd_error_handler (_("%s: Relocation %s (%d) is not currently supported.\n"), |
_bfd_error_handler (_("%B: Relocation %s (%d) is not currently supported.\n"), |
256 |
bfd_archive_filename (abfd), |
abfd, |
257 |
reloc_entry->howto->name, |
reloc_entry->howto->name, |
258 |
reloc_entry->howto->type); |
reloc_entry->howto->type); |
259 |
|
|
327 |
return howto; |
return howto; |
328 |
} |
} |
329 |
|
|
330 |
/* Return true if this relocation should appear in the output .reloc section. |
/* Return TRUE if this relocation should appear in the output .reloc section. |
331 |
This function is referenced in pe_mkobject in peicode.h. */ |
This function is referenced in pe_mkobject in peicode.h. */ |
332 |
|
|
333 |
static boolean |
static bfd_boolean |
334 |
in_reloc_p (abfd, howto) |
in_reloc_p (abfd, howto) |
335 |
bfd * abfd ATTRIBUTE_UNUSED; |
bfd * abfd ATTRIBUTE_UNUSED; |
336 |
reloc_howto_type * howto; |
reloc_howto_type * howto; |
339 |
} |
} |
340 |
|
|
341 |
/* The reloc processing routine for the optimized COFF linker. */ |
/* The reloc processing routine for the optimized COFF linker. */ |
342 |
static boolean |
static bfd_boolean |
343 |
coff_mcore_relocate_section (output_bfd, info, input_bfd, input_section, |
coff_mcore_relocate_section (output_bfd, info, input_bfd, input_section, |
344 |
contents, relocs, syms, sections) |
contents, relocs, syms, sections) |
345 |
bfd * output_bfd; |
bfd * output_bfd; |
353 |
{ |
{ |
354 |
struct internal_reloc * rel; |
struct internal_reloc * rel; |
355 |
struct internal_reloc * relend; |
struct internal_reloc * relend; |
356 |
boolean hihalf; |
bfd_boolean hihalf; |
357 |
bfd_vma hihalf_val; |
bfd_vma hihalf_val; |
358 |
|
|
359 |
/* If we are performing a relocateable link, we don't need to do a |
/* If we are performing a relocatable link, we don't need to do a |
360 |
thing. The caller will take care of adjusting the reloc |
thing. The caller will take care of adjusting the reloc |
361 |
addresses and symbol indices. */ |
addresses and symbol indices. */ |
362 |
if (info->relocateable) |
if (info->relocatable) |
363 |
return true; |
return TRUE; |
364 |
|
|
365 |
/* Check if we have the same endianess */ |
/* Check if we have the same endianess */ |
366 |
if ( input_bfd->xvec->byteorder != output_bfd->xvec->byteorder |
if ( input_bfd->xvec->byteorder != output_bfd->xvec->byteorder |
367 |
&& output_bfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN) |
&& output_bfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN) |
368 |
{ |
{ |
369 |
(*_bfd_error_handler) |
(*_bfd_error_handler) |
370 |
(_("%s: compiled for a %s system and target is %s.\n"), |
(_("%B: compiled for a %s system and target is %s.\n"), |
371 |
bfd_archive_filename (input_bfd), |
input_bfd, |
372 |
bfd_big_endian (input_bfd) ? _("big endian") : _("little endian"), |
bfd_big_endian (input_bfd) ? _("big endian") : _("little endian"), |
373 |
bfd_big_endian (output_bfd) ? _("big endian") : _("little endian")); |
bfd_big_endian (output_bfd) ? _("big endian") : _("little endian")); |
374 |
|
|
375 |
bfd_set_error (bfd_error_wrong_format); |
bfd_set_error (bfd_error_wrong_format); |
376 |
return false; |
return FALSE; |
377 |
} |
} |
378 |
|
|
379 |
hihalf = false; |
hihalf = FALSE; |
380 |
hihalf_val = 0; |
hihalf_val = 0; |
381 |
|
|
382 |
rel = relocs; |
rel = relocs; |
415 |
howto = bfd_coff_rtype_to_howto (input_bfd, input_section, rel, h, |
howto = bfd_coff_rtype_to_howto (input_bfd, input_section, rel, h, |
416 |
sym, & addend); |
sym, & addend); |
417 |
if (howto == NULL) |
if (howto == NULL) |
418 |
return false; |
return FALSE; |
419 |
|
|
420 |
val = 0; |
val = 0; |
421 |
|
|
461 |
{ |
{ |
462 |
if (! ((*info->callbacks->undefined_symbol) |
if (! ((*info->callbacks->undefined_symbol) |
463 |
(info, h->root.root.string, input_bfd, input_section, |
(info, h->root.root.string, input_bfd, input_section, |
464 |
rel->r_vaddr - input_section->vma, true))) |
rel->r_vaddr - input_section->vma, TRUE))) |
465 |
return false; |
return FALSE; |
466 |
} |
} |
467 |
|
|
468 |
my_name = h->root.root.string; |
my_name = h->root.root.string; |
474 |
switch (r_type) |
switch (r_type) |
475 |
{ |
{ |
476 |
default: |
default: |
477 |
_bfd_error_handler (_("%s: unsupported relocation type 0x%02x"), |
_bfd_error_handler (_("%B: unsupported relocation type 0x%02x"), |
478 |
bfd_archive_filename (input_bfd), r_type); |
input_bfd, r_type); |
479 |
bfd_set_error (bfd_error_bad_value); |
bfd_set_error (bfd_error_bad_value); |
480 |
return false; |
return FALSE; |
481 |
|
|
482 |
case IMAGE_REL_MCORE_ABSOLUTE: |
case IMAGE_REL_MCORE_ABSOLUTE: |
483 |
fprintf (stderr, |
_bfd_error_handler |
484 |
_("Warning: unsupported reloc %s <file %s, section %s>\n"), |
(_("Warning: unsupported reloc %s <file %B, section %A>\n" |
485 |
howto->name, |
"sym %ld (%s), r_vaddr %ld (%lx)"), |
486 |
bfd_archive_filename (input_bfd), |
input_bfd, input_section, howto->name, |
487 |
input_section->name); |
rel->r_symndx, my_name, (long) rel->r_vaddr, |
488 |
|
(unsigned long) rel->r_vaddr); |
|
fprintf (stderr,"sym %ld (%s), r_vaddr %ld (%lx)\n", |
|
|
rel->r_symndx, my_name, (long) rel->r_vaddr, |
|
|
(unsigned long) rel->r_vaddr); |
|
489 |
break; |
break; |
490 |
|
|
491 |
case IMAGE_REL_MCORE_PCREL_IMM8BY4: |
case IMAGE_REL_MCORE_PCREL_IMM8BY4: |
523 |
|
|
524 |
case bfd_reloc_overflow: |
case bfd_reloc_overflow: |
525 |
if (! ((*info->callbacks->reloc_overflow) |
if (! ((*info->callbacks->reloc_overflow) |
526 |
(info, my_name, howto->name, |
(info, (h ? &h->root : NULL), my_name, howto->name, |
527 |
(bfd_vma) 0, input_bfd, |
(bfd_vma) 0, input_bfd, |
528 |
input_section, rel->r_vaddr - input_section->vma))) |
input_section, rel->r_vaddr - input_section->vma))) |
529 |
return false; |
return FALSE; |
530 |
} |
} |
531 |
} |
} |
532 |
|
|
533 |
return true; |
return TRUE; |
534 |
} |
} |
535 |
|
|
536 |
/* Tailor coffcode.h -- macro heaven. */ |
/* Tailor coffcode.h -- macro heaven. */ |
543 |
|
|
544 |
#define SELECT_RELOC(internal, howto) {internal.r_type = howto->type;} |
#define SELECT_RELOC(internal, howto) {internal.r_type = howto->type;} |
545 |
|
|
546 |
|
/* Make sure that the 'r_offset' field is copied properly |
547 |
|
so that identical binaries will compare the same. */ |
548 |
|
#define SWAP_IN_RELOC_OFFSET H_GET_32 |
549 |
|
#define SWAP_OUT_RELOC_OFFSET H_PUT_32 |
550 |
|
|
551 |
#define COFF_PAGE_SIZE 0x1000 |
#define COFF_PAGE_SIZE 0x1000 |
552 |
|
|
553 |
#include "coffcode.h" |
#include "coffcode.h" |
554 |
|
|
555 |
/* Forward declaration to initialise alterbative_target field. */ |
/* Forward declaration to initialise alternative_target field. */ |
556 |
extern const bfd_target TARGET_LITTLE_SYM; |
extern const bfd_target TARGET_LITTLE_SYM; |
557 |
|
|
558 |
/* The transfer vectors that lead the outside world to all of the above. */ |
/* The transfer vectors that lead the outside world to all of the above. */ |
559 |
CREATE_BIG_COFF_TARGET_VEC (TARGET_BIG_SYM, TARGET_BIG_NAME, D_PAGED, |
CREATE_BIG_COFF_TARGET_VEC (TARGET_BIG_SYM, TARGET_BIG_NAME, D_PAGED, |
560 |
(SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_READONLY | SEC_LINK_ONCE | SEC_LINK_DUPLICATES), |
(SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_READONLY | SEC_LINK_ONCE | SEC_LINK_DUPLICATES), |
561 |
0, & TARGET_LITTLE_SYM) |
0, & TARGET_LITTLE_SYM, COFF_SWAP_TABLE) |
562 |
CREATE_LITTLE_COFF_TARGET_VEC (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME, D_PAGED, |
CREATE_LITTLE_COFF_TARGET_VEC (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME, D_PAGED, |
563 |
(SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_READONLY | SEC_LINK_ONCE | SEC_LINK_DUPLICATES), |
(SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_READONLY | SEC_LINK_ONCE | SEC_LINK_DUPLICATES), |
564 |
0, & TARGET_BIG_SYM) |
0, & TARGET_BIG_SYM, COFF_SWAP_TABLE) |