[review] gdb/testsuite: Introduce compiler_supports_ctf_debug guard function

Message ID gerrit.1571177353000.I505c11169a9bc9871a31fc0c61e119f92f32cc63@gnutoolchain-gerrit.osci.io
State New, archived
Headers

Commit Message

Simon Marchi (Code Review) Oct. 15, 2019, 10:09 p.m. UTC
  Andrew Burgess has uploaded a new change for review.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/121
......................................................................

gdb/testsuite: Introduce compiler_supports_ctf_debug guard function

Most versions of GCC in the wild don't support CTF debug format right
now, so, rather than attempting to compile the tests and failing each
time, this patch introduces a guard function to check if the compiler
supports CTF.  If we don't have CTF support then the CTF tests are
skipped.

This patch only updates 3 of the 4 CTF tests, the fourth will be
handled in the next patch.

gdb/testsuite/ChangeLog:

	* gdb.base/ctf-constvars.exp: Skip test if CTF is not supported in
	the compiler.  Clean up header comment a little.
	* gdb.base/ctf-ptype.exp: Likewise.
	* gdb.base/ctf-whatis.exp: Likewise.
	* lib/gdb.exp (compiler_supports_ctf_debug): New proc.

Change-Id: I505c11169a9bc9871a31fc0c61e119f92f32cc63
---
M gdb/testsuite/ChangeLog
M gdb/testsuite/gdb.base/ctf-constvars.exp
M gdb/testsuite/gdb.base/ctf-ptype.exp
M gdb/testsuite/gdb.base/ctf-whatis.exp
M gdb/testsuite/lib/gdb.exp
5 files changed, 39 insertions(+), 20 deletions(-)
  

Comments

Simon Marchi (Code Review) Oct. 16, 2019, 6:02 p.m. UTC | #1
Tom Tromey has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/121
......................................................................


Patch Set 1:

(1 comment)

Thanks for the patch.

I tend to suspect this should wait for the other patch (mentioned below).
What do you think?

https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/121/1/gdb/testsuite/gdb.base/ctf-whatis.exp 
File gdb/testsuite/gdb.base/ctf-whatis.exp:

https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/121/1/gdb/testsuite/gdb.base/ctf-whatis.exp@19 
PS1, Line 19:     return 0
https://sourceware.org/ml/gdb-patches/2019-10/msg00450.html reviews a very similar patch.  There I suggested using "unsupported" in these cases, since I think this is the current style.
  
Simon Marchi (Code Review) Oct. 16, 2019, 8:02 p.m. UTC | #2
Andrew Burgess has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/121
......................................................................


Patch Set 1:

> Patch Set 1:
> 
> (1 comment)
> 
> Thanks for the patch.
> 
> I tend to suspect this should wait for the other patch (mentioned below).
> What do you think?

That's fine.  I originally posted this to the m/l while back[1], I hadn't noticed that Nick had duplicated the work since then.  My main interest is the other two patches in this series.

[1] https://sourceware.org/ml/gdb-patches/2019-10/msg00220.html
  
Simon Marchi (Code Review) Oct. 22, 2019, 4:11 p.m. UTC | #3
Tom Tromey has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/121
......................................................................


Patch Set 1:

> > I tend to suspect this should wait for the other patch (mentioned below).
> > What do you think?
> 
> That's fine.  I originally posted this to the m/l while back[1], I hadn't noticed that Nick had duplicated the work since then.  My main interest is the other two patches in this series.
> 
> [1] https://sourceware.org/ml/gdb-patches/2019-10/msg00220.html

If yours came first, I'm ok if you want to get it in earlier so you can
unblock your other patches.  I do think it should use `unsupported` though.

Thanks again for doing this.
  
Simon Marchi (Code Review) Nov. 16, 2019, 10:45 p.m. UTC | #4
Simon Marchi has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/121
......................................................................


Patch Set 1:

(2 comments)

