Remove run_dump_test support for objcopy as a dump program
authorAlan Modra <amodra@gmail.com>
Thu, 13 Sep 2018 05:13:34 +0000 (14:43 +0930)
committerAlan Modra <amodra@gmail.com>
Sat, 15 Sep 2018 06:54:18 +0000 (16:24 +0930)
We have three copies of run_dump_test in the testsuite.  This is a first
step towards consolidating them.

A few tests use objcopy to convert to verilog or srec output, then
check that output is as expected.  Those tests can just as easily use
objdump, keeping the set of dump programs (addr2line, nm, objdump,
readelf, size) separate from utilities under test.  That in turn makes
auto-detecting the dump program possible in more places.

binutils/
* testsuite/binutils-all/group-7a.d,
* testsuite/binutils-all/group-7b.d,
* testsuite/binutils-all/group-7c.d,
* testsuite/binutils-all/symbols-1.d,
* testsuite/binutils-all/symbols-2.d,
* testsuite/binutils-all/symbols-3.d,
* testsuite/binutils-all/symbols-4.d: Remove DUMPPROG.
gas/
* testsuite/gas/mri/char.d: Don't objcopy to srec, objdump instead.
* testsuite/gas/mri/float.d: Likewise.
* testsuite/lib/gas-defs.exp (run_dump_test): Remove support
for objcopy as a dump tool.
ld/
* testsuite/ld-elf/interleave-0.d,
* testsuite/ld-elf/interleave-4.d: Don't objcopy to srec,
objdump instead.
* testsuite/ld-gc/all-debug-sections.d,
* testsuite/ld-scripts/provide-4.d,
* testsuite/ld-scripts/provide-5.d,
* testsuite/ld-scripts/provide-6.d,
* testsuite/ld-scripts/provide-7.d,
* testsuite/ld-scripts/provide-8.d,
* testsuite/ld-scripts/segment-start.d: Remove PROG, specify
nm instead.
* testsuite/lib/ld-lib.exp (run_dump_test): Remove support
for objcopy as a dump tool.

23 files changed:
binutils/ChangeLog
binutils/testsuite/binutils-all/group-7a.d
binutils/testsuite/binutils-all/group-7b.d
binutils/testsuite/binutils-all/group-7c.d
binutils/testsuite/binutils-all/symbols-1.d
binutils/testsuite/binutils-all/symbols-2.d
binutils/testsuite/binutils-all/symbols-3.d
binutils/testsuite/binutils-all/symbols-4.d
gas/ChangeLog
gas/testsuite/gas/mri/char.d
gas/testsuite/gas/mri/float.d
gas/testsuite/lib/gas-defs.exp
ld/ChangeLog
ld/testsuite/ld-elf/interleave-0.d
ld/testsuite/ld-elf/interleave-4.d
ld/testsuite/ld-gc/all-debug-sections.d
ld/testsuite/ld-scripts/provide-4.d
ld/testsuite/ld-scripts/provide-5.d
ld/testsuite/ld-scripts/provide-6.d
ld/testsuite/ld-scripts/provide-7.d
ld/testsuite/ld-scripts/provide-8.d
ld/testsuite/ld-scripts/segment-start.d
ld/testsuite/lib/ld-lib.exp

index 929b4f3bf6d9f0ad19dbb02da2096ce2b5031063..d7ed7a857850f82a08dd2c828dbc433502ddedd9 100644 (file)
@@ -1,3 +1,13 @@
+2018-09-15  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/binutils-all/group-7a.d,
+       * testsuite/binutils-all/group-7b.d,
+       * testsuite/binutils-all/group-7c.d,
+       * testsuite/binutils-all/symbols-1.d,
+       * testsuite/binutils-all/symbols-2.d,
+       * testsuite/binutils-all/symbols-3.d,
+       * testsuite/binutils-all/symbols-4.d: Remove DUMPPROG.
+
 2018-09-14  Alan Modra  <amodra@gmail.com>
 
        PR binutils/23633
index fa8db60d9eef265fbf5e690c67d7093ef43c7bb4..8fdc6aaff908a1f70287e11d20d2431b49d3c568 100644 (file)
@@ -1,7 +1,6 @@
 #name: copy removing reloc group member
 #source: group-7.s
 #PROG: objcopy
