Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: bfd/elfxx-tilegx.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « bfd/elfxx-target.h ('k') | bfd/hash.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
None
OLDNEW
1 /* TILE-Gx-specific support for ELF. 1 /* TILE-Gx-specific support for ELF.
2 Copyright 2011 Free Software Foundation, Inc. 2 Copyright 2011, 2012 Free Software Foundation, Inc.
3 3
4 This file is part of BFD, the Binary File Descriptor library. 4 This file is part of BFD, the Binary File Descriptor library.
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or 8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 18 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19 MA 02110-1301, USA. */ 19 MA 02110-1301, USA. */
20 20
21 #include "sysdep.h"
21 #include "bfd.h" 22 #include "bfd.h"
22 #include "sysdep.h"
23 #include "libbfd.h" 23 #include "libbfd.h"
24 #include "elf-bfd.h" 24 #include "elf-bfd.h"
25 #include "elf/tilegx.h" 25 #include "elf/tilegx.h"
26 #include "opcode/tilegx.h" 26 #include "opcode/tilegx.h"
27 #include "libiberty.h" 27 #include "libiberty.h"
28 #include "elfxx-tilegx.h" 28 #include "elfxx-tilegx.h"
29 29
30 #define ABI_64_P(abfd) \ 30 #define ABI_64_P(abfd) \
31 (get_elf_backend_data (abfd)->s->elfclass == ELFCLASS64) 31 (get_elf_backend_data (abfd)->s->elfclass == ELFCLASS64)
32 32
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 483
484 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X0_HW0_LAST_PCREL, 0), 484 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X0_HW0_LAST_PCREL, 0),
485 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X1_HW0_LAST_PCREL, 0), 485 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X1_HW0_LAST_PCREL, 0),
486 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X0_HW1_LAST_PCREL, 16), 486 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X0_HW1_LAST_PCREL, 16),
487 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X1_HW1_LAST_PCREL, 16), 487 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X1_HW1_LAST_PCREL, 16),
488 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X0_HW2_LAST_PCREL, 32), 488 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X0_HW2_LAST_PCREL, 32),
489 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X1_HW2_LAST_PCREL, 32), 489 TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X1_HW2_LAST_PCREL, 32),
490 490
491 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW0_GOT, 0), 491 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW0_GOT, 0),
492 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW0_GOT, 0), 492 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW0_GOT, 0),
493 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW1_GOT, 16), 493 /* These relocs are currently not defined. */
494 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW1_GOT, 16), 494 EMPTY_HOWTO (66),
495 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW2_GOT, 32), 495 EMPTY_HOWTO (67),
496 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW2_GOT, 32), 496 EMPTY_HOWTO (68),
497 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW3_GOT, 48), 497 EMPTY_HOWTO (69),
498 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW3_GOT, 48), 498 EMPTY_HOWTO (70),
499 EMPTY_HOWTO (71),
499 500
500 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW0_LAST_GOT, 0), 501 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW0_LAST_GOT, 0),
501 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW0_LAST_GOT, 0), 502 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW0_LAST_GOT, 0),
502 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW1_LAST_GOT, 16), 503 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW1_LAST_GOT, 16),
503 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW1_LAST_GOT, 16), 504 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW1_LAST_GOT, 16),
504 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW2_LAST_GOT, 32), 505 /* These relocs are currently not defined. */
505 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW2_LAST_GOT, 32), 506 EMPTY_HOWTO (76),
507 EMPTY_HOWTO (77),
506 508
507 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW0_TLS_GD, 0), 509 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW0_TLS_GD, 0),
508 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW0_TLS_GD, 0), 510 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW0_TLS_GD, 0),
509 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW1_TLS_GD, 16), 511
510 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW1_TLS_GD, 16), 512 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW0_TLS_LE, 0),
511 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW2_TLS_GD, 32), 513 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW0_TLS_LE, 0),
512 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW2_TLS_GD, 32), 514 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE, 0),
513 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW3_TLS_GD, 48), 515 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE, 0),
514 TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW3_TLS_GD, 48), 516 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE, 16),
517 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE, 16),
515 518
516 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD, 0), 519 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD, 0),
517 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD, 0), 520 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD, 0),
518 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD, 16), 521 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD, 16),
519 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD, 16), 522 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD, 16),
520 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD, 32), 523 EMPTY_HOWTO (90),
521 TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD, 32), 524 EMPTY_HOWTO (91),
522 525
523 #define TILEGX_IMM16_HOWTO_TLS_IE(name, rshift) \ 526 #define TILEGX_IMM16_HOWTO_TLS_IE(name, rshift) \
524 HOWTO (name, rshift, 1, 16, FALSE, 0, \ 527 HOWTO (name, rshift, 1, 16, FALSE, 0, \
525 complain_overflow_dont, bfd_elf_generic_reloc, \ 528 complain_overflow_dont, bfd_elf_generic_reloc, \
526 #name, FALSE, 0, 0xffff, TRUE) 529 #name, FALSE, 0, 0xffff, TRUE)
527 530
528 TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X0_HW0_TLS_IE, 0), 531 TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X0_HW0_TLS_IE, 0),
529 TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X1_HW0_TLS_IE, 0), 532 TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X1_HW0_TLS_IE, 0),
530 TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X0_HW1_TLS_IE, 16), 533 EMPTY_HOWTO (94),
531 TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X1_HW1_TLS_IE, 16), 534 EMPTY_HOWTO (95),
532 TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X0_HW2_TLS_IE, 32), 535 EMPTY_HOWTO (96),
533 TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X1_HW2_TLS_IE, 32), 536 EMPTY_HOWTO (97),
534 TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X0_HW3_TLS_IE, 48), 537 EMPTY_HOWTO (98),
535 TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X1_HW3_TLS_IE, 48), 538 EMPTY_HOWTO (99),
536 539
537 #define TILEGX_IMM16_HOWTO_LAST_TLS_IE(name, rshift) \ 540 #define TILEGX_IMM16_HOWTO_LAST_TLS_IE(name, rshift) \
538 HOWTO (name, rshift, 1, 16, FALSE, 0, \ 541 HOWTO (name, rshift, 1, 16, FALSE, 0, \
539 complain_overflow_signed, bfd_elf_generic_reloc, \ 542 complain_overflow_signed, bfd_elf_generic_reloc, \
540 #name, FALSE, 0, 0xffff, TRUE) 543 #name, FALSE, 0, 0xffff, TRUE)
541 544
542 TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE, 0), 545 TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE, 0),
543 TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE, 0), 546 TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE, 0),
544 TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE, 16), 547 TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE, 16),
545 TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE, 16), 548 TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE, 16),
546 TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE, 32), 549 EMPTY_HOWTO (104),
547 TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE, 32), 550 EMPTY_HOWTO (105),
548 551
549 HOWTO(R_TILEGX_TLS_DTPMOD64, 0, 0, 0, FALSE, 0, complain_overflow_dont, 552 HOWTO(R_TILEGX_TLS_DTPMOD64, 0, 0, 0, FALSE, 0, complain_overflow_dont,
550 bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPMOD64", 553 bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPMOD64",
551 FALSE, 0, 0, TRUE), 554 FALSE, 0, 0, TRUE),
552 HOWTO(R_TILEGX_TLS_DTPOFF64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield, 555 HOWTO(R_TILEGX_TLS_DTPOFF64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
553 bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPOFF64", 556 bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPOFF64",
554 FALSE, 0, -1, TRUE), 557 FALSE, 0, -1, TRUE),
555 HOWTO(R_TILEGX_TLS_TPOFF64, 0, 0, 0, FALSE, 0, complain_overflow_dont, 558 HOWTO(R_TILEGX_TLS_TPOFF64, 0, 0, 0, FALSE, 0, complain_overflow_dont,
556 bfd_elf_generic_reloc, "R_TILEGX_TLS_TPOFF64", 559 bfd_elf_generic_reloc, "R_TILEGX_TLS_TPOFF64",
557 FALSE, 0, 0, TRUE), 560 FALSE, 0, 0, TRUE),
558 561
559 HOWTO(R_TILEGX_TLS_DTPMOD32, 0, 0, 0, FALSE, 0, complain_overflow_dont, 562 HOWTO(R_TILEGX_TLS_DTPMOD32, 0, 0, 0, FALSE, 0, complain_overflow_dont,
560 bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPMOD32", 563 bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPMOD32",
561 FALSE, 0, 0, TRUE), 564 FALSE, 0, 0, TRUE),
562 HOWTO(R_TILEGX_TLS_DTPOFF32, 0, 4, 32, FALSE, 0, complain_overflow_bitfield, 565 HOWTO(R_TILEGX_TLS_DTPOFF32, 0, 4, 32, FALSE, 0, complain_overflow_bitfield,
563 bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPOFF32", 566 bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPOFF32",
564 FALSE, 0, -1, TRUE), 567 FALSE, 0, -1, TRUE),
565 HOWTO(R_TILEGX_TLS_TPOFF32, 0, 0, 0, FALSE, 0, complain_overflow_dont, 568 HOWTO(R_TILEGX_TLS_TPOFF32, 0, 0, 0, FALSE, 0, complain_overflow_dont,
566 bfd_elf_generic_reloc, "R_TILEGX_TLS_TPOFF32", 569 bfd_elf_generic_reloc, "R_TILEGX_TLS_TPOFF32",
567 FALSE, 0, 0, TRUE) 570 FALSE, 0, 0, TRUE),
571
572 HOWTO (R_TILEGX_TLS_GD_CALL, /* type */
573 » TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
574 » 2,» » » /* size (0 = byte, 1 = short, 2 = long) */
575 » 27,» » » /* bitsize */
576 » TRUE,» » » /* pc_relative */
577 » 0,» » » /* bitpos */
578 » complain_overflow_signed,/* complain_on_overflow */
579 » bfd_elf_generic_reloc, /* special_function */
580 » "R_TILEGX_TLS_GD_CALL", /* name */
581 » FALSE,»» » /* partial_inplace */
582 » 0,» » » /* src_mask */
583 » -1,» » » /* dst_mask */
584 » TRUE), » » /* pcrel_offset */
585
586 TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X0_TLS_GD_ADD, 0, 8),
587 TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X1_TLS_GD_ADD, 0, 8),
588 TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y0_TLS_GD_ADD, 0, 8),
589 TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y1_TLS_GD_ADD, 0, 8),
590 TILEGX_IMM_HOWTO(R_TILEGX_TLS_IE_LOAD, 0, 8),
591 TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X0_TLS_ADD, 0, 8),
592 TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X1_TLS_ADD, 0, 8),
593 TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y0_TLS_ADD, 0, 8),
594 TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y1_TLS_ADD, 0, 8),
568 }; 595 };
569 596
570 static reloc_howto_type tilegx_elf_howto_table2 [] = 597 static reloc_howto_type tilegx_elf_howto_table2 [] =
571 { 598 {
572 /* GNU extension to record C++ vtable hierarchy */ 599 /* GNU extension to record C++ vtable hierarchy */
573 HOWTO (R_TILEGX_GNU_VTINHERIT, /* type */ 600 HOWTO (R_TILEGX_GNU_VTINHERIT, /* type */
574 0, /* rightshift */ 601 0, /* rightshift */
575 4, /* size (0 = byte, 1 = short, 2 = long) */ 602 4, /* size (0 = byte, 1 = short, 2 = long) */
576 0, /* bitsize */ 603 0, /* bitsize */
577 FALSE, /* pc_relative */ 604 FALSE, /* pc_relative */
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_PCREL) 703 SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_PCREL)
677 SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_PCREL) 704 SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_PCREL)
678 SIMPLE_REMAP (TILEGX_IMM16_X0_HW2_PCREL) 705 SIMPLE_REMAP (TILEGX_IMM16_X0_HW2_PCREL)
679 SIMPLE_REMAP (TILEGX_IMM16_X1_HW2_PCREL) 706 SIMPLE_REMAP (TILEGX_IMM16_X1_HW2_PCREL)
680 SIMPLE_REMAP (TILEGX_IMM16_X0_HW3_PCREL) 707 SIMPLE_REMAP (TILEGX_IMM16_X0_HW3_PCREL)
681 SIMPLE_REMAP (TILEGX_IMM16_X1_HW3_PCREL) 708 SIMPLE_REMAP (TILEGX_IMM16_X1_HW3_PCREL)
682 SIMPLE_REMAP (TILEGX_IMM16_X0_HW0_LAST_PCREL) 709 SIMPLE_REMAP (TILEGX_IMM16_X0_HW0_LAST_PCREL)
683 SIMPLE_REMAP (TILEGX_IMM16_X1_HW0_LAST_PCREL) 710 SIMPLE_REMAP (TILEGX_IMM16_X1_HW0_LAST_PCREL)
684 SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_LAST_PCREL) 711 SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_LAST_PCREL)
685 SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_LAST_PCREL) 712 SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_LAST_PCREL)

error: old chunk mismatch

OLDNEW
« no previous file with comments | « bfd/elfxx-target.h ('k') | bfd/hash.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698