Added support for ARC_SDA_12 reloc.
Fixed ARC_N32_ME.
Added ME (middle-endian) to ARC_SDA_12 reloc.
bfd/ChangeLog:
Cupertino Miranda <cmiranda@synopsys.com>
* reloc.c: Fixed type in ARC_SECTOFF relocations. Added ARC_SDA_12
relocation.
* bfd-in2.h: Regenerated from the previous changes.
* libbfd.h: Regenerated from the previous changes.
include/ChangeLog:
Cupertino Miranda <cmiranda@synopsys.com>
* elf/arc-reloc.def: Fixed relocation formula for N*, SDA, SDA_12,
SDA_16_LD*, S13_PCREL, N32_ME, SECTOFF_* relocations.
* opcode/arc-func.h (replace_disp12s): Added. Used for SDA_12 relocation.
+2016-08-26 Cupertino Miranda <cmiranda@synopsys.com>
+
+ * reloc.c: Fixed type in ARC_SECTOFF relocations. Added ARC_SDA_12
+ relocation.
+ * bfd-in2.h: Regenerated from the previous changes.
+ * libbfd.h: Regenerated from the previous changes.
+
2016-08-26 Thomas Preud'homme <thomas.preudhomme@arm.com>
* bfd-in.h (bfd_elf32_arm_set_target_relocs): Add a new parameter for
BFD_RELOC_AC_SECTOFF_U8,
BFD_RELOC_AC_SECTOFF_U8_1,
BFD_RELOC_AC_SECTOFF_U8_2,
- BFD_RELOC_AC_SECTFOFF_S9,
- BFD_RELOC_AC_SECTFOFF_S9_1,
- BFD_RELOC_AC_SECTFOFF_S9_2,
+ BFD_RELOC_AC_SECTOFF_S9,
+ BFD_RELOC_AC_SECTOFF_S9_1,
+ BFD_RELOC_AC_SECTOFF_S9_2,
BFD_RELOC_ARC_SECTOFF_ME_1,
BFD_RELOC_ARC_SECTOFF_ME_2,
BFD_RELOC_ARC_SECTOFF_1,
BFD_RELOC_ARC_SECTOFF_2,
+ BFD_RELOC_ARC_SDA_12,
BFD_RELOC_ARC_SDA16_ST2,
BFD_RELOC_ARC_32_PCREL,
BFD_RELOC_ARC_PC32,
"BFD_RELOC_AC_SECTOFF_U8",
"BFD_RELOC_AC_SECTOFF_U8_1",
"BFD_RELOC_AC_SECTOFF_U8_2",
- "BFD_RELOC_AC_SECTFOFF_S9",
- "BFD_RELOC_AC_SECTFOFF_S9_1",
- "BFD_RELOC_AC_SECTFOFF_S9_2",
+ "BFD_RELOC_AC_SECTOFF_S9",
+ "BFD_RELOC_AC_SECTOFF_S9_1",
+ "BFD_RELOC_AC_SECTOFF_S9_2",
"BFD_RELOC_ARC_SECTOFF_ME_1",
"BFD_RELOC_ARC_SECTOFF_ME_2",
"BFD_RELOC_ARC_SECTOFF_1",
"BFD_RELOC_ARC_SECTOFF_2",
+ "BFD_RELOC_ARC_SDA_12",
"BFD_RELOC_ARC_SDA16_ST2",
"BFD_RELOC_ARC_32_PCREL",
"BFD_RELOC_ARC_PC32",
ENUMX
BFD_RELOC_AC_SECTOFF_U8_2
ENUMX
- BFD_RELOC_AC_SECTFOFF_S9
+ BFD_RELOC_AC_SECTOFF_S9
ENUMX
- BFD_RELOC_AC_SECTFOFF_S9_1
+ BFD_RELOC_AC_SECTOFF_S9_1
ENUMX
- BFD_RELOC_AC_SECTFOFF_S9_2
+ BFD_RELOC_AC_SECTOFF_S9_2
ENUMX
BFD_RELOC_ARC_SECTOFF_ME_1
ENUMX
BFD_RELOC_ARC_SECTOFF_1
ENUMX
BFD_RELOC_ARC_SECTOFF_2
+ENUMX
+ BFD_RELOC_ARC_SDA_12
ENUMX
BFD_RELOC_ARC_SDA16_ST2
ENUMX
+2016-08-26 Cupertino Miranda <cmiranda@synopsys.com>
+ * elf/arc-reloc.def: Fixed relocation formula for N*, SDA, SDA_12,
+ SDA_16_LD*, S13_PCREL, N32_ME, SECTOFF_* relocations.
+ * opcode/arc-func.h (replace_disp12s): Added. Used for SDA_12
+ relocation.
+
2016-08-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
* arm.h (ARM_GET_SYM_CMSE_SPCL): Define macro.
8, \
replace_bits8, \
bitfield, \
- ( S - A ))
+ ( A - S ))
ARC_RELOC_HOWTO(ARC_N16, 9, \
1, \
16, \
replace_bits16, \
bitfield, \
- ( S - A ))
+ ( A - S ))
ARC_RELOC_HOWTO(ARC_N24, 10, \
2, \
24, \
replace_bits24, \
bitfield, \
- ( S - A ))
+ ( A - S ))
ARC_RELOC_HOWTO(ARC_N32, 11, \
2, \
32, \
replace_word32, \
bitfield, \
- ( S - A ))
+ ( A - S ))
ARC_RELOC_HOWTO(ARC_SDA, 12, \
2, \
9, \
replace_disp9, \
bitfield, \
- ( S + A ))
+ ( ME ( ( ( S + A ) - _SDA_BASE_ ) ) ))
ARC_RELOC_HOWTO(ARC_SECTOFF, 13, \
2, \
9, \
replace_disp9s, \
signed, \
- ( ( ( S + A ) - _SDA_BASE_ ) ))
+ ( ( S + A ) - _SDA_BASE_ ))
ARC_RELOC_HOWTO(ARC_SDA16_LD1, 23, \
1, \
9, \
replace_disp9s, \
signed, \
- ( ( ( ( S + A ) - _SDA_BASE_ ) >> 1 ) ))
+ ( ( ( S + A ) - _SDA_BASE_ ) >> 1 ))
ARC_RELOC_HOWTO(ARC_SDA16_LD2, 24, \
1, \
9, \
replace_disp9s, \
signed, \
- ( ( ( ( S + A ) - _SDA_BASE_ ) >> 2 ) ))
+ ( ( ( S + A ) - _SDA_BASE_ ) >> 2 ))
ARC_RELOC_HOWTO(ARC_S13_PCREL, 25, \
1, \
11, \
replace_disp13s, \
signed, \
- ( ( ( ( S + A ) - P ) >> 2 ) ))
+ ( ( ( S + A ) - P ) >> 2 ))
ARC_RELOC_HOWTO(ARC_W, 26, \
2, \
32, \
replace_word32, \
bitfield, \
- ( ME ( ( S - A ) ) ))
+ ( ME ( ( A - S ) ) ))
ARC_RELOC_HOWTO(ARC_SECTOFF_ME, 29, \
2, \
9, \
replace_disp9ls, \
bitfield, \
- ( ( S + A ) - SECTSTART ))
+ ( ME ( ( ( S + A ) - SECTSTART ) ) ))
ARC_RELOC_HOWTO(AC_SECTOFF_U8_1, 36, \
2, \
9, \
replace_disp9ls, \
bitfield, \
- ( ( ( S + A ) - SECTSTART ) >> 1 ))
+ ( ME ( ( ( ( S + A ) - SECTSTART ) >> 1 ) ) ))
ARC_RELOC_HOWTO(AC_SECTOFF_U8_2, 37, \
2, \
9, \
replace_disp9ls, \
bitfield, \
- ( ( ( S + A ) - SECTSTART ) >> 2 ))
+ ( ME ( ( ( ( S + A ) - SECTSTART ) >> 2 ) ) ))
-ARC_RELOC_HOWTO(AC_SECTFOFF_S9, 38, \
+ARC_RELOC_HOWTO(AC_SECTOFF_S9, 38, \
2, \
9, \
replace_disp9ls, \
bitfield, \
- ( ( S + A ) - SECTSTART ))
+ ( ME ( ( ( ( S + A ) - SECTSTART ) - 256 ) ) ))
-ARC_RELOC_HOWTO(AC_SECTFOFF_S9_1, 39, \
+ARC_RELOC_HOWTO(AC_SECTOFF_S9_1, 39, \
2, \
9, \
replace_disp9ls, \
bitfield, \
- ( ( ( S + A ) - SECTSTART ) >> 1 ))
+ ( ME ( ( ( ( ( S + A ) - SECTSTART ) - 256 ) >> 1 ) ) ))
-ARC_RELOC_HOWTO(AC_SECTFOFF_S9_2, 40, \
+ARC_RELOC_HOWTO(AC_SECTOFF_S9_2, 40, \
2, \
9, \
replace_disp9ls, \
bitfield, \
- ( ( ( S + A ) - SECTSTART ) >> 2 ))
+ ( ME ( ( ( ( ( S + A ) - SECTSTART ) - 256 ) >> 2 ) ) ))
ARC_RELOC_HOWTO(ARC_SECTOFF_ME_1, 41, \
2, \
bitfield, \
( ( ( S - SECTSTART ) + A ) >> 2 ))
+ARC_RELOC_HOWTO(ARC_SDA_12, 45, \
+ 2, \
+ 12, \
+ replace_disp12s, \
+ signed, \
+ ( ME ( ( ( S + A ) - _SDA_BASE_ ) ) ))
+
ARC_RELOC_HOWTO(ARC_SDA16_ST2, 48, \
1, \
9, \
}
#endif /* REPLACE_disp9s1 */
+
+/* mask = 00000000000000000000111111222222. */
+#ifndef REPLACE_disp12s
+#define REPLACE_disp12s
+ATTRIBUTE_UNUSED static unsigned
+replace_disp12s (unsigned insn, int value ATTRIBUTE_UNUSED)
+{
+ insn = insn & ~0xfff;
+ insn |= ((value >> 0) & 0x003f) << 6;
+ insn |= ((value >> 6) & 0x003f) << 0;
+
+ return insn;
+}
+
+#endif /* REPLACE_disp12s */