aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/lib
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2020-09-16 07:11:16 -0700
committerH.J. Lu <hjl.tools@gmail.com>2020-09-16 07:11:31 -0700
commit36068e2fa5460e6cfa1f5f359df6f37c497aab50 (patch)
tree9852e7ae898e51e89bb77fbab30606d76c6acf74 /ld/testsuite/lib
parent337882d477675296a22fd8c1f7412ca30c70d9b0 (diff)
downloadbinutils-36068e2fa5460e6cfa1f5f359df6f37c497aab50.zip
binutils-36068e2fa5460e6cfa1f5f359df6f37c497aab50.tar.gz
binutils-36068e2fa5460e6cfa1f5f359df6f37c497aab50.tar.bz2
elf/x86-64: Adjust relocation for PE/x86-64 inputs
PE linker calls _bfd_relocate_contents to resolve relocation, instead of bfd_perform_relocation. But ELF linker calls bfd_perform_relocation, not _bfd_relocate_contents. When linking PE/x86-64 inputs to generate ELF output, we need to adjust PE/x86-64 relocations in bfd_perform_relocation. Enable PE/x86-64 in bfd together with PEI/x86-64. Update run_ld_link_tests to handle bzip2 binary inputs. bfd/ PR ld/26583 * config.bfd (targ64_selvecs, targ_selvecs): Add x86_64_pe_vec to x86_64_pei_vec. * reloc.c: Include "coff/internal.h". (bfd_perform_relocation): Adjust relocation for PE/x86-64 inputs. ld/ PR ld/26583 * testsuite/ld-x86-64/pe-x86-64-1.od: New file. * testsuite/ld-x86-64/pe-x86-64-1a.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-1b.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-1c.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-2.od: Likewise. * testsuite/ld-x86-64/pe-x86-64-2a.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-2b.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-2c.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-3.od: Likewise. * testsuite/ld-x86-64/pe-x86-64-3a.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-3b.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-3c.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-3d.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-4.od: Likewise. * testsuite/ld-x86-64/pe-x86-64-4a.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-4b.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-4c.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64-4d.obj.bz2: Likewise. * testsuite/ld-x86-64/pe-x86-64.exp: Likewise. * testsuite/lib/ld-lib.exp (run_ld_link_tests): Handle bz2 binary inputs.
Diffstat (limited to 'ld/testsuite/lib')
-rw-r--r--ld/testsuite/lib/ld-lib.exp32
1 files changed, 22 insertions, 10 deletions
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index 7972e8f..e933be7 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -506,22 +506,34 @@ proc run_ld_link_tests { ldtests args } {
# Assemble each file in the test.
foreach src_file $src_files {
set fileroot "[file rootname [file tail $src_file]]"
- set objfile "tmpdir/$fileroot.o"
- lappend objfiles $objfile
- if { [file extension $src_file] == ".c" } {
- set as_file "tmpdir/$fileroot.s"
- if ![ld_compile "$CC -S $CFLAGS $cflags" $srcdir/$subdir/$src_file $as_file] {
+ if { [file extension $src_file] == ".bz2" } {
+ set objfile tmpdir/[file rootname $src_file]
+ set unbzip2 "system \"bzip2 -dc $srcdir/$subdir/$src_file > $objfile\""
+ send_log "$unbzip2\n"
+ catch "$unbzip2" exec_output
+ if ![string match "" $exec_output] then {
+ send_log "$exec_output\n"
set is_unresolved 1
break
}
} else {
- set as_file "$srcdir/$subdir/$src_file"
- }
- if ![ld_assemble $as "$as_options $as_file" $objfile] {
- set failed 1
- break
+ set objfile "tmpdir/$fileroot.o"
+ if { [file extension $src_file] == ".c" } {
+ set as_file "tmpdir/$fileroot.s"
+ if ![ld_compile "$CC -S $CFLAGS $cflags" $srcdir/$subdir/$src_file $as_file] {
+ set is_unresolved 1
+ break
+ }
+ } else {
+ set as_file "$srcdir/$subdir/$src_file"
+ }
+ if ![ld_assemble $as "$as_options $as_file" $objfile] {
+ set failed 1
+ break
+ }
}
+ lappend objfiles $objfile
}
# Catch assembler errors.