Add multi-target tests
[deliverable/binutils-gdb.git] / gold / testsuite / incremental_test.sh
index 8da60e0947b09b44a32af1d2d607ceb938bdb5ad..b7370986056a17bbbecfc22ce2550205f90998c9 100755 (executable)
@@ -2,8 +2,9 @@
 
 # incremental_test.sh -- test that incremental linking information is correct.
 
-# Copyright 2009 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
 # Written by Rafael Avila de Espindola <espindola@google.com>
+# and Cary Coutant <ccoutant@google.com>
 
 # This file is part of gold.
 
 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
 # MA 02110-1301, USA.
 
-set -e
-cat incremental_test.cmdline | grep "gcctestdir/ld " | cut -d ' ' -f 2- > \
-  actual
+check_cmp()
+{
+    if ! cmp -s "$1" "$2"
+    then
+       echo "Actual output differs from expected:"
+       echo "diff $1 $2"
+       diff $1 $2
+       exit 1
+    fi
+}
 
-cat incremental_test.stdout | grep "Link command line" | cut -d : -f 2- | \
-  cut -d ' ' -f 3- | sed "s/'//g" > recorded
+check()
+{
+    if ! grep -q "$2" "$1"
+    then
+       echo "Did not find expected output in $1:"
+       echo "   $2"
+       echo ""
+       echo "Actual output below:"
+       cat "$1"
+       exit 1
+    fi
+}
 
-diff actual recorded
-rm actual recorded
+# Extract actual command line from linker's -v output.
+cat incremental_test.cmdline |
+  grep "gcctestdir/\(collect-\)\?ld " |
+  sed "s/--incremental[-a-z]* //g" |
+  cut -d ' ' -f 2- > actual
 
-exit 0
\ No newline at end of file
+# Extract recorded command line from dump of the output file.
+cat incremental_test.stdout |
+  grep "Link command line" |
+  cut -d : -f 2- |
+  cut -d ' ' -f 3- |
+  sed "s/'//g" > recorded
+
+# Verify that the command line was recorded correctly.
+check_cmp actual recorded
+
+rm -f actual recorded
+
+# Filter the incremental-dump output into a format that can be grepped
+# more easily.
+
+awk '
+    /^[A-Za-z][A-Za-z ]+:$/ { section = $0; }
+    /^[[]/ { subsection = $0; }
+    /^ / { print section, subsection, $0; }
+' < incremental_test.stdout > incremental_test.dump
+
+check incremental_test.dump "Input sections: .* incremental_test_1.o  *1 "
+check incremental_test.dump "Input sections: .* incremental_test_2.o  *1 "
+check incremental_test.dump "Global symbol table: .* main  .* relocation type "
+check incremental_test.dump "Global symbol table: .* a  *incremental_test_1.o "
+check incremental_test.dump "Global symbol table: .* a .* relocation type "
+check incremental_test.dump "Global symbol table: .* b  *incremental_test_2.o "
+check incremental_test.dump "Global symbol table: .* b .* relocation type "
+check incremental_test.dump "Global symbol table: .* t1  *incremental_test_2.o "
+check incremental_test.dump "Global symbol table: .* t1 .* relocation type "
+
+rm -f incremental_test.dump
+
+exit 0
This page took 0.024427 seconds and 4 git commands to generate.