1 |
/* Intel 860 specific support for 32-bit ELF |
/* Intel 960 specific support for 32-bit ELF |
2 |
Copyright 1999, 2000, 2001 Free Software Foundation, Inc. |
Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. |
3 |
|
|
4 |
This file is part of BFD, the Binary File Descriptor library. |
This file is part of BFD, the Binary File Descriptor library. |
5 |
|
|
28 |
static reloc_howto_type *elf32_i960_reloc_type_lookup |
static reloc_howto_type *elf32_i960_reloc_type_lookup |
29 |
PARAMS ((bfd *, bfd_reloc_code_real_type)); |
PARAMS ((bfd *, bfd_reloc_code_real_type)); |
30 |
static void elf32_i960_info_to_howto |
static void elf32_i960_info_to_howto |
31 |
PARAMS ((bfd *, arelent *cache_ptr, Elf32_Internal_Rela *)); |
PARAMS ((bfd *, arelent *cache_ptr, Elf_Internal_Rela *)); |
32 |
static void elf32_i960_info_to_howto_rel |
static void elf32_i960_info_to_howto_rel |
33 |
PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *)); |
PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); |
34 |
|
|
35 |
#define USE_REL 1 |
#define USE_REL 1 |
36 |
|
|
40 |
|
|
41 |
static reloc_howto_type elf_howto_table[]= |
static reloc_howto_type elf_howto_table[]= |
42 |
{ |
{ |
43 |
HOWTO(R_960_NONE, 0, 0, 0, false, 0, complain_overflow_bitfield, |
HOWTO(R_960_NONE, 0, 0, 0, FALSE, 0, complain_overflow_bitfield, |
44 |
elf32_i960_relocate, "R_960_NONE", true, |
elf32_i960_relocate, "R_960_NONE", TRUE, |
45 |
0x00000000, 0x00000000, false), |
0x00000000, 0x00000000, FALSE), |
46 |
EMPTY_HOWTO (1), |
EMPTY_HOWTO (1), |
47 |
HOWTO (R_960_32, 0, 2, 32, false, 0, complain_overflow_bitfield, |
HOWTO (R_960_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, |
48 |
elf32_i960_relocate, "R_960_32", true, |
elf32_i960_relocate, "R_960_32", TRUE, |
49 |
0xffffffff, 0xffffffff, false), |
0xffffffff, 0xffffffff, FALSE), |
50 |
HOWTO (R_960_IP24, 0, 2, 24, true, 0, complain_overflow_signed, |
HOWTO (R_960_IP24, 0, 2, 24, TRUE, 0, complain_overflow_signed, |
51 |
elf32_i960_relocate, "R_960_IP24 ", true, |
elf32_i960_relocate, "R_960_IP24 ", TRUE, |
52 |
0x00ffffff, 0x00ffffff, false), |
0x00ffffff, 0x00ffffff, FALSE), |
53 |
EMPTY_HOWTO (4), |
EMPTY_HOWTO (4), |
54 |
EMPTY_HOWTO (5), |
EMPTY_HOWTO (5), |
55 |
EMPTY_HOWTO (6), |
EMPTY_HOWTO (6), |
77 |
elf32_i960_info_to_howto (abfd, cache_ptr, dst) |
elf32_i960_info_to_howto (abfd, cache_ptr, dst) |
78 |
bfd *abfd ATTRIBUTE_UNUSED; |
bfd *abfd ATTRIBUTE_UNUSED; |
79 |
arelent *cache_ptr ATTRIBUTE_UNUSED; |
arelent *cache_ptr ATTRIBUTE_UNUSED; |
80 |
Elf32_Internal_Rela *dst ATTRIBUTE_UNUSED; |
Elf_Internal_Rela *dst ATTRIBUTE_UNUSED; |
81 |
{ |
{ |
82 |
abort (); |
abort (); |
83 |
} |
} |
86 |
elf32_i960_info_to_howto_rel (abfd, cache_ptr, dst) |
elf32_i960_info_to_howto_rel (abfd, cache_ptr, dst) |
87 |
bfd *abfd ATTRIBUTE_UNUSED; |
bfd *abfd ATTRIBUTE_UNUSED; |
88 |
arelent *cache_ptr; |
arelent *cache_ptr; |
89 |
Elf32_Internal_Rel *dst; |
Elf_Internal_Rela *dst; |
90 |
{ |
{ |
91 |
enum elf_i960_reloc_type type; |
enum elf_i960_reloc_type type; |
92 |
|
|
96 |
cache_ptr->howto = &elf_howto_table[(int) type]; |
cache_ptr->howto = &elf_howto_table[(int) type]; |
97 |
} |
} |
98 |
|
|
99 |
/* ELF relocs are against symbols. If we are producing relocateable |
/* ELF relocs are against symbols. If we are producing relocatable |
100 |
output, and the reloc is against an external symbol, and nothing |
output, and the reloc is against an external symbol, and nothing |
101 |
has given us any additional addend, the resulting reloc will also |
has given us any additional addend, the resulting reloc will also |
102 |
be against the same symbol. In such a case, we don't want to |
be against the same symbol. In such a case, we don't want to |
104 |
all be done at final link time. Rather than put special case code |
all be done at final link time. Rather than put special case code |
105 |
into bfd_perform_relocation, all the reloc types use this howto |
into bfd_perform_relocation, all the reloc types use this howto |
106 |
function. It just short circuits the reloc if producing |
function. It just short circuits the reloc if producing |
107 |
relocateable output against an external symbol. */ |
relocatable output against an external symbol. */ |
108 |
|
|
109 |
bfd_reloc_status_type |
bfd_reloc_status_type |
110 |
elf32_i960_relocate (abfd, |
elf32_i960_relocate (abfd, reloc_entry, symbol, data, input_section, |
111 |
reloc_entry, |
output_bfd, error_message) |
|
symbol, |
|
|
data, |
|
|
input_section, |
|
|
output_bfd, |
|
|
error_message) |
|
112 |
bfd *abfd ATTRIBUTE_UNUSED; |
bfd *abfd ATTRIBUTE_UNUSED; |
113 |
arelent *reloc_entry; |
arelent *reloc_entry; |
114 |
asymbol *symbol; |
asymbol *symbol; |