/* MIPS-specific support for 32-bit ELF
- Copyright (C) 1993-2015 Free Software Foundation, Inc.
+ Copyright (C) 1993-2016 Free Software Foundation, Inc.
Most of the information added by Ian Lance Taylor, Cygnus Support,
<ian@cygnus.com>.
/* No relocation. */
HOWTO (R_MIPS_NONE, /* type */
0, /* rightshift */
- 0, /* size (0 = byte, 1 = short, 2 = long) */
+ 3, /* size (0 = byte, 1 = short, 2 = long) */
0, /* bitsize */
FALSE, /* pc_relative */
0, /* bitpos */
TRUE); /* pcrel_offset */
/* 32 bit pc-relative. This was a GNU extension used by embedded-PIC.
- It was co-opted by mips-linux for exception-handling data. It is no
- longer used, but should continue to be supported by the linker for
- backward compatibility. (GCC stopped using it in May, 2004.) */
+ It was co-opted by mips-linux for exception-handling data. GCC stopped
+ using it in May, 2004, then started using it again for compact unwind
+ tables. */
static reloc_howto_type elf_mips_gnu_pcrel32 =
HOWTO (R_MIPS_PC32, /* type */
0, /* rightshift */
return &elf_micromips_howto_table_rel[r_type - R_MICROMIPS_min];
if (r_type >= R_MIPS16_min && r_type < R_MIPS16_max)
return &elf_mips16_howto_table_rel[r_type - R_MIPS16_min];
- BFD_ASSERT (r_type < (unsigned int) R_MIPS_max);
+ if (r_type >= (unsigned int) R_MIPS_max)
+ {
+ (*_bfd_error_handler) (_("Unrecognised MIPS reloc number: %d"), r_type);
+ bfd_set_error (bfd_error_bad_value);
+ r_type = R_MIPS_NONE;
+ }
return &elf_mips_howto_table_rel[r_type];
}
}