aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2015-07-24 15:32:45 -0700
committerDoug Evans <dje@google.com>2015-07-24 15:32:45 -0700
commita97b16b8fcfc7ac818c43c9f9457966cfc47aed6 (patch)
treeea09d448807ddfa5690e799a26931764f64a6294
parent35baa57fcfb50f7db24f7850ec9e34f4bc25b45c (diff)
downloadgdb-a97b16b8fcfc7ac818c43c9f9457966cfc47aed6.zip
gdb-a97b16b8fcfc7ac818c43c9f9457966cfc47aed6.tar.gz
gdb-a97b16b8fcfc7ac818c43c9f9457966cfc47aed6.tar.bz2
Clean up testsuite compiler_info support.
gdb/testsuite/ChangeLog: * gdb.base/watchpoint.exp (test_complex_watchpoint): Remove compiler_info references. * gdb.cp/temargs.exp: Ditto. * lib/gdb.exp: Unset compiler_info instead of setting to "unknown". (get_compiler_info): Early exit if already computed. Set compiler_info to "unknown" if there was a problem. (test_compiler_info): Add function comment. Call get_compiler_info.
-rw-r--r--gdb/testsuite/ChangeLog10
-rw-r--r--gdb/testsuite/gdb.base/watchpoint.exp3
-rw-r--r--gdb/testsuite/gdb.cp/temargs.exp1
-rw-r--r--gdb/testsuite/lib/gdb.exp41
4 files changed, 41 insertions, 14 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 7f4386e..992d74a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,15 @@
2015-07-24 Doug Evans <dje@google.com>
+ * gdb.base/watchpoint.exp (test_complex_watchpoint): Remove
+ compiler_info references.
+ * gdb.cp/temargs.exp: Ditto.
+ * lib/gdb.exp: Unset compiler_info instead of setting to "unknown".
+ (get_compiler_info): Early exit if already computed. Set compiler_info
+ to "unknown" if there was a problem.
+ (test_compiler_info): Add function comment. Call get_compiler_info.
+
+2015-07-24 Doug Evans <dje@google.com>
+
* Makefile.in (check/%.exp): Pass directory for GDB_PARALLEL.
(workers/%.worker, build-perf): New rule.
(GDB_PERFTEST_MODE): New variable.
diff --git a/gdb/testsuite/gdb.base/watchpoint.exp b/gdb/testsuite/gdb.base/watchpoint.exp
index b2924d7..fcc9a8d 100644
--- a/gdb/testsuite/gdb.base/watchpoint.exp
+++ b/gdb/testsuite/gdb.base/watchpoint.exp
@@ -464,12 +464,11 @@ proc test_complex_watchpoint {} {
pass $test
}
-re "can't compute CFA for this frame.*\r\n$gdb_prompt $" {
- global compiler_info no_hw
+ global no_hw
# GCC < 4.5.0 does not get LOCATIONS_VALID set by dwarf2read.c.
# Therefore epilogue unwinder gets applied which is
# incompatible with dwarf2_frame_cfa.
- verbose -log "compiler_info: $compiler_info"
if {$no_hw && ([test_compiler_info {gcc-[0-3]-*}]
|| [test_compiler_info {gcc-4-[0-4]-*}])} {
xfail "$test (old GCC has broken watchpoints in epilogues)"
diff --git a/gdb/testsuite/gdb.cp/temargs.exp b/gdb/testsuite/gdb.cp/temargs.exp
index e5aff51..f086a63 100644
--- a/gdb/testsuite/gdb.cp/temargs.exp
+++ b/gdb/testsuite/gdb.cp/temargs.exp
@@ -34,7 +34,6 @@ if {![runto_main]} {
# NOTE: prepare_for_testing calls get_compiler_info, which we need
# for the test_compiler_info calls.
# gcc 4.4 and earlier don't emit enough info for some of our template tests.
-verbose -log "compiler_info: $compiler_info"
set have_older_template_gcc 0
set have_pr_41736_fixed 1
set have_pr_45024_fixed 1
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index fa0ab09..f32d04a 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -2788,12 +2788,20 @@ gdb_caching_proc target_is_gdbserver {
return $is_gdbserver
}
-set compiler_info "unknown"
+# N.B. compiler_info is intended to be local to this file.
+# Call test_compiler_info with no arguments to fetch its value.
+# Yes, this is counterintuitive when there's get_compiler_info,
+# but that's the current API.
+if [info exists compiler_info] {
+ unset compiler_info
+}
+
set gcc_compiled 0
set hp_cc_compiler 0
set hp_aCC_compiler 0
# Figure out what compiler I am using.
+# The result is cached so only the first invocation runs the compiler.
#
# ARG can be empty or "C++". If empty, "C" is assumed.
#
@@ -2860,6 +2868,11 @@ proc get_compiler_info {{arg ""}} {
global hp_cc_compiler
global hp_aCC_compiler
+ if [info exists compiler_info] {
+ # Already computed.
+ return 0
+ }
+
# Choose which file to preprocess.
set ifile "${srcdir}/lib/compiler.c"
if { $arg == "c++" } {
@@ -2901,8 +2914,14 @@ proc get_compiler_info {{arg ""}} {
}
}
- # Reset to unknown compiler if any diagnostics happened.
+ # Set to unknown if for some reason compiler_info didn't get defined.
+ if ![info exists compiler_info] {
+ verbose -log "get_compiler_info: compiler_info not provided"
+ set compiler_info "unknown"
+ }
+ # Also set to unknown compiler if any diagnostics happened.
if { $unknown } {
+ verbose -log "get_compiler_info: got unexpected diagnostics"
set compiler_info "unknown"
}
@@ -2936,18 +2955,18 @@ proc get_compiler_info {{arg ""}} {
return 0
}
+# Return the compiler_info string if no arg is provided.
+# Otherwise the argument is a glob-style expression to match against
+# compiler_info.
+
proc test_compiler_info { {compiler ""} } {
global compiler_info
+ get_compiler_info
- # if no arg, return the compiler_info string
-
- if [string match "" $compiler] {
- if [info exists compiler_info] {
- return $compiler_info
- } else {
- perror "No compiler info found."
- }
- }
+ # If no arg, return the compiler_info string.
+ if [string match "" $compiler] {
+ return $compiler_info
+ }
return [string match $compiler $compiler_info]
}