aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite
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
parent337882d477675296a22fd8c1f7412ca30c70d9b0 (diff)
downloadgdb-36068e2fa5460e6cfa1f5f359df6f37c497aab50.zip
gdb-36068e2fa5460e6cfa1f5f359df6f37c497aab50.tar.gz
gdb-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')
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-1.od38
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-1a.obj.bz2bin0 -> 536 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-1b.obj.bz2bin0 -> 542 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-1c.obj.bz2bin0 -> 710 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-2.od38
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-2a.obj.bz2bin0 -> 557 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-2b.obj.bz2bin0 -> 537 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-2c.obj.bz2bin0 -> 718 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-3.od38
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-3a.obj.bz2bin0 -> 538 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-3b.obj.bz2bin0 -> 539 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-3c.obj.bz2bin0 -> 716 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-3d.obj.bz2bin0 -> 432 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-4.od67
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-4a.obj.bz2bin0 -> 668 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-4b.obj.bz2bin0 -> 536 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-4c.obj.bz2bin0 -> 563 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64-4d.obj.bz2bin0 -> 438 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pe-x86-64.exp66
-rw-r--r--ld/testsuite/lib/ld-lib.exp32
20 files changed, 269 insertions, 10 deletions
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-1.od b/ld/testsuite/ld-x86-64/pe-x86-64-1.od
new file mode 100644
index 0000000..1ff644e
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-1.od
@@ -0,0 +1,38 @@
+
+.*: +file format .*
+
+SYMBOL TABLE:
+0+401000 l d .text\$mn 0000000000000000 .text\$mn
+0+402000 l d .xdata 0000000000000000 .xdata
+0+402008 l d .pdata 0000000000000000 .pdata
+0+403014 l d .bss 0000000000000000 .bss
+0+ l d .debug\$S 0000000000000000 .debug\$S
+0+401000 g .text\$mn 0000000000000000 getaddr1
+0+401020 g .text\$mn 0000000000000000 begin
+0+403014 g .bss 0000000000000000 __bss_start
+0+403014 g .bss 0000000000000000 var
+0+401010 g .text\$mn 0000000000000000 getaddr2
+0+403014 g .bss 0000000000000000 _edata
+0+403018 g .bss 0000000000000000 _end
+
+
+
+Disassembly of section .text\$mn:
+
+0+401000 <getaddr1>:
+ +[a-f0-9]+: 48 8d 05 0d 20 00 00 lea 0x200d\(%rip\),%rax # 403014 <__bss_start>
+ +[a-f0-9]+: c3 ret
+ +[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl 0x0\(%rax,%rax,1\)
+
+0+401010 <getaddr2>:
+ +[a-f0-9]+: 48 8d 05 fd 1f 00 00 lea 0x1ffd\(%rip\),%rax # 403014 <__bss_start>
+ +[a-f0-9]+: c3 ret
+ +[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl 0x0\(%rax,%rax,1\)
+
+0+401020 <begin>:
+ +[a-f0-9]+: 48 83 ec 28 sub \$0x28,%rsp
+ +[a-f0-9]+: e8 d7 ff ff ff call 401000 <getaddr1>
+ +[a-f0-9]+: e8 e2 ff ff ff call 401010 <getaddr2>
+ +[a-f0-9]+: 48 83 c4 28 add \$0x28,%rsp
+ +[a-f0-9]+: c3 ret
+#pass
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-1a.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-1a.obj.bz2
new file mode 100644
index 0000000..4272427
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-1a.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-1b.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-1b.obj.bz2
new file mode 100644
index 0000000..23b7f67
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-1b.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-1c.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-1c.obj.bz2
new file mode 100644
index 0000000..c9a14b0
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-1c.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-2.od b/ld/testsuite/ld-x86-64/pe-x86-64-2.od
new file mode 100644
index 0000000..1ff644e
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-2.od
@@ -0,0 +1,38 @@
+
+.*: +file format .*
+
+SYMBOL TABLE:
+0+401000 l d .text\$mn 0000000000000000 .text\$mn
+0+402000 l d .xdata 0000000000000000 .xdata
+0+402008 l d .pdata 0000000000000000 .pdata
+0+403014 l d .bss 0000000000000000 .bss
+0+ l d .debug\$S 0000000000000000 .debug\$S
+0+401000 g .text\$mn 0000000000000000 getaddr1
+0+401020 g .text\$mn 0000000000000000 begin
+0+403014 g .bss 0000000000000000 __bss_start
+0+403014 g .bss 0000000000000000 var
+0+401010 g .text\$mn 0000000000000000 getaddr2
+0+403014 g .bss 0000000000000000 _edata
+0+403018 g .bss 0000000000000000 _end
+
+
+
+Disassembly of section .text\$mn:
+
+0+401000 <getaddr1>:
+ +[a-f0-9]+: 48 8d 05 0d 20 00 00 lea 0x200d\(%rip\),%rax # 403014 <__bss_start>
+ +[a-f0-9]+: c3 ret
+ +[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl 0x0\(%rax,%rax,1\)
+
+0+401010 <getaddr2>:
+ +[a-f0-9]+: 48 8d 05 fd 1f 00 00 lea 0x1ffd\(%rip\),%rax # 403014 <__bss_start>
+ +[a-f0-9]+: c3 ret
+ +[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl 0x0\(%rax,%rax,1\)
+
+0+401020 <begin>:
+ +[a-f0-9]+: 48 83 ec 28 sub \$0x28,%rsp
+ +[a-f0-9]+: e8 d7 ff ff ff call 401000 <getaddr1>
+ +[a-f0-9]+: e8 e2 ff ff ff call 401010 <getaddr2>
+ +[a-f0-9]+: 48 83 c4 28 add \$0x28,%rsp
+ +[a-f0-9]+: c3 ret
+#pass
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-2a.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-2a.obj.bz2
new file mode 100644
index 0000000..31bd019
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-2a.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-2b.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-2b.obj.bz2
new file mode 100644
index 0000000..da067fd
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-2b.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-2c.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-2c.obj.bz2
new file mode 100644
index 0000000..153cfdc
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-2c.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-3.od b/ld/testsuite/ld-x86-64/pe-x86-64-3.od
new file mode 100644
index 0000000..1ff644e
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-3.od
@@ -0,0 +1,38 @@
+
+.*: +file format .*
+
+SYMBOL TABLE:
+0+401000 l d .text\$mn 0000000000000000 .text\$mn
+0+402000 l d .xdata 0000000000000000 .xdata
+0+402008 l d .pdata 0000000000000000 .pdata
+0+403014 l d .bss 0000000000000000 .bss
+0+ l d .debug\$S 0000000000000000 .debug\$S
+0+401000 g .text\$mn 0000000000000000 getaddr1
+0+401020 g .text\$mn 0000000000000000 begin
+0+403014 g .bss 0000000000000000 __bss_start
+0+403014 g .bss 0000000000000000 var
+0+401010 g .text\$mn 0000000000000000 getaddr2
+0+403014 g .bss 0000000000000000 _edata
+0+403018 g .bss 0000000000000000 _end
+
+
+
+Disassembly of section .text\$mn:
+
+0+401000 <getaddr1>:
+ +[a-f0-9]+: 48 8d 05 0d 20 00 00 lea 0x200d\(%rip\),%rax # 403014 <__bss_start>
+ +[a-f0-9]+: c3 ret
+ +[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl 0x0\(%rax,%rax,1\)
+
+0+401010 <getaddr2>:
+ +[a-f0-9]+: 48 8d 05 fd 1f 00 00 lea 0x1ffd\(%rip\),%rax # 403014 <__bss_start>
+ +[a-f0-9]+: c3 ret
+ +[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl 0x0\(%rax,%rax,1\)
+
+0+401020 <begin>:
+ +[a-f0-9]+: 48 83 ec 28 sub \$0x28,%rsp
+ +[a-f0-9]+: e8 d7 ff ff ff call 401000 <getaddr1>
+ +[a-f0-9]+: e8 e2 ff ff ff call 401010 <getaddr2>
+ +[a-f0-9]+: 48 83 c4 28 add \$0x28,%rsp
+ +[a-f0-9]+: c3 ret
+#pass
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-3a.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-3a.obj.bz2
new file mode 100644
index 0000000..1c3e28d
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-3a.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-3b.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-3b.obj.bz2
new file mode 100644
index 0000000..2af6165
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-3b.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-3c.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-3c.obj.bz2
new file mode 100644
index 0000000..821c01b
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-3c.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-3d.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-3d.obj.bz2
new file mode 100644
index 0000000..173bb41
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-3d.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-4.od b/ld/testsuite/ld-x86-64/pe-x86-64-4.od
new file mode 100644
index 0000000..e8940ba
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-4.od
@@ -0,0 +1,67 @@
+
+.*: +file format .*
+
+SYMBOL TABLE:
+0+401000 l d .text\$mn 0000000000000000 .text\$mn
+0+402000 l d .xdata 0000000000000000 .xdata
+0+402008 l d .pdata 0000000000000000 .pdata
+0+403018 l d .data 0000000000000000 .data
+0+403038 l d .bss 0000000000000000 .bss
+0+ l d .debug\$S 0000000000000000 .debug\$S
+0+403038 g .bss 0000000000000000 c
+0+401000 g .text\$mn 0000000000000000 begin
+0+403038 g .bss 0000000000000000 __bss_start
+0+403018 g .data 0000000000000000 Struct
+0+401020 g .text\$mn 0000000000000000 opti_O1
+0+403038 g .data 0000000000000000 _edata
+0+403040 g .bss 0000000000000000 _end
+0+401060 g .text\$mn 0000000000000000 opti_Od
+
+
+
+Disassembly of section .text\$mn:
+
+0+401000 <begin>:
+ +[a-f0-9]+: 48 83 ec 28 sub \$0x28,%rsp
+ +[a-f0-9]+: 48 c7 05 29 20 00 00 01 00 00 00 movq \$0x1,0x2029\(%rip\) # 403038 <__bss_start>
+ +[a-f0-9]+: e8 4c 00 00 00 call 401060 <opti_Od>
+ +[a-f0-9]+: e8 07 00 00 00 call 401020 <opti_O1>
+ +[a-f0-9]+: 48 83 c4 28 add \$0x28,%rsp
+ +[a-f0-9]+: c3 ret
+ +[a-f0-9]+: 66 90 xchg %ax,%ax
+
+0+401020 <opti_O1>:
+ +[a-f0-9]+: b8 33 22 00 00 mov \$0x2233,%eax
+ +[a-f0-9]+: c6 05 ec 1f 00 00 12 movb \$0x12,0x1fec\(%rip\) # 403018 <Struct>
+ +[a-f0-9]+: 66 89 05 e7 1f 00 00 mov %ax,0x1fe7\(%rip\) # 40301a <Struct\+0x2>
+ +[a-f0-9]+: 48 b8 99 99 99 99 88 88 88 88 movabs \$0x8888888899999999,%rax
+ +[a-f0-9]+: 48 89 05 dc 1f 00 00 mov %rax,0x1fdc\(%rip\) # 403020 <Struct\+0x8>
+ +[a-f0-9]+: 83 c8 ff or \$0xffffffff,%eax
+ +[a-f0-9]+: c7 05 cb 1f 00 00 55 55 44 44 movl \$0x44445555,0x1fcb\(%rip\) # 40301c <Struct\+0x4>
+ +[a-f0-9]+: c3 ret
+ +[a-f0-9]+: 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+ +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
+
+0+401060 <opti_Od>:
+ +[a-f0-9]+: 48 89 4c 24 08 mov %rcx,0x8\(%rsp\)
+ +[a-f0-9]+: b8 10 00 00 00 mov \$0x10,%eax
+ +[a-f0-9]+: 48 6b c0 00 imul \$0x0,%rax,%rax
+ +[a-f0-9]+: 48 8d 0d a3 1f 00 00 lea 0x1fa3\(%rip\),%rcx # 403018 <Struct>
+ +[a-f0-9]+: c6 04 01 11 movb \$0x11,\(%rcx,%rax,1\)
+ +[a-f0-9]+: b8 10 00 00 00 mov \$0x10,%eax
+ +[a-f0-9]+: 48 6b c0 00 imul \$0x0,%rax,%rax
+ +[a-f0-9]+: 48 8d 0d 8f 1f 00 00 lea 0x1f8f\(%rip\),%rcx # 403018 <Struct>
+ +[a-f0-9]+: ba 22 22 00 00 mov \$0x2222,%edx
+ +[a-f0-9]+: 66 89 54 01 02 mov %dx,0x2\(%rcx,%rax,1\)
+ +[a-f0-9]+: b8 10 00 00 00 mov \$0x10,%eax
+ +[a-f0-9]+: 48 6b c0 00 imul \$0x0,%rax,%rax
+ +[a-f0-9]+: 48 8d 0d 75 1f 00 00 lea 0x1f75\(%rip\),%rcx # 403018 <Struct>
+ +[a-f0-9]+: c7 44 01 04 44 44 44 44 movl \$0x44444444,0x4\(%rcx,%rax,1\)
+ +[a-f0-9]+: b8 10 00 00 00 mov \$0x10,%eax
+ +[a-f0-9]+: 48 6b c0 00 imul \$0x0,%rax,%rax
+ +[a-f0-9]+: 48 8d 0d 5d 1f 00 00 lea 0x1f5d\(%rip\),%rcx # 403018 <Struct>
+ +[a-f0-9]+: 48 ba 88 88 88 88 88 88 88 88 movabs \$0x8888888888888888,%rdx
+ +[a-f0-9]+: 48 89 54 01 08 mov %rdx,0x8\(%rcx,%rax,1\)
+ +[a-f0-9]+: b8 ff ff ff ff mov \$0xffffffff,%eax
+ +[a-f0-9]+: c3 ret
+#pass
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-4a.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-4a.obj.bz2
new file mode 100644
index 0000000..99db1e8
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-4a.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-4b.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-4b.obj.bz2
new file mode 100644
index 0000000..2284cea
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-4b.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-4c.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-4c.obj.bz2
new file mode 100644
index 0000000..6b4efca
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-4c.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-4d.obj.bz2 b/ld/testsuite/ld-x86-64/pe-x86-64-4d.obj.bz2
new file mode 100644
index 0000000..f2ac9d2
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64-4d.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pe-x86-64.exp b/ld/testsuite/ld-x86-64/pe-x86-64.exp
new file mode 100644
index 0000000..74d06e0
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pe-x86-64.exp
@@ -0,0 +1,66 @@
+# Expect script for ELF tests with pe-x86-64 inputs.
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+# Only for Linux/x86-64.
+if {![istarget "x86_64-*-linux*"] } {
+ return
+}
+
+run_ld_link_tests [list \
+ [list \
+ "Build pe-x86-64-1" \
+ "-m elf_x86_64 --entry=begin" \
+ "" \
+ "" \
+ {pe-x86-64-1a.obj.bz2 pe-x86-64-1b.obj.bz2 pe-x86-64-1c.obj.bz2} \
+ {{objdump {-dw --sym} pe-x86-64-1.od}} \
+ "pe-x86-64-1" \
+ ] \
+ [list \
+ "Build pe-x86-64-2" \
+ "-m elf_x86_64 --entry=begin" \
+ "" \
+ "" \
+ {pe-x86-64-2a.obj.bz2 pe-x86-64-2b.obj.bz2 pe-x86-64-2c.obj.bz2} \
+ {{objdump {-dw --sym} pe-x86-64-2.od}} \
+ "pe-x86-64-2" \
+ ] \
+ [list \
+ "Build pe-x86-64-3" \
+ "-m elf_x86_64 --entry=begin" \
+ "" \
+ "" \
+ {pe-x86-64-3a.obj.bz2 pe-x86-64-3b.obj.bz2 pe-x86-64-3c.obj.bz2 \
+ pe-x86-64-3d.obj.bz2 } \
+ {{objdump {-dw --sym} pe-x86-64-3.od}} \
+ "pe-x86-64-3" \
+ ] \
+ [list \
+ "Build pe-x86-64-4" \
+ "-m elf_x86_64 --entry=begin" \
+ "" \
+ "" \
+ {pe-x86-64-4a.obj.bz2 pe-x86-64-4b.obj.bz2 pe-x86-64-4c.obj.bz2 \
+ pe-x86-64-4d.obj.bz2 } \
+ {{objdump {-dw --sym} pe-x86-64-4.od}} \
+ "pe-x86-64-4" \
+ ] \
+]
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.