This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[PATCH] Fix handling of R_MIPS_PC16 relocations


Hi All,

when I compared the MIPS ELF64 spec with the actual code in binutils,
I found the R_MIPS_PC16 relocation to be wrongly implemented. I found
also a R_MIPS_GNU_REL16_S2 relocation which behaves exactly as
R_MIPS_PC16 should do, which was seemingly invented to support
embedded PIC.

The AFAICS only way to get such a reloc (except by embedded PIC)
is via a branch to an external label. There is no such test in
binutils, and gcc doesn't seem to use it also, so this feature
was possibly never used. The native SGI assembler handles this
even simpler: branches to external labels are illegal there.
I haven't found a way to get a R_MIPS_PC16 reloc with the
native tools on IRIX.

The potential problem with this patch: There is no good way to
distinguish R_MIPS_PC16 from R_MIPS_GNU_REL16_S2 because both
are mapped to BFD_RELOC_16_PCREL_S2. This means new embedded
PIC objects will use R_MIPS_PC16 instead of the GNU extension.
Old embedded PIC objects can be read, though.

I extended the branch testcases accordingly and tested it for
mips-elf, mips64el-elf and mips64-linux.


Thiemo


2001-08-21  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	/bfd/ChangeLog (elf_mips_howto_table): Fix rightshift for R_MIPS_PC16.
	(mips_reloc_map): Map R_MIPS_PC16 to the BFD_RELOC_16_PCREL_S2.
	(mips_elf_calculate_relocation): Fix handling of R_MIPS_PC16.
	(_bfd_mips_elf_relocate_section): Likewise.

	/gas/ChangeLog
	* config/tc-mips.c (tc_gen_reloc): Allow BFD_RELOC_16_PCREL_S2.

	/gas/testsuite/ChangeLog
	* gas/mips/beq.d: Check branches to external labels.
	* gas/mips/beq.s: Likewise.
	* gas/mips/bge.d: Likewise.
	* gas/mips/bge.s: Likewise.
	* gas/mips/bgeu.d: Likewise.
	* gas/mips/bgeu.s: Likewise.
	* gas/mips/blt.d: Likewise.
	* gas/mips/blt.s: Likewise.
	* gas/mips/bltu.d: Likewise.
	* gas/mips/bltu.s: Likewise.
	* gas/mips/elempic.d: Switch from R_MIPS_GNU_REL16_S2 to R_MIPS_PC16.
	* gas/mips/empic.d: Likewise.
	* gas/mips/empic.s: Likewise.
	* gas/mips/telempic.d: Likewise.
	* gas/mips/tempic.d: Likewise.
	

