Changeset 609 for branches/GNU/src/binutils/bfd/elf32-d30v.c
- Timestamp:
- Aug 16, 2003, 6:59:22 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GNU/src/binutils/bfd/elf32-d30v.c
-
Property cvs2svn:cvs-rev
changed from
1.1
to1.1.1.2
r608 r609 1 1 /* D30V-specific support for 32-bit ELF 2 Copyright 1997, 1998, 1999, 2000 Free Software Foundation, Inc. 2 Copyright 1997, 1998, 1999, 2000, 2001, 2002 3 Free Software Foundation, Inc. 3 4 Contributed by Martin Hunt (hunt@cygnus.com). 4 5 … … 28 29 PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); 29 30 static void d30v_info_to_howto_rel 30 PARAMS ((bfd *, arelent *, Elf 32_Internal_Rel*));31 PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); 31 32 static void d30v_info_to_howto_rela 32 PARAMS ((bfd *, arelent *, Elf 32_Internal_Rela *));33 PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); 33 34 static bfd_reloc_status_type bfd_elf_d30v_reloc PARAMS (( 34 35 bfd *abfd, … … 55 56 2, /* size (0 = byte, 1 = short, 2 = long) */ 56 57 32, /* bitsize */ 57 false, /* pc_relative */58 FALSE, /* pc_relative */ 58 59 0, /* bitpos */ 59 60 complain_overflow_bitfield, /* complain_on_overflow */ 60 61 bfd_elf_generic_reloc, /* special_function */ 61 62 "R_D30V_NONE", /* name */ 62 false, /* partial_inplace */63 FALSE, /* partial_inplace */ 63 64 0, /* src_mask */ 64 65 0, /* dst_mask */ 65 false), /* pcrel_offset */66 FALSE), /* pcrel_offset */ 66 67 67 68 /* A 6 bit absolute relocation */ … … 70 71 2, /* size (0 = byte, 1 = short, 2 = long) */ 71 72 6, /* bitsize */ 72 false, /* pc_relative */73 FALSE, /* pc_relative */ 73 74 0, /* bitpos */ 74 75 complain_overflow_bitfield, /* complain_on_overflow */ 75 76 bfd_elf_generic_reloc, /* special_function */ 76 77 "R_D30V_6", /* name */ 77 false, /* partial_inplace */78 FALSE, /* partial_inplace */ 78 79 0x3f, /* src_mask */ 79 80 0x3f, /* dst_mask */ 80 false), /* pcrel_offset */81 FALSE), /* pcrel_offset */ 81 82 82 83 /* A relative 9 bit relocation, right shifted by 3 */ … … 85 86 2, /* size (0 = byte, 1 = short, 2 = long) */ 86 87 6, /* bitsize */ 87 true, /* pc_relative */88 TRUE, /* pc_relative */ 88 89 0, /* bitpos */ 89 90 complain_overflow_signed, /* complain_on_overflow */ 90 91 bfd_elf_d30v_reloc_21, /* special_function */ 91 92 "R_D30V_9_PCREL", /* name */ 92 false, /* partial_inplace */93 FALSE, /* partial_inplace */ 93 94 0x3f, /* src_mask */ 94 95 0x3f, /* dst_mask */ 95 true), /* pcrel_offset */96 TRUE), /* pcrel_offset */ 96 97 97 98 /* A relative 9 bit relocation, right shifted by 3 */ … … 100 101 2, /* size (0 = byte, 1 = short, 2 = long) */ 101 102 6, /* bitsize */ 102 true, /* pc_relative */103 TRUE, /* pc_relative */ 103 104 0, /* bitpos */ 104 105 complain_overflow_signed, /* complain_on_overflow */ 105 106 bfd_elf_d30v_reloc_21, /* special_function */ 106 107 "R_D30V_9_PCREL_R", /* name */ 107 false, /* partial_inplace */108 FALSE, /* partial_inplace */ 108 109 0x3f, /* src_mask */ 109 110 0x3f, /* dst_mask */ 110 true), /* pcrel_offset */111 TRUE), /* pcrel_offset */ 111 112 112 113 /* An absolute 15 bit relocation, right shifted by 3 */ … … 115 116 2, /* size (0 = byte, 1 = short, 2 = long) */ 116 117 12, /* bitsize */ 117 false, /* pc_relative */118 FALSE, /* pc_relative */ 118 119 0, /* bitpos */ 119 120 complain_overflow_signed, /* complain_on_overflow */ 120 121 bfd_elf_generic_reloc, /* special_function */ 121 122 "R_D30V_15", /* name */ 122 false, /* partial_inplace */123 FALSE, /* partial_inplace */ 123 124 0xfff, /* src_mask */ 124 125 0xfff, /* dst_mask */ 125 false), /* pcrel_offset */126 FALSE), /* pcrel_offset */ 126 127 127 128 /* A relative 15 bit relocation, right shifted by 3 */ … … 130 131 2, /* size (0 = byte, 1 = short, 2 = long) */ 131 132 12, /* bitsize */ 132 true, /* pc_relative */133 TRUE, /* pc_relative */ 133 134 0, /* bitpos */ 134 135 complain_overflow_signed, /* complain_on_overflow */ 135 136 bfd_elf_d30v_reloc_21, /* special_function */ 136 137 "R_D30V_15_PCREL", /* name */ 137 false, /* partial_inplace */138 FALSE, /* partial_inplace */ 138 139 0xfff, /* src_mask */ 139 140 0xfff, /* dst_mask */ 140 true), /* pcrel_offset */141 TRUE), /* pcrel_offset */ 141 142 142 143 /* A relative 15 bit relocation, right shifted by 3 */ … … 145 146 2, /* size (0 = byte, 1 = short, 2 = long) */ 146 147 12, /* bitsize */ 147 true, /* pc_relative */148 TRUE, /* pc_relative */ 148 149 0, /* bitpos */ 149 150 complain_overflow_signed, /* complain_on_overflow */ 150 151 bfd_elf_d30v_reloc_21, /* special_function */ 151 152 "R_D30V_15_PCREL_R", /* name */ 152 false, /* partial_inplace */153 FALSE, /* partial_inplace */ 153 154 0xfff, /* src_mask */ 154 155 0xfff, /* dst_mask */ 155 true), /* pcrel_offset */156 TRUE), /* pcrel_offset */ 156 157 157 158 /* An absolute 21 bit relocation, right shifted by 3 */ … … 160 161 2, /* size (0 = byte, 1 = short, 2 = long) */ 161 162 18, /* bitsize */ 162 false, /* pc_relative */163 FALSE, /* pc_relative */ 163 164 0, /* bitpos */ 164 165 complain_overflow_signed, /* complain_on_overflow */ 165 166 bfd_elf_generic_reloc, /* special_function */ 166 167 "R_D30V_21", /* name */ 167 false, /* partial_inplace */168 FALSE, /* partial_inplace */ 168 169 0x3ffff, /* src_mask */ 169 170 0x3ffff, /* dst_mask */ 170 false), /* pcrel_offset */171 FALSE), /* pcrel_offset */ 171 172 172 173 /* A relative 21 bit relocation, right shifted by 3 */ … … 175 176 2, /* size (0 = byte, 1 = short, 2 = long) */ 176 177 18, /* bitsize */ 177 true, /* pc_relative */178 TRUE, /* pc_relative */ 178 179 0, /* bitpos */ 179 180 complain_overflow_signed, /* complain_on_overflow */ 180 181 bfd_elf_d30v_reloc_21, /* special_function */ 181 182 "R_D30V_21_PCREL", /* name */ 182 false, /* partial_inplace */183 FALSE, /* partial_inplace */ 183 184 0x3ffff, /* src_mask */ 184 185 0x3ffff, /* dst_mask */ 185 true), /* pcrel_offset */186 TRUE), /* pcrel_offset */ 186 187 187 188 /* A relative 21 bit relocation, right shifted by 3, in the Right container */ … … 190 191 2, /* size (0 = byte, 1 = short, 2 = long) */ 191 192 18, /* bitsize */ 192 true, /* pc_relative */193 TRUE, /* pc_relative */ 193 194 0, /* bitpos */ 194 195 complain_overflow_signed, /* complain_on_overflow */ 195 196 bfd_elf_d30v_reloc_21, /* special_function */ 196 197 "R_D30V_21_PCREL_R", /* name */ 197 false, /* partial_inplace */198 FALSE, /* partial_inplace */ 198 199 0x3ffff, /* src_mask */ 199 200 0x3ffff, /* dst_mask */ 200 true), /* pcrel_offset */201 TRUE), /* pcrel_offset */ 201 202 202 203 /* A D30V 32 bit absolute relocation */ … … 205 206 4, /* size (0 = byte, 1 = short, 2 = long) */ 206 207 32, /* bitsize */ 207 false, /* pc_relative */208 FALSE, /* pc_relative */ 208 209 0, /* bitpos */ 209 210 complain_overflow_bitfield, /* complain_on_overflow */ 210 211 bfd_elf_d30v_reloc, /* special_function */ 211 212 "R_D30V_32", /* name */ 212 false, /* partial_inplace */213 FALSE, /* partial_inplace */ 213 214 0xffffffff, /* src_mask */ 214 215 0xffffffff, /* dst_mask */ 215 false), /* pcrel_offset */216 FALSE), /* pcrel_offset */ 216 217 217 218 /* A relative 32 bit relocation */ … … 220 221 4, /* size (0 = byte, 1 = short, 2 = long) */ 221 222 32, /* bitsize */ 222 true, /* pc_relative */223 TRUE, /* pc_relative */ 223 224 0, /* bitpos */ 224 225 complain_overflow_signed, /* complain_on_overflow */ 225 226 bfd_elf_d30v_reloc, /* special_function */ 226 227 "R_D30V_32_PCREL", /* name */ 227 false, /* partial_inplace */228 FALSE, /* partial_inplace */ 228 229 0xffffffff, /* src_mask */ 229 230 0xffffffff, /* dst_mask */ 230 true), /* pcrel_offset */231 TRUE), /* pcrel_offset */ 231 232 232 233 /* A regular 32 bit absolute relocation */ … … 235 236 2, /* size (0 = byte, 1 = short, 2 = long) */ 236 237 32, /* bitsize */ 237 false, /* pc_relative */238 FALSE, /* pc_relative */ 238 239 0, /* bitpos */ 239 240 complain_overflow_bitfield, /* complain_on_overflow */ 240 241 bfd_elf_generic_reloc, /* special_function */ 241 "R_D30V_32_NORMAL", 242 false, /* partial_inplace */242 "R_D30V_32_NORMAL", /* name */ 243 FALSE, /* partial_inplace */ 243 244 0xffffffff, /* src_mask */ 244 245 0xffffffff, /* dst_mask */ 245 false), /* pcrel_offset */246 FALSE), /* pcrel_offset */ 246 247 247 248 }; … … 314 315 symbol we are relocating against, plus any addend. */ 315 316 316 if (howto->pc_relative == true)317 if (howto->pc_relative) 317 318 { 318 319 tmp_addr = input_section->output_section->vma + input_section->output_offset … … 333 334 relocation += num; 334 335 335 if (howto->pc_relative == true&& howto->bitsize == 32)336 if (howto->pc_relative && howto->bitsize == 32) 336 337 { 337 338 /* The D30V has a PC that doesn't wrap and PC-relative jumps are … … 423 424 symbol we are relocating against, plus any addend. */ 424 425 425 if (howto->pc_relative == true)426 if (howto->pc_relative) 426 427 { 427 428 relocation -= (input_section->output_section->vma 428 429 + input_section->output_offset); 429 if (howto->pcrel_offset == true)430 if (howto->pcrel_offset) 430 431 relocation -= reloc_entry->address; 431 432 } … … 522 523 bfd *abfd ATTRIBUTE_UNUSED; 523 524 arelent *cache_ptr; 524 Elf 32_Internal_Rel*dst;525 Elf_Internal_Rela *dst; 525 526 { 526 527 unsigned int r_type; … … 537 538 bfd *abfd ATTRIBUTE_UNUSED; 538 539 arelent *cache_ptr; 539 Elf 32_Internal_Rela *dst;540 Elf_Internal_Rela *dst; 540 541 { 541 542 unsigned int r_type; … … 547 548 548 549 #define ELF_ARCH bfd_arch_d30v 549 #define ELF_MACHINE_CODE EM_CYGNUS_D30V 550 #define ELF_MACHINE_CODE EM_D30V 551 #define ELF_MACHINE_ALT1 EM_CYGNUS_D30V 550 552 #define ELF_MAXPAGESIZE 0x1000 551 553 -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.