-#DUMPPROG: readelf
 #objcopy: --remove-section .data.foo
 #readelf: -Sg --wide
 
index b674545362ab58831b5d7dae68be7dd3589966bf..c2691168ea4b03a23da3defeaf1065af8cd3474a 100644 (file)
@@ -1,7 +1,6 @@
 #name: copy removing non-reloc group member
 #source: group-7.s
 #PROG: objcopy
-#DUMPPROG: readelf
 #objcopy: --remove-section .data2.foo
 #readelf: -Sg --wide
 
index 83e91156ee6797fcf8c26d4212d8833a56ed71be..034a8725d34d34ce107f698e6866fedd269546e5 100644 (file)
@@ -1,7 +1,6 @@
 #name: copy removing reloc and non-reloc group member
 #source: group-7.s
 #PROG: objcopy
-#DUMPPROG: readelf
 #objcopy: -R .data.foo -R .data2.foo
 #readelf: -g --wide
 
index a2d8f55bc3cfbcc8e2c4dc6024070f7c94c7c47c..bfcd6aa1bfd415e40372e31158241925185759cf 100644 (file)
@@ -2,7 +2,6 @@
 #PROG: objcopy
 #objcopy: -w -L !foo -L fo*
 #source: symbols.s
-#DUMPPROG: nm
 #nm: -n
 
 #...
index 68fa6737ec39a67857888ceb7b6fd11103d3b9cc..b9fd90738766090ae5bfe9be0d8d01fcd9809f2c 100644 (file)
@@ -2,7 +2,6 @@
 #PROG: objcopy
 #objcopy: -w -W !foo -W fo*
 #source: symbols.s
-#DUMPPROG: nm
 #nm: -n
 
 #...
index 0815238a46a8dded576de8ad1161cc3e865b5c4c..d415e981f869cd38d604369b38565d1690222af8 100644 (file)
@@ -2,7 +2,6 @@
 #PROG: objcopy
 #objcopy: -w -W !foo -W fo* -L foo
 #source: symbols.s
-#DUMPPROG: nm
 #nm: -n
 
 #...
index 7480b0de5911a1f1f6610e2a19785a3246784604..6dd2900efc2f3d2331123491b466536a379a8c6f 100644 (file)
@@ -2,7 +2,6 @@
 #PROG: objcopy
 #objcopy: -w -W !foo -W !bar -W *
 #source: symbols.s
-#DUMPPROG: nm
 #nm: -n
 
 #...
index 82a23c4380fc6da739f7e16574a8d1633ff1c5db..5c5eeeb66c0c11ca4a4bd8a04dcbfd8b89056ea1 100644 (file)
@@ -1,3 +1,10 @@
+2018-09-15  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/gas/mri/char.d: Don't objcopy to srec, objdump instead.
+       * testsuite/gas/mri/float.d: Likewise.
+       * testsuite/lib/gas-defs.exp (run_dump_test): Remove support
+       for objcopy as a dump tool.
+
 2018-09-14  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR gas/23642
index 025f4b5914fb9f457bcbf4fcce1eca9214547ae8..7d237acfe96d9fec5567ac799f23572e8e960501 100644 (file)
@@ -1,9 +1,9 @@
-#objcopy: -O srec
 #name: MRI character constants
 #as: -M
+#objdump: -s
 
-# Test MRI character constants
+.*:     file format .*
 
-S0.*
-S113....(61616263616263646500000061276200)|(61616263646362610000006500622761).*
-#pass
+Contents of section \.text:
+
+ 0+0 (61616263 61626364 65000000 61276200)|(61616263 64636261 00000065 00622761) .*
index 21ecf2e3849586b02463ce99d36d79608db206cc..27f4fdc54c3f011affc488d759f29dec95ded665 100644 (file)
@@ -1,10 +1,9 @@
-#objcopy: -O srec
 #name: MRI floating point constants
 #as: -M
+#objdump: -s
 
-# Test MRI floating point constants
+.*:     file format .*
 
