1 |
/* BFD back-end for TMS320C30 a.out binaries. |
/* BFD back-end for TMS320C30 a.out binaries. |
2 |
Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 |
3 |
|
Free Software Foundation, Inc. |
4 |
Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au) |
Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au) |
5 |
|
|
6 |
This file is part of BFD, the Binary File Descriptor library. |
This file is part of BFD, the Binary File Descriptor library. |
22 |
|
|
23 |
#define TARGET_IS_BIG_ENDIAN_P |
#define TARGET_IS_BIG_ENDIAN_P |
24 |
#define N_HEADER_IN_TEXT(x) 1 |
#define N_HEADER_IN_TEXT(x) 1 |
|
#define BYTES_IN_WORD 4 |
|
25 |
#define TEXT_START_ADDR 1024 |
#define TEXT_START_ADDR 1024 |
26 |
#define TARGET_PAGE_SIZE 128 |
#define TARGET_PAGE_SIZE 128 |
27 |
#define SEGMENT_SIZE TARGET_PAGE_SIZE |
#define SEGMENT_SIZE TARGET_PAGE_SIZE |
56 |
static bfd_reloc_status_type tic30_aout_final_link_relocate |
static bfd_reloc_status_type tic30_aout_final_link_relocate |
57 |
PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *, bfd_vma, |
PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *, bfd_vma, |
58 |
bfd_vma, bfd_vma)); |
bfd_vma, bfd_vma)); |
59 |
static const bfd_target *tic30_aout_object_p PARAMS ((bfd *)); |
static const bfd_target *tic30_aout_object_p |
60 |
static boolean tic30_aout_write_object_contents PARAMS ((bfd *)); |
PARAMS ((bfd *)); |
61 |
static boolean tic30_aout_set_sizes PARAMS ((bfd *)); |
static bfd_boolean tic30_aout_write_object_contents |
62 |
static const bfd_target * tic30_aout_callback PARAMS ((bfd *)); |
PARAMS ((bfd *)); |
63 |
static boolean MY_bfd_copy_private_section_data |
static bfd_boolean tic30_aout_set_sizes |
64 |
|
PARAMS ((bfd *)); |
65 |
|
static const bfd_target * tic30_aout_callback |
66 |
|
PARAMS ((bfd *)); |
67 |
|
static bfd_boolean MY_bfd_copy_private_section_data |
68 |
PARAMS ((bfd *, asection *, bfd *, asection *)); |
PARAMS ((bfd *, asection *, bfd *, asection *)); |
69 |
static boolean MY_bfd_final_link PARAMS ((bfd *, struct bfd_link_info *)); |
static bfd_boolean MY_bfd_final_link |
70 |
|
PARAMS ((bfd *, struct bfd_link_info *)); |
71 |
reloc_howto_type * tic30_aout_reloc_type_lookup |
reloc_howto_type * tic30_aout_reloc_type_lookup |
72 |
PARAMS ((bfd *, bfd_reloc_code_real_type)); |
PARAMS ((bfd *, bfd_reloc_code_real_type)); |
73 |
enum machine_type tic30_aout_machine_type |
enum machine_type tic30_aout_machine_type |
74 |
PARAMS ((enum bfd_architecture, unsigned long, boolean *)); |
PARAMS ((enum bfd_architecture, unsigned long, bfd_boolean *)); |
75 |
boolean tic30_aout_set_arch_mach |
bfd_boolean tic30_aout_set_arch_mach |
76 |
PARAMS ((bfd *, enum bfd_architecture, unsigned long)); |
PARAMS ((bfd *, enum bfd_architecture, unsigned long)); |
77 |
|
|
78 |
#define MY_reloc_howto(BFD, REL, IN, EX, PC) \ |
#define MY_reloc_howto(BFD, REL, IN, EX, PC) \ |
151 |
reloc_howto_type tic30_aout_howto_table[] = |
reloc_howto_type tic30_aout_howto_table[] = |
152 |
{ |
{ |
153 |
EMPTY_HOWTO (-1), |
EMPTY_HOWTO (-1), |
154 |
HOWTO (1, 2, 1, 16, false, 0, 0, tic30_aout_fix_16, |
HOWTO (1, 2, 1, 16, FALSE, 0, 0, tic30_aout_fix_16, |
155 |
"16", false, 0x0000FFFF, 0x0000FFFF, false), |
"16", FALSE, 0x0000FFFF, 0x0000FFFF, FALSE), |
156 |
HOWTO (2, 2, 2, 24, false, 0, complain_overflow_bitfield, NULL, |
HOWTO (2, 2, 2, 24, FALSE, 0, complain_overflow_bitfield, NULL, |
157 |
"24", false, 0x00FFFFFF, 0x00FFFFFF, false), |
"24", FALSE, 0x00FFFFFF, 0x00FFFFFF, FALSE), |
158 |
HOWTO (3, 18, 3, 24, false, 0, complain_overflow_bitfield, NULL, |
HOWTO (3, 18, 3, 24, FALSE, 0, complain_overflow_bitfield, NULL, |
159 |
"LDP", false, 0x00FF0000, 0x000000FF, false), |
"LDP", FALSE, 0x00FF0000, 0x000000FF, FALSE), |
160 |
HOWTO (4, 2, 4, 32, false, 0, complain_overflow_bitfield, tic30_aout_fix_32, |
HOWTO (4, 2, 4, 32, FALSE, 0, complain_overflow_bitfield, tic30_aout_fix_32, |
161 |
"32", false, 0xFFFFFFFF, 0xFFFFFFFF, false), |
"32", FALSE, 0xFFFFFFFF, 0xFFFFFFFF, FALSE), |
162 |
HOWTO (5, 2, 1, 16, true, 0, complain_overflow_signed, |
HOWTO (5, 2, 1, 16, TRUE, 0, complain_overflow_signed, |
163 |
tic30_aout_fix_pcrel_16, "PCREL", true, 0x0000FFFF, 0x0000FFFF, true), |
tic30_aout_fix_pcrel_16, "PCREL", TRUE, 0x0000FFFF, 0x0000FFFF, TRUE), |
164 |
EMPTY_HOWTO (-1), |
EMPTY_HOWTO (-1), |
165 |
EMPTY_HOWTO (-1), |
EMPTY_HOWTO (-1), |
166 |
EMPTY_HOWTO (-1), |
EMPTY_HOWTO (-1), |
169 |
}; |
}; |
170 |
|
|
171 |
extern reloc_howto_type *NAME (aout, reloc_type_lookup) |
extern reloc_howto_type *NAME (aout, reloc_type_lookup) |
172 |
PARAMS ((bfd *, bfd_reloc_code_real_type)); |
PARAMS ((bfd *, bfd_reloc_code_real_type)); |
173 |
|
|
174 |
reloc_howto_type * |
reloc_howto_type * |
175 |
tic30_aout_reloc_type_lookup (abfd, code) |
tic30_aout_reloc_type_lookup (abfd, code) |
338 |
unsigned long arch_align; |
unsigned long arch_align; |
339 |
|
|
340 |
/* Calculate the file positions of the parts of a newly read aout header. */ |
/* Calculate the file positions of the parts of a newly read aout header. */ |
341 |
obj_textsec (abfd)->_raw_size = N_TXTSIZE (*execp); |
obj_textsec (abfd)->size = N_TXTSIZE (*execp); |
342 |
|
|
343 |
/* The virtual memory addresses of the sections. */ |
/* The virtual memory addresses of the sections. */ |
344 |
obj_textsec (abfd)->vma = N_TXTADDR (*execp); |
obj_textsec (abfd)->vma = N_TXTADDR (*execp); |
376 |
of the section. */ |
of the section. */ |
377 |
arch_align_power = bfd_get_arch_info (abfd)->section_align_power; |
arch_align_power = bfd_get_arch_info (abfd)->section_align_power; |
378 |
arch_align = 1 << arch_align_power; |
arch_align = 1 << arch_align_power; |
379 |
if ((BFD_ALIGN (obj_textsec (abfd)->_raw_size, arch_align) |
if ((BFD_ALIGN (obj_textsec (abfd)->size, arch_align) |
380 |
== obj_textsec (abfd)->_raw_size) |
== obj_textsec (abfd)->size) |
381 |
&& (BFD_ALIGN (obj_datasec (abfd)->_raw_size, arch_align) |
&& (BFD_ALIGN (obj_datasec (abfd)->size, arch_align) |
382 |
== obj_datasec (abfd)->_raw_size) |
== obj_datasec (abfd)->size) |
383 |
&& (BFD_ALIGN (obj_bsssec (abfd)->_raw_size, arch_align) |
&& (BFD_ALIGN (obj_bsssec (abfd)->size, arch_align) |
384 |
== obj_bsssec (abfd)->_raw_size)) |
== obj_bsssec (abfd)->size)) |
385 |
{ |
{ |
386 |
obj_textsec (abfd)->alignment_power = arch_align_power; |
obj_textsec (abfd)->alignment_power = arch_align_power; |
387 |
obj_datasec (abfd)->alignment_power = arch_align_power; |
obj_datasec (abfd)->alignment_power = arch_align_power; |
403 |
{ |
{ |
404 |
bfd_vma relocation; |
bfd_vma relocation; |
405 |
|
|
406 |
if (address > input_section->_raw_size) |
if (address > bfd_get_section_limit (input_bfd, input_section)) |
407 |
return bfd_reloc_outofrange; |
return bfd_reloc_outofrange; |
408 |
|
|
409 |
relocation = value + addend; |
relocation = value + addend; |
425 |
bfd_byte *location; |
bfd_byte *location; |
426 |
{ |
{ |
427 |
bfd_vma x; |
bfd_vma x; |
428 |
boolean overflow; |
bfd_boolean overflow; |
429 |
|
|
430 |
if (howto->size < 0) |
if (howto->size < 0) |
431 |
relocation = -relocation; |
relocation = -relocation; |
450 |
break; |
break; |
451 |
} |
} |
452 |
|
|
453 |
overflow = false; |
overflow = FALSE; |
454 |
|
|
455 |
if (howto->complain_on_overflow != complain_overflow_dont) |
if (howto->complain_on_overflow != complain_overflow_dont) |
456 |
{ |
{ |
496 |
bfd_signed_vma reloc_signed_max = (1 << (howto->bitsize - 1)) - 1; |
bfd_signed_vma reloc_signed_max = (1 << (howto->bitsize - 1)) - 1; |
497 |
bfd_signed_vma reloc_signed_min = ~reloc_signed_max; |
bfd_signed_vma reloc_signed_min = ~reloc_signed_max; |
498 |
if (signed_check > reloc_signed_max || signed_check < reloc_signed_min) |
if (signed_check > reloc_signed_max || signed_check < reloc_signed_min) |
499 |
overflow = true; |
overflow = TRUE; |
500 |
} |
} |
501 |
break; |
break; |
502 |
case complain_overflow_unsigned: |
case complain_overflow_unsigned: |
503 |
{ |
{ |
504 |
bfd_vma reloc_unsigned_max = (((1 << (howto->bitsize - 1)) - 1) << 1) | 1; |
bfd_vma reloc_unsigned_max = (((1 << (howto->bitsize - 1)) - 1) << 1) | 1; |
505 |
if (check > reloc_unsigned_max) |
if (check > reloc_unsigned_max) |
506 |
overflow = true; |
overflow = TRUE; |
507 |
} |
} |
508 |
break; |
break; |
509 |
case complain_overflow_bitfield: |
case complain_overflow_bitfield: |
512 |
if ((check & ~reloc_bits) != 0 |
if ((check & ~reloc_bits) != 0 |
513 |
&& (((bfd_vma) signed_check & ~reloc_bits) |
&& (((bfd_vma) signed_check & ~reloc_bits) |
514 |
!= ((bfd_vma) -1 & ~reloc_bits))) |
!= ((bfd_vma) -1 & ~reloc_bits))) |
515 |
overflow = true; |
overflow = TRUE; |
516 |
} |
} |
517 |
break; |
break; |
518 |
default: |
default: |
612 |
section contents, and copy_private_bfd_data is not called until |
section contents, and copy_private_bfd_data is not called until |
613 |
after the section contents have been set. */ |
after the section contents have been set. */ |
614 |
|
|
615 |
static boolean |
static bfd_boolean |
616 |
MY_bfd_copy_private_section_data (ibfd, isec, obfd, osec) |
MY_bfd_copy_private_section_data (ibfd, isec, obfd, osec) |
617 |
bfd *ibfd; |
bfd *ibfd; |
618 |
asection *isec ATTRIBUTE_UNUSED; |
asection *isec ATTRIBUTE_UNUSED; |
621 |
{ |
{ |
622 |
if (bfd_get_flavour (obfd) == bfd_target_aout_flavour) |
if (bfd_get_flavour (obfd) == bfd_target_aout_flavour) |
623 |
obj_aout_subformat (obfd) = obj_aout_subformat (ibfd); |
obj_aout_subformat (obfd) = obj_aout_subformat (ibfd); |
624 |
return true; |
return TRUE; |
625 |
} |
} |
626 |
|
|
627 |
/* Write an object file. |
/* Write an object file. |
628 |
Section contents have already been written. We write the |
Section contents have already been written. We write the |
629 |
file header, symbols, and relocation. */ |
file header, symbols, and relocation. */ |
630 |
|
|
631 |
static boolean |
static bfd_boolean |
632 |
tic30_aout_write_object_contents (abfd) |
tic30_aout_write_object_contents (abfd) |
633 |
bfd *abfd; |
bfd *abfd; |
634 |
{ |
{ |
655 |
{ |
{ |
656 |
bfd_size_type amt; |
bfd_size_type amt; |
657 |
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0) |
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0) |
658 |
return false; |
return FALSE; |
659 |
amt = adata (abfd).exec_bytes_size; |
amt = adata (abfd).exec_bytes_size; |
660 |
if (bfd_bwrite ((PTR) &exec_bytes, amt, abfd) != amt) |
if (bfd_bwrite ((PTR) &exec_bytes, amt, abfd) != amt) |
661 |
return false; |
return FALSE; |
662 |
} |
} |
663 |
|
|
664 |
/* Now write out reloc info, followed by syms and strings. */ |
/* Now write out reloc info, followed by syms and strings. */ |
666 |
&& bfd_get_symcount (abfd) != 0) |
&& bfd_get_symcount (abfd) != 0) |
667 |
{ |
{ |
668 |
if (bfd_seek (abfd, (file_ptr) (N_SYMOFF (*execp)), SEEK_SET) != 0) |
if (bfd_seek (abfd, (file_ptr) (N_SYMOFF (*execp)), SEEK_SET) != 0) |
669 |
return false; |
return FALSE; |
670 |
|
|
671 |
if (!NAME (aout, write_syms) (abfd)) |
if (!NAME (aout, write_syms) (abfd)) |
672 |
return false; |
return FALSE; |
673 |
} |
} |
674 |
|
|
675 |
if (bfd_seek (abfd, (file_ptr) (N_TRELOFF (*execp)), SEEK_SET) != 0) |
if (bfd_seek (abfd, (file_ptr) (N_TRELOFF (*execp)), SEEK_SET) != 0) |
676 |
return false; |
return FALSE; |
677 |
if (!NAME (aout, squirt_out_relocs) (abfd, obj_textsec (abfd))) |
if (!NAME (aout, squirt_out_relocs) (abfd, obj_textsec (abfd))) |
678 |
return false; |
return FALSE; |
679 |
|
|
680 |
if (bfd_seek (abfd, (file_ptr) (N_DRELOFF (*execp)), SEEK_SET) != 0) |
if (bfd_seek (abfd, (file_ptr) (N_DRELOFF (*execp)), SEEK_SET) != 0) |
681 |
return false; |
return FALSE; |
682 |
if (!NAME (aout, squirt_out_relocs) (abfd, obj_datasec (abfd))) |
if (!NAME (aout, squirt_out_relocs) (abfd, obj_datasec (abfd))) |
683 |
return false; |
return FALSE; |
684 |
} |
} |
685 |
|
|
686 |
return true; |
return TRUE; |
687 |
} |
} |
688 |
|
|
689 |
static boolean |
static bfd_boolean |
690 |
tic30_aout_set_sizes (abfd) |
tic30_aout_set_sizes (abfd) |
691 |
bfd *abfd; |
bfd *abfd; |
692 |
{ |
{ |
706 |
|
|
707 |
adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE; |
adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE; |
708 |
|
|
709 |
return true; |
return TRUE; |
710 |
} |
} |
711 |
|
|
712 |
#ifndef MY_final_link_callback |
#ifndef MY_final_link_callback |
737 |
/* Final link routine. We need to use a call back to get the correct |
/* Final link routine. We need to use a call back to get the correct |
738 |
offsets in the output file. */ |
offsets in the output file. */ |
739 |
|
|
740 |
static boolean |
static bfd_boolean |
741 |
MY_bfd_final_link (abfd, info) |
MY_bfd_final_link (abfd, info) |
742 |
bfd *abfd; |
bfd *abfd; |
743 |
struct bfd_link_info *info; |
struct bfd_link_info *info; |
757 |
obj_textsec (abfd)->filepos = pos; |
obj_textsec (abfd)->filepos = pos; |
758 |
obj_textsec (abfd)->vma = vma; |
obj_textsec (abfd)->vma = vma; |
759 |
obj_textsec (abfd)->user_set_vma = 1; |
obj_textsec (abfd)->user_set_vma = 1; |
760 |
pos += obj_textsec (abfd)->_raw_size; |
pos += obj_textsec (abfd)->size; |
761 |
vma += obj_textsec (abfd)->_raw_size; |
vma += obj_textsec (abfd)->size; |
762 |
|
|
763 |
/* Data. */ |
/* Data. */ |
764 |
if (abfd->flags & D_PAGED) |
if (abfd->flags & D_PAGED) |
780 |
vma = obj_datasec (abfd)->vma; |
vma = obj_datasec (abfd)->vma; |
781 |
obj_datasec (abfd)->filepos = vma + adata (abfd).exec_bytes_size; |
obj_datasec (abfd)->filepos = vma + adata (abfd).exec_bytes_size; |
782 |
execp->a_text = vma - obj_textsec (abfd)->vma; |
execp->a_text = vma - obj_textsec (abfd)->vma; |
783 |
obj_textsec (abfd)->_raw_size = execp->a_text; |
obj_textsec (abfd)->size = execp->a_text; |
784 |
|
|
785 |
/* Since BSS follows data immediately, see if it needs alignment. */ |
/* Since BSS follows data immediately, see if it needs alignment. */ |
786 |
vma += obj_datasec (abfd)->_raw_size; |
vma += obj_datasec (abfd)->size; |
787 |
pad = align_power (vma, obj_bsssec (abfd)->alignment_power) - vma; |
pad = align_power (vma, obj_bsssec (abfd)->alignment_power) - vma; |
788 |
obj_datasec (abfd)->_raw_size += pad; |
obj_datasec (abfd)->size += pad; |
789 |
pos += obj_datasec (abfd)->_raw_size; |
pos += obj_datasec (abfd)->size; |
790 |
execp->a_data = obj_datasec (abfd)->_raw_size; |
execp->a_data = obj_datasec (abfd)->size; |
791 |
|
|
792 |
/* BSS. */ |
/* BSS. */ |
793 |
obj_bsssec (abfd)->vma = vma; |
obj_bsssec (abfd)->vma = vma; |
805 |
tic30_aout_machine_type (arch, machine, unknown) |
tic30_aout_machine_type (arch, machine, unknown) |
806 |
enum bfd_architecture arch; |
enum bfd_architecture arch; |
807 |
unsigned long machine ATTRIBUTE_UNUSED; |
unsigned long machine ATTRIBUTE_UNUSED; |
808 |
boolean *unknown; |
bfd_boolean *unknown; |
809 |
{ |
{ |
810 |
enum machine_type arch_flags; |
enum machine_type arch_flags; |
811 |
|
|
812 |
arch_flags = M_UNKNOWN; |
arch_flags = M_UNKNOWN; |
813 |
*unknown = true; |
*unknown = TRUE; |
814 |
|
|
815 |
switch (arch) |
switch (arch) |
816 |
{ |
{ |
817 |
case bfd_arch_tic30: |
case bfd_arch_tic30: |
818 |
*unknown = false; |
*unknown = FALSE; |
819 |
break; |
break; |
820 |
default: |
default: |
821 |
arch_flags = M_UNKNOWN; |
arch_flags = M_UNKNOWN; |
822 |
} |
} |
823 |
if (arch_flags != M_UNKNOWN) |
if (arch_flags != M_UNKNOWN) |
824 |
*unknown = false; |
*unknown = FALSE; |
825 |
return arch_flags; |
return arch_flags; |
826 |
} |
} |
827 |
|
|
828 |
boolean |
bfd_boolean |
829 |
tic30_aout_set_arch_mach (abfd, arch, machine) |
tic30_aout_set_arch_mach (abfd, arch, machine) |
830 |
bfd *abfd; |
bfd *abfd; |
831 |
enum bfd_architecture arch; |
enum bfd_architecture arch; |
832 |
unsigned long machine; |
unsigned long machine; |
833 |
{ |
{ |
834 |
if (!bfd_default_set_arch_mach (abfd, arch, machine)) |
if (!bfd_default_set_arch_mach (abfd, arch, machine)) |
835 |
return false; |
return FALSE; |
836 |
if (arch != bfd_arch_unknown) |
if (arch != bfd_arch_unknown) |
837 |
{ |
{ |
838 |
boolean unknown; |
bfd_boolean unknown; |
839 |
tic30_aout_machine_type (arch, machine, &unknown); |
tic30_aout_machine_type (arch, machine, &unknown); |
840 |
if (unknown) |
if (unknown) |
841 |
return false; |
return FALSE; |
842 |
} |
} |
843 |
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE; |
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE; |
844 |
return (*aout_backend_info (abfd)->set_sizes) (abfd); |
return (*aout_backend_info (abfd)->set_sizes) (abfd); |
900 |
#endif |
#endif |
901 |
#ifndef MY_bfd_debug_info_accumulate |
#ifndef MY_bfd_debug_info_accumulate |
902 |
#define MY_bfd_debug_info_accumulate \ |
#define MY_bfd_debug_info_accumulate \ |
903 |
(void (*) PARAMS ((bfd*, struct sec *))) bfd_void |
(void (*) PARAMS ((bfd*, struct bfd_section *))) bfd_void |
904 |
#endif |
#endif |
905 |
|
|
906 |
#ifndef MY_core_file_failing_command |
#ifndef MY_core_file_failing_command |
927 |
#ifndef MY_get_symtab_upper_bound |
#ifndef MY_get_symtab_upper_bound |
928 |
#define MY_get_symtab_upper_bound NAME(aout,get_symtab_upper_bound) |
#define MY_get_symtab_upper_bound NAME(aout,get_symtab_upper_bound) |
929 |
#endif |
#endif |
930 |
#ifndef MY_get_symtab |
#ifndef MY_canonicalize_symtab |
931 |
#define MY_get_symtab NAME(aout,get_symtab) |
#define MY_canonicalize_symtab NAME(aout,canonicalize_symtab) |
932 |
#endif |
#endif |
933 |
#ifndef MY_get_reloc_upper_bound |
#ifndef MY_get_reloc_upper_bound |
934 |
#define MY_get_reloc_upper_bound NAME(aout,get_reloc_upper_bound) |
#define MY_get_reloc_upper_bound NAME(aout,get_reloc_upper_bound) |
970 |
#ifndef MY_bfd_merge_sections |
#ifndef MY_bfd_merge_sections |
971 |
#define MY_bfd_merge_sections bfd_generic_merge_sections |
#define MY_bfd_merge_sections bfd_generic_merge_sections |
972 |
#endif |
#endif |
973 |
|
#ifndef MY_bfd_is_group_section |
974 |
|
#define MY_bfd_is_group_section bfd_generic_is_group_section |
975 |
|
#endif |
976 |
#ifndef MY_bfd_discard_group |
#ifndef MY_bfd_discard_group |
977 |
#define MY_bfd_discard_group bfd_generic_discard_group |
#define MY_bfd_discard_group bfd_generic_discard_group |
978 |
#endif |
#endif |
979 |
|
#ifndef MY_section_already_linked |
980 |
|
#define MY_section_already_linked \ |
981 |
|
_bfd_generic_section_already_linked |
982 |
|
#endif |
983 |
#ifndef MY_bfd_reloc_type_lookup |
#ifndef MY_bfd_reloc_type_lookup |
984 |
#define MY_bfd_reloc_type_lookup tic30_aout_reloc_type_lookup |
#define MY_bfd_reloc_type_lookup tic30_aout_reloc_type_lookup |
985 |
#endif |
#endif |
1020 |
#define MY_bfd_copy_private_symbol_data _bfd_generic_bfd_copy_private_symbol_data |
#define MY_bfd_copy_private_symbol_data _bfd_generic_bfd_copy_private_symbol_data |
1021 |
#endif |
#endif |
1022 |
|
|
1023 |
|
#ifndef MY_bfd_copy_private_header_data |
1024 |
|
#define MY_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data |
1025 |
|
#endif |
1026 |
|
|
1027 |
#ifndef MY_bfd_print_private_bfd_data |
#ifndef MY_bfd_print_private_bfd_data |
1028 |
#define MY_bfd_print_private_bfd_data _bfd_generic_bfd_print_private_bfd_data |
#define MY_bfd_print_private_bfd_data _bfd_generic_bfd_print_private_bfd_data |
1029 |
#endif |
#endif |
1036 |
#define MY_bfd_is_local_label_name bfd_generic_is_local_label_name |
#define MY_bfd_is_local_label_name bfd_generic_is_local_label_name |
1037 |
#endif |
#endif |
1038 |
|
|
1039 |
|
#ifndef MY_bfd_is_target_special_symbol |
1040 |
|
#define MY_bfd_is_target_special_symbol \ |
1041 |
|
((bfd_boolean (*) (bfd *, asymbol *)) bfd_false) |
1042 |
|
#endif |
1043 |
|
|
1044 |
#ifndef MY_bfd_free_cached_info |
#ifndef MY_bfd_free_cached_info |
1045 |
#define MY_bfd_free_cached_info NAME(aout,bfd_free_cached_info) |
#define MY_bfd_free_cached_info NAME(aout,bfd_free_cached_info) |
1046 |
#endif |
#endif |
1057 |
#define MY_canonicalize_dynamic_symtab \ |
#define MY_canonicalize_dynamic_symtab \ |
1058 |
_bfd_nodynamic_canonicalize_dynamic_symtab |
_bfd_nodynamic_canonicalize_dynamic_symtab |
1059 |
#endif |
#endif |
1060 |
|
#ifndef MY_get_synthetic_symtab |
1061 |
|
#define MY_get_synthetic_symtab \ |
1062 |
|
_bfd_nodynamic_get_synthetic_symtab |
1063 |
|
#endif |
1064 |
#ifndef MY_get_dynamic_reloc_upper_bound |
#ifndef MY_get_dynamic_reloc_upper_bound |
1065 |
#define MY_get_dynamic_reloc_upper_bound \ |
#define MY_get_dynamic_reloc_upper_bound \ |
1066 |
_bfd_nodynamic_get_dynamic_reloc_upper_bound |
_bfd_nodynamic_get_dynamic_reloc_upper_bound |