diff -BurpNX /bigdisk/src/binutils-exclude src-orig/bfd/elf32-mips.c src/bfd/elf32-mips.c
--- src-orig/bfd/elf32-mips.c	Wed Jul  4 13:55:24 2001
+++ src/bfd/elf32-mips.c	Tue Aug 21 18:15:03 2001
@@ -638,7 +639,7 @@ static reloc_howto_type elf_mips_howto_t
 
   /* 16 bit PC relative reference.  */
   HOWTO (R_MIPS_PC16,		/* type */
-	 0,			/* rightshift */
+	 2,			/* rightshift */
 	 2,			/* size (0 = byte, 1 = short, 2 = long) */
 	 16,			/* bitsize */
 	 true,			/* pc_relative */
@@ -1970,7 +1971,7 @@ static CONST struct elf_reloc_map mips_r
   { BFD_RELOC_MIPS_GPREL, R_MIPS_GPREL16 },
   { BFD_RELOC_MIPS_LITERAL, R_MIPS_LITERAL },
   { BFD_RELOC_MIPS_GOT16, R_MIPS_GOT16 },
-  { BFD_RELOC_16_PCREL, R_MIPS_PC16 },
+  { BFD_RELOC_16_PCREL_S2, R_MIPS_PC16 },
   { BFD_RELOC_MIPS_CALL16, R_MIPS_CALL16 },
   { BFD_RELOC_MIPS_GPREL32, R_MIPS_GPREL32 },
   { BFD_RELOC_MIPS_GOT_HI16, R_MIPS_GOT_HI16 },
@@ -6357,6 +6358,7 @@ mips_elf_calculate_relocation (abfd,
       break;
 
     case R_MIPS_GNU_REL16_S2:
+    case R_MIPS_PC16:
       value = symbol + mips_elf_sign_extend (addend << 2, 18) - p;
       overflowed_p = mips_elf_overflow_p (value, 18);
       value = (value >> 2) & howto->dst_mask;
@@ -6473,12 +6475,6 @@ mips_elf_calculate_relocation (abfd,
       value = (addend + symbol + gp0 - gp) & howto->dst_mask;
       break;
 
-    case R_MIPS_PC16:
-      value = mips_elf_sign_extend (addend, 16) + symbol - p;
-      value = (bfd_vma) ((bfd_signed_vma) value / 4);
-      overflowed_p = mips_elf_overflow_p (value, 16);
-      break;
-
     case R_MIPS_GOT_HI16:
     case R_MIPS_CALL_HI16:
       /* We're allowed to handle these two relocations identically.
@@ -6932,7 +6928,7 @@ _bfd_mips_elf_relocate_section (output_b
 	    addend -= (_bfd_get_gp_value (output_bfd)
 		       - _bfd_get_gp_value (input_bfd));
 	  else if (r_type == R_MIPS_26 || r_type == R_MIPS16_26
-		   || r_type == R_MIPS_GNU_REL16_S2)
+		   || r_type == R_MIPS_GNU_REL16_S2 || r_type == R_MIPS_PC16)
 	    /* The addend is stored without its two least
 	       significant bits (which are always zero.)  In a
 	       non-relocateable link, calculate_relocation will do
@@ -6955,7 +6951,7 @@ _bfd_mips_elf_relocate_section (output_b
 	     the two low-order bits are not stored in the object file;
 	     they are implicitly zero.  */
 	  else if (r_type == R_MIPS_26 || r_type == R_MIPS16_26
-		   || r_type == R_MIPS_GNU_REL16_S2)
+		   || r_type == R_MIPS_GNU_REL16_S2 || r_type == R_MIPS_PC16)
 	    addend >>= 2;
 
 	  if (rela_relocation_p)
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/config/tc-mips.c src/gas/config/tc-mips.c
--- src-orig/gas/config/tc-mips.c	Tue Aug 21 19:13:58 2001
+++ src/gas/config/tc-mips.c	Fri Aug 24 22:30:21 2001
@@ -11369,17 +11662,7 @@ tc_gen_reloc (section, fixp)
 	}
     }
 
