aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2015-10-15 21:34:39 +1030
committerAlan Modra <amodra@gmail.com>2015-10-15 23:38:29 +1030
commit7b19bec22f266f2e1fab6528f166912328b999b6 (patch)
tree562cdfc507a6383b075a8069c1d860eee93ed9e0 /ld
parente43fb83166ca5610e34cfba1dcf1216d0953aa8c (diff)
downloadfsf-binutils-gdb-7b19bec22f266f2e1fab6528f166912328b999b6.zip
fsf-binutils-gdb-7b19bec22f266f2e1fab6528f166912328b999b6.tar.gz
fsf-binutils-gdb-7b19bec22f266f2e1fab6528f166912328b999b6.tar.bz2
objcopy --extract-symbol testcase
Run the test for more than just ELF. Shows that objcopy --extract-symbol isn't working on PE, mips, mmix and some aout targets. * config/default.exp (size): New global. * ld-elf/extract-symbol-1.s, * ld-elf/extract-symbol-1.ld, * ld-elf/extract-symbol-1sec.d, * ld-elf/extract-symbol-1sym.d: Delete. * ld-scripts/script.exp (extract_symbol_test): New.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog9
-rw-r--r--ld/testsuite/config/default.exp4
-rw-r--r--ld/testsuite/ld-elf/extract-symbol-1.ld18
-rw-r--r--ld/testsuite/ld-elf/extract-symbol-1.s15
-rw-r--r--ld/testsuite/ld-elf/extract-symbol-1sec.d15
-rw-r--r--ld/testsuite/ld-elf/extract-symbol-1sym.d17
-rw-r--r--ld/testsuite/ld-scripts/script.exp31
7 files changed, 44 insertions, 65 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index ef4631b..af8a69f 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2015-10-15 Alan Modra <amodra@gmail.com>
+
+ * config/default.exp (size): New global.
+ * ld-elf/extract-symbol-1.s,
+ * ld-elf/extract-symbol-1.ld,
+ * ld-elf/extract-symbol-1sec.d,
+ * ld-elf/extract-symbol-1sym.d: Delete.
+ * ld-scripts/script.exp (extract_symbol_test): New.
+
2015-10-12 H.J. Lu <hongjiu.lu@intel.com>
PR ld/19073
diff --git a/ld/testsuite/config/default.exp b/ld/testsuite/config/default.exp
index 5b3e29f..310a3b2 100644
--- a/ld/testsuite/config/default.exp
+++ b/ld/testsuite/config/default.exp
@@ -49,6 +49,10 @@ if ![info exists strip] then {
set strip [findfile $base_dir/../binutils/strip-new $base_dir/../binutils/strip-new [transform strip]]
}
+if ![info exists size] then {
+ set size [findfile $base_dir/../binutils/size]
+}
+
remote_exec host "mkdir -p tmpdir"
# Make symlinks from tmpdir/ld to the linker and assembler in the
diff --git a/ld/testsuite/ld-elf/extract-symbol-1.ld b/ld/testsuite/ld-elf/extract-symbol-1.ld
deleted file mode 100644
index 53e95c6..0000000
--- a/ld/testsuite/ld-elf/extract-symbol-1.ld
+++ /dev/null
@@ -1,18 +0,0 @@
-ENTRY(_entry)
-PHDRS
-{
- data PT_LOAD AT (0);
-}
-SECTIONS
-{
- . = 0x10000;
- .foo : { *(.foo) } :data
-
- . = 0x20000;
- .bar : { *(.bar) } :data
-
- /DISCARD/ : { *(*) }
-
- _entry = 0x30000;
- linker_symbol = 0x40000;
-}
diff --git a/ld/testsuite/ld-elf/extract-symbol-1.s b/ld/testsuite/ld-elf/extract-symbol-1.s
deleted file mode 100644
index 0971500..0000000
--- a/ld/testsuite/ld-elf/extract-symbol-1.s
+++ /dev/null
@@ -1,15 +0,0 @@
- .globl B
- .globl C
-
- .section .foo,"awx",%progbits
- .4byte 1,2,3,4
-B:
- .4byte 5,6,7
-
- .section .bar,"ax",%nobits
- .space 0x123
-C:
- .space 0x302
-
- .globl D
- .equ D,0x12345678
diff --git a/ld/testsuite/ld-elf/extract-symbol-1sec.d b/ld/testsuite/ld-elf/extract-symbol-1sec.d
deleted file mode 100644
index 35ca898..0000000
--- a/ld/testsuite/ld-elf/extract-symbol-1sec.d
+++ /dev/null
@@ -1,15 +0,0 @@
-#name: --extract-symbol test 1 (sections)
-#source: extract-symbol-1.s
-#ld: -Textract-symbol-1.ld
-#objcopy_linked_file: --extract-symbol
-#objdump: --headers
-#xfail: "hppa*-*-*" "rx-*-*" "v850*-*-*"
-# FAILS on the RX because the linker has to set LMA == VMA for the Renesas loader.
-# FAILS on the V850 because an extra section - .note.renesas - is created.
-#...
-Sections:
- *Idx +Name +Size +VMA +LMA .*
- *0 +\.foo +0+ +0+10000 +0+10000 .*
- *CONTENTS, ALLOC, LOAD, CODE
- *1 +\.bar +0+ +0+20000 +0+10000 .*
- *ALLOC, READONLY, CODE
diff --git a/ld/testsuite/ld-elf/extract-symbol-1sym.d b/ld/testsuite/ld-elf/extract-symbol-1sym.d
deleted file mode 100644
index 4069191..0000000
--- a/ld/testsuite/ld-elf/extract-symbol-1sym.d
+++ /dev/null
@@ -1,17 +0,0 @@
-#name: --extract-symbol test 1 (symbols)
-#source: extract-symbol-1.s
-#ld: -Textract-symbol-1.ld
-#objcopy_linked_file: --extract-symbol
-#nm: -n
-#xfail: "hppa*-*-*"
-#...
-0*00010010 T B
-#...
-0*00020123 T C
-#...
-0*00030000 A _entry
-#...
-0*00040000 A linker_symbol
-#...
-0*12345678 A D
-#pass \ No newline at end of file
diff --git a/ld/testsuite/ld-scripts/script.exp b/ld/testsuite/ld-scripts/script.exp
index 6ab04ec..b5f175f 100644
--- a/ld/testsuite/ld-scripts/script.exp
+++ b/ld/testsuite/ld-scripts/script.exp
@@ -107,6 +107,35 @@ proc check_script { } {
}
}
+proc extract_symbol_test { testfile testname } {
+ global objcopy
+ global nm
+ global size
+
+ set copyfile tmpdir/extract
+ set args "--extract-symbol $testfile $copyfile"
+ set exec_output [run_host_cmd $objcopy $args]
+ if ![string equal "" $exec_output] {
+ fail $testname
+ return
+ }
+
+ set orig_syms [run_host_cmd $nm $testfile]
+ set extract_syms [run_host_cmd $nm $copyfile]
+ if ![string equal $orig_syms $extract_syms] {
+ fail $testname
+ return
+ }
+
+ set exec_output [run_host_cmd $size $copyfile]
+ if ![regexp ".* 0\[ \]+0\[ \]+0\[ \]+0\[ \]+0\[ \]+.*" $exec_output] {
+ fail $testname
+ return
+ }
+
+ pass $testname
+}
+
# PE targets need to set the image base to 0 to avoid complications from nm.
set flags ""
if {[istarget "*-*-pe*"] \
@@ -143,8 +172,10 @@ if ![ld_simple_link $ld tmpdir/script "$flags -T $srcdir/$subdir/memory.t tmpdir
set testname "MEMORY with symbols"
if ![ld_simple_link $ld tmpdir/script "$flags -defsym DATA_ORIGIN=0x1000 -defsym DATA_LENGTH=0x10000 -T $srcdir/$subdir/memory_sym.t tmpdir/script.o"] {
fail $testname
+ untested "extract symbols"
} else {
check_script
+ extract_symbol_test tmpdir/script "extract symbols"
}
set test_script_list [lsort [glob $srcdir/$subdir/region-alias-*.t]]