Support 8 and 16-bit relocs for i386coff. Enable i386 gas testsuite tests

previously disabled for lack of such support.  For *-*-linux*libc1 targets,
XFAIL a ld testsuite that fails due to a bug in the dynamic linker prior to
glibc-2.1.
This commit is contained in:
Alan Modra 1999-09-18 00:44:47 +00:00
parent 9f5b33d795
commit b7be1db6b5
7 changed files with 132 additions and 107 deletions

View file

@ -1,3 +1,9 @@
1999-09-17 Alan Modra <alan@spri.levels.unisa.edu.au>
* coff-i386.c (coff_i386_reloc_type_lookup): Support BFD_RELOC_16,
BFD_RELOC_16_PCREL, BFD_RELOC_8, BFD_RELOC_8_PCREL relocs.
(reloc_howto_type howto_table): Tidy comments and whitespace.
1999-09-17 Nick Clifton <nickc@cygnus.com> 1999-09-17 Nick Clifton <nickc@cygnus.com>
* elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Undo * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Undo

View file

@ -489,11 +489,19 @@ coff_i386_reloc_type_lookup (abfd, code)
switch (code) switch (code)
{ {
case BFD_RELOC_RVA: case BFD_RELOC_RVA:
return howto_table +R_IMAGEBASE; return howto_table + R_IMAGEBASE;
case BFD_RELOC_32: case BFD_RELOC_32:
return howto_table + R_DIR32; return howto_table + R_DIR32;
case BFD_RELOC_32_PCREL: case BFD_RELOC_32_PCREL:
return howto_table + R_PCRLONG; return howto_table + R_PCRLONG;
case BFD_RELOC_16:
return howto_table + R_RELWORD;
case BFD_RELOC_16_PCREL:
return howto_table + R_PCRWORD;
case BFD_RELOC_8:
return howto_table + R_RELBYTE;
case BFD_RELOC_8_PCREL:
return howto_table + R_PCRBYTE;
default: default:
BFD_FAIL (); BFD_FAIL ();
return 0; return 0;

View file

@ -1,3 +1,8 @@
1999-09-17 Alan Modra <alan@spri.levels.unisa.edu.au>
* gas/i386/i386.exp: Enable reloc and white tests for COFF.
* gas/i386/reloc.d: Accept dir32 relocs.
1999-09-12 Donn Terry <donn@interix.com> 1999-09-12 Donn Terry <donn@interix.com>
* gas/all/gas.exp: Run cofftag test for i*86-*-interix*. * gas/all/gas.exp: Run cofftag test for i*86-*-interix*.

View file

@ -28,8 +28,8 @@ if [istarget "i*86-*-*"] then {
run_dump_test "katmai" run_dump_test "katmai"
# The reloc and white tests require support for 8 and 16 bit # The reloc and white tests require support for 8 and 16 bit
# relocs, so we only run them for ELF targets. # relocs, so we only run them for ELF and COFF targets.
if {[istarget "*-*-elf*"] || [istarget "*-*-linux*"]} then { if {[istarget "*-*-elf*"] || [istarget "*-*-linux*"] || [istarget "*-*-coff*"]} then {
run_dump_test "reloc" run_dump_test "reloc"
run_list_test "white" "-al --listing-lhs-width=3" run_list_test "white" "-al --listing-lhs-width=3"
} }

View file

@ -7,11 +7,11 @@ Disassembly of section .text:
0+000 <foo>: 0+000 <foo>:
0: b3 00 [ ]*mov \$0x0,%bl 1: (R_386_)?8 .text 0: b3 00 [ ]*mov \$0x0,%bl 1: (R_386_)?8 .text
2: 68 00 00 00 00 [ ]*push \$0x0 3: (R_386_)?32 .text 2: 68 00 00 00 00 [ ]*push \$0x0 3: (R_386_)?(dir)?32 .text
7: 05 00 00 00 00 [ ]*add \$0x0,%eax 8: (R_386_)?32 .text 7: 05 00 00 00 00 [ ]*add \$0x0,%eax 8: (R_386_)?(dir)?32 .text
c: 81 c3 00 00 00 00 [ ]*add \$0x0,%ebx e: (R_386_)?32 .text c: 81 c3 00 00 00 00 [ ]*add \$0x0,%ebx e: (R_386_)?(dir)?32 .text
12: 69 d2 00 00 00 00 [ ]*imul \$0x0,%edx,%edx 14: (R_386_)?32 .text 12: 69 d2 00 00 00 00 [ ]*imul \$0x0,%edx,%edx 14: (R_386_)?(dir)?32 .text
18: 9a 00 00 00 00 00 00 [ ]*lcall \$0x0,\$0x0 19: (R_386_)?32 .text 18: 9a 00 00 00 00 00 00 [ ]*lcall \$0x0,\$0x0 19: (R_386_)?(dir)?32 .text
1f: 66 68 00 00 [ ]*pushw \$0x0 21: (R_386_)?16 .text 1f: 66 68 00 00 [ ]*pushw \$0x0 21: (R_386_)?16 .text
23: 90 [ ]*nop 23: 90 [ ]*nop
24: 90 [ ]*nop 24: 90 [ ]*nop

View file

@ -1,3 +1,8 @@
1999-09-17 Alan Modra <alan@spri.levels.unisa.edu.au>
* ld-shared/shared.exp: xfail linux*libc1 shared (non PIC, load
offset) test.
1999-09-12 Ian Lance Taylor <ian@zembu.com> 1999-09-12 Ian Lance Taylor <ian@zembu.com>
* ld-scripts/script.exp: Add --image-base 0 for PE targets. * ld-scripts/script.exp: Add --image-base 0 for PE targets.

View file

@ -203,6 +203,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG" $srcdir/$subdir/main.c $tmpdir/mainnp.o]
# relocations for various targets are broken in the case where # relocations for various targets are broken in the case where
# the load address is not zero (which is the default). # the load address is not zero (which is the default).
setup_xfail "*-*-sunos4*" setup_xfail "*-*-sunos4*"
setup_xfail "*-*-linux*libc1"
shared_test shnp "shared (non PIC, load offset)" \ shared_test shnp "shared (non PIC, load offset)" \
mainnp.o sh1np.o sh2np.o shared \ mainnp.o sh1np.o sh2np.o shared \
"-T $srcdir/$subdir/elf-offset.ld" "-T $srcdir/$subdir/elf-offset.ld"