aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.compile
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2022-11-30 11:27:10 -0700
committerTom Tromey <tromey@adacore.com>2022-12-01 08:28:20 -0700
commit9a7fde04ca4232d4b2efed61486fff65e83ab3a2 (patch)
tree79ce2f78ee0a2610532e4a5ffc90421aa1083a93 /gdb/testsuite/gdb.compile
parent5b92bbd934059eb06cf531c268627deef53886aa (diff)
downloadfsf-binutils-gdb-9a7fde04ca4232d4b2efed61486fff65e83ab3a2.zip
fsf-binutils-gdb-9a7fde04ca4232d4b2efed61486fff65e83ab3a2.tar.gz
fsf-binutils-gdb-9a7fde04ca4232d4b2efed61486fff65e83ab3a2.tar.bz2
Avoid timeouts in gdb.compile
PR compile/29541 points out that some of the C++ tests in gdb.compile will time out when the glibc debuginfo is installed. This was interfering with my hacking on gdb by making test runs extremely long, so I looked into it. Internally the bug seems to be that gdb tries to convert multiple symbols named "var" via the compiler interface; one such symbol (I didn't track it down too far) causes the C++ compiler plugin to crash. Unfortunately, the crash is reported as a timeout, as the gdb side of the plugin simply hangs. This seems like a bug in the plugin RPC mechanism and, worse, apparently when I wrote this stuff I didn't really consider error reporting very much at all, so gdb can't really detect failures in the first place. Anyway... this patch works around the timeout by compiling a simple test that should provoke this bug, and then using "untested" if it notices a GCC crash. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29541
Diffstat (limited to 'gdb/testsuite/gdb.compile')
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus-anonymous.exp10
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus-array-decay.exp4
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus-inherit.exp10
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus-member.exp10
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus-method.exp10
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus-namespace.exp10
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus-nested.exp10
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus-print.exp3
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus-virtual.exp10
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus.exp9
-rw-r--r--gdb/testsuite/gdb.compile/compile-ifunc.exp3
-rw-r--r--gdb/testsuite/gdb.compile/compile-ops.exp3
-rw-r--r--gdb/testsuite/gdb.compile/compile-print.exp3
-rw-r--r--gdb/testsuite/gdb.compile/compile-setjmp.exp3
-rw-r--r--gdb/testsuite/gdb.compile/compile-tls.exp3
-rw-r--r--gdb/testsuite/gdb.compile/compile.exp3
16 files changed, 40 insertions, 64 deletions
diff --git a/gdb/testsuite/gdb.compile/compile-cplus-anonymous.exp b/gdb/testsuite/gdb.compile/compile-cplus-anonymous.exp
index 26a331a..c3ffeeb 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus-anonymous.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus-anonymous.exp
@@ -33,15 +33,13 @@ if {![runto_main]} {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested \
- "compile command not supported (could not find libcc1 shared library?)"
- return -1
-}
-
gdb_breakpoint [gdb_get_line_number "break here" $srcfile]
gdb_continue_to_breakpoint "testing location"
+if {[skip_compile_feature_untested "var = 0"]} {
+ return -1
+}
+
# Reminder, "var" is an integer; all these types get converted to `int'.
CompileExpression::new "var"
CompileExpression::test "anon_e" {(3|GHI)}
diff --git a/gdb/testsuite/gdb.compile/compile-cplus-array-decay.exp b/gdb/testsuite/gdb.compile/compile-cplus-array-decay.exp
index 18062a3..2892d24 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus-array-decay.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus-array-decay.exp
@@ -33,9 +33,7 @@ if {![runto_main]} {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested \
- "compile command not supported (could not find libcc1 shared library?)"
+if {[skip_compile_feature_untested]} {
return -1
}
diff --git a/gdb/testsuite/gdb.compile/compile-cplus-inherit.exp b/gdb/testsuite/gdb.compile/compile-cplus-inherit.exp
index 8f3d282..536a5a4 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus-inherit.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus-inherit.exp
@@ -33,15 +33,13 @@ if {![runto_main]} {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested \
- "compile command not supported (could not find libcc1 shared library?)"
- return -1
-}
-
gdb_breakpoint [gdb_get_line_number "break here" $srcfile]
gdb_continue_to_breakpoint "testing location"
+if {[skip_compile_feature_untested "var = 0"]} {
+ return -1
+}
+
CompileExpression::new "var"
CompileExpression::test "d.a_" 1
CompileExpression::test "d.b_" 2
diff --git a/gdb/testsuite/gdb.compile/compile-cplus-member.exp b/gdb/testsuite/gdb.compile/compile-cplus-member.exp
index 9325863..c18f965 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus-member.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus-member.exp
@@ -33,15 +33,13 @@ if {![runto_main]} {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested \
- "compile command not supported (could not find libcc1 shared library?)"
- return -1
-}
-
gdb_breakpoint [gdb_get_line_number "break here" $srcfile]
gdb_continue_to_breakpoint "testing location"
+if {[skip_compile_feature_untested "var = 0"]} {
+ return -1
+}
+
CompileExpression::new "var"
CompileExpression::test "a.public_" 1
CompileExpression::test "a.protected_" {(21|N::NB)}
diff --git a/gdb/testsuite/gdb.compile/compile-cplus-method.exp b/gdb/testsuite/gdb.compile/compile-cplus-method.exp
index 07e4a59..2f96f5f 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus-method.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus-method.exp
@@ -33,15 +33,13 @@ if {![runto_main]} {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested \
- "compile command not supported (could not find libcc1 shared library?)"
- return -1
-}
-
gdb_breakpoint [gdb_get_line_number "break here" $srcfile]
gdb_continue_to_breakpoint "testing location"
+if {[skip_compile_feature_untested "var = 0"]} {
+ return -1
+}
+
CompileExpression::new "var"
CompileExpression::test "a->get_var ()" 21
CompileExpression::test "a->get_var (static_cast<unsigned long> (1))" 100
diff --git a/gdb/testsuite/gdb.compile/compile-cplus-namespace.exp b/gdb/testsuite/gdb.compile/compile-cplus-namespace.exp
index 4fc626b..ec4d009 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus-namespace.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus-namespace.exp
@@ -33,15 +33,13 @@ if {![runto_main]} {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested \
- "compile command not supported (could not find libcc1 shared library?)"
- return -1
-}
-
gdb_breakpoint [gdb_get_line_number "break here" $srcfile]
gdb_continue_to_breakpoint "testing location"
+if {[skip_compile_feature_untested "var = 0"]} {
+ return -1
+}
+
CompileExpression::new "var"
CompileExpression::test "N1::N2::N3::N4::n4static" 400
CompileExpression::test "N1::N2::N3::N4::S4::s4static" 40
diff --git a/gdb/testsuite/gdb.compile/compile-cplus-nested.exp b/gdb/testsuite/gdb.compile/compile-cplus-nested.exp
index 1d28e34..a5ad87e 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus-nested.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus-nested.exp
@@ -33,15 +33,13 @@ if {![runto_main]} {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested \
- "compile command not supported (could not find libcc1 shared library?)"
- return -1
-}
-
gdb_breakpoint [gdb_get_line_number "break here" $srcfile]
gdb_continue_to_breakpoint "testing location"
+if {[skip_compile_feature_untested "var = 0"]} {
+ return -1
+}
+
CompileExpression::new "var"
CompileExpression::test "i1.a_" 2
CompileExpression::test "i2.a_" 3
diff --git a/gdb/testsuite/gdb.compile/compile-cplus-print.exp b/gdb/testsuite/gdb.compile/compile-cplus-print.exp
index 67b3951..38dd922 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus-print.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus-print.exp
@@ -36,8 +36,7 @@ if ![runto_main] {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested "compile command not supported (could not find libcc1 shared library?)"
+if {[skip_compile_feature_untested]} {
return -1
}
diff --git a/gdb/testsuite/gdb.compile/compile-cplus-virtual.exp b/gdb/testsuite/gdb.compile/compile-cplus-virtual.exp
index ee1a4d9..3ccd681 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus-virtual.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus-virtual.exp
@@ -33,15 +33,13 @@ if {![runto_main]} {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested \
- "compile command not supported (could not find libcc1 shared library?)"
- return -1
-}
-
gdb_breakpoint [gdb_get_line_number "break here" $srcfile]
gdb_continue_to_breakpoint "testing location"
+if {[skip_compile_feature_untested "var = 0"]} {
+ return -1
+}
+
CompileExpression::new "var"
CompileExpression::test "b.doit ()" 2
CompileExpression::test "c.doit ()" 3
diff --git a/gdb/testsuite/gdb.compile/compile-cplus.exp b/gdb/testsuite/gdb.compile/compile-cplus.exp
index dbdae5f..10e70e4 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus.exp
@@ -52,8 +52,10 @@ if ![runto_main] {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested "compile command not supported (could not find libcc1 shared library?)"
+gdb_breakpoint [gdb_get_line_number "break-here"]
+gdb_continue_to_breakpoint "break-here" ".* break-here .*"
+
+if {[skip_compile_feature_untested "var = 0"]} {
return -1
}
@@ -132,9 +134,6 @@ gdb_test "compile code *(volatile int *) 0 = 0;" \
"The program being debugged was signaled while in a function called from GDB\\.\r\nGDB has restored the context to what it was before the call\\.\r\n.*" \
"compile code segfault second"
-gdb_breakpoint [gdb_get_line_number "break-here"]
-gdb_continue_to_breakpoint "break-here" ".* break-here .*"
-
# C++ Specific tests.
## Public methods and members
diff --git a/gdb/testsuite/gdb.compile/compile-ifunc.exp b/gdb/testsuite/gdb.compile/compile-ifunc.exp
index 07de52c..5c51dd1 100644
--- a/gdb/testsuite/gdb.compile/compile-ifunc.exp
+++ b/gdb/testsuite/gdb.compile/compile-ifunc.exp
@@ -43,8 +43,7 @@ with_test_prefix "nodebug" {
# feature check below will work.
gdb_test_no_output "set language c" ""
- if {[skip_compile_feature_tests]} {
- untested "compile command not supported (could not find libcc1 shared library?)"
+ if {[skip_compile_feature_untested]} {
return -1
}
diff --git a/gdb/testsuite/gdb.compile/compile-ops.exp b/gdb/testsuite/gdb.compile/compile-ops.exp
index cff2f94..e18f92e 100644
--- a/gdb/testsuite/gdb.compile/compile-ops.exp
+++ b/gdb/testsuite/gdb.compile/compile-ops.exp
@@ -418,8 +418,7 @@ if ![runto func] {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested "compile command not supported (could not find libcc1 shared library?)"
+if {[skip_compile_feature_untested]} {
return -1
}
diff --git a/gdb/testsuite/gdb.compile/compile-print.exp b/gdb/testsuite/gdb.compile/compile-print.exp
index 5d01c1a..61d1331 100644
--- a/gdb/testsuite/gdb.compile/compile-print.exp
+++ b/gdb/testsuite/gdb.compile/compile-print.exp
@@ -25,8 +25,7 @@ if ![runto_main] {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested "compile command not supported (could not find libcc1 shared library?)"
+if {[skip_compile_feature_untested]} {
return -1
}
diff --git a/gdb/testsuite/gdb.compile/compile-setjmp.exp b/gdb/testsuite/gdb.compile/compile-setjmp.exp
index c883b2b..2f9d844 100644
--- a/gdb/testsuite/gdb.compile/compile-setjmp.exp
+++ b/gdb/testsuite/gdb.compile/compile-setjmp.exp
@@ -25,8 +25,7 @@ if ![runto_main] {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested "compile command not supported (could not find libcc1 shared library?)"
+if {[skip_compile_feature_untested]} {
return -1
}
diff --git a/gdb/testsuite/gdb.compile/compile-tls.exp b/gdb/testsuite/gdb.compile/compile-tls.exp
index beffe7f..6b34906 100644
--- a/gdb/testsuite/gdb.compile/compile-tls.exp
+++ b/gdb/testsuite/gdb.compile/compile-tls.exp
@@ -27,8 +27,7 @@ if {![runto_main]} {
return 0
}
-if {[skip_compile_feature_tests]} {
- untested "compile command not supported (could not find libcc1 shared library?)"
+if {[skip_compile_feature_untested]} {
return -1
}
diff --git a/gdb/testsuite/gdb.compile/compile.exp b/gdb/testsuite/gdb.compile/compile.exp
index c712070..b75ec4b 100644
--- a/gdb/testsuite/gdb.compile/compile.exp
+++ b/gdb/testsuite/gdb.compile/compile.exp
@@ -57,8 +57,7 @@ if ![runto_main] {
return -1
}
-if {[skip_compile_feature_tests]} {
- untested "compile command not supported (could not find libcc1 shared library?)"
+if {[skip_compile_feature_untested]} {
return -1
}