From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4967 invoked by alias); 1 Aug 2013 21:10:21 -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 4938 invoked by uid 89); 1 Aug 2013 21:10:20 -0000 X-Spam-SWARE-Status: No, score=-2.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,RDNS_NONE,SPF_PASS autolearn=no version=3.3.1 Received: from Unknown (HELO mail-ve0-f202.google.com) (209.85.128.202) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Thu, 01 Aug 2013 21:10:19 +0000 Received: by mail-ve0-f202.google.com with SMTP id ox1so279414veb.1 for ; Thu, 01 Aug 2013 14:10:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:subject:date:message-id:mime-version:content-type :x-gm-message-state; bh=/t/0ZmsuncE6v5ecReMM4KSlkRpkcL0qr2auIS9Qk+o=; b=ignjeejxtaWn7zgqXhjMn+cYoyIHo+gJmO82jVSoIF54mQpq8PH83g1VHyH2rKno02 Mn3e8EwhUO2txuAeF/gNSianlWw0KHk8G0UqCBzAn53ns0a9dXt9DglpOuqWZY8hj15o 2VrQY9G33OSoUFsSV7ysVa8jZggDG/8nHhLLpqMKEnVDaUxiD8FmspYtiPkyZJqEulfD oiJmBBwaDFM/J6np8ZxkF+kQ/5kGxZEAPqK0EXfaflriUw5tl4Qi+8BmuaeI4c1pcFzK QTb8gW4bXfWHu/Zy7CU2DDHggdSiW647LmpN00jiXdXZendNHcfvnjFvtLteE0+r2Hda H3jg== X-Received: by 10.236.119.227 with SMTP id n63mr1426426yhh.38.1375391411816; Thu, 01 Aug 2013 14:10:11 -0700 (PDT) Received: from corp2gmr1-1.hot.corp.google.com (corp2gmr1-1.hot.corp.google.com [172.24.189.92]) by gmr-mx.google.com with ESMTPS id c45si1854392yhm.2.2013.08.01.14.10.11 for (version=TLSv1.1 cipher=AES128-SHA bits=128/128); Thu, 01 Aug 2013 14:10:11 -0700 (PDT) Received: from ruffy.mtv.corp.google.com (ruffy.mtv.corp.google.com [172.17.128.44]) by corp2gmr1-1.hot.corp.google.com (Postfix) with ESMTP id 46DAA31C1C9; Thu, 1 Aug 2013 14:10:11 -0700 (PDT) From: Doug Evans To: gdb-patches@sourceware.org, jan.kratochvil@redhat.com Subject: [RFA] py-value.exp: Use different names for C/C++ .o files. Date: Thu, 01 Aug 2013 21:10:00 -0000 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Gm-Message-State: ALoCoQkg/lFJ8fxLPz8qXOUzFGJLGZLz9XbCV5mVGA+ZxIYn3xIIbo6g3rS0vjmX7NxXy3UqXbBE08l0diB52DBUmI3l6dOdEcqoa7AuYGsgsDAob7wKoi/miIQF9mnnOZeQoDbEyl21uow1eYGRqhyB65vhhSgSp8bNIhQTez8SFw7gksb/rNrt34+GVdCRyQXMqK1VpHSOwvcoeO+RbEbZ9eHkda0J5Q== X-SW-Source: 2013-08/txt/msg00050.txt.bz2 Hi. Awhile ago I submitted this patch: http://sourceware.org/ml/gdb-patches/2012-05/msg00553.html Jan requested I do things differently: http://sourceware.org/ml/gdb-patches/2012-05/msg00568.html This patch implements this request for py-value.exp. Namely different .o files are used for C and C++ so that the C++ compilation doesn't clobber the .dwo file of the C compilation. Also, I noticed that the C++ test wasn't checking skip_cplus_tests. Adding that made the code more like my original patch, but this new patch still makes it easier to reproduce results by hand. While I was at it I renamed py-value.cc which is used by py-value-cc.exp. It's confusing to have py-value.cc *not* used by py-value.exp. Regression tested on amd64-linux, with/without Fission. Ok to check in? 2013-08-01 Doug Evans * gdb.python/py-value-cc.cc: Renamed from py-value.cc. * gdb.python/py-value-cc.exp: Update. * gdb.python/py-value.exp: Use different names for .o files for C and C++. Only perform C++ tests if !skip_cplus_tests. Index: testsuite/gdb.python/py-value-cc.cc =================================================================== RCS file: testsuite/gdb.python/py-value-cc.cc diff -N testsuite/gdb.python/py-value-cc.cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ testsuite/gdb.python/py-value-cc.cc 1 Aug 2013 20:57:32 -0000 @@ -0,0 +1,39 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2012-2013 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +class A { +}; + +typedef int *int_ptr; + +int +func (const A &a) +{ + int val = 10; + int &int_ref = val; + int_ptr ptr = &val; + int_ptr &int_ptr_ref = ptr; + + return 0; /* Break here. */ +} + +int +main () +{ + A obj; + return func (obj); +} Index: testsuite/gdb.python/py-value-cc.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-value-cc.exp,v retrieving revision 1.4 diff -u -p -r1.4 py-value-cc.exp --- testsuite/gdb.python/py-value-cc.exp 1 Jan 2013 06:41:26 -0000 1.4 +++ testsuite/gdb.python/py-value-cc.exp 1 Aug 2013 20:57:32 -0000 @@ -18,7 +18,7 @@ if { [skip_cplus_tests] } { continue } -standard_testfile py-value.cc +standard_testfile .cc if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} { return -1 Index: testsuite/gdb.python/py-value.cc =================================================================== RCS file: testsuite/gdb.python/py-value.cc diff -N testsuite/gdb.python/py-value.cc --- testsuite/gdb.python/py-value.cc 1 Jan 2013 06:41:26 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,39 +0,0 @@ -/* This testcase is part of GDB, the GNU debugger. - - Copyright 2012-2013 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -class A { -}; - -typedef int *int_ptr; - -int -func (const A &a) -{ - int val = 10; - int &int_ref = val; - int_ptr ptr = &val; - int_ptr &int_ptr_ref = ptr; - - return 0; /* Break here. */ -} - -int -main () -{ - A obj; - return func (obj); -} Index: testsuite/gdb.python/py-value.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-value.exp,v retrieving revision 1.33 diff -u -p -r1.33 py-value.exp --- testsuite/gdb.python/py-value.exp 1 Jan 2013 06:41:26 -0000 1.33 +++ testsuite/gdb.python/py-value.exp 1 Aug 2013 20:57:32 -0000 @@ -21,13 +21,26 @@ load_lib gdb-python.exp standard_testfile # Build inferior to language specification. +# LANG is one of "c" or "c++". proc build_inferior {exefile lang} { global srcdir subdir srcfile testfile hex - if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${exefile}" executable "debug $lang"] != "" } { + # Use different names for .o files based on the language. + # For Fission, the debug info goes in foo.dwo and we don't want, + # for example, a C++ compile to clobber the dwo of a C compile. + # ref: http://gcc.gnu.org/wiki/DebugFission + switch ${lang} { + "c" { set filename ${testfile}.o } + "c++" { set filename ${testfile}-cxx.o } + } + set objfile [standard_output_file $filename] + + if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object "debug $lang"] != "" + || [gdb_compile "${objfile}" "${exefile}" executable "debug $lang"] != "" } { untested "Couldn't compile ${srcfile} in $lang mode" return -1 } + return 0 } proc test_value_creation {} { @@ -463,9 +476,10 @@ proc test_value_hash {} { gdb_test "python print (one.__hash__() == hash(one))" "True" "Test inbuilt hash" } -# Build C and C++ versions of executable -build_inferior "${binfile}" "c" -build_inferior "${binfile}-cxx" "c++" +# Build C version of executable. C++ is built later. +if { [build_inferior "${binfile}" "c"] < 0 } { + return -1 +} # Start with a fresh gdb. clean_restart ${binfile} @@ -494,5 +508,12 @@ test_lazy_strings test_value_after_death # Test either C or C++ values. + test_subscript_regression "${binfile}" "c" -test_subscript_regression "${binfile}-cxx" "c++" + +if ![skip_cplus_tests] { + if { [build_inferior "${binfile}-cxx" "c++"] < 0 } { + return -1 + } + test_subscript_regression "${binfile}-cxx" "c++" +}