-  /* To support a PC relative reloc when generating embedded PIC code
-     for ECOFF, we use a Cygnus extension.  We check for that here to
-     make sure that we don't let such a reloc escape normally.  */
-  if ((OUTPUT_FLAVOR == bfd_target_ecoff_flavour
-       || OUTPUT_FLAVOR == bfd_target_elf_flavour)
-      && code == BFD_RELOC_16_PCREL_S2
-      && mips_pic != EMBEDDED_PIC)
-    reloc->howto = NULL;
-  else
-    reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
-
+  reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
   if (reloc->howto == NULL)
     {
       as_bad_where (fixp->fx_file, fixp->fx_line,
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/beq.d src/gas/testsuite/gas/mips/beq.d
--- src-orig/gas/testsuite/gas/mips/beq.d	Tue May 15 16:33:52 2001
+++ src/gas/testsuite/gas/mips/beq.d	Tue Aug 21 17:25:46 2001
@@ -37,4 +37,10 @@ Disassembly of section .text:
 0+2006c <[^>]*> nop
 0+20070 <[^>]*> jal	0+0000 <text_label>
 [ 	]*20070: (MIPS_JMP|JMPADDR|R_MIPS_26)	.text
+0+20074 <[^>]*> nop
+0+20078 <[^>]*> b	0+20078 <text_label\+0x20078>
+[ 	]*20078: R_MIPS_PC16	external_label
+0+2007c <[^>]*> nop
+0+20080 <[^>]*> bal	0+20080 <text_label\+0x20080>
+[ 	]*20080: R_MIPS_PC16	external_label
 	...
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/beq.s src/gas/testsuite/gas/mips/beq.s
--- src-orig/gas/testsuite/gas/mips/beq.s	Mon May  3 09:28:50 1999
+++ src/gas/testsuite/gas/mips/beq.s	Tue Aug 21 17:49:33 2001
@@ -22,6 +22,10 @@ text_label:	
 	b	text_label
 	bal	text_label
 
+# Branch to an external label.
+	b	external_label
+	bal	external_label
+
 # Round to a 16 byte boundary, for ease in testing multiple targets.
 	nop
 	nop
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/bge.d src/gas/testsuite/gas/mips/bge.d
--- src-orig/gas/testsuite/gas/mips/bge.d	Tue May 15 16:33:52 2001
+++ src/gas/testsuite/gas/mips/bge.d	Tue Aug 21 17:41:59 2001
@@ -50,4 +50,20 @@ Disassembly of section .text:
 0+00a4 <[^>]*> nop
 0+00a8 <[^>]*> slt	at,a1,a0
 0+00ac <[^>]*> bnezl	at,0+0000 <text_label>
+0+00b0 <[^>]*> nop
+0+00b4 <[^>]*> slt	at,a0,a1
+0+00b8 <[^>]*> beqz	at,000000b8 <text_label\+0xb8>
+[ 	]*b8: R_MIPS_PC16	external_label
+0+00bc <[^>]*> nop
+0+00c0 <[^>]*> slt	at,a1,a0
+0+00c4 <[^>]*> bnez	at,000000c4 <text_label\+0xc4>
+[ 	]*c4: R_MIPS_PC16	external_label
+0+00c8 <[^>]*> nop
+0+00cc <[^>]*> slt	at,a0,a1
+0+00d0 <[^>]*> beqzl	at,000000d0 <text_label\+0xd0>
+[ 	]*d0: R_MIPS_PC16	external_label
+0+00d4 <[^>]*> nop
+0+00d8 <[^>]*> slt	at,a1,a0
+0+00dc <[^>]*> bnezl	at,000000dc <text_label\+0xdc>
+[ 	]*dc: R_MIPS_PC16	external_label
 	...
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/bge.s src/gas/testsuite/gas/mips/bge.s
--- src-orig/gas/testsuite/gas/mips/bge.s	Mon May  3 09:28:50 1999
+++ src/gas/testsuite/gas/mips/bge.s	Tue Aug 21 17:48:35 2001
@@ -24,6 +24,12 @@ text_label:	
 	bgel	$4,$5,text_label
 	bgtl	$4,$5,text_label
 
+# Branch to an external label.
+	bge	$4,$5,external_label
+	bgt	$4,$5,external_label
+	bgel	$4,$5,external_label
+	bgtl	$4,$5,external_label
+
 # Round to a 16 byte boundary, for ease in testing multiple targets.
 	nop
 	nop
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/bgeu.d src/gas/testsuite/gas/mips/bgeu.d
--- src-orig/gas/testsuite/gas/mips/bgeu.d	Tue May 15 16:33:52 2001
+++ src/gas/testsuite/gas/mips/bgeu.d	Tue Aug 21 18:12:13 2001
@@ -44,4 +44,20 @@ Disassembly of section .text:
 0+008c <[^>]*> nop
 0+0090 <[^>]*> sltu	at,a1,a0
 0+0094 <[^>]*> bnezl	at,0+0000 <text_label>
+0+0098 <[^>]*> nop
+0+009c <[^>]*> sltu	at,a0,a1
+0+00a0 <[^>]*> beqz	at,000000a0 <text_label\+0xa0>
+[ 	]*a0: R_MIPS_PC16	external_label
+0+00a4 <[^>]*> nop
+0+00a8 <[^>]*> sltu	at,a1,a0
+0+00ac <[^>]*> bnez	at,000000ac <text_label\+0xac>
+[ 	]*ac: R_MIPS_PC16	external_label
+0+00b0 <[^>]*> nop
+0+00b4 <[^>]*> sltu	at,a0,a1
+0+00b8 <[^>]*> beqzl	at,000000b8 <text_label\+0xb8>
+[ 	]*b8: R_MIPS_PC16	external_label
+0+00bc <[^>]*> nop
+0+00c0 <[^>]*> sltu	at,a1,a0
+0+00c4 <[^>]*> bnezl	at,000000c4 <text_label\+0xc4>
+[ 	]*c4: R_MIPS_PC16	external_label
 	...
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/bgeu.s src/gas/testsuite/gas/mips/bgeu.s
--- src-orig/gas/testsuite/gas/mips/bgeu.s	Mon May  3 09:28:50 1999
+++ src/gas/testsuite/gas/mips/bgeu.s	Tue Aug 21 17:57:36 2001
@@ -22,6 +22,12 @@ text_label:	
 	bgeul	$4,$5,text_label
 	bgtul	$4,$5,text_label
 
+# Branch to an external label.
+	bgeu	$4,$5,external_label
+	bgtu	$4,$5,external_label
+	bgeul	$4,$5,external_label
+	bgtul	$4,$5,external_label
+
 # Round to a 16 byte boundary, for ease in testing multiple targets.
 	nop
 	nop
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/blt.d src/gas/testsuite/gas/mips/blt.d
--- src-orig/gas/testsuite/gas/mips/blt.d	Tue May 15 16:33:52 2001
+++ src/gas/testsuite/gas/mips/blt.d	Tue Aug 21 17:52:50 2001
@@ -50,4 +50,20 @@ Disassembly of section .text:
 0+00a4 <[^>]*> nop
 0+00a8 <[^>]*> slt	at,a1,a0
 0+00ac <[^>]*> beqzl	at,0+0000 <text_label>
+0+00b0 <[^>]*> nop
+0+00b4 <[^>]*> slt	at,a0,a1
+0+00b8 <[^>]*> bnez	at,000000b8 <text_label\+0xb8>
+[ 	]*b8: R_MIPS_PC16	external_label
+0+00bc <[^>]*> nop
+0+00c0 <[^>]*> slt	at,a1,a0
+0+00c4 <[^>]*> beqz	at,000000c4 <text_label\+0xc4>
+[ 	]*c4: R_MIPS_PC16	external_label
+0+00c8 <[^>]*> nop
+0+00cc <[^>]*> slt	at,a0,a1
+0+00d0 <[^>]*> bnezl	at,000000d0 <text_label\+0xd0>
+[ 	]*d0: R_MIPS_PC16	external_label
+0+00d4 <[^>]*> nop
+0+00d8 <[^>]*> slt	at,a1,a0
+0+00dc <[^>]*> beqzl	at,000000dc <text_label\+0xdc>
+[ 	]*dc: R_MIPS_PC16	external_label
 	...
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/blt.s src/gas/testsuite/gas/mips/blt.s
--- src-orig/gas/testsuite/gas/mips/blt.s	Mon May  3 09:28:50 1999
+++ src/gas/testsuite/gas/mips/blt.s	Tue Aug 21 17:49:12 2001
@@ -24,6 +24,12 @@ text_label:	
 	bltl	$4,$5,text_label
 	blel	$4,$5,text_label
 
+# Branch to an external label.
+	blt	$4,$5,external_label
+	ble	$4,$5,external_label
+	bltl	$4,$5,external_label
+	blel	$4,$5,external_label
+
 # Round to a 16 byte boundary, for ease in testing multiple targets.
 	nop
 	nop
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/bltu.d src/gas/testsuite/gas/mips/bltu.d
--- src-orig/gas/testsuite/gas/mips/bltu.d	Tue May 15 16:33:52 2001
+++ src/gas/testsuite/gas/mips/bltu.d	Tue Aug 21 18:05:47 2001
@@ -44,4 +44,20 @@ Disassembly of section .text:
 0+008c <[^>]*> nop
 0+0090 <[^>]*> sltu	at,a1,a0
 0+0094 <[^>]*> beqzl	at,0+0000 <text_label>
+0+0098 <[^>]*> nop
+0+009c <[^>]*> sltu	at,a0,a1
+0+00a0 <[^>]*> bnez	at,000000a0 <text_label\+0xa0>
+[ 	]*a0: R_MIPS_PC16	external_label
+0+00a4 <[^>]*> nop
+0+00a8 <[^>]*> sltu	at,a1,a0
+0+00ac <[^>]*> beqz	at,000000ac <text_label\+0xac>
+[ 	]*ac: R_MIPS_PC16	external_label
+0+00b0 <[^>]*> nop
+0+00b4 <[^>]*> sltu	at,a0,a1
+0+00b8 <[^>]*> bnezl	at,000000b8 <text_label\+0xb8>
+[ 	]*b8: R_MIPS_PC16	external_label
+0+00bc <[^>]*> nop
+0+00c0 <[^>]*> sltu	at,a1,a0
+0+00c4 <[^>]*> beqzl	at,000000c4 <text_label\+0xc4>
+[ 	]*c4: R_MIPS_PC16	external_label
 	...
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/bltu.s src/gas/testsuite/gas/mips/bltu.s
--- src-orig/gas/testsuite/gas/mips/bltu.s	Mon May  3 09:28:50 1999
+++ src/gas/testsuite/gas/mips/bltu.s	Tue Aug 21 18:03:14 2001
@@ -22,6 +22,12 @@ text_label:	
 	bltul	$4,$5,text_label
 	bleul	$4,$5,text_label
 
+# Branch to an external label.
+	bltu	$4,$5,external_label
+	bleu	$4,$5,external_label
+	bltul	$4,$5,external_label
+	bleul	$4,$5,external_label
+
 # Round to a 16 byte boundary, for ease in testing multiple targets.
 	nop
 	nop
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/elempic.d src/gas/testsuite/gas/mips/elempic.d
--- src-orig/gas/testsuite/gas/mips/elempic.d	Sat Aug 25 02:48:49 2001
+++ src/gas/testsuite/gas/mips/elempic.d	Sat Aug 25 05:31:22 2001
@@ -25,13 +25,13 @@
 
 RELOCATION RECORDS FOR \[\.text\]:
 OFFSET [ ]+ TYPE              VALUE 
-0+0000004 R_MIPS_GNU_REL16_S2  g1
-0+000000c R_MIPS_GNU_REL16_S2  g2
-0+0000014 R_MIPS_GNU_REL16_S2  g2
-0+000001c R_MIPS_GNU_REL16_S2  \.foo
-0+0000024 R_MIPS_GNU_REL16_S2  \.text
-0+000002c R_MIPS_GNU_REL16_S2  \.foo
-0+0000034 R_MIPS_GNU_REL16_S2  \.text
+0+0000004 R_MIPS_PC16       g1
+0+000000c R_MIPS_PC16       g2
+0+0000014 R_MIPS_PC16       g2
+0+000001c R_MIPS_PC16       \.foo
+0+0000024 R_MIPS_PC16       \.text
+0+000002c R_MIPS_PC16       \.foo
+0+0000034 R_MIPS_PC16       \.text
 0+000003c R_MIPS_GNU_REL_HI16  g1
 0+0000040 R_MIPS_GNU_REL_LO16  g1
 0+0000044 R_MIPS_GNU_REL_HI16  \.foo
@@ -46,16 +46,16 @@
 0+0000078 R_MIPS_64         \.text
 0+0000080 R_MIPS_PC64       g1
 0+0000088 R_MIPS_PC64       \.foo
-0+0000098 R_MIPS_GNU_REL16_S2  \.text
-0+000009c R_MIPS_GNU_REL16_S2  \.text
+0+0000098 R_MIPS_PC16       \.text
+0+000009c R_MIPS_PC16       \.text
 0+00000a0 R_MIPS_GNU_REL_HI16  \.text
 0+00000a4 R_MIPS_GNU_REL_LO16  \.text
 0+00000a8 R_MIPS_GNU_REL_HI16  \.text
 0+00000ac R_MIPS_GNU_REL_LO16  \.text
 0+00000b0 R_MIPS_32         \.text
 0+00000b8 R_MIPS_64         \.text
-0+00000cc R_MIPS_GNU_REL16_S2  \.text
-0+00000d0 R_MIPS_GNU_REL16_S2  \.text
+0+00000cc R_MIPS_PC16       \.text
+0+00000d0 R_MIPS_PC16       \.text
 0+00000dc R_MIPS_32         \.text
 0+00000e8 R_MIPS_64         \.text
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/empic.d src/gas/testsuite/gas/mips/empic.d
--- src-orig/gas/testsuite/gas/mips/empic.d	Sun Aug 12 13:34:58 2001
+++ src/gas/testsuite/gas/mips/empic.d	Mon Aug 20 05:41:20 2001
@@ -24,13 +24,13 @@ SYMBOL TABLE:
 
 RELOCATION RECORDS FOR \[\.text\]:
 OFFSET [ ]+ TYPE              VALUE 
-0+0000004 R_MIPS_GNU_REL16_S2  g1
-0+000000c R_MIPS_GNU_REL16_S2  g2
-0+0000014 R_MIPS_GNU_REL16_S2  g2
-0+000001c R_MIPS_GNU_REL16_S2  \.foo
-0+0000024 R_MIPS_GNU_REL16_S2  \.text
-0+000002c R_MIPS_GNU_REL16_S2  \.foo
-0+0000034 R_MIPS_GNU_REL16_S2  \.text
+0+0000004 R_MIPS_PC16       g1
+0+000000c R_MIPS_PC16       g2
+0+0000014 R_MIPS_PC16       g2
+0+000001c R_MIPS_PC16       \.foo
+0+0000024 R_MIPS_PC16       \.text
+0+000002c R_MIPS_PC16       \.foo
+0+0000034 R_MIPS_PC16       \.text
 0+000003c R_MIPS_GNU_REL_HI16  g1
 0+0000040 R_MIPS_GNU_REL_LO16  g1
 0+0000044 R_MIPS_GNU_REL_HI16  \.foo
@@ -45,16 +45,16 @@ OFFSET [ ]+ TYPE              VALUE 
 0+0000078 R_MIPS_64         \.text
 0+0000080 R_MIPS_PC64       g1
 0+0000088 R_MIPS_PC64       \.foo
-0+0000098 R_MIPS_GNU_REL16_S2  \.text
-0+000009c R_MIPS_GNU_REL16_S2  \.text
+0+0000098 R_MIPS_PC16       \.text
+0+000009c R_MIPS_PC16       \.text
 0+00000a0 R_MIPS_GNU_REL_HI16  \.text
 0+00000a4 R_MIPS_GNU_REL_LO16  \.text
 0+00000a8 R_MIPS_GNU_REL_HI16  \.text
 0+00000ac R_MIPS_GNU_REL_LO16  \.text
 0+00000b0 R_MIPS_32         \.text
 0+00000b8 R_MIPS_64         \.text
-0+00000cc R_MIPS_GNU_REL16_S2  \.text
-0+00000d0 R_MIPS_GNU_REL16_S2  \.text
+0+00000cc R_MIPS_PC16       \.text
+0+00000d0 R_MIPS_PC16       \.text
 0+00000dc R_MIPS_32         \.text
 0+00000e8 R_MIPS_64         \.text
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/empic.s src/gas/testsuite/gas/mips/empic.s
--- src-orig/gas/testsuite/gas/mips/empic.s	Wed Dec 13 02:59:48 2000
+++ src/gas/testsuite/gas/mips/empic.s	Mon Aug 20 05:51:44 2001
@@ -3,20 +3,20 @@
 	.text
 	.set noreorder
 	nop
-l2:	jal	g1		# R_MIPS_GNU_REL16_S2	g1   -1
+l2:	jal	g1		# R_MIPS_PC16	g1   -1
 	nop
-	b	g2		# R_MIPS_GNU_REL16_S2	g2   -1
+	b	g2		# R_MIPS_PC16	g2   -1
 	nop
-	b	g2		# R_MIPS_GNU_REL16_S2	g2   -1
+	b	g2		# R_MIPS_PC16	g2   -1
 	nop
-	jal	l1		# R_MIPS_GNU_REL16_S2	.foo 3F
+	jal	l1		# R_MIPS_PC16	.foo 3F
 	nop
-	jal	l2		# R_MIPS_GNU_REL16_S2	.text 0  or -9
+	jal	l2		# R_MIPS_PC16	.text 0  or -9
 	nop
-	b	l1+8		# R_MIPS_GNU_REL16_S2	.foo 41
+	b	l1+8		# R_MIPS_PC16	.foo 41
 	nop
 l3:
-	b	l2		# R_MIPS_GNU_REL16_S2	.text 0  or -D
+	b	l2		# R_MIPS_PC16	.text 0  or -D
 	nop
 	la	$3,g1-l3	# R_MIPS_GNU_REL_HI16   g1   0
 				# R_MIPS_GNU_REL_LO16   g1   C
@@ -37,8 +37,8 @@ l3:
 	.dword	l1-l3		# R_MIPS_PC64	.foo  154
 	.dword	l2-l3		# -30
 l5:
-	b	2f		# R_MIPS_GNU_REL16_S2	.text 32
-	b	2f+4		# R_MIPS_GNU_REL16_S2	.text 33
+	b	2f		# R_MIPS_PC16	.text 32
+	b	2f+4		# R_MIPS_PC16	.text 33
 	la	$3,2f-l5	# R_MIPS_GNU_REL_HI16	.text 0
 	                        # R_MIPS_GNU_REL_LO16   .text D8
 	la	$3,2f+8-l5	# R_MIPS_GNU_REL_HI16	.text 0
@@ -51,8 +51,8 @@ l5:
 	.dword	2f-l5		# R_MIPS_PC64	.text F8  or 34
 	nop
 2:				# at address 0xCC.
-	b	2b		# R_MIPS_GNU_REL16_S2	.text 32
-	b	2b+4		# R_MIPS_GNU_REL16_S2	.text 33
+	b	2b		# R_MIPS_PC16	.text 32
+	b	2b+4		# R_MIPS_PC16	.text 33
 	la      $3,2b-l5        # 34
 	la      $3,2b+8-l5      # 3C
 	.word	2b		# R_MIPS_32	.text CC
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/telempic.d src/gas/testsuite/gas/mips/telempic.d
--- src-orig/gas/testsuite/gas/mips/telempic.d	Sun Aug 12 13:35:04 2001
+++ src/gas/testsuite/gas/mips/telempic.d	Mon Aug 20 05:48:02 2001
@@ -25,13 +25,13 @@ SYMBOL TABLE:
 
 RELOCATION RECORDS FOR \[\.text\]:
 OFFSET [ ]+ TYPE              VALUE 
-0+0000004 R_MIPS_GNU_REL16_S2  g1
-0+000000c R_MIPS_GNU_REL16_S2  g2
-0+0000014 R_MIPS_GNU_REL16_S2  g2
-0+000001c R_MIPS_GNU_REL16_S2  \.foo
-0+0000024 R_MIPS_GNU_REL16_S2  \.text
-0+000002c R_MIPS_GNU_REL16_S2  \.foo
-0+0000034 R_MIPS_GNU_REL16_S2  \.text
+0+0000004 R_MIPS_PC16       g1
+0+000000c R_MIPS_PC16       g2
+0+0000014 R_MIPS_PC16       g2
+0+000001c R_MIPS_PC16       \.foo
+0+0000024 R_MIPS_PC16       \.text
+0+000002c R_MIPS_PC16       \.foo
+0+0000034 R_MIPS_PC16       \.text
 0+000003c R_MIPS_GNU_REL_HI16  g1
 0+0000040 R_MIPS_GNU_REL_LO16  g1
 0+0000044 R_MIPS_GNU_REL_HI16  \.foo
@@ -46,16 +46,16 @@ OFFSET [ ]+ TYPE              VALUE 
 0+0000078 R_MIPS_64         \.text
 0+0000080 R_MIPS_PC64       g1
 0+0000088 R_MIPS_PC64       \.foo
-0+0000098 R_MIPS_GNU_REL16_S2  \.text
-0+000009c R_MIPS_GNU_REL16_S2  \.text
+0+0000098 R_MIPS_PC16       \.text
+0+000009c R_MIPS_PC16       \.text
 0+00000a0 R_MIPS_GNU_REL_HI16  \.text
 0+00000a4 R_MIPS_GNU_REL_LO16  \.text
 0+00000a8 R_MIPS_GNU_REL_HI16  \.text
 0+00000ac R_MIPS_GNU_REL_LO16  \.text
 0+00000b0 R_MIPS_32         \.text
 0+00000b8 R_MIPS_64         \.text
-0+00000cc R_MIPS_GNU_REL16_S2  \.text
-0+00000d0 R_MIPS_GNU_REL16_S2  \.text
+0+00000cc R_MIPS_PC16       \.text
+0+00000d0 R_MIPS_PC16       \.text
 0+00000dc R_MIPS_32         \.text
 0+00000e8 R_MIPS_64         \.text
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/tempic.d src/gas/testsuite/gas/mips/tempic.d
--- src-orig/gas/testsuite/gas/mips/tempic.d	Sun Aug 12 13:35:04 2001
+++ src/gas/testsuite/gas/mips/tempic.d	Mon Aug 20 05:55:37 2001
@@ -25,13 +25,13 @@ SYMBOL TABLE:
 
 RELOCATION RECORDS FOR \[\.text\]:
 OFFSET [ ]+ TYPE              VALUE 
-0+0000004 R_MIPS_GNU_REL16_S2  g1
-0+000000c R_MIPS_GNU_REL16_S2  g2
-0+0000014 R_MIPS_GNU_REL16_S2  g2
-0+000001c R_MIPS_GNU_REL16_S2  \.foo
-0+0000024 R_MIPS_GNU_REL16_S2  \.text
-0+000002c R_MIPS_GNU_REL16_S2  \.foo
-0+0000034 R_MIPS_GNU_REL16_S2  \.text
+0+0000004 R_MIPS_PC16       g1
+0+000000c R_MIPS_PC16       g2
+0+0000014 R_MIPS_PC16       g2
+0+000001c R_MIPS_PC16       \.foo
+0+0000024 R_MIPS_PC16       \.text
+0+000002c R_MIPS_PC16       \.foo
+0+0000034 R_MIPS_PC16       \.text
 0+000003c R_MIPS_GNU_REL_HI16  g1
 0+0000040 R_MIPS_GNU_REL_LO16  g1
 0+0000044 R_MIPS_GNU_REL_HI16  \.foo
@@ -46,16 +46,16 @@ OFFSET [ ]+ TYPE              VALUE 
 0+0000078 R_MIPS_64         \.text
 0+0000080 R_MIPS_PC64       g1
 0+0000088 R_MIPS_PC64       \.foo
-0+0000098 R_MIPS_GNU_REL16_S2  \.text
-0+000009c R_MIPS_GNU_REL16_S2  \.text
+0+0000098 R_MIPS_PC16       \.text
+0+000009c R_MIPS_PC16       \.text
 0+00000a0 R_MIPS_GNU_REL_HI16  \.text
 0+00000a4 R_MIPS_GNU_REL_LO16  \.text
 0+00000a8 R_MIPS_GNU_REL_HI16  \.text
 0+00000ac R_MIPS_GNU_REL_LO16  \.text
 0+00000b0 R_MIPS_32         \.text
 0+00000b8 R_MIPS_64         \.text
-0+00000cc R_MIPS_GNU_REL16_S2  \.text
-0+00000d0 R_MIPS_GNU_REL16_S2  \.text
+0+00000cc R_MIPS_PC16       \.text
+0+00000d0 R_MIPS_PC16       \.text
 0+00000dc R_MIPS_32         \.text
 0+00000e8 R_MIPS_64         \.text
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]