public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Update testsuite mechanism to allow object files as source files.
@ 2020-07-16 16:50 Caroline Tice
  2020-07-16 17:21 ` Andrew Burgess
  2020-07-16 17:33 ` Joseph Myers
  0 siblings, 2 replies; 15+ messages in thread
From: Caroline Tice @ 2020-07-16 16:50 UTC (permalink / raw)
  To: Caroline Tice via Gdb-patches
  Cc: Eric Christopher, H.J. Lu, Simon Marchi, Tom Tromey

[-- Attachment #1: Type: text/plain, Size: 2710 bytes --]

Since this patch will be resulting in something of a policy change, I
expect there will be a fair
amount of discussion around it.

High level summary:
In some (hopefully rare) cases, certain tests MUST be built with a
particular compiler to work.  If that compiler is not GCC, then it
makes it very burdensome for developers to run the GDB testsuite and
test those tests.  This change allows those tests to use object files
(generated by the required compiler) as the test source file, so that
when the test suite is run with GCC those tests will still
execute/test properly.

Details:
This change is motivated by the fact that clang and GCC sometimes generate
different output, which affects whether or not a test works properly.  The
particular motivating example is the gdb.dwarf2/dw5-rnglist-test.exp test,
which tests whether or not GDB is properly reading/handling DWARF v5
DW_AT_ranges of the form DW_FORM_rnglistx in lexical block dies.  GCC does
not generate that code, so compiling the test with GCC does not successfully
test anything. Clang does generate that code, so the only way to properly
test this is to compile the test case with clang.  A further twist is that
the GNU assembler currently chokes on DWARF v5 .debug_line sections, because
they start their file index at 0 instead of 1, and the GNU assembler has not
been updated to handle this.  This is not a problem for
assembly files generated by GCC, because GCC generates DWARF v3
.debug_line sections, even when passed -gdwarf-5.  Clang on the other hand,
when passed -gdwarf-5, generates DWARF v5 .debug_line tables. So using a
clang-generated .s file for the test is not an option, because the GNU
assembler chokes on it.

This patch updates lib/gdb.exp to allow it to properly handle test
cases where the source file is in fact an object file, and it updates
the dw5-rnglist-test to use an object file rather than the .cc file.  This
in turn makes the test itself compiler-agnostic.


-- Caroline Tice
cmtice@google.com

gdb/testsuite/ChangeLog

2020-07-16  Caroline Tice  <cmtice@google.com>

        * lib/gdb.exp (build_executable_from_specs): Create output_dir
        variable from call to standard_output_file; update code that
        compiles source files to object files and copies them to output
        directory, to check first and make sure they are not already
        object file.  If they are already object files, just copy them to
        output directory.
        * gdb.dwarf2/dw5-rnglist-test.o: New file (object file)
        * gdb.dwarf2/dw5-rnglist-test.exp: Update to use .o file rather than
        .cc file; this removes the dependency of this test on clang and
        allows it to work with GCC as well.

[-- Attachment #2: v1-0001-Update-GDB-testsuite-to-allow-tests-to-use-pre-bu.patch --]
[-- Type: application/octet-stream, Size: 42313 bytes --]

From fddf396f1a20e350ab233625f4866abb6bec70b7 Mon Sep 17 00:00:00 2001
From: Caroline Tice <cmtice@google.com>
Date: Thu, 16 Jul 2020 09:26:04 -0700
Subject: [PATCH v1] Update GDB testsuite to allow tests to use pre-built
 object files.

This change is motivated by the fact that clang and GCC sometimes generate
different output, which affects whether or not a test works properly.  The
particular motivating example is the gdb.dwarf2/dw5-rnglist-test.exp test,
which tests whether or not GDB is properly reading/handling DWARF v5
DW_AT_ranges of the form DW_FORM_rnglistx in lexical block dies.  GCC does
not generate that code, so compiling the test with GCC does not successfully
test anything. Clang does generate that code, so the only way to properly
test this is to compile the test case with clang.  A further twist is that
the GNU assembler currently chokes on DWARF v5 .debug_line sections, because
they start their file index at 0 instead of 1, and the GNU assembler has not
been updated to handle this.  This is not a problem for
assembly files generated by GCC, because GCC generates DWARF v3
.debug_line sections, even when passed -gdwarf-5.  Clang on the other hand,
when passed -gdwarf-5, generates DWARF v5 .debug_line tables. So using a
clang-generated .s file for the test is not an option, because the GNU
assembler chokes on it.

This patch updates lib/gdb.exp to allow it to properly handle test
cases where the source file is in fact an object file, and it updates
the dw5-rnglist-test to use an object file rather than the .cc file.  This
in turn makes the test itself compiler-agnostic.
---
 gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.exp |  15 ++++++++++++--
 gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.o   | Bin 0 -> 93144 bytes
 gdb/testsuite/lib/gdb.exp                     |  19 ++++++++++++++----
 3 files changed, 28 insertions(+), 6 deletions(-)
 create mode 100644 gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.o

diff --git a/gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.exp b/gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.exp
index af6c34b5dd..53f7c16795 100644
--- a/gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.exp
@@ -17,12 +17,23 @@
 # DW_FORM_rnglistx DW_AT_ranges field.  This test is intended for DWARF-5,
 # compiled with clang++.
 
-standard_testfile .cc
+# In order to allow this test to work with GCC as well as clang, we
+# compiled the source to an object file, using the command below, and then
+# run the test on the .o file.  This ensures that it will work for
+# either compiler, and that it will continue to test what it was
+# intened to test, even if subsequent compilers change their code
+# generation.
+#
+# Compilation command:
+# $ clang++ -gdwarf-5 -O0 -fPIE -c dw5-rnglist-test.cc
+
+standard_testfile .o
 
 # This test is intended for targets which support DWARF-5.
 # Since we pass an explicit -gdwarf-5 to the compiler,
 # we let that be the test of whether the target supports it.
 
+
 if { [prepare_for_testing "failed to prepare" "${testfile}" \
           $srcfile {debug c++ additional_flags=-gdwarf-5 \
                         additional_flags=-O0}] } {
@@ -33,7 +44,7 @@ if ![runto_main] {
     return -1
 }
 
-gdb_breakpoint [gdb_get_line_number "break-here"]
+gdb_breakpoint dw5-rnglist-test.cc:70
 gdb_continue_to_breakpoint "break-here" ".* break-here .*"
 
 gdb_test "print curr" "\\\(node \\\*\\\) $hex <node_array>"
diff --git a/gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.o b/gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.o
new file mode 100644
index 0000000000000000000000000000000000000000..a45678039dde17c8bfaf89eb568a44525ca459d7
GIT binary patch
literal 93144
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
F|9|~ID;xj-

literal 0
HcmV?d00001

diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 78dae17b0c..f5e1f0e876 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -6227,6 +6227,7 @@ proc build_executable_from_specs {testname executable options args} {
     global srcdir
 
     set binfile [standard_output_file $executable]
+    set output_dir [standard_output_file "."]
 
     set info_options ""
     if { [lsearch -exact $options "c++"] >= 0 } {
@@ -6272,11 +6273,21 @@ proc build_executable_from_specs {testname executable options args} {
 	    if { ! [regexp "^/" "$s"] } then {
 		set s "$srcdir/$subdir/$s"
 	    }
-	    if  { [$func "${s}" "${binfile}${i}.o" object $local_options] != "" } {
-		untested $testname
-		return -1
+	    # Only compile sourcfile into .o file if it is not already a
+	    # .o file.
+	    if { ! [string match "*.o" "$s"] } then {
+		if  { [$func "${s}" "${binfile}${i}.o" object $local_options] != "" } {
+		    untested $testname
+		    return -1
+		}
+		lappend objects "${binfile}${i}.o"
+	    } else {
+		# Source file IS an object file, so copy it to the
+		# standard_output_file directory and append it to the objects
+		# list.
+		eval exec cp "${s}" "${output_dir}"
+		lappend objects "${binfile}.o"
 	    }
-	    lappend objects "${binfile}${i}.o"
 	    incr i
 	}
 	set ret [$func $objects "${binfile}" executable $options]
-- 
2.27.0.389.gc38d7665816-goog


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2020-07-17 17:45 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-16 16:50 [PATCH] Update testsuite mechanism to allow object files as source files Caroline Tice
2020-07-16 17:21 ` Andrew Burgess
2020-07-16 18:07   ` Caroline Tice
2020-07-16 18:29     ` Andrew Burgess
2020-07-16 17:33 ` Joseph Myers
2020-07-16 18:13   ` Caroline Tice
2020-07-16 18:47     ` Andrew Burgess
2020-07-16 20:35     ` Joseph Myers
2020-07-16 20:12   ` Tom Tromey
2020-07-16 21:10     ` Caroline Tice
2020-07-16 21:16       ` Eric Christopher
2020-07-17  9:48         ` Andrew Burgess
2020-07-17 16:05           ` Caroline Tice
2020-07-17  9:43       ` Andrew Burgess
2020-07-17 17:45         ` Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).