diff options
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elf32-i386.c | 2 | ||||
-rw-r--r-- | bfd/elf64-x86-64.c | 6 | ||||
-rw-r--r-- | ld/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/abs.d | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/abs.s | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/i386.exp | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pcrel16.d | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pcrel16.s | 11 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pcrel8.d | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pcrel8.s | 11 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/zero.s | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/abs.d | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pcrel16.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pcrel8.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/x86-64.exp | 4 |
16 files changed, 92 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ca48abc86e..fa19b934b5 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2005-07-18 Jan Beulich <jbeulich@novell.com> + + * elf32-i386.c (elf_howto_table): Adjust overflow complaint handler + for R_386_PC16. + * elf64-x86-64.c (x86_64_elf_howto_table): Adjust overflow complaint + handler for R_X86_64_PC16, R_X86_64_8, and R_X86_64_DTPOFF. + 2005-07-16 Eric Botcazou <ebotcazou@libertysurf.fr> PR ld/1021 diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 48e76e916e..a9dff218ca 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_bitfield, + HOWTO(R_386_PC16, 0, 1, 16, TRUE, 0, complain_overflow_signed, 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 d5c4335309..598d3082e5 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -73,9 +73,9 @@ 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_bitfield, + HOWTO(R_X86_64_PC16,0, 1, 16, TRUE, 0, complain_overflow_signed, bfd_elf_generic_reloc, "R_X86_64_PC16", FALSE, 0xffff, 0xffff, TRUE), - HOWTO(R_X86_64_8, 0, 0, 8, FALSE, 0, complain_overflow_signed, + 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), HOWTO(R_X86_64_PC8, 0, 0, 8, TRUE, 0, complain_overflow_signed, bfd_elf_generic_reloc, "R_X86_64_PC8", FALSE, 0xff, 0xff, TRUE), @@ -94,7 +94,7 @@ static reloc_howto_type x86_64_elf_howto_table[] = HOWTO(R_X86_64_TLSLD, 0, 2, 32, TRUE, 0, complain_overflow_signed, bfd_elf_generic_reloc, "R_X86_64_TLSLD", FALSE, 0xffffffff, 0xffffffff, TRUE), - HOWTO(R_X86_64_DTPOFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, + HOWTO(R_X86_64_DTPOFF32, 0, 2, 32, FALSE, 0, complain_overflow_signed, bfd_elf_generic_reloc, "R_X86_64_DTPOFF32", FALSE, 0xffffffff, 0xffffffff, FALSE), HOWTO(R_X86_64_GOTTPOFF, 0, 2, 32, TRUE, 0, complain_overflow_signed, diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index bc42d5a1c5..23659abf26 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2005-07-18 Jan Beulich <jbeulich@novell.com> + + * ld-i386/abs.s, ld-i386/zero.s, ld-i386/abs.d, ld-x86-64/abs.d, + ld-i386/pcrel16.s, ld-i386/pcrel16.d, ld-x86-64/pcrel16.d, + ld-i386/pcrel8.s, ld-i386/pcrel8.d, ld-x86-64/pcrel8.d: New. + * ld-i386/i386.exp, ld-x86-64/x86-64.exp: Run new tests. + 2005-07-14 H.J. Lu <hongjiu.lu@intel.com> * lib/ld-lib.exp (run_ld_link_exec_tests): Ignore assembler diff --git a/ld/testsuite/ld-i386/abs.d b/ld/testsuite/ld-i386/abs.d new file mode 100644 index 0000000000..62935154de --- /dev/null +++ b/ld/testsuite/ld-i386/abs.d @@ -0,0 +1,10 @@ +#name: Absolute non-overflowing relocs +#source: abs.s +#source: zero.s +#ld: +#objdump: -rs + +.*: file format .* + +Contents of section \.text: +[ ][0-9a-f]+ c800fff0 c8000110 c9c3.* diff --git a/ld/testsuite/ld-i386/abs.s b/ld/testsuite/ld-i386/abs.s new file mode 100644 index 0000000000..27059508cf --- /dev/null +++ b/ld/testsuite/ld-i386/abs.s @@ -0,0 +1,8 @@ + .text + .global _start +_start: + enter $zero + 0xff00, $zero + 0xf0 + enter $zero - 0xff00, $zero - 0xf0 + leave + ret + .p2align 4,0x90 diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index 13d8e77197..05343f0297 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -64,3 +64,7 @@ set i386tests { } run_ld_link_tests $i386tests + +run_dump_test "abs" +run_dump_test "pcrel8" +run_dump_test "pcrel16" diff --git a/ld/testsuite/ld-i386/pcrel16.d b/ld/testsuite/ld-i386/pcrel16.d new file mode 100644 index 0000000000..1e8f1821f1 --- /dev/null +++ b/ld/testsuite/ld-i386/pcrel16.d @@ -0,0 +1,3 @@ +#name: PCREL16 overflow +#ld: +#error: .*relocation truncated to fit: R_386_PC16 .* diff --git a/ld/testsuite/ld-i386/pcrel16.s b/ld/testsuite/ld-i386/pcrel16.s new file mode 100644 index 0000000000..269d9caa9f --- /dev/null +++ b/ld/testsuite/ld-i386/pcrel16.s @@ -0,0 +1,11 @@ + .text + .code16 + .global _start, fwd +_start: + jpo fwd + .rept 2500 + testl $0x12345678, %ss:0x76543210(,%eax,4) + .endr +fwd: + leave + ret diff --git a/ld/testsuite/ld-i386/pcrel8.d b/ld/testsuite/ld-i386/pcrel8.d new file mode 100644 index 0000000000..ed939a32fd --- /dev/null +++ b/ld/testsuite/ld-i386/pcrel8.d @@ -0,0 +1,3 @@ +#name: PCREL8 overflow +#ld: +#error: .*relocation truncated to fit: R_386_PC8 .* diff --git a/ld/testsuite/ld-i386/pcrel8.s b/ld/testsuite/ld-i386/pcrel8.s new file mode 100644 index 0000000000..e624aafabc --- /dev/null +++ b/ld/testsuite/ld-i386/pcrel8.s @@ -0,0 +1,11 @@ + .text + .code16 + .global _start, fwd +_start: + jcxz fwd + .rept 10 + testl $0x12345678, %ss:0x76543210(,%eax,4) + .endr +fwd: + leave + ret diff --git a/ld/testsuite/ld-i386/zero.s b/ld/testsuite/ld-i386/zero.s new file mode 100644 index 0000000000..f716bbabf9 --- /dev/null +++ b/ld/testsuite/ld-i386/zero.s @@ -0,0 +1,2 @@ + .global zero + .equiv zero, 0 diff --git a/ld/testsuite/ld-x86-64/abs.d b/ld/testsuite/ld-x86-64/abs.d new file mode 100644 index 0000000000..b24b018639 --- /dev/null +++ b/ld/testsuite/ld-x86-64/abs.d @@ -0,0 +1,10 @@ +#name: Absolute non-overflowing relocs +#source: ../ld-i386/abs.s +#source: ../ld-i386/zero.s +#ld: +#objdump: -rs + +.*: file format .* + +Contents of section \.text: +[ ][0-9a-f]+ c800fff0 c8000110 c9c3.* diff --git a/ld/testsuite/ld-x86-64/pcrel16.d b/ld/testsuite/ld-x86-64/pcrel16.d new file mode 100644 index 0000000000..41da975b20 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pcrel16.d @@ -0,0 +1,4 @@ +#name: PCREL16 overflow +#source: ../ld-i386/pcrel16.s +#ld: +#error: .*relocation truncated to fit: R_X86_64_PC16 .* diff --git a/ld/testsuite/ld-x86-64/pcrel8.d b/ld/testsuite/ld-x86-64/pcrel8.d new file mode 100644 index 0000000000..17a3bbac72 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pcrel8.d @@ -0,0 +1,4 @@ +#name: PCREL8 overflow +#source: ../ld-i386/pcrel8.s +#ld: +#error: .*relocation truncated to fit: R_X86_64_PC8 .* diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index 6cb309f8e9..409a65d34c 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -52,3 +52,7 @@ set x86_64tests { } run_ld_link_tests $x86_64tests + +run_dump_test "abs" +run_dump_test "pcrel8" +run_dump_test "pcrel16" |