diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2008-10-04 17:18:36 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@axis.com> | 2008-10-04 17:18:36 +0000 |
commit | 3926fc5473c36857a30ecce2ee9471b95f6df6b5 (patch) | |
tree | 0aecc9abb98a479666ca7ea898b13e921cc62c4c | |
parent | 1d0376927290381af7edc73c6d0175fbf6699156 (diff) | |
download | gdb-3926fc5473c36857a30ecce2ee9471b95f6df6b5.zip gdb-3926fc5473c36857a30ecce2ee9471b95f6df6b5.tar.gz gdb-3926fc5473c36857a30ecce2ee9471b95f6df6b5.tar.bz2 |
* elf32-cris.c (TLSHOWTO32, TLSHOWTO16): New macros.
(cris_elf_howto_table): Add entries for R_CRIS_32_GOT_GD,
R_CRIS_16_GOT_GD, R_CRIS_32_GD, R_CRIS_DTP, R_CRIS_32_DTPREL,
R_CRIS_16_DTPREL, R_CRIS_DTPMOD, R_CRIS_32_GOT_TPREL,
R_CRIS_16_GOT_TPREL, R_CRIS_32_TPREL, R_CRIS_16_TPREL.
(cris_reloc_map): Similarly.
* reloc.c (bfd_reloc_code_type): Add entries for
BFD_RELOC_CRIS_32_GOT_GD, BFD_RELOC_CRIS_16_GOT_GD,
BFD_RELOC_CRIS_32_GD, BFD_RELOC_CRIS_DTP,
BFD_RELOC_CRIS_32_DTPREL, BFD_RELOC_CRIS_16_DTPREL,
BFD_RELOC_CRIS_DTPMOD, BFD_RELOC_CRIS_32_GOT_TPREL,
BFD_RELOC_CRIS_16_GOT_TPREL, BFD_RELOC_CRIS_32_TPREL,
BFD_RELOC_CRIS_16_TPREL.
* libbfd.h, bfd-in2.h: Regenerate.
-rw-r--r-- | bfd/ChangeLog | 17 | ||||
-rw-r--r-- | bfd/bfd-in2.h | 13 | ||||
-rw-r--r-- | bfd/elf32-cris.c | 39 | ||||
-rw-r--r-- | bfd/libbfd.h | 11 | ||||
-rw-r--r-- | bfd/reloc.c | 25 |
5 files changed, 103 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e6b51d2..031c67d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,20 @@ +2008-10-04 Hans-Peter Nilsson <hp@axis.com> + + * elf32-cris.c (TLSHOWTO32, TLSHOWTO16): New macros. + (cris_elf_howto_table): Add entries for R_CRIS_32_GOT_GD, + R_CRIS_16_GOT_GD, R_CRIS_32_GD, R_CRIS_DTP, R_CRIS_32_DTPREL, + R_CRIS_16_DTPREL, R_CRIS_DTPMOD, R_CRIS_32_GOT_TPREL, + R_CRIS_16_GOT_TPREL, R_CRIS_32_TPREL, R_CRIS_16_TPREL. + (cris_reloc_map): Similarly. + * reloc.c (bfd_reloc_code_type): Add entries for + BFD_RELOC_CRIS_32_GOT_GD, BFD_RELOC_CRIS_16_GOT_GD, + BFD_RELOC_CRIS_32_GD, BFD_RELOC_CRIS_DTP, + BFD_RELOC_CRIS_32_DTPREL, BFD_RELOC_CRIS_16_DTPREL, + BFD_RELOC_CRIS_DTPMOD, BFD_RELOC_CRIS_32_GOT_TPREL, + BFD_RELOC_CRIS_16_GOT_TPREL, BFD_RELOC_CRIS_32_TPREL, + BFD_RELOC_CRIS_16_TPREL. + * libbfd.h, bfd-in2.h: Regenerate. + 2008-10-03 Alan Modra <amodra@bigpond.net.au> PR 6931 diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index c8ef5f9..16609cb 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -4192,6 +4192,19 @@ This is the 5 bits of a value. */ /* 32-bit offset to symbol with PLT entry, relative to this relocation. */ BFD_RELOC_CRIS_32_PLT_PCREL, +/* Relocs used in TLS code for CRIS. */ + BFD_RELOC_CRIS_32_GOT_GD, + BFD_RELOC_CRIS_16_GOT_GD, + BFD_RELOC_CRIS_32_GD, + BFD_RELOC_CRIS_DTP, + BFD_RELOC_CRIS_32_DTPREL, + BFD_RELOC_CRIS_16_DTPREL, + BFD_RELOC_CRIS_32_GOT_TPREL, + BFD_RELOC_CRIS_16_GOT_TPREL, + BFD_RELOC_CRIS_32_TPREL, + BFD_RELOC_CRIS_16_TPREL, + BFD_RELOC_CRIS_DTPMOD, + /* Intel i860 Relocations. */ BFD_RELOC_860_COPY, BFD_RELOC_860_GLOB_DAT, diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c index 75d0695..360cba6 100644 --- a/bfd/elf32-cris.c +++ b/bfd/elf32-cris.c @@ -409,7 +409,31 @@ static reloc_howto_type cris_elf_howto_table [] = FALSE, /* partial_inplace */ 0, /* src_mask */ 0xffffffff, /* dst_mask */ - TRUE) /* pcrel_offset */ + TRUE), /* pcrel_offset */ + + /* We don't handle these in any special manner and cross-format + linking is not supported; just recognize them enough to pass them + around. FIXME: do the same for most PIC relocs and add sanity + tests to actually refuse gracefully to handle these and PIC + relocs for cross-format linking. */ +#define TLSHOWTO32(name) \ + HOWTO (name, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, \ + bfd_elf_generic_reloc, #name, FALSE, 0, 0xffffffff, FALSE) +#define TLSHOWTO16(name) \ + HOWTO (name, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, \ + bfd_elf_generic_reloc, #name, FALSE, 0, 0xffff, FALSE) + + TLSHOWTO32 (R_CRIS_32_GOT_GD), + TLSHOWTO16 (R_CRIS_16_GOT_GD), + TLSHOWTO32 (R_CRIS_32_GD), + TLSHOWTO32 (R_CRIS_DTP), + TLSHOWTO32 (R_CRIS_32_DTPREL), + TLSHOWTO16 (R_CRIS_16_DTPREL), + TLSHOWTO32 (R_CRIS_32_GOT_TPREL), + TLSHOWTO16 (R_CRIS_16_GOT_TPREL), + TLSHOWTO32 (R_CRIS_32_TPREL), + TLSHOWTO16 (R_CRIS_16_TPREL), + TLSHOWTO32 (R_CRIS_DTPMOD) }; /* Map BFD reloc types to CRIS ELF reloc types. */ @@ -441,7 +465,18 @@ static const struct cris_reloc_map cris_reloc_map [] = { BFD_RELOC_CRIS_32_GOTPLT, R_CRIS_32_GOTPLT }, { BFD_RELOC_CRIS_32_GOTREL, R_CRIS_32_GOTREL }, { BFD_RELOC_CRIS_32_PLT_GOTREL, R_CRIS_32_PLT_GOTREL }, - { BFD_RELOC_CRIS_32_PLT_PCREL, R_CRIS_32_PLT_PCREL } + { BFD_RELOC_CRIS_32_PLT_PCREL, R_CRIS_32_PLT_PCREL }, + { BFD_RELOC_CRIS_32_GOT_GD, R_CRIS_32_GOT_GD }, + { BFD_RELOC_CRIS_16_GOT_GD, R_CRIS_16_GOT_GD }, + { BFD_RELOC_CRIS_32_GD, R_CRIS_32_GD }, + { BFD_RELOC_CRIS_DTP, R_CRIS_DTP }, + { BFD_RELOC_CRIS_32_DTPREL, R_CRIS_32_DTPREL }, + { BFD_RELOC_CRIS_16_DTPREL, R_CRIS_16_DTPREL }, + { BFD_RELOC_CRIS_32_GOT_TPREL, R_CRIS_32_GOT_TPREL }, + { BFD_RELOC_CRIS_16_GOT_TPREL, R_CRIS_16_GOT_TPREL }, + { BFD_RELOC_CRIS_32_TPREL, R_CRIS_32_TPREL }, + { BFD_RELOC_CRIS_16_TPREL, R_CRIS_16_TPREL }, + { BFD_RELOC_CRIS_DTPMOD, R_CRIS_DTPMOD } }; static reloc_howto_type * diff --git a/bfd/libbfd.h b/bfd/libbfd.h index eb84d58..1707b06 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -1890,6 +1890,17 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_CRIS_32_GOTREL", "BFD_RELOC_CRIS_32_PLT_GOTREL", "BFD_RELOC_CRIS_32_PLT_PCREL", + "BFD_RELOC_CRIS_32_GOT_GD", + "BFD_RELOC_CRIS_16_GOT_GD", + "BFD_RELOC_CRIS_32_GD", + "BFD_RELOC_CRIS_DTP", + "BFD_RELOC_CRIS_32_DTPREL", + "BFD_RELOC_CRIS_16_DTPREL", + "BFD_RELOC_CRIS_32_GOT_TPREL", + "BFD_RELOC_CRIS_16_GOT_TPREL", + "BFD_RELOC_CRIS_32_TPREL", + "BFD_RELOC_CRIS_16_TPREL", + "BFD_RELOC_CRIS_DTPMOD", "BFD_RELOC_860_COPY", "BFD_RELOC_860_GLOB_DAT", "BFD_RELOC_860_JUMP_SLOT", diff --git a/bfd/reloc.c b/bfd/reloc.c index 9d993af..99d0094 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -4719,6 +4719,31 @@ ENUMDOC 32-bit offset to symbol with PLT entry, relative to this relocation. ENUM + BFD_RELOC_CRIS_32_GOT_GD +ENUMX + BFD_RELOC_CRIS_16_GOT_GD +ENUMX + BFD_RELOC_CRIS_32_GD +ENUMX + BFD_RELOC_CRIS_DTP +ENUMX + BFD_RELOC_CRIS_32_DTPREL +ENUMX + BFD_RELOC_CRIS_16_DTPREL +ENUMX + BFD_RELOC_CRIS_32_GOT_TPREL +ENUMX + BFD_RELOC_CRIS_16_GOT_TPREL +ENUMX + BFD_RELOC_CRIS_32_TPREL +ENUMX + BFD_RELOC_CRIS_16_TPREL +ENUMX + BFD_RELOC_CRIS_DTPMOD +ENUMDOC + Relocs used in TLS code for CRIS. + +ENUM BFD_RELOC_860_COPY ENUMX BFD_RELOC_860_GLOB_DAT |