| --- gdb/testsuite/gdb.base/ctf-whatis.exp
| +++ gdb/testsuite/gdb.base/ctf-whatis.exp
| @@ -14,13 +14,13 @@ # You should have received a copy of the GNU General Public License
|  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
|  
|  # This file is a subset of whatis.exp written by Rob Savoye. (rob@cygnus.com)
|  
| -#
| -# test running programs
| -#
| -# -gt generates full-fledged CTF.
| +if ![compiler_supports_ctf_debug] {
| +    return 0

PS1, Line 19:

> https://sourceware.org/ml/gdb-patches/2019-10/msg00450.html reviews a very similar patch.  There I suggested using "unsupported" in these cases, since I think this is the current style.

I think that makes sense, as it leaves a trace in the .sum file.

| +}
|  
|  standard_testfile .c
| -set opts "additional_flags=-gt"
| -
| +
| +# Using `-gt` generates full-fledged CTF debug information.
| +set opts "additional_flags=-gt"
|  if { [prepare_for_testing "failed to prepare" ${testfile} \
| --- gdb/testsuite/lib/gdb.exp
| +++ gdb/testsuite/lib/gdb.exp
| @@ -6734,8 +6734,19 @@ proc cmp_file_string { file str msg } {
|  	pass "$msg"
|      } else {
|  	fail "$msg"
|      }
|  }
|  
| +# Does the compiler support CTF debug output using '-gt' compiler
| +# flag?
| +gdb_caching_proc compiler_supports_ctf_debug {
| +    verbose -log "APB: Got here."

PS1, Line 6743:

Was it your intention to leave this logging line here?

| +    return [gdb_can_simple_compile ctfdebug {
| +	int main () {
| +	    return 0;
| +	}
| +    } executable "additional_flags=-gt"]
| +}
| +
|  # Always load compatibility stuff.
|  load_lib future.exp
  
Simon Marchi (Code Review) Nov. 18, 2019, 6:03 p.m. UTC | #5
Andrew Burgess has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/121
......................................................................


Patch Set 3:

In this revision I've:

1. Changed the name of the guard function to skip_cft_tests, this matches what Nick used in his patch series.  I liked that name more,

2. Made use of unsupported when we skip ctf test files,

3. Removed the stray logging line I left in.

This patch does overlap with https://sourceware.org/ml/gdb-patches/2019-10/msg00450.html in its introduction of the guard function, but that patch covers other issues too.  This series goes on to rewrite some of the ctf test files, something that's not covered in Nick's patch.
  
Simon Marchi (Code Review) Nov. 18, 2019, 6:46 p.m. UTC | #6
Simon Marchi has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/121
......................................................................


Patch Set 3:

(2 comments)

| --- gdb/testsuite/gdb.base/ctf-whatis.exp
| +++ gdb/testsuite/gdb.base/ctf-whatis.exp
| @@ -14,13 +14,13 @@ # You should have received a copy of the GNU General Public License
|  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
|  
|  # This file is a subset of whatis.exp written by Rob Savoye. (rob@cygnus.com)
|  
| -#
| -# test running programs
| -#
| -# -gt generates full-fledged CTF.
| +if ![compiler_supports_ctf_debug] {
| +    return 0

PS1, Line 19:

> > https://sourceware.org/ml/gdb-patches/2019-10/msg00450.html reviews a very similar patch.  There I suggested using "unsupported" in these cases, since I think this is the current style.
> 
> I think that makes sense, as it leaves a trace in the .sum file.

Done.

| +}
|  
|  standard_testfile .c
| -set opts "additional_flags=-gt"
| -
| +
| +# Using `-gt` generates full-fledged CTF debug information.
| +set opts "additional_flags=-gt"
|  if { [prepare_for_testing "failed to prepare" ${testfile} \
| --- gdb/testsuite/lib/gdb.exp
| +++ gdb/testsuite/lib/gdb.exp
| @@ -6734,8 +6734,19 @@ proc cmp_file_string { file str msg } {
|  	pass "$msg"
|      } else {
|  	fail "$msg"
|      }
|  }
|  
| +# Does the compiler support CTF debug output using '-gt' compiler
| +# flag?
| +gdb_caching_proc compiler_supports_ctf_debug {
| +    verbose -log "APB: Got here."

PS1, Line 6743:

> Was it your intention to leave this logging line here?

Done.

| +    return [gdb_can_simple_compile ctfdebug {
| +	int main () {
| +	    return 0;
| +	}
| +    } executable "additional_flags=-gt"]
| +}
| +
|  # Always load compatibility stuff.
|  load_lib future.exp
  
Simon Marchi (Code Review) Nov. 18, 2019, 6:47 p.m. UTC | #7
Simon Marchi has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/121
......................................................................


Patch Set 3: Code-Review+2
  

Patch

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index ce6e0f2..245b8f9 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,11 @@ 
+2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/ctf-constvars.exp: Skip test if CTF is not supported in
+	the compiler.  Clean up header comment a little.
+	* gdb.base/ctf-ptype.exp: Likewise.
+	* gdb.base/ctf-whatis.exp: Likewise.
+	* lib/gdb.exp (compiler_supports_ctf_debug): New proc.
+
 2019-10-14  Simon Marchi <simon.marchi@polymtl.ca>
 
 	* gdb.mi/list-thread-groups-available.exp: Read entries one by
diff --git a/gdb/testsuite/gdb.base/ctf-constvars.exp b/gdb/testsuite/gdb.base/ctf-constvars.exp
index 4a81a94..58c0bad 100644
--- a/gdb/testsuite/gdb.base/ctf-constvars.exp
+++ b/gdb/testsuite/gdb.base/ctf-constvars.exp
@@ -18,20 +18,20 @@ 
 #
 # This file is part of the gdb testsuite
 #
-# tests for const variables
-#           const pointers to vars
-#           pointers to const variables
-#           const pointers to const vars
-# with mixed types
+# Tests for: const variables,
+#            const pointers to vars
+#            pointers to const variables
+#            const pointers to const vars
+# with mixed types.
 
-#
-# test running programs
-#
-# -gt generates full-fledged CTF.
+if ![compiler_supports_ctf_debug] {
+    return 0
+}
 
 standard_testfile .c
-set opts "additional_flags=-gt"
 
+# Using `-gt` generates full-fledged CTF debug information.
+set opts "additional_flags=-gt"
 if { [prepare_for_testing "failed to prepare" ${testfile} \
 	  [list $srcfile] [list $opts nowarnings]] } {
     return 0
diff --git a/gdb/testsuite/gdb.base/ctf-ptype.exp b/gdb/testsuite/gdb.base/ctf-ptype.exp
index 9f54582..172f6d1 100644
--- a/gdb/testsuite/gdb.base/ctf-ptype.exp
+++ b/gdb/testsuite/gdb.base/ctf-ptype.exp
@@ -15,14 +15,14 @@ 
 
 # This file is a subset of ptype.exp written by Rob Savoye. (rob@cygnus.com)
 
-#
-# test running programs
-#
-# -gt generates full-fledged CTF.
+if ![compiler_supports_ctf_debug] {
+    return 0
+}
 
 standard_testfile .c
-set opts "additional_flags=-gt"
 
+# Using `-gt` generates full-fledged CTF debug information.
+set opts "additional_flags=-gt"
 if { [prepare_for_testing "failed to prepare" ${testfile} \
 	  [list $srcfile] [list $opts nowarnings]] } {
     return 0
diff --git a/gdb/testsuite/gdb.base/ctf-whatis.exp b/gdb/testsuite/gdb.base/ctf-whatis.exp
index 3f26fc3..377eeb3 100644
--- a/gdb/testsuite/gdb.base/ctf-whatis.exp
+++ b/gdb/testsuite/gdb.base/ctf-whatis.exp
@@ -15,14 +15,14 @@ 
 
 # This file is a subset of whatis.exp written by Rob Savoye. (rob@cygnus.com)
 
-#
-# test running programs
-#
-# -gt generates full-fledged CTF.
+if ![compiler_supports_ctf_debug] {
+    return 0
+}
 
 standard_testfile .c
-set opts "additional_flags=-gt"
 
+# Using `-gt` generates full-fledged CTF debug information.
+set opts "additional_flags=-gt"
 if { [prepare_for_testing "failed to prepare" ${testfile} \
           [list $srcfile] [list $opts nowarnings]] } {
     return 0
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index fed46ec..aa93a4b 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -6737,5 +6737,16 @@ 
     }
 }
 
+# Does the compiler support CTF debug output using '-gt' compiler
+# flag?
+gdb_caching_proc compiler_supports_ctf_debug {
+    verbose -log "APB: Got here."
+    return [gdb_can_simple_compile ctfdebug {
+	int main () {
+	    return 0;
+	}
+    } executable "additional_flags=-gt"]
+}
+
 # Always load compatibility stuff.
 load_lib future.exp