diff options
author | Catherine Moore <clm@redhat.com> | 2013-05-30 20:27:21 +0000 |
---|---|---|
committer | Catherine Moore <clm@redhat.com> | 2013-05-30 20:27:21 +0000 |
commit | 067ec077d717e716b0dba87b9ebfa25074cd5453 (patch) | |
tree | 025bdeefd51e1f2e1da85bc67fac21f1da30ce8e /bfd/elfn32-mips.c | |
parent | maintenance_expand_symtabs leaks a cleanup (diff) | |
download | binutils-gdb-067ec077d717e716b0dba87b9ebfa25074cd5453.tar.gz binutils-gdb-067ec077d717e716b0dba87b9ebfa25074cd5453.tar.bz2 binutils-gdb-067ec077d717e716b0dba87b9ebfa25074cd5453.zip |
2013-05-30 Paul Brook <paul@codesourcery.com>
bfd/
* bfd-in2.h: Regenerate.
* elf32-mips.c (elf_mips_eh_howto): New.
(bfd_elf32_bfd_reloc_type_lookup ): Support BFD_RELOC_MIPS_EH.
(bfd_elf32_bfd_reloc_name_lookup): Likewise.
(mips_elf32_rtype_to_howto): Support R_MIPS_EH.
* elf64-mips.c (elf_mips_eh_howto): New.
(bfd_elf64_bfd_reloc_type_lookup): Support BFD_RELOC_MIPS_EH.
(bfd_elf64_bfd_reloc_name_lookup): Likewise.
(mips_elf64_rtype_to_howto): Support R_MIPS_EH.
* libbfd.h: Regenerate.
* reloc.c (BFD_RELOC_MIPS_EH): New.
gas/
* config/tc-mips.c (md_apply_fix): Support BFD_RELOC_MIPS_EH.
include/elf
* mips.h (R_MIPS_EH): New.
Diffstat (limited to 'bfd/elfn32-mips.c')
-rw-r--r-- | bfd/elfn32-mips.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/bfd/elfn32-mips.c b/bfd/elfn32-mips.c index 131de33fe29..2daf79e8751 100644 --- a/bfd/elfn32-mips.c +++ b/bfd/elfn32-mips.c @@ -2636,6 +2636,23 @@ static reloc_howto_type elf_mips_jump_slot_howto = 0x0, /* src_mask */ 0x0, /* dst_mask */ FALSE); /* pcrel_offset */ + +/* Used in EH tables. */ +static reloc_howto_type elf_mips_eh_howto = + HOWTO (R_MIPS_EH, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS_EH", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE); /* pcrel_offset */ + /* Set the GP value for OUTPUT_BFD. Returns FALSE if this is a dangerous relocation. */ @@ -3092,6 +3109,8 @@ bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, return &elf_mips_gnu_vtentry_howto; case BFD_RELOC_32_PCREL: return &elf_mips_gnu_pcrel32; + case BFD_RELOC_MIPS_EH: + return &elf_mips_eh_howto; case BFD_RELOC_MIPS_COPY: return &elf_mips_copy_howto; case BFD_RELOC_MIPS_JUMP_SLOT: @@ -3142,6 +3161,8 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, return &elf_mips_gnu_rela16_s2; if (strcasecmp (elf_mips_gnu_pcrel32.name, r_name) == 0) return &elf_mips_gnu_pcrel32; + if (strcasecmp (elf_mips_eh_howto.name, r_name) == 0) + return &elf_mips_eh_howto; if (strcasecmp (elf_mips_copy_howto.name, r_name) == 0) return &elf_mips_copy_howto; if (strcasecmp (elf_mips_jump_slot_howto.name, r_name) == 0) @@ -3168,6 +3189,8 @@ mips_elf_n32_rtype_to_howto (unsigned int r_type, bfd_boolean rela_p) return &elf_mips_gnu_rel16_s2; case R_MIPS_PC32: return &elf_mips_gnu_pcrel32; + case R_MIPS_EH: + return &elf_mips_eh_howto; case R_MIPS_COPY: return &elf_mips_copy_howto; case R_MIPS_JUMP_SLOT: |