Changeset 609 for branches/GNU/src/binutils/bfd/elf32-i860.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-i860.c
-
Property cvs2svn:cvs-rev
changed from
1.1
to1.1.1.2
r608 r609 1 1 /* Intel i860 specific support for 32-bit ELF. 2 Copyright 1993, 1995, 1999, 2000, 2001 Free Software Foundation, Inc. 2 Copyright 1993, 1995, 1999, 2000, 2001, 2002 3 Free Software Foundation, Inc. 3 4 4 5 Full i860 support contributed by Jason Eckhardt <jle@cygnus.com>. … … 34 35 35 36 static void elf32_i860_info_to_howto_rela 36 PARAMS ((bfd *, arelent *, Elf 32_Internal_Rela *));37 PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); 37 38 38 39 static bfd_reloc_status_type elf32_i860_relocate_splitn … … 48 49 PARAMS ((bfd *, Elf_Internal_Rela *, bfd_byte *, bfd_vma)); 49 50 50 static b oolean elf32_i860_relocate_section51 static bfd_boolean elf32_i860_relocate_section 51 52 PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, 52 53 Elf_Internal_Rela *, Elf_Internal_Sym *, asection **)); … … 56 57 Elf_Internal_Rela *, bfd_vma)); 57 58 58 static b oolean elf32_i860_is_local_label_name59 static bfd_boolean elf32_i860_is_local_label_name 59 60 PARAMS ((bfd *, const char *)); 60 61 … … 67 68 2, /* size (0 = byte, 1 = short, 2 = long) */ 68 69 32, /* bitsize */ 69 false, /* pc_relative */70 FALSE, /* pc_relative */ 70 71 0, /* bitpos */ 71 72 complain_overflow_bitfield, /* complain_on_overflow */ 72 73 bfd_elf_generic_reloc, /* special_function */ 73 74 "R_860_NONE", /* name */ 74 false, /* partial_inplace */75 FALSE, /* partial_inplace */ 75 76 0, /* src_mask */ 76 77 0, /* dst_mask */ 77 false), /* pcrel_offset */78 FALSE), /* pcrel_offset */ 78 79 79 80 /* A 32-bit absolute relocation. */ … … 82 83 2, /* size (0 = byte, 1 = short, 2 = long) */ 83 84 32, /* bitsize */ 84 false, /* pc_relative */85 FALSE, /* pc_relative */ 85 86 0, /* bitpos */ 86 87 complain_overflow_bitfield, /* complain_on_overflow */ 87 88 bfd_elf_generic_reloc, /* special_function */ 88 89 "R_860_32", /* name */ 89 false, /* partial_inplace */90 0xffffffff, /* src_mask */ 91 0xffffffff, /* dst_mask */ 92 false), /* pcrel_offset */90 FALSE, /* partial_inplace */ 91 0xffffffff, /* src_mask */ 92 0xffffffff, /* dst_mask */ 93 FALSE), /* pcrel_offset */ 93 94 94 95 HOWTO (R_860_COPY, /* type */ … … 96 97 2, /* size (0 = byte, 1 = short, 2 = long) */ 97 98 32, /* bitsize */ 98 false, /* pc_relative */99 FALSE, /* pc_relative */ 99 100 0, /* bitpos */ 100 101 complain_overflow_bitfield, /* complain_on_overflow */ 101 102 bfd_elf_generic_reloc, /* special_function */ 102 103 "R_860_COPY", /* name */ 103 true, /* partial_inplace */104 0xffffffff, /* src_mask */ 105 0xffffffff, /* dst_mask */ 106 false), /* pcrel_offset */104 TRUE, /* partial_inplace */ 105 0xffffffff, /* src_mask */ 106 0xffffffff, /* dst_mask */ 107 FALSE), /* pcrel_offset */ 107 108 108 109 HOWTO (R_860_GLOB_DAT, /* type */ … … 110 111 2, /* size (0 = byte, 1 = short, 2 = long) */ 111 112 32, /* bitsize */ 112 false, /* pc_relative */113 FALSE, /* pc_relative */ 113 114 0, /* bitpos */ 114 115 complain_overflow_bitfield, /* complain_on_overflow */ 115 116 bfd_elf_generic_reloc, /* special_function */ 116 117 "R_860_GLOB_DAT", /* name */ 117 true, /* partial_inplace */118 0xffffffff, /* src_mask */ 119 0xffffffff, /* dst_mask */ 120 false), /* pcrel_offset */118 TRUE, /* partial_inplace */ 119 0xffffffff, /* src_mask */ 120 0xffffffff, /* dst_mask */ 121 FALSE), /* pcrel_offset */ 121 122 122 123 HOWTO (R_860_JUMP_SLOT, /* type */ … … 124 125 2, /* size (0 = byte, 1 = short, 2 = long) */ 125 126 32, /* bitsize */ 126 false, /* pc_relative */127 FALSE, /* pc_relative */ 127 128 0, /* bitpos */ 128 129 complain_overflow_bitfield, /* complain_on_overflow */ 129 130 bfd_elf_generic_reloc, /* special_function */ 130 131 "R_860_JUMP_SLOT", /* name */ 131 true, /* partial_inplace */132 0xffffffff, /* src_mask */ 133 0xffffffff, /* dst_mask */ 134 false), /* pcrel_offset */132 TRUE, /* partial_inplace */ 133 0xffffffff, /* src_mask */ 134 0xffffffff, /* dst_mask */ 135 FALSE), /* pcrel_offset */ 135 136 136 137 HOWTO (R_860_RELATIVE, /* type */ … … 138 139 2, /* size (0 = byte, 1 = short, 2 = long) */ 139 140 32, /* bitsize */ 140 false, /* pc_relative */141 FALSE, /* pc_relative */ 141 142 0, /* bitpos */ 142 143 complain_overflow_bitfield, /* complain_on_overflow */ 143 144 bfd_elf_generic_reloc, /* special_function */ 144 145 "R_860_RELATIVE", /* name */ 145 true, /* partial_inplace */146 0xffffffff, /* src_mask */ 147 0xffffffff, /* dst_mask */ 148 false), /* pcrel_offset */146 TRUE, /* partial_inplace */ 147 0xffffffff, /* src_mask */ 148 0xffffffff, /* dst_mask */ 149 FALSE), /* pcrel_offset */ 149 150 150 151 /* A 26-bit PC-relative relocation. */ … … 153 154 2, /* size (0 = byte, 1 = short, 2 = long) */ 154 155 26, /* bitsize */ 155 true, /* pc_relative */156 TRUE, /* pc_relative */ 156 157 0, /* bitpos */ 157 158 complain_overflow_bitfield, /* complain_on_overflow */ 158 159 bfd_elf_generic_reloc, /* special_function */ 159 160 "R_860_PC26", /* name */ 160 false, /* partial_inplace */161 FALSE, /* partial_inplace */ 161 162 0x3ffffff, /* src_mask */ 162 163 0x3ffffff, /* dst_mask */ 163 true), /* pcrel_offset */164 TRUE), /* pcrel_offset */ 164 165 165 166 HOWTO (R_860_PLT26, /* type */ … … 167 168 2, /* size (0 = byte, 1 = short, 2 = long) */ 168 169 26, /* bitsize */ 169 true, /* pc_relative */170 TRUE, /* pc_relative */ 170 171 0, /* bitpos */ 171 172 complain_overflow_bitfield, /* complain_on_overflow */ 172 173 bfd_elf_generic_reloc, /* special_function */ 173 174 "R_860_PLT26", /* name */ 174 true, /* partial_inplace */175 0xffffffff, /* src_mask */ 176 0xffffffff, /* dst_mask */ 177 true), /* pcrel_offset */175 TRUE, /* partial_inplace */ 176 0xffffffff, /* src_mask */ 177 0xffffffff, /* dst_mask */ 178 TRUE), /* pcrel_offset */ 178 179 179 180 /* A 16-bit PC-relative relocation. */ … … 182 183 2, /* size (0 = byte, 1 = short, 2 = long) */ 183 184 16, /* bitsize */ 184 true, /* pc_relative */185 TRUE, /* pc_relative */ 185 186 0, /* bitpos */ 186 187 complain_overflow_bitfield, /* complain_on_overflow */ 187 188 bfd_elf_generic_reloc, /* special_function */ 188 189 "R_860_PC16", /* name */ 189 false, /* partial_inplace */190 FALSE, /* partial_inplace */ 190 191 0x1f07ff, /* src_mask */ 191 192 0x1f07ff, /* dst_mask */ 192 true), /* pcrel_offset */193 TRUE), /* pcrel_offset */ 193 194 194 195 HOWTO (R_860_LOW0, /* type */ … … 196 197 2, /* size (0 = byte, 1 = short, 2 = long) */ 197 198 16, /* bitsize */ 198 false, /* pc_relative */199 FALSE, /* pc_relative */ 199 200 0, /* bitpos */ 200 201 complain_overflow_dont, /* complain_on_overflow */ 201 202 bfd_elf_generic_reloc, /* special_function */ 202 203 "R_860_LOW0", /* name */ 203 false, /* partial_inplace */204 FALSE, /* partial_inplace */ 204 205 0xffff, /* src_mask */ 205 206 0xffff, /* dst_mask */ 206 false), /* pcrel_offset */207 FALSE), /* pcrel_offset */ 207 208 208 209 HOWTO (R_860_SPLIT0, /* type */ … … 210 211 2, /* size (0 = byte, 1 = short, 2 = long) */ 211 212 16, /* bitsize */ 212 false, /* pc_relative */213 FALSE, /* pc_relative */ 213 214 0, /* bitpos */ 214 215 complain_overflow_dont, /* complain_on_overflow */ 215 216 bfd_elf_generic_reloc, /* special_function */ 216 217 "R_860_SPLIT0", /* name */ 217 false, /* partial_inplace */218 FALSE, /* partial_inplace */ 218 219 0x1f07ff, /* src_mask */ 219 220 0x1f07ff, /* dst_mask */ 220 false), /* pcrel_offset */221 FALSE), /* pcrel_offset */ 221 222 222 223 HOWTO (R_860_LOW1, /* type */ … … 224 225 2, /* size (0 = byte, 1 = short, 2 = long) */ 225 226 16, /* bitsize */ 226 false, /* pc_relative */227 FALSE, /* pc_relative */ 227 228 0, /* bitpos */ 228 229 complain_overflow_dont, /* complain_on_overflow */ 229 230 bfd_elf_generic_reloc, /* special_function */ 230 231 "R_860_LOW1", /* name */ 231 false, /* partial_inplace */232 FALSE, /* partial_inplace */ 232 233 0xfffe, /* src_mask */ 233 234 0xfffe, /* dst_mask */ 234 false), /* pcrel_offset */235 FALSE), /* pcrel_offset */ 235 236 236 237 HOWTO (R_860_SPLIT1, /* type */ … … 238 239 2, /* size (0 = byte, 1 = short, 2 = long) */ 239 240 16, /* bitsize */ 240 false, /* pc_relative */241 FALSE, /* pc_relative */ 241 242 0, /* bitpos */ 242 243 complain_overflow_dont, /* complain_on_overflow */ 243 244 bfd_elf_generic_reloc, /* special_function */ 244 245 "R_860_SPLIT1", /* name */ 245 false, /* partial_inplace */246 FALSE, /* partial_inplace */ 246 247 0x1f07fe, /* src_mask */ 247 248 0x1f07fe, /* dst_mask */ 248 false), /* pcrel_offset */249 FALSE), /* pcrel_offset */ 249 250 250 251 HOWTO (R_860_LOW2, /* type */ … … 252 253 2, /* size (0 = byte, 1 = short, 2 = long) */ 253 254 16, /* bitsize */ 254 false, /* pc_relative */255 FALSE, /* pc_relative */ 255 256 0, /* bitpos */ 256 257 complain_overflow_dont, /* complain_on_overflow */ 257 258 bfd_elf_generic_reloc, /* special_function */ 258 259 "R_860_LOW2", /* name */ 259 false, /* partial_inplace */260 FALSE, /* partial_inplace */ 260 261 0xfffc, /* src_mask */ 261 262 0xfffc, /* dst_mask */ 262 false), /* pcrel_offset */263 FALSE), /* pcrel_offset */ 263 264 264 265 HOWTO (R_860_SPLIT2, /* type */ … … 266 267 2, /* size (0 = byte, 1 = short, 2 = long) */ 267 268 16, /* bitsize */ 268 false, /* pc_relative */269 FALSE, /* pc_relative */ 269 270 0, /* bitpos */ 270 271 complain_overflow_dont, /* complain_on_overflow */ 271 272 bfd_elf_generic_reloc, /* special_function */ 272 273 "R_860_SPLIT2", /* name */ 273 false, /* partial_inplace */274 FALSE, /* partial_inplace */ 274 275 0x1f07fc, /* src_mask */ 275 276 0x1f07fc, /* dst_mask */ 276 false), /* pcrel_offset */277 FALSE), /* pcrel_offset */ 277 278 278 279 HOWTO (R_860_LOW3, /* type */ … … 280 281 2, /* size (0 = byte, 1 = short, 2 = long) */ 281 282 16, /* bitsize */ 282 false, /* pc_relative */283 FALSE, /* pc_relative */ 283 284 0, /* bitpos */ 284 285 complain_overflow_dont, /* complain_on_overflow */ 285 286 bfd_elf_generic_reloc, /* special_function */ 286 287 "R_860_LOW3", /* name */ 287 false, /* partial_inplace */288 FALSE, /* partial_inplace */ 288 289 0xfff8, /* src_mask */ 289 290 0xfff8, /* dst_mask */ 290 false), /* pcrel_offset */291 FALSE), /* pcrel_offset */ 291 292 292 293 HOWTO (R_860_LOGOT0, /* type */ … … 294 295 2, /* size (0 = byte, 1 = short, 2 = long) */ 295 296 16, /* bitsize */ 296 false, /* pc_relative */297 FALSE, /* pc_relative */ 297 298 0, /* bitpos */ 298 299 complain_overflow_dont, /* complain_on_overflow */ 299 300 bfd_elf_generic_reloc, /* special_function */ 300 301 "R_860_LOGOT0", /* name */ 301 false, /* partial_inplace */302 FALSE, /* partial_inplace */ 302 303 0, /* src_mask */ 303 304 0xffff, /* dst_mask */ 304 true), /* pcrel_offset */305 TRUE), /* pcrel_offset */ 305 306 306 307 HOWTO (R_860_SPGOT0, /* type */ … … 308 309 2, /* size (0 = byte, 1 = short, 2 = long) */ 309 310 16, /* bitsize */ 310 false, /* pc_relative */311 FALSE, /* pc_relative */ 311 312 0, /* bitpos */ 312 313 complain_overflow_dont, /* complain_on_overflow */ 313 314 bfd_elf_generic_reloc, /* special_function */ 314 315 "R_860_SPGOT0", /* name */ 315 false, /* partial_inplace */316 FALSE, /* partial_inplace */ 316 317 0, /* src_mask */ 317 318 0xffff, /* dst_mask */ 318 true), /* pcrel_offset */319 TRUE), /* pcrel_offset */ 319 320 320 321 HOWTO (R_860_LOGOT1, /* type */ … … 322 323 2, /* size (0 = byte, 1 = short, 2 = long) */ 323 324 16, /* bitsize */ 324 false, /* pc_relative */325 FALSE, /* pc_relative */ 325 326 0, /* bitpos */ 326 327 complain_overflow_dont, /* complain_on_overflow */ 327 328 bfd_elf_generic_reloc, /* special_function */ 328 329 "R_860_LOGOT1", /* name */ 329 false, /* partial_inplace */330 FALSE, /* partial_inplace */ 330 331 0, /* src_mask */ 331 332 0xffff, /* dst_mask */ 332 true), /* pcrel_offset */333 TRUE), /* pcrel_offset */ 333 334 334 335 HOWTO (R_860_SPGOT1, /* type */ … … 336 337 2, /* size (0 = byte, 1 = short, 2 = long) */ 337 338 16, /* bitsize */ 338 false, /* pc_relative */339 FALSE, /* pc_relative */ 339 340 0, /* bitpos */ 340 341 complain_overflow_dont, /* complain_on_overflow */ 341 342 bfd_elf_generic_reloc, /* special_function */ 342 343 "R_860_SPGOT1", /* name */ 343 false, /* partial_inplace */344 FALSE, /* partial_inplace */ 344 345 0, /* src_mask */ 345 346 0xffff, /* dst_mask */ 346 true), /* pcrel_offset */347 TRUE), /* pcrel_offset */ 347 348 348 349 HOWTO (R_860_LOGOTOFF0, /* type */ … … 350 351 2, /* size (0 = byte, 1 = short, 2 = long) */ 351 352 32, /* bitsize */ 352 false, /* pc_relative */353 FALSE, /* pc_relative */ 353 354 0, /* bitpos */ 354 355 complain_overflow_dont, /* complain_on_overflow */ 355 356 bfd_elf_generic_reloc, /* special_function */ 356 357 "R_860_LOGOTOFF0", /* name */ 357 true, /* partial_inplace */358 0xffffffff, /* src_mask */ 359 0xffffffff, /* dst_mask */ 360 false), /* pcrel_offset */358 TRUE, /* partial_inplace */ 359 0xffffffff, /* src_mask */ 360 0xffffffff, /* dst_mask */ 361 FALSE), /* pcrel_offset */ 361 362 362 363 HOWTO (R_860_SPGOTOFF0, /* type */ … … 364 365 2, /* size (0 = byte, 1 = short, 2 = long) */ 365 366 32, /* bitsize */ 366 false, /* pc_relative */367 FALSE, /* pc_relative */ 367 368 0, /* bitpos */ 368 369 complain_overflow_dont, /* complain_on_overflow */ 369 370 bfd_elf_generic_reloc, /* special_function */ 370 371 "R_860_SPGOTOFF0", /* name */ 371 true, /* partial_inplace */372 0xffffffff, /* src_mask */ 373 0xffffffff, /* dst_mask */ 374 false), /* pcrel_offset */372 TRUE, /* partial_inplace */ 373 0xffffffff, /* src_mask */ 374 0xffffffff, /* dst_mask */ 375 FALSE), /* pcrel_offset */ 375 376 376 377 HOWTO (R_860_LOGOTOFF1, /* type */ … … 378 379 2, /* size (0 = byte, 1 = short, 2 = long) */ 379 380 32, /* bitsize */ 380 false, /* pc_relative */381 FALSE, /* pc_relative */ 381 382 0, /* bitpos */ 382 383 complain_overflow_dont, /* complain_on_overflow */ 383 384 bfd_elf_generic_reloc, /* special_function */ 384 385 "R_860_LOGOTOFF1", /* name */ 385 true, /* partial_inplace */386 0xffffffff, /* src_mask */ 387 0xffffffff, /* dst_mask */ 388 false), /* pcrel_offset */386 TRUE, /* partial_inplace */ 387 0xffffffff, /* src_mask */ 388 0xffffffff, /* dst_mask */ 389 FALSE), /* pcrel_offset */ 389 390 390 391 HOWTO (R_860_SPGOTOFF1, /* type */ … … 392 393 2, /* size (0 = byte, 1 = short, 2 = long) */ 393 394 32, /* bitsize */ 394 false, /* pc_relative */395 FALSE, /* pc_relative */ 395 396 0, /* bitpos */ 396 397 complain_overflow_dont, /* complain_on_overflow */ 397 398 bfd_elf_generic_reloc, /* special_function */ 398 399 "R_860_SPGOTOFF1", /* name */ 399 true, /* partial_inplace */400 0xffffffff, /* src_mask */ 401 0xffffffff, /* dst_mask */ 402 false), /* pcrel_offset */400 TRUE, /* partial_inplace */ 401 0xffffffff, /* src_mask */ 402 0xffffffff, /* dst_mask */ 403 FALSE), /* pcrel_offset */ 403 404 404 405 HOWTO (R_860_LOGOTOFF2, /* type */ … … 406 407 2, /* size (0 = byte, 1 = short, 2 = long) */ 407 408 32, /* bitsize */ 408 false, /* pc_relative */409 FALSE, /* pc_relative */ 409 410 0, /* bitpos */ 410 411 complain_overflow_dont, /* complain_on_overflow */ 411 412 bfd_elf_generic_reloc, /* special_function */ 412 413 "R_860_LOGOTOFF2", /* name */ 413 true, /* partial_inplace */414 0xffffffff, /* src_mask */ 415 0xffffffff, /* dst_mask */ 416 false), /* pcrel_offset */414 TRUE, /* partial_inplace */ 415 0xffffffff, /* src_mask */ 416 0xffffffff, /* dst_mask */ 417 FALSE), /* pcrel_offset */ 417 418 418 419 HOWTO (R_860_LOGOTOFF3, /* type */ … … 420 421 2, /* size (0 = byte, 1 = short, 2 = long) */ 421 422 32, /* bitsize */ 422 false, /* pc_relative */423 FALSE, /* pc_relative */ 423 424 0, /* bitpos */ 424 425 complain_overflow_dont, /* complain_on_overflow */ 425 426 bfd_elf_generic_reloc, /* special_function */ 426 427 "R_860_LOGOTOFF3", /* name */ 427 true, /* partial_inplace */428 0xffffffff, /* src_mask */ 429 0xffffffff, /* dst_mask */ 430 false), /* pcrel_offset */428 TRUE, /* partial_inplace */ 429 0xffffffff, /* src_mask */ 430 0xffffffff, /* dst_mask */ 431 FALSE), /* pcrel_offset */ 431 432 432 433 HOWTO (R_860_LOPC, /* type */ … … 434 435 2, /* size (0 = byte, 1 = short, 2 = long) */ 435 436 16, /* bitsize */ 436 true, /* pc_relative */437 TRUE, /* pc_relative */ 437 438 0, /* bitpos */ 438 439 complain_overflow_bitfield, /* complain_on_overflow */ 439 440 bfd_elf_generic_reloc, /* special_function */ 440 441 "R_860_LOPC", /* name */ 441 false, /* partial_inplace */442 FALSE, /* partial_inplace */ 442 443 0xffff, /* src_mask */ 443 444 0xffff, /* dst_mask */ 444 true), /* pcrel_offset */445 TRUE), /* pcrel_offset */ 445 446 446 447 HOWTO (R_860_HIGHADJ, /* type */ … … 448 449 2, /* size (0 = byte, 1 = short, 2 = long) */ 449 450 16, /* bitsize */ 450 false, /* pc_relative */451 FALSE, /* pc_relative */ 451 452 0, /* bitpos */ 452 453 complain_overflow_dont, /* complain_on_overflow */ 453 454 bfd_elf_generic_reloc, /* special_function */ 454 455 "R_860_HIGHADJ", /* name */ 455 false, /* partial_inplace */456 FALSE, /* partial_inplace */ 456 457 0xffff, /* src_mask */ 457 458 0xffff, /* dst_mask */ 458 false), /* pcrel_offset */459 FALSE), /* pcrel_offset */ 459 460 460 461 HOWTO (R_860_HAGOT, /* type */ … … 462 463 2, /* size (0 = byte, 1 = short, 2 = long) */ 463 464 16, /* bitsize */ 464 false, /* pc_relative */465 FALSE, /* pc_relative */ 465 466 0, /* bitpos */ 466 467 complain_overflow_dont, /* complain_on_overflow */ 467 468 bfd_elf_generic_reloc, /* special_function */ 468 469 "R_860_HAGOT", /* name */ 469 false, /* partial_inplace */470 FALSE, /* partial_inplace */ 470 471 0, /* src_mask */ 471 472 0xffff, /* dst_mask */ 472 true), /* pcrel_offset */473 TRUE), /* pcrel_offset */ 473 474 474 475 HOWTO (R_860_HAGOTOFF, /* type */ … … 476 477 2, /* size (0 = byte, 1 = short, 2 = long) */ 477 478 32, /* bitsize */ 478 false, /* pc_relative */479 FALSE, /* pc_relative */ 479 480 0, /* bitpos */ 480 481 complain_overflow_dont, /* complain_on_overflow */ 481 482 bfd_elf_generic_reloc, /* special_function */ 482 483 "R_860_HAGOTOFF", /* name */ 483 true, /* partial_inplace */484 0xffffffff, /* src_mask */ 485 0xffffffff, /* dst_mask */ 486 false), /* pcrel_offset */484 TRUE, /* partial_inplace */ 485 0xffffffff, /* src_mask */ 486 0xffffffff, /* dst_mask */ 487 FALSE), /* pcrel_offset */ 487 488 488 489 HOWTO (R_860_HAPC, /* type */ … … 490 491 2, /* size (0 = byte, 1 = short, 2 = long) */ 491 492 16, /* bitsize */ 492 true, /* pc_relative */493 TRUE, /* pc_relative */ 493 494 0, /* bitpos */ 494 495 complain_overflow_bitfield, /* complain_on_overflow */ 495 496 bfd_elf_generic_reloc, /* special_function */ 496 497 "R_860_HAPC", /* name */ 497 false, /* partial_inplace */498 FALSE, /* partial_inplace */ 498 499 0xffff, /* src_mask */ 499 500 0xffff, /* dst_mask */ 500 true), /* pcrel_offset */501 TRUE), /* pcrel_offset */ 501 502 502 503 HOWTO (R_860_HIGH, /* type */ … … 504 505 2, /* size (0 = byte, 1 = short, 2 = long) */ 505 506 16, /* bitsize */ 506 false, /* pc_relative */507 FALSE, /* pc_relative */ 507 508 0, /* bitpos */ 508 509 complain_overflow_dont, /* complain_on_overflow */ 509 510 bfd_elf_generic_reloc, /* special_function */ 510 511 "R_860_HIGH", /* name */ 511 false, /* partial_inplace */512 FALSE, /* partial_inplace */ 512 513 0xffff, /* src_mask */ 513 514 0xffff, /* dst_mask */ 514 false), /* pcrel_offset */515 FALSE), /* pcrel_offset */ 515 516 516 517 HOWTO (R_860_HIGOT, /* type */ … … 518 519 2, /* size (0 = byte, 1 = short, 2 = long) */ 519 520 16, /* bitsize */ 520 false, /* pc_relative */521 FALSE, /* pc_relative */ 521 522 0, /* bitpos */ 522 523 complain_overflow_dont, /* complain_on_overflow */ 523 524 bfd_elf_generic_reloc, /* special_function */ 524 525 "R_860_HIGOT", /* name */ 525 false, /* partial_inplace */526 FALSE, /* partial_inplace */ 526 527 0, /* src_mask */ 527 528 0xffff, /* dst_mask */ 528 true), /* pcrel_offset */529 TRUE), /* pcrel_offset */ 529 530 530 531 HOWTO (R_860_HIGOTOFF, /* type */ … … 532 533 2, /* size (0 = byte, 1 = short, 2 = long) */ 533 534 32, /* bitsize */ 534 false, /* pc_relative */535 FALSE, /* pc_relative */ 535 536 0, /* bitpos */ 536 537 complain_overflow_dont, /* complain_on_overflow */ 537 538 bfd_elf_generic_reloc, /* special_function */ 538 539 "R_860_HIGOTOFF", /* name */ 539 true, /* partial_inplace */540 0xffffffff, /* src_mask */ 541 0xffffffff, /* dst_mask */ 542 false), /* pcrel_offset */540 TRUE, /* partial_inplace */ 541 0xffffffff, /* src_mask */ 542 0xffffffff, /* dst_mask */ 543 FALSE), /* pcrel_offset */ 543 544 }; 544 545 … … 695 696 bfd *abfd ATTRIBUTE_UNUSED; 696 697 arelent *bfd_reloc; 697 Elf 64_Internal_Rela *elf_reloc;698 Elf_Internal_Rela *elf_reloc; 698 699 { 699 bfd_reloc->howto = lookup_howto (ELF32_R_TYPE (elf_reloc->r_info)); 700 bfd_reloc->howto 701 = lookup_howto ((unsigned) ELF32_R_TYPE (elf_reloc->r_info)); 700 702 } 701 703 … … 712 714 bfd_vma insn; 713 715 reloc_howto_type *howto; 714 howto = lookup_howto (ELF32_R_TYPE (rello->r_info));716 howto = lookup_howto ((unsigned) ELF32_R_TYPE (rello->r_info)); 715 717 insn = bfd_get_32 (input_bfd, contents + rello->r_offset); 716 718 … … 739 741 bfd_vma insn; 740 742 reloc_howto_type *howto; 741 howto = lookup_howto (ELF32_R_TYPE (rello->r_info));743 howto = lookup_howto ((unsigned) ELF32_R_TYPE (rello->r_info)); 742 744 insn = bfd_get_32 (input_bfd, contents + rello->r_offset); 743 745 … … 771 773 bfd_vma insn; 772 774 reloc_howto_type *howto; 773 howto = lookup_howto (ELF32_R_TYPE (rello->r_info));775 howto = lookup_howto ((unsigned) ELF32_R_TYPE (rello->r_info)); 774 776 insn = bfd_get_32 (input_bfd, contents + rello->r_offset); 775 777 … … 832 834 833 835 This is boiler-plate code copied from fr30. 834 There is some attempt to make this function usable for many architectures,835 both USE_REL and USE_RELA ['twould be nice if such a critter existed],836 if only to serve as a learning tool.837 836 838 837 The RELOCATE_SECTION function is called by the new ELF backend linker … … 863 862 section, which means that the addend must be adjusted 864 863 accordingly. */ 865 static b oolean864 static bfd_boolean 866 865 elf32_i860_relocate_section (output_bfd, info, input_bfd, input_section, 867 866 contents, relocs, local_syms, local_sections) 868 bfd * 869 struct bfd_link_info * 870 bfd * 871 asection * 872 bfd_byte * 873 Elf_Internal_Rela * 874 Elf_Internal_Sym * 875 asection ** 867 bfd *output_bfd ATTRIBUTE_UNUSED; 868 struct bfd_link_info *info; 869 bfd *input_bfd; 870 asection *input_section; 871 bfd_byte *contents; 872 Elf_Internal_Rela *relocs; 873 Elf_Internal_Sym *local_syms; 874 asection **local_sections; 876 875 { 877 Elf_Internal_Shdr * symtab_hdr; 878 struct elf_link_hash_entry ** sym_hashes; 879 Elf_Internal_Rela * rel; 880 Elf_Internal_Rela * relend; 876 Elf_Internal_Shdr *symtab_hdr; 877 struct elf_link_hash_entry **sym_hashes; 878 Elf_Internal_Rela *rel; 879 Elf_Internal_Rela *relend; 880 881 if (info->relocateable) 882 return TRUE; 881 883 882 884 symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; … … 906 908 r_symndx = ELF32_R_SYM (rel->r_info); 907 909 908 if (info->relocateable) 909 { 910 /* This is a relocateable link. We don't have to change 911 anything, unless the reloc is against a section symbol, 912 in which case we have to adjust according to where the 913 section symbol winds up in the output section. */ 914 if (r_symndx < symtab_hdr->sh_info) 915 { 916 sym = local_syms + r_symndx; 917 918 if (ELF_ST_TYPE (sym->st_info) == STT_SECTION) 919 { 920 sec = local_sections [r_symndx]; 921 rel->r_addend += sec->output_offset + sym->st_value; 922 } 923 } 924 925 continue; 926 } 927 928 /* This is a final link. */ 929 howto = lookup_howto (ELF32_R_TYPE (rel->r_info)); 930 h = NULL; 931 sym = NULL; 932 sec = NULL; 910 howto = lookup_howto ((unsigned) ELF32_R_TYPE (rel->r_info)); 911 h = NULL; 912 sym = NULL; 913 sec = NULL; 933 914 934 915 if (r_symndx < symtab_hdr->sh_info) … … 936 917 sym = local_syms + r_symndx; 937 918 sec = local_sections [r_symndx]; 938 relocation = (sec->output_section->vma 939 + sec->output_offset 940 + sym->st_value); 919 relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); 941 920 942 921 name = bfd_elf_string_from_elf_section … … 970 949 if (! ((*info->callbacks->undefined_symbol) 971 950 (info, h->root.root.string, input_bfd, 972 input_section, rel->r_offset, true)))973 return false;951 input_section, rel->r_offset, TRUE))) 952 return FALSE; 974 953 relocation = 0; 975 954 } … … 1045 1024 case bfd_reloc_undefined: 1046 1025 r = info->callbacks->undefined_symbol 1047 (info, name, input_bfd, input_section, rel->r_offset, true);1026 (info, name, input_bfd, input_section, rel->r_offset, TRUE); 1048 1027 break; 1049 1028 … … 1070 1049 1071 1050 if (! r) 1072 return false;1051 return FALSE; 1073 1052 } 1074 1053 } 1075 1054 1076 return true;1055 return TRUE; 1077 1056 } 1078 1057 … … 1082 1061 ??? Do any other SVR4 compilers have this convention? If so, this should 1083 1062 be added to the generic routine. */ 1084 static b oolean1063 static bfd_boolean 1085 1064 elf32_i860_is_local_label_name (abfd, name) 1086 1065 bfd *abfd; … … 1088 1067 { 1089 1068 if (name[0] == '.' && name[1] == 'e' && name[2] == 'p' && name[3] == '.') 1090 return true;1069 return TRUE; 1091 1070 1092 1071 return _bfd_elf_is_local_label_name (abfd, name); … … 1102 1081 #define ELF_MAXPAGESIZE 4096 1103 1082 1083 #define elf_backend_rela_normal 1 1104 1084 #define elf_info_to_howto_rel NULL 1105 1085 #define elf_info_to_howto elf32_i860_info_to_howto_rela -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.