-S0.*
-S113....(123456789ABCDEF03F80000041200000)|(F0DEBC9A785634120000803F00002041).*
-S10.....(4120000042C80000)|(000020410000C842).*
-#pass
+Contents of section \.text:
+ 0+00 (12345678 9abcdef0 3f800000 41200000)|(f0debc9a 78563412 0000803f 00002041) .*
+ 0+10 (41200000 42c80000)|(000020 410000c842) .*
index 22984c70e1f70f2f323d931c3926ccbd2be9efd2..b7cc06edef53236d428a67a8ab4eccff93204c37 100644 (file)
@@ -359,14 +359,13 @@ proc run_dump_tests { testcases {extra_options {}} } {
 #
 #   addr2line: FLAGS
 #   nm: FLAGS
-#   objcopy: FLAGS
 #   objdump: FLAGS
 #   readelf: FLAGS
 #      Use the specified program to analyze the .o file, and pass it
 #      FLAGS, in addition to the .o file name.  Note that they are run
 #      with LC_ALL=C in the environment to give consistent sorting
 #      of symbols.  If no FLAGS are needed then use:
-#        PROG: [nm objcopy objdump readelf addr2line]
+#        PROG: [nm objdump readelf addr2line]
 #       instead.
 #      Note: for objdump, we automatically replaces the standard section
 #      names (.text, .data and .bss) by target ones if any (eg. rx-elf
@@ -414,8 +413,8 @@ proc run_dump_tests { testcases {extra_options {}} } {
 #
 #   error: REGEX
 #      An error with message matching REGEX must be emitted for the test
-#      to pass.  The PROG, objdump, nm and objcopy options have no
-#      meaning and need not supplied if this is present.
+#      to pass.  The PROG, addr2line, nm, objdump, and readelf options
+#      have no meaning and need not supplied if this is present.
 #
 #   warning: REGEX
 #      Expect a gas warning matching REGEX.  It is an error to issue
@@ -424,12 +423,12 @@ proc run_dump_tests { testcases {extra_options {}} } {
 #   stderr: FILE
 #       FILE contains regexp lines to be matched against the diagnostic
 #       output of the assembler.  This does not preclude the use of
-#       PROG, nm, objdump, or objcopy.
+#       PROG, addr2line, nm, objdump, or readelf.
 #
 #   error-output: FILE
 #       Means the same as 'stderr', but also indicates that the assembler
-#       is expected to exit unsuccessfully (therefore PROG, objdump, nm,
-#       and objcopy have no meaning and should not be supplied).
+#       is expected to exit unsuccessfully (therefore PROG, addr2line, nm,
+#      objdump, and readelf have no meaning and should not be supplied).
 #
 #   section-subst: no
 #       Means that the section substitution for objdump is disabled.
@@ -465,7 +464,6 @@ proc run_dump_test { name {extra_options {}} } {
     set opts(as) {}
     set opts(objdump) {}
     set opts(nm) {}
-    set opts(objcopy) {}
     set opts(readelf) {}
     set opts(name) {}
     set opts(PROG) {}
@@ -546,7 +544,6 @@ proc run_dump_test { name {extra_options {}} } {
                addr2line { set program addr2line }
                objdump { set program objdump }
                nm      { set program nm }
-               objcopy { set program objcopy }
                readelf { set program readelf }
                default {
                    perror "unrecognized program option $opts(PROG) in $file.d"
@@ -555,7 +552,7 @@ proc run_dump_test { name {extra_options {}} } {
            }
        } else {
            # Guess which program to run, by seeing which option was specified.
-           foreach p {objdump objcopy nm readelf addr2line} {
+           foreach p {objdump nm readelf addr2line} {
                if {$opts($p) != ""} {
                    if {$program != ""} {
                        perror "ambiguous dump program in $file.d"
@@ -741,15 +738,8 @@ proc run_dump_test { name {extra_options {}} } {
     if { $progopts1 == "" } { set $progopts1 "-r" }
     verbose "running $binary $progopts $progopts1" 3
 
-    # Objcopy, unlike the other two, won't send its output to stdout,
-    # so we have to run it specially.
     set cmd "$binary $progopts $progopts1 dump.o"
     set redir ">dump.out"
-    if { $program == "objcopy" } {
-       set cmd "$binary $progopts $progopts1 dump.o dump.out"
-       set redir ""
-    }
-
     send_log "$cmd\n"
     set status [gas_host_run "$cmd" "$redir"]
     set comp_output [prune_warnings [lindex $status 1]]
index ad224ab9377e9108a138b923d2f1f420db372118..e9d4d0f08cf1827e2f5d3252b14b01ab1eea0784 100644 (file)
@@ -1,3 +1,19 @@
+2018-09-15  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/ld-elf/interleave-0.d,
+       * testsuite/ld-elf/interleave-4.d: Don't objcopy to srec,
+       objdump instead.
+       * testsuite/ld-gc/all-debug-sections.d,
+       * testsuite/ld-scripts/provide-4.d,
+       * testsuite/ld-scripts/provide-5.d,
+       * testsuite/ld-scripts/provide-6.d,
+       * testsuite/ld-scripts/provide-7.d,
+       * testsuite/ld-scripts/provide-8.d,
+       * testsuite/ld-scripts/segment-start.d: Remove PROG, specify
+       nm instead.
+       * testsuite/lib/ld-lib.exp (run_dump_test): Remove support
+       for objcopy as a dump tool.
+
 2018-09-14  Maciej W. Rozycki  <macro@mips.com>
 
        PR ld/21375
index 837223c83a467adc12872598702b1a7f60691124..c497a532c820c9d3ce875c20a89c7e35f79c9673 100644 (file)
@@ -1,9 +1,12 @@
 #name: --interleave test byte 0
 #source: interleave.s
 #ld: -Tinterleave.ld
-#objcopy: --interleave=8 --interleave-width=1 --byte=0 -O verilog
+#objcopy_linked_file: --interleave=8 --interleave-width=1 --byte=0
+#objdump: -s
 
-@0+0
-00 
-@0+2
-14 
+.*:     file format .*
+
+Contents of section \.a0:
+ 0+0 00                                   .*
+Contents of section \.a1:
+ 0+c 14                                   .*
index a4bb808ab6e02dc53f60e40ac799340e860c4c61..fa104bc77eaca2bd5661c4e4698bd1f58add59cd 100644 (file)
@@ -1,9 +1,12 @@
 #name: --interleave test byte 4
 #source: interleave.s
 #ld: -Tinterleave.ld
-#objcopy: --interleave=8 --interleave-width=1 --byte=4 -O verilog
+#objcopy_linked_file: --interleave=8 --interleave-width=1 --byte=4
+#objdump: -s
 
-@0+0
-04 
-@0+1
-10 
+.*:     file format .*
+
+Contents of section \.a0:
+ 0+0 04                                   .*
+Contents of section \.a1:
+ 0+c 10                                   .*
index 5e3373a63f2589865006805e2a33e00240b29e22..45ed1bad31c62af0d27d8dce1c14316d7c4fd09b 100644 (file)
@@ -1,7 +1,7 @@
 #name: --gc-sections with multiple debug sections for a function section
 #as: -gdwarf-sections
 #ld: --gc-sections -e _start
-#PROG: nm
+#nm: -B
 
 #...
 [0-9a-f]+ N +debug_aranges_main
index 18699f221dab709cde541946e21de467c50a3b92..b77b7dc19488fb5695f2ec6e1a1ef8d146bf54f4 100644 (file)
@@ -1,6 +1,6 @@
 #source: provide-2.s
 #ld: -T provide-4.t
-#PROG: nm
+#nm: -B
 #map: provide-4.map
 #...
 0+3 A baz
index 2a8baec605bb0b638d5b6e8ce3f1ab41af86b6b0..c7f9ddb7ba811766e023337efbdb80c0b4b6e09a 100644 (file)
@@ -1,6 +1,6 @@
 #source: provide-5.s
 #ld: -T provide-5.t
-#PROG: nm
+#nm: -B
 #map: provide-5.map
 #...
 0+10 A foo
index dd40515119793dc4f61b5fa2cbf3e0ae1d9065a1..fda3c2bd2739cd18a6f01d9d8b22a613e0d7a899 100644 (file)
@@ -1,6 +1,6 @@
 #source: provide-5.s
 #ld: -T provide-6.t
-#PROG: nm
+#nm: -B
 #xfail: x86_64-*-cygwin
 
 #...
index c524fe428ab6b898070dd940686b0bd95c2057f3..e2c950400219046d9e2ccc6812f6ac8b8ae1fbd6 100644 (file)
@@ -1,6 +1,6 @@
 #source: provide-5.s
 #ld: -T provide-7.t
-#PROG: nm
+#nm: -B
 
 #...
 0+10 A foo
index a4029370ca2a644f5b93e6480da4b3147e9f547f..f5abc524e89dfe703a898840f18ba4771eb538b5 100644 (file)
@@ -1,6 +1,6 @@
 #source: provide-5.s
 #ld: -T provide-8.t
-#PROG: nm
+#nm: -B
 #xfail: x86_64-*-cygwin mmix-*-* sh-*-pe spu-*-*
 
 #...
index fcbcfb3ab9809fdbe1fc2a7cd4243c17a8bbeb47..fde7661efee11af329e34295ca831db385a82c02 100644 (file)
@@ -1,7 +1,7 @@
-#PROG: nm
 #name: SEGMENT_START expression not absolute
 #source: segment-start.s
 #ld: -e 0 -u __executable_start -T segment-start.ld
+#nm: -B
 #xfail: mmix-*-* pdp11-*-* powerpc-*-aix* powerpc-*-beos* rs6000-*-* sh-*-pe
 #xfail: c30-*-*aout* tic30-*-*aout* c54x*-*-*coff* tic54x-*-*coff*
 # XFAIL targets that are not expected to handle SEGMENT_START correctly.
index 1833bdd2f039b467a5a2f0701f4201a589db7e0e..c1ce8ee2f05359dc266d58a11c1ed76d6b1c7821 100644 (file)
@@ -511,7 +511,6 @@ proc ld_link_defsyms {} {
 #   readelf: FLAGS
 #   objdump: FLAGS
 #   nm: FLAGS
-#   objcopy: FLAGS
 #      Use the specified program to analyze the assembler or linker
 #       output file, and pass it FLAGS, in addition to the output name.
 #      Note that they are run with LC_ALL=C in the environment to give
@@ -568,7 +567,7 @@ proc ld_link_defsyms {} {
 #
 #   error: REGEX
 #      An error with message matching REGEX must be emitted for the test
-#      to pass.  The PROG, readelf, objdump, nm and objcopy options have
+#      to pass.  The PROG, readelf, objdump, and nm options have
 #      no meaning and need not be supplied if this is present.  Multiple
 #      "error" directives append to the expected linker error message.
 #
@@ -647,7 +646,6 @@ proc run_dump_test { name {extra_options {}} } {
     set opts(noskip) {}
     set opts(objdump) {}
     set opts(nm) {}
-    set opts(objcopy) {}
     set opts(readelf) {}
     set opts(name) {}
     set opts(PROG) {}
@@ -825,7 +823,6 @@ proc run_dump_test { name {extra_options {}} } {
            switch -- $opts(PROG) {
                objdump { set program objdump }
                nm      { set program nm }
-               objcopy { set program objcopy }
                readelf { set program readelf }
                default
                { perror "unrecognized program option $opts(PROG) in $file.d"
@@ -834,7 +831,7 @@ proc run_dump_test { name {extra_options {}} } {
            }
        } else {
        # Guess which program to run, by seeing which option was specified.
-           foreach p {objdump objcopy nm readelf} {
+           foreach p {objdump nm readelf} {
                if {$opts($p) != ""} {
                    if {$program != ""} {
                        perror "ambiguous dump program in $file.d"
@@ -1104,13 +1101,7 @@ proc run_dump_test { name {extra_options {}} } {
 
     if { $progopts1 == "" } { set $progopts1 "-r" }
     verbose "running $binary $progopts $progopts1" 3
-
-    # Objcopy, unlike the other two, won't send its output to stdout,
-    # so we have to run it specially.
     set cmd "$binary $progopts $progopts1 $objfile > $dumpfile"
-    if { $program == "objcopy" } {
-       set cmd "$binary $progopts $progopts1 $objfile $dumpfile"
-    }
 
     # Ensure consistent sorting of symbols
     if {[info exists env(LC_ALL)]} {