This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: [patch] xstormy16 12-bit relocs
- From: DJ Delorie <dj at redhat dot com>
- To: binutils at sources dot redhat dot com
- Date: Wed, 18 Dec 2002 16:27:27 -0500
- Subject: Re: [patch] xstormy16 12-bit relocs
- References: <200212180004.gBI04IY25112@greed.delorie.com>
Here it is again with src_mask fixed. Ok now?
[include/elf/ChangeLog]
* xstormy16.h: Add XSTORMY16_12.
[bfd/Changelog]
* reloc.c: Add BFD_RELOC_XSTORMY16_12.
* libbfd.h: Regenerate.
* bfd-in2.h: Regenerate.
* elf32-xstormy16.c (xstormy16_elf_howto): Add R_XSTORMY16_12.
(xstormy16_reloc_map): Add R_XSTORMY16_12.
[gas/ChangeLog]
* config/tc-xstormy16.c (md_cgen_lookup_reloc): Support
BFD_RELOC_XSTORMY16_12.
[gas/testsuite/ChangeLog]
* gas/xstormy16/allinsn.sh: Add tests for 12-bit reloc.
* gas/xstormy16/allinsn.s: Likewise.
* gas/xstormy16/allinsn.d: Likewise.
Index: bfd/bfd-in2.h
===================================================================
RCS file: /cvs/src/src/bfd/bfd-in2.h,v
retrieving revision 1.184
diff -p -3 -r1.184 bfd/bfd-in2.h
*** bfd/bfd-in2.h 8 Dec 2002 03:34:38 -0000 1.184
--- bfd/bfd-in2.h 17 Dec 2002 22:51:31 -0000
*************** to follow the 16K memory bank of 68HC12
*** 3238,3243 ****
--- 3238,3244 ----
/* Sony Xstormy16 Relocations. */
BFD_RELOC_XSTORMY16_REL_12,
+ BFD_RELOC_XSTORMY16_12,
BFD_RELOC_XSTORMY16_24,
BFD_RELOC_XSTORMY16_FPTR16,
Index: bfd/elf32-xstormy16.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-xstormy16.c,v
retrieving revision 1.14
diff -p -3 -r1.14 bfd/elf32-xstormy16.c
*** bfd/elf32-xstormy16.c 17 Dec 2002 03:54:15 -0000 1.14
--- bfd/elf32-xstormy16.c 17 Dec 2002 22:51:31 -0000
*************** static reloc_howto_type xstormy16_elf_ho
*** 238,243 ****
--- 238,258 ----
0, /* src_mask */
0xffff, /* dst_mask */
FALSE), /* pcrel_offset */
+
+ /* A 12 bit absolute relocation. */
+ HOWTO (R_XSTORMY16_12, /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 12, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_XSTORMY16_12", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000, /* src_mask */
+ 0x0fff, /* dst_mask */
+ FALSE), /* pcrel_offset */
};
static reloc_howto_type xstormy16_elf_howto_table2 [] =
*************** static const reloc_map xstormy16_reloc_m
*** 297,302 ****
--- 312,318 ----
{ BFD_RELOC_XSTORMY16_FPTR16, R_XSTORMY16_FPTR16, xstormy16_elf_howto_table },
{ BFD_RELOC_LO16, R_XSTORMY16_LO16, xstormy16_elf_howto_table },
{ BFD_RELOC_HI16, R_XSTORMY16_HI16, xstormy16_elf_howto_table },
+ { BFD_RELOC_XSTORMY16_12, R_XSTORMY16_12, xstormy16_elf_howto_table },
{ BFD_RELOC_VTABLE_INHERIT, R_XSTORMY16_GNU_VTINHERIT, xstormy16_elf_howto_table2 },
{ BFD_RELOC_VTABLE_ENTRY, R_XSTORMY16_GNU_VTENTRY, xstormy16_elf_howto_table2 },
};
*************** xstormy16_info_to_howto_rela (abfd, cach
*** 332,338 ****
{
unsigned int r_type = ELF32_R_TYPE (dst->r_info);
! if (r_type <= (unsigned int) R_XSTORMY16_HI16)
cache_ptr->howto = &xstormy16_elf_howto_table [r_type];
else if (r_type - R_XSTORMY16_GNU_VTINHERIT
<= (unsigned int) R_XSTORMY16_GNU_VTENTRY)
--- 348,354 ----
{
unsigned int r_type = ELF32_R_TYPE (dst->r_info);
! if (r_type <= (unsigned int) R_XSTORMY16_12)
cache_ptr->howto = &xstormy16_elf_howto_table [r_type];
else if (r_type - R_XSTORMY16_GNU_VTINHERIT
<= (unsigned int) R_XSTORMY16_GNU_VTENTRY)
Index: bfd/libbfd.h
===================================================================
RCS file: /cvs/src/src/bfd/libbfd.h,v
retrieving revision 1.77
diff -p -3 -r1.77 bfd/libbfd.h
*** bfd/libbfd.h 30 Nov 2002 08:39:39 -0000 1.77
--- bfd/libbfd.h 17 Dec 2002 22:51:31 -0000
*************** static const char *const bfd_reloc_code_
*** 1367,1372 ****
--- 1367,1373 ----
"BFD_RELOC_H8_DIR24R8",
"BFD_RELOC_H8_DIR32A16",
"BFD_RELOC_XSTORMY16_REL_12",
+ "BFD_RELOC_XSTORMY16_12",
"BFD_RELOC_XSTORMY16_24",
"BFD_RELOC_XSTORMY16_FPTR16",
"BFD_RELOC_VAX_GLOB_DAT",
Index: bfd/reloc.c
===================================================================
RCS file: /cvs/src/src/bfd/reloc.c,v
retrieving revision 1.71
diff -p -3 -r1.71 bfd/reloc.c
*** bfd/reloc.c 30 Nov 2002 08:39:40 -0000 1.71
--- bfd/reloc.c 17 Dec 2002 22:51:31 -0000
*************** ENUMDOC
*** 3598,3603 ****
--- 3598,3605 ----
ENUM
BFD_RELOC_XSTORMY16_REL_12
ENUMX
+ BFD_RELOC_XSTORMY16_12
+ ENUMX
BFD_RELOC_XSTORMY16_24
ENUMX
BFD_RELOC_XSTORMY16_FPTR16
Index: gas/config/tc-xstormy16.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-xstormy16.c,v
retrieving revision 1.6
diff -p -3 -r1.6 gas/config/tc-xstormy16.c
*** gas/config/tc-xstormy16.c 17 Dec 2002 03:55:46 -0000 1.6
--- gas/config/tc-xstormy16.c 17 Dec 2002 22:51:31 -0000
*************** md_cgen_lookup_reloc (insn, operand, fix
*** 331,339 ****
case XSTORMY16_OPERAND_IMM3:
case XSTORMY16_OPERAND_IMM3B:
case XSTORMY16_OPERAND_IMM4:
- case XSTORMY16_OPERAND_IMM12:
case XSTORMY16_OPERAND_HMEM8:
return BFD_RELOC_NONE;
case XSTORMY16_OPERAND_IMM8:
case XSTORMY16_OPERAND_LMEM8:
--- 331,342 ----
case XSTORMY16_OPERAND_IMM3:
case XSTORMY16_OPERAND_IMM3B:
case XSTORMY16_OPERAND_IMM4:
case XSTORMY16_OPERAND_HMEM8:
return BFD_RELOC_NONE;
+
+ case XSTORMY16_OPERAND_IMM12:
+ fixP->fx_where += 2;
+ return BFD_RELOC_XSTORMY16_12;
case XSTORMY16_OPERAND_IMM8:
case XSTORMY16_OPERAND_LMEM8:
Index: gas/testsuite/gas/xstormy16/allinsn.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/xstormy16/allinsn.d,v
retrieving revision 1.4
diff -p -3 -r1.4 gas/testsuite/gas/xstormy16/allinsn.d
*** gas/testsuite/gas/xstormy16/allinsn.d 25 Nov 2002 21:15:41 -0000 1.4
--- gas/testsuite/gas/xstormy16/allinsn.d 17 Dec 2002 22:51:32 -0000
*************** Disassembly of section \.text:
*** 1232,1234 ****
--- 1232,1342 ----
9ca: c1 15 callr 0xf8c
9cc: 53 16 callr 0x1020
9ce: d3 13 callr 0xda2
+
+ 000009d0 <movgrgrsi>:
+ 9d0: 08 70 00 00 mov\.b r0,\(r0,0\)
+ 9d2: R_XSTORMY16_12 extsym
+ 9d4: ff 71 00 00 mov\.w r7,\(r15,0\)
+ 9d6: R_XSTORMY16_12 extsym\+0xffffffff
+ 9d8: 8c 71 00 00 mov\.w r4,\(r8,0\)
+ 9da: R_XSTORMY16_12 extsym\+0xfffff800
+ 9dc: 7b 70 00 00 mov\.b r3,\(r7,0\)
+ 9de: R_XSTORMY16_12 extsym\+0x7ff
+ 9e0: 19 71 00 00 mov\.w r1,\(r1,0\)
+ 9e2: R_XSTORMY16_12 extsym\+0x1
+ 9e4: 8e 71 00 00 mov\.w r6,\(r8,0\)
+ 9e6: R_XSTORMY16_12 extsym\+0xfffffe3c
+ 9e8: bc 71 00 00 mov\.w r4,\(r11,0\)
+ 9ea: R_XSTORMY16_12 extsym\+0x23c
+ 9ec: 19 70 00 00 mov\.b r1,\(r1,0\)
+ 9ee: R_XSTORMY16_12 extsym\+0xfffff94a
+
+ 000009f0 <movgrgrsipostinc>:
+ 9f0: 08 60 00 00 mov\.b r0,\(r0\+\+,0\)
+ 9f2: R_XSTORMY16_12 extsym
+ 9f4: ff 61 00 00 mov\.w r7,\(r15\+\+,0\)
+ 9f6: R_XSTORMY16_12 extsym\+0xffffffff
+ 9f8: 8c 61 00 00 mov\.w r4,\(r8\+\+,0\)
+ 9fa: R_XSTORMY16_12 extsym\+0xfffff800
+ 9fc: 7b 60 00 00 mov\.b r3,\(r7\+\+,0\)
+ 9fe: R_XSTORMY16_12 extsym\+0x7ff
+ a00: 19 61 00 00 mov\.w r1,\(r1\+\+,0\)
+ a02: R_XSTORMY16_12 extsym\+0x1
+ a04: 0e 61 00 00 mov\.w r6,\(r0\+\+,0\)
+ a06: R_XSTORMY16_12 extsym\+0xffffffc0
+ a08: ff 60 00 00 mov\.b r7,\(r15\+\+,0\)
+ a0a: R_XSTORMY16_12 extsym\+0x424
+ a0c: 78 60 00 00 mov\.b r0,\(r7\+\+,0\)
+ a0e: R_XSTORMY16_12 extsym\+0x34f
+
+ 00000a10 <movgrgrsipredec>:
+ a10: 08 68 00 00 mov\.b r0,\(--r0,0\)
+ a12: R_XSTORMY16_12 extsym
+ a14: ff 69 00 00 mov\.w r7,\(--r15,0\)
+ a16: R_XSTORMY16_12 extsym\+0xffffffff
+ a18: 8c 69 00 00 mov\.w r4,\(--r8,0\)
+ a1a: R_XSTORMY16_12 extsym\+0xfffff800
+ a1c: 7b 68 00 00 mov\.b r3,\(--r7,0\)
+ a1e: R_XSTORMY16_12 extsym\+0x7ff
+ a20: 19 69 00 00 mov\.w r1,\(--r1,0\)
+ a22: R_XSTORMY16_12 extsym\+0x1
+ a24: f8 69 00 00 mov\.w r0,\(--r15,0\)
+ a26: R_XSTORMY16_12 extsym\+0x6f4
+ a28: 1e 69 00 00 mov\.w r6,\(--r1,0\)
+ a2a: R_XSTORMY16_12 extsym\+0x5e2
+ a2c: 3f 69 00 00 mov\.w r7,\(--r3,0\)
+ a2e: R_XSTORMY16_12 extsym\+0xfffff80f
+
+ 00000a30 <movgrsigr>:
+ a30: 08 72 00 00 mov\.b \(r0,0\),r0
+ a32: R_XSTORMY16_12 extsym
+ a34: ff 73 00 00 mov\.w \(r15,0\),r7
+ a36: R_XSTORMY16_12 extsym\+0xffffffff
+ a38: 8c 73 00 00 mov\.w \(r8,0\),r4
+ a3a: R_XSTORMY16_12 extsym\+0xfffff800
+ a3c: 7b 72 00 00 mov\.b \(r7,0\),r3
+ a3e: R_XSTORMY16_12 extsym\+0x7ff
+ a40: 19 73 00 00 mov\.w \(r1,0\),r1
+ a42: R_XSTORMY16_12 extsym\+0x1
+ a44: 7d 73 00 00 mov\.w \(r7,0\),r5
+ a46: R_XSTORMY16_12 extsym\+0x79c
+ a48: 3c 72 00 00 mov\.b \(r3,0\),r4
+ a4a: R_XSTORMY16_12 extsym\+0xfffffcb4
+ a4c: f8 73 00 00 mov\.w \(r15,0\),r0
+ a4e: R_XSTORMY16_12 extsym\+0x6a8
+
+ 00000a50 <movgrsipostincgr>:
+ a50: 08 62 00 00 mov\.b \(r0\+\+,0\),r0
+ a52: R_XSTORMY16_12 extsym
+ a54: ff 63 00 00 mov\.w \(r15\+\+,0\),r7
+ a56: R_XSTORMY16_12 extsym\+0xffffffff
+ a58: 8c 63 00 00 mov\.w \(r8\+\+,0\),r4
+ a5a: R_XSTORMY16_12 extsym\+0xfffff800
+ a5c: 7b 62 00 00 mov\.b \(r7\+\+,0\),r3
+ a5e: R_XSTORMY16_12 extsym\+0x7ff
+ a60: 19 63 00 00 mov\.w \(r1\+\+,0\),r1
+ a62: R_XSTORMY16_12 extsym\+0x1
+ a64: 2f 63 00 00 mov\.w \(r2\+\+,0\),r7
+ a66: R_XSTORMY16_12 extsym\+0xffffff50
+ a68: 8c 63 00 00 mov\.w \(r8\+\+,0\),r4
+ a6a: R_XSTORMY16_12 extsym\+0x56d
+ a6c: 38 62 00 00 mov\.b \(r3\+\+,0\),r0
+ a6e: R_XSTORMY16_12 extsym\+0x2f
+
+ 00000a70 <movgrsipredecgr>:
+ a70: 08 6a 00 00 mov\.b \(--r0,0\),r0
+ a72: R_XSTORMY16_12 extsym
+ a74: ff 6b 00 00 mov\.w \(--r15,0\),r7
+ a76: R_XSTORMY16_12 extsym\+0xffffffff
+ a78: 8c 6b 00 00 mov\.w \(--r8,0\),r4
+ a7a: R_XSTORMY16_12 extsym\+0xfffff800
+ a7c: 7b 6a 00 00 mov\.b \(--r7,0\),r3
+ a7e: R_XSTORMY16_12 extsym\+0x7ff
+ a80: 19 6b 00 00 mov\.w \(--r1,0\),r1
+ a82: R_XSTORMY16_12 extsym\+0x1
+ a84: 8c 6a 00 00 mov\.b \(--r8,0\),r4
+ a86: R_XSTORMY16_12 extsym\+0x3ec
+ a88: ea 6b 00 00 mov\.w \(--r14,0\),r2
+ a8a: R_XSTORMY16_12 extsym\+0xfffffa5c
+ a8c: 5c 6a 00 00 mov\.b \(--r5,0\),r4
+ a8e: R_XSTORMY16_12 extsym\+0xfffffc61
Index: gas/testsuite/gas/xstormy16/allinsn.s
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/xstormy16/allinsn.s,v
retrieving revision 1.3
diff -p -3 -r1.3 gas/testsuite/gas/xstormy16/allinsn.s
*** gas/testsuite/gas/xstormy16/allinsn.s 20 Nov 2002 03:14:47 -0000 1.3
--- gas/testsuite/gas/xstormy16/allinsn.s 17 Dec 2002 22:51:32 -0000
*************** callrimm:
*** 1360,1362 ****
--- 1360,1427 ----
callr 1472+(.+2)
callr 1618+(.+2)
callr 978+(.+2)
+
+ movgrgrsi:
+ mov.b r0,(r0,extsym)
+ mov.w r7,(r15,extsym-1)
+ mov.w r4,(r8,extsym-2048)
+ mov.b r3,(r7,extsym+2047)
+ mov.w r1,(r1,extsym+1)
+ mov.w r6,(r8,extsym-452)
+ mov.w r4,(r11,extsym+572)
+ mov.b r1,(r1,extsym-1718)
+ .text
+ .global movgrgriipostinc
+ movgrgrsipostinc:
+ mov.b r0,(r0++,extsym)
+ mov.w r7,(r15++,extsym-1)
+ mov.w r4,(r8++,extsym-2048)
+ mov.b r3,(r7++,extsym+2047)
+ mov.w r1,(r1++,extsym+1)
+ mov.w r6,(r0++,extsym-64)
+ mov.b r7,(r15++,extsym+1060)
+ mov.b r0,(r7++,extsym+847)
+ .text
+ .global movgrgriipredec
+ movgrgrsipredec:
+ mov.b r0,(--r0,extsym)
+ mov.w r7,(--r15,extsym-1)
+ mov.w r4,(--r8,extsym-2048)
+ mov.b r3,(--r7,extsym+2047)
+ mov.w r1,(--r1,extsym+1)
+ mov.w r0,(--r15,extsym+1780)
+ mov.w r6,(--r1,extsym+1506)
+ mov.w r7,(--r3,extsym-2033)
+ .text
+ .global movgriigr
+ movgrsigr:
+ mov.b (r0,extsym),r0
+ mov.w (r15,extsym-1),r7
+ mov.w (r8,extsym-2048),r4
+ mov.b (r7,extsym+2047),r3
+ mov.w (r1,extsym+1),r1
+ mov.w (r7,extsym+1948),r5
+ mov.b (r3,extsym-844),r4
+ mov.w (r15,extsym+1704),r0
+ .text
+ .global movgriipostincgr
+ movgrsipostincgr:
+ mov.b (r0++,extsym),r0
+ mov.w (r15++,extsym-1),r7
+ mov.w (r8++,extsym-2048),r4
+ mov.b (r7++,extsym+2047),r3
+ mov.w (r1++,extsym+1),r1
+ mov.w (r2++,extsym-176),r7
+ mov.w (r8++,extsym+1389),r4
+ mov.b (r3++,extsym+47),r0
+ .text
+ .global movgriipredecgr
+ movgrsipredecgr:
+ mov.b (--r0,extsym),r0
+ mov.w (--r15,extsym-1),r7
+ mov.w (--r8,extsym-2048),r4
+ mov.b (--r7,extsym+2047),r3
+ mov.w (--r1,extsym+1),r1
+ mov.b (--r8,extsym+1004),r4
+ mov.w (--r14,extsym-1444),r2
+ mov.b (--r5,extsym-927),r4
Index: gas/testsuite/gas/xstormy16/allinsn.sh
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/xstormy16/allinsn.sh,v
retrieving revision 1.3
diff -p -3 -r1.3 gas/testsuite/gas/xstormy16/allinsn.sh
*** gas/testsuite/gas/xstormy16/allinsn.sh 20 Nov 2002 03:14:47 -0000 1.3
--- gas/testsuite/gas/xstormy16/allinsn.sh 17 Dec 2002 22:51:32 -0000
*************** callrimm:
*** 1399,1404 ****
--- 1399,1469 ----
callr 1472+(.+2)
callr 1618+(.+2)
callr 978+(.+2)
+
+ movgrgrsi:
+ mov.b r0,(r0,extsym)
+ mov.w r7,(r15,extsym-1)
+ mov.w r4,(r8,extsym-2048)
+ mov.b r3,(r7,extsym+2047)
+ mov.w r1,(r1,extsym+1)
+ mov.w r6,(r8,extsym-452)
+ mov.w r4,(r11,extsym+572)
+ mov.b r1,(r1,extsym-1718)
+ .text
+ .global movgrgriipostinc
+ movgrgrsipostinc:
+ mov.b r0,(r0++,extsym)
+ mov.w r7,(r15++,extsym-1)
+ mov.w r4,(r8++,extsym-2048)
+ mov.b r3,(r7++,extsym+2047)
+ mov.w r1,(r1++,extsym+1)
+ mov.w r6,(r0++,extsym-64)
+ mov.b r7,(r15++,extsym+1060)
+ mov.b r0,(r7++,extsym+847)
+ .text
+ .global movgrgriipredec
+ movgrgrsipredec:
+ mov.b r0,(--r0,extsym)
+ mov.w r7,(--r15,extsym-1)
+ mov.w r4,(--r8,extsym-2048)
+ mov.b r3,(--r7,extsym+2047)
+ mov.w r1,(--r1,extsym+1)
+ mov.w r0,(--r15,extsym+1780)
+ mov.w r6,(--r1,extsym+1506)
+ mov.w r7,(--r3,extsym-2033)
+ .text
+ .global movgriigr
+ movgrsigr:
+ mov.b (r0,extsym),r0
+ mov.w (r15,extsym-1),r7
+ mov.w (r8,extsym-2048),r4
+ mov.b (r7,extsym+2047),r3
+ mov.w (r1,extsym+1),r1
+ mov.w (r7,extsym+1948),r5
+ mov.b (r3,extsym-844),r4
+ mov.w (r15,extsym+1704),r0
+ .text
+ .global movgriipostincgr
+ movgrsipostincgr:
+ mov.b (r0++,extsym),r0
+ mov.w (r15++,extsym-1),r7
+ mov.w (r8++,extsym-2048),r4
+ mov.b (r7++,extsym+2047),r3
+ mov.w (r1++,extsym+1),r1
+ mov.w (r2++,extsym-176),r7
+ mov.w (r8++,extsym+1389),r4
+ mov.b (r3++,extsym+47),r0
+ .text
+ .global movgriipredecgr
+ movgrsipredecgr:
+ mov.b (--r0,extsym),r0
+ mov.w (--r15,extsym-1),r7
+ mov.w (--r8,extsym-2048),r4
+ mov.b (--r7,extsym+2047),r3
+ mov.w (--r1,extsym+1),r1
+ mov.b (--r8,extsym+1004),r4
+ mov.w (--r14,extsym-1444),r2
+ mov.b (--r5,extsym-927),r4
EOF
# Finally, generate the .d file.
Index: include/elf/xstormy16.h
===================================================================
RCS file: /cvs/src/src/include/elf/xstormy16.h,v
retrieving revision 1.2
diff -p -3 -r1.2 include/elf/xstormy16.h
*** include/elf/xstormy16.h 17 Dec 2002 03:57:00 -0000 1.2
--- include/elf/xstormy16.h 17 Dec 2002 22:51:32 -0000
***************
*** 1,5 ****
/* XSTORMY16 ELF support for BFD.
! Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
--- 1,5 ----
/* XSTORMY16 ELF support for BFD.
! Copyright (C) 2001, 2002 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
*************** START_RELOC_NUMBERS (elf_xstormy16_reloc
*** 39,44 ****
--- 39,45 ----
RELOC_NUMBER (R_XSTORMY16_LO16, 10)
RELOC_NUMBER (R_XSTORMY16_HI16, 11)
+ RELOC_NUMBER (R_XSTORMY16_12, 12)
RELOC_NUMBER (R_XSTORMY16_GNU_VTINHERIT, 128)
RELOC_NUMBER (R_XSTORMY16_GNU_VTENTRY, 129)