ld: Create test object files based on source file name
authorAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 20 Sep 2016 14:25:55 +0000 (15:25 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Fri, 4 Nov 2016 12:04:11 +0000 (12:04 +0000)
When creating object files during testing, base the name of the object
file on the name of the source file, rather than using dump0.o,
dump1.o, etc.  There's a few places where we have multiple source
files with the same name but in different directories, in these cases,
even after this change, we still add a numerical suffix to make the
object file names unique.  So if we have 'foo/src.s' and 'bar/src.s',
we will create object files 'src.o' and 'src1.o'.

Update the few tests that hard code the object file name into the
expected test results.

ld/ChangeLog:

* testsuite/lib/ld-lib.exp (run_dump_test): Use object file names
based on the original source file name.
* testsuite/ld-discard/extern.d: Update object file names.
* testsuite/ld-discard/start.d: Likewise.
* testsuite/ld-discard/static.d: Likewise.
* testsuite/ld-elf/orphan-8.map: Likewise.

ld/ChangeLog
ld/testsuite/ld-discard/extern.d
ld/testsuite/ld-discard/start.d
ld/testsuite/ld-discard/static.d
ld/testsuite/ld-elf/orphan-8.map
ld/testsuite/lib/ld-lib.exp

index 2d3bf34f3c7d2b409fce3a829fdc944f774e403c..3098b4cf75d28a9689fed7392169deb0fdbad6d4 100644 (file)
@@ -1,3 +1,12 @@
+2016-11-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * testsuite/lib/ld-lib.exp (run_dump_test): Use object file names
+       based on the original source file name.
+       * testsuite/ld-discard/extern.d: Update object file names.
+       * testsuite/ld-discard/start.d: Likewise.
+       * testsuite/ld-discard/static.d: Likewise.
+       * testsuite/ld-elf/orphan-8.map: Likewise.
+
 2016-11-04  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * testsuite/lib/ld-lib.exp (check_shared_lib_support): Add
index 3075174c8e65d32271549b8d8098ac7ae7fedf69..9932ebca440386e6545dffcb9d1f96fbe4552eea 100644 (file)
@@ -1,6 +1,6 @@
 #source: extern.s
 #ld: -T discard.ld
-#error: .*data.* referenced in section `\.text' of tmpdir/dump0.o: defined in discarded section `\.data\.exit' of tmpdir/dump0.o
+#error: .*data.* referenced in section `\.text' of tmpdir/extern.o: defined in discarded section `\.data\.exit' of tmpdir/extern.o
 #objdump: -p
 #xfail: d30v-*-* dlx-*-* i960-*-* pj*-*-*
 #xfail: m68hc12-*-* m6812-*-*
index 8c4a43b6bda4b38f1373d49ef2567b88c043190f..d846bc736ae29727e25f738f93626e744697660b 100644 (file)
@@ -1,7 +1,7 @@
 #source: start.s
 #source: exit.s
 #ld: -T discard.ld
-#error: `data' referenced in section `\.text' of tmpdir/dump0.o: defined in discarded section `\.data\.exit' of tmpdir/dump1.o
+#error: `data' referenced in section `\.text' of tmpdir/start.o: defined in discarded section `\.data\.exit' of tmpdir/exit.o
 #objdump: -p
 #xfail: d30v-*-* dlx-*-* i960-*-* pj*-*-*
 #xfail: m68hc12-*-* m6812-*-*
index 28ab9e804fe4eaaa622e78838174458eb597ba9f..3f61bb36f4a80cc54c1d75f3c5b799220f654df8 100644 (file)
@@ -1,6 +1,6 @@
 #source: static.s
 #ld: -T discard.ld
-#error: `(\.data\.exit|data)' referenced in section `\.text' of tmpdir/dump0.o: defined in discarded section `\.data\.exit' of tmpdir/dump0.o
+#error: `(\.data\.exit|data)' referenced in section `\.text' of tmpdir/static.o: defined in discarded section `\.data\.exit' of tmpdir/static.o
 #objdump: -p
 #xfail: d30v-*-* dlx-*-* i960-*-* pj*-*-*
 #xfail: m68hc12-*-* m6812-*-*
index 308d4277c20c4ee71339a8923d32c36ce77984f2..57477906afa30193fecc52f9460de240c815fc80 100644 (file)
@@ -1,7 +1,7 @@
 #...
 .notbad         0x[0-9a-f]+        0x4
- .notbad        0x[0-9a-f]+        0x4 tmpdir/dump0.o
+ .notbad        0x[0-9a-f]+        0x4 tmpdir/orphan.o
 #...
 .note.bar       0x[0-9a-f]+        0x4
- .note.bar      0x[0-9a-f]+        0x4 tmpdir/dump0.o
+ .note.bar      0x[0-9a-f]+        0x4 tmpdir/orphan.o
 #...
index 0f86fe63e452211dcefcf14fc0ac4f2765ae773b..a2be49b25f045aebb182c80ecad168b177624449 100644 (file)
@@ -620,6 +620,7 @@ proc run_dump_test { name {extra_options {}} } {
     set dumpfile tmpdir/dump.out
     set run_ld 0
     set run_objcopy 0
+    set objfile_names {}
     set opts(as) {}
     set opts(ld) {}
     set opts(ld_after_inputfiles) {}
@@ -666,6 +667,22 @@ proc run_dump_test { name {extra_options {}} } {
                } else {
                    lappend asflags {}
                }
+
+                # Create the object file name based on nothing but the source
+                # file name.
+                set new_objfile \
+                    [concat tmpdir/[file rootname [file tail [lindex $opt_val 0]]].o]
+                # But, sometimes, we have the exact same source filename in
+                # different directories (foo/src.s bar/src.s) which would lead
+                # us to try and create two src.o files.  We detect this
+                # conflict here, and instead create src.o and src1.o.
+                set j 0
+                while { [lsearch $objfile_names $new_objfile] != -1 } {
+                    incr j
+                    set new_objfile \
+                        [concat tmpdir/[file rootname [file tail  [lindex $opt_val 0]]]${j}.o]
+                }
+               lappend objfile_names $new_objfile
            }
            default {
                if [string length $opts($opt_name)] {
@@ -792,6 +809,7 @@ proc run_dump_test { name {extra_options {}} } {
     if { $opts(source) == "" } {
        set sourcefiles [list ${file}.s]
        set asflags [list ""]
+       set objfile_names [list tmpdir/[file tail ${file}].o]
     } else {
        set sourcefiles {}
        foreach sf $opts(source) {
@@ -826,7 +844,7 @@ proc run_dump_test { name {extra_options {}} } {
        }
        regsub "RUN_OBJCOPY" $sourceasflags "" sourceasflags
 
-       set objfile "tmpdir/dump$i.o"
+       set objfile [lindex $objfile_names $i]
        catch "exec rm -f $objfile" exec_output
        lappend objfiles $objfile
        set cmd "$AS $ASFLAGS $opts(as) $sourceasflags -o $objfile $sourcefile"
@@ -1014,7 +1032,7 @@ proc run_dump_test { name {extra_options {}} } {
             }
         }
     } else {
-       set objfile "tmpdir/dump0.o"
+       set objfile [lindex $objfiles 0]
     }
 
     # We must not have expected failure if we get here.
This page took 0.032554 seconds and 4 git commands to generate.