From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18648 invoked by alias); 22 Oct 2013 10:51:28 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 18634 invoked by uid 89); 22 Oct 2013 10:51:27 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.1 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: vaxjo.synopsys.com Received: from vaxjo.synopsys.com (HELO vaxjo.synopsys.com) (198.182.60.75) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 22 Oct 2013 10:51:27 +0000 Received: from WBSNus01mta1 (us01secmta1.synopsys.com [10.9.203.100]) by vaxjo.synopsys.com (Postfix) with ESMTP id 9E2BDDA54; Tue, 22 Oct 2013 03:51:25 -0700 (PDT) Received: from us01secmta1.internal.synopsys.com (us01secmta1.internal.synopsys.com [127.0.0.1]) by us01secmta1.internal.synopsys.com (Service) with ESMTP id 8AD1927113; Tue, 22 Oct 2013 03:51:25 -0700 (PDT) Received: from mailhost.synopsys.com (mailhost2.synopsys.com [10.9.202.240]) by us01secmta1.internal.synopsys.com (Service) with ESMTP id 50D3327102; Tue, 22 Oct 2013 03:51:25 -0700 (PDT) Received: from mailhost.synopsys.com (localhost [127.0.0.1]) by mailhost.synopsys.com (Postfix) with ESMTP id 413787C3; Tue, 22 Oct 2013 03:51:25 -0700 (PDT) Received: from ru20-arctools.internal.synopsys.com (ru20-arctools.internal.synopsys.com [10.121.9.107]) by mailhost.synopsys.com (Postfix) with ESMTP id 199577C1; Tue, 22 Oct 2013 03:51:23 -0700 (PDT) From: Anton Kolesov To: gdb-patches@sourceware.org Cc: Jeremy Bennett , Pedro Alves Subject: [PATCH v3] testsuite: Treat an empty string in needs_status_wrapper as false Date: Tue, 22 Oct 2013 10:51:00 -0000 Message-Id: <1382439080-29410-1-git-send-email-Anton.Kolesov@synopsys.com> In-Reply-To: <52650EA6.6030903@redhat.com> References: <52650EA6.6030903@redhat.com> X-SW-Source: 2013-10/txt/msg00677.txt.bz2 Updated according to feedback. GDB test suite considers [target_info needs_status_wrapper] to be false if it is unset or have a zero value. The former is achieved by using [target_info exists needs_status_wrapper]. GCC test suite on the other hand do not use "exists" but compares to an empty string. This doesn't make difference if value is unset, as unset value is treated as an empty string, but makes a difference if value was set to and empty string. In that case if needs_status_wrapper was set to an empty string, then GCC test suite will not use status wrapper, but GDB test suite will use it. Dejagnu's own remote.exp uses a comparison with an empty string. Though for some reason Dejagnu unlike GCC and GDB test suite doesn't treat a zero as a false. This patch makes GDB test suite treat an empty string in needs_status_wrapper the same way as it is done by GCC test suite and Dejagnu. It also extracts those checks into separate function 'gdb_needs_status_wrapper'. gdb/testsuite/ChangeLog: 2013-10-22 Anton Kolesov * lib/gdb.exp (gdb_needs_status_wrapper): New function. * lib/gdb.exp (gdb_compile, gdb_wrapper_init): Replace inline checks for needs_status_wrapper value with call to a new function. * lib/java.exp (java_init): Ditto. --- gdb/testsuite/lib/gdb.exp | 25 +++++++++++++++++++++---- gdb/testsuite/lib/java.exp | 2 +- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 3efd539..7001c8d 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -2510,8 +2510,7 @@ proc gdb_wrapper_init { args } { if { $gdb_wrapper_initialized == 1 } { return; } - if {[target_info exists needs_status_wrapper] && \ - [target_info needs_status_wrapper] != "0"} { + if {[gdb_needs_status_wrapper] == 1} { set result [build_wrapper "testglue.o"] if { $result != "" } { set gdb_wrapper_file [lindex $result 0] @@ -2609,8 +2608,7 @@ proc gdb_compile {source dest type options} { if { $gdb_wrapper_initialized == 0 } { gdb_wrapper_init } - if {[target_info exists needs_status_wrapper] && \ - [target_info needs_status_wrapper] != "0" && \ + if {[gdb_needs_status_wrapper] == 1 && \ [info exists gdb_wrapper_file]} { lappend options "libs=${gdb_wrapper_file}" lappend options "ldflags=${gdb_wrapper_flags}" @@ -4492,5 +4490,24 @@ proc using_fission { } { return [regexp -- "-gsplit-dwarf" $debug_flags] } +# There seems to be a lack of clear definition of what value of target_info +# needs_status_wrapper should be considered as False and what as True. Dejagnu +# in remote.exp makes a check comparing with an empty string. Which means that +# False is an empty string or unset value. GCC test suite does the same, but it +# also treats zero as a False. GDB previously was using zero and the unset +# value as False, but unlike others it was treating an explicitly set empty +# string as True. This function applies the same logic as GCC test suite for a +# compatibility reasons and should be used instead of any direct checks for a +# needs_status_wrapper value. +# Return 1 if status wrapper is required, return 0 otherwise. +proc gdb_needs_status_wrapper { } { + if {[target_info needs_status_wrapper] != "" && \ + [target_info needs_status_wrapper] != "0" } { + return 1 + } else { + return 0 + } +} + # Always load compatibility stuff. load_lib future.exp diff --git a/gdb/testsuite/lib/java.exp b/gdb/testsuite/lib/java.exp index 19b1eee..8e6ff23 100644 --- a/gdb/testsuite/lib/java.exp +++ b/gdb/testsuite/lib/java.exp @@ -70,7 +70,7 @@ proc java_init { args } { set wrapper_file "" set wrap_compile_flags "" - if [target_info exists needs_status_wrapper] { + if {[gdb_needs_status_wrapper] == 1} { set result [build_wrapper "testglue.o"] if { $result != "" } { set wrapper_file [lindex $result 0] -- 1.8.4.1