From a97b16b8fcfc7ac818c43c9f9457966cfc47aed6 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Fri, 24 Jul 2015 15:32:45 -0700 Subject: [PATCH] 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. --- gdb/testsuite/ChangeLog | 10 +++++++++ gdb/testsuite/gdb.base/watchpoint.exp | 3 +-- gdb/testsuite/gdb.cp/temargs.exp | 1 - gdb/testsuite/lib/gdb.exp | 41 +++++++++++++++++++++++++---------- 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 + * 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 + * 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] } -- 2.7.4