aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog8
-rw-r--r--bfd/elf32-i386.c2
-rw-r--r--bfd/elf64-x86-64.c2
-rw-r--r--ld/testsuite/ChangeLog6
-rw-r--r--ld/testsuite/ld-i386/pcrel16.d15
-rw-r--r--ld/testsuite/ld-i386/pcrel16.s18
-rw-r--r--ld/testsuite/ld-x86-64/pcrel16.d15
7 files changed, 50 insertions, 16 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 9a57470..f413454 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2005-08-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elf32-i386.c (elf_howto_table): Undo the overflow change for
+ R_386_PC16 made on 2005-07-18.
+
+ * elf64-x86-64.c (x86_64_elf_howto_table): Undo the overflow
+ change for R_X86_64_PC16 made on 2005-07-18.
+
2005-08-03 Alan Modra <amodra@bigpond.net.au>
* elf32-ppc.c (struct ppc_elf_link_hash_table): Remove hgot. Use
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index a9dff21..48e76e9 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -95,7 +95,7 @@ static reloc_howto_type elf_howto_table[]=
HOWTO(R_386_16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_386_16",
TRUE, 0xffff, 0xffff, FALSE),
- HOWTO(R_386_PC16, 0, 1, 16, TRUE, 0, complain_overflow_signed,
+ HOWTO(R_386_PC16, 0, 1, 16, TRUE, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_386_PC16",
TRUE, 0xffff, 0xffff, TRUE),
HOWTO(R_386_8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield,
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index c100f3e..196b237 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -73,7 +73,7 @@ static reloc_howto_type x86_64_elf_howto_table[] =
FALSE),
HOWTO(R_X86_64_16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_X86_64_16", FALSE, 0xffff, 0xffff, FALSE),
- HOWTO(R_X86_64_PC16,0, 1, 16, TRUE, 0, complain_overflow_signed,
+ HOWTO(R_X86_64_PC16,0, 1, 16, TRUE, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_X86_64_PC16", FALSE, 0xffff, 0xffff, TRUE),
HOWTO(R_X86_64_8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_X86_64_8", FALSE, 0xff, 0xff, FALSE),
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index aa75510..88d170b 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2005-08-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * ld-i386/pcrel16.d: Updated.
+ * ld-i386/pcrel16.s: Likewise.
+ * ld-x86-64/pcrel16.d: Likewise.
+
2005-08-01 Richard Sandiford <richard@codesourcery.com>
* ld-mips/mips-elf-flags.exp: Add more good_combination tests.
diff --git a/ld/testsuite/ld-i386/pcrel16.d b/ld/testsuite/ld-i386/pcrel16.d
index 1e8f182..0c438a9 100644
--- a/ld/testsuite/ld-i386/pcrel16.d
+++ b/ld/testsuite/ld-i386/pcrel16.d
@@ -1,3 +1,14 @@
#name: PCREL16 overflow
-#ld:
-#error: .*relocation truncated to fit: R_386_PC16 .*
+#ld: -Ttext 0x0
+#objdump: -drj.text -m i8086
+
+.*: +file format elf32-i386
+
+Disassembly of section .text:
+
+0+ <_start>:
+ ...
+ 420: cd 42[ ]+int \$0x42
+ 422: ca 02 00[ ]+lret \$0x2
+ ...
+ f065: e9 b8 13[ ]+jmp 420 <_start\+0x420>
diff --git a/ld/testsuite/ld-i386/pcrel16.s b/ld/testsuite/ld-i386/pcrel16.s
index 269d9ca..d68a6c6 100644
--- a/ld/testsuite/ld-i386/pcrel16.s
+++ b/ld/testsuite/ld-i386/pcrel16.s
@@ -1,11 +1,9 @@
- .text
- .code16
- .global _start, fwd
+ .code16
+ .text
+ .globl _start
_start:
- jpo fwd
- .rept 2500
- testl $0x12345678, %ss:0x76543210(,%eax,4)
- .endr
-fwd:
- leave
- ret
+ .org 0x420
+ int $0x42
+ lret $2
+ .org 0xf065
+ jmp _start+((0x42) << 4)
diff --git a/ld/testsuite/ld-x86-64/pcrel16.d b/ld/testsuite/ld-x86-64/pcrel16.d
index 41da975..f593657 100644
--- a/ld/testsuite/ld-x86-64/pcrel16.d
+++ b/ld/testsuite/ld-x86-64/pcrel16.d
@@ -1,4 +1,15 @@
#name: PCREL16 overflow
#source: ../ld-i386/pcrel16.s
-#ld:
-#error: .*relocation truncated to fit: R_X86_64_PC16 .*
+#ld: -Ttext 0x0
+#objdump: -drj.text -m i8086
+
+.*: +file format elf64-x86-64
+
+Disassembly of section .text:
+
+0+ <_start>:
+ ...
+ 420: cd 42[ ]+int \$0x42
+ 422: ca 02 00[ ]+lret \$0x2
+ ...
+ f065: e9 b8 13[ ]+jmp 420 <_start\+0x420>