From patchwork Sat Nov 8 19:30:34 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Evans X-Patchwork-Id: 3623 Received: (qmail 21985 invoked by alias); 8 Nov 2014 19:31:31 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 21970 invoked by uid 89); 8 Nov 2014 19:31:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-pa0-f41.google.com Received: from mail-pa0-f41.google.com (HELO mail-pa0-f41.google.com) (209.85.220.41) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Sat, 08 Nov 2014 19:31:28 +0000 Received: by mail-pa0-f41.google.com with SMTP id rd3so5614297pab.14 for ; Sat, 08 Nov 2014 11:31:27 -0800 (PST) X-Received: by 10.70.103.102 with SMTP id fv6mr21132031pdb.92.1415475086432; Sat, 08 Nov 2014 11:31:26 -0800 (PST) Received: from seba.sebabeach.org.gmail.com (173-13-178-53-sfba.hfc.comcastbusiness.net. [173.13.178.53]) by mx.google.com with ESMTPSA id ae4sm5628204pad.16.2014.11.08.11.31.25 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 08 Nov 2014 11:31:25 -0800 (PST) From: Doug Evans To: Yao Qi Cc: Subject: Re: [PATCH 7/9] Rewrite lookup_static_symbol to use gdbarch routine References: <87d29cvqfu.fsf@codesourcery.com> Date: Sat, 08 Nov 2014 11:30:34 -0800 In-Reply-To: (Doug Evans's message of "Fri, 07 Nov 2014 08:28:07 -0800") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 X-IsSubscribed: yes Doug Evans writes: > [...] > I filed pr 17564 to document the issue. > https://sourceware.org/bugzilla/show_bug.cgi?id=17564 > > Attached is a testcase. > I'll add the PR number to the above ChangeLog entry as well. > > 2014-11-07 Doug Evans > > PR symtab/17564 > * gdb.base/symtab-search-order.exp: New file. > * gdb.base/symtab-search-order.c: New file. > * gdb.base/symtab-search-order-1.c: New file. > * gdb.base/symtab-search-order-shlib-1.c: New file. Heh. Testing on windows showed a bad testcase. FAIL: gdb.base/symtab-search-order.exp: p shlib_1_func Here's a fix. The testcase wasn't referencing anything in the shlib so it was being discarded from the link. 2014-11-08 Doug Evans PR symtab/17564 * gdb.base/symtab-search-order.exp: New file. * gdb.base/symtab-search-order.c: New file. * gdb.base/symtab-search-order-1.c: New file. * gdb.base/symtab-search-order-shlib-1.c: New file. diff --git a/gdb/testsuite/gdb.base/symtab-search-order-1.c b/gdb/testsuite/gdb.base/symtab-search-order-1.c new file mode 100644 index 0000000..bff9b7a --- /dev/null +++ b/gdb/testsuite/gdb.base/symtab-search-order-1.c @@ -0,0 +1 @@ +static int static_global = 23; diff --git a/gdb/testsuite/gdb.base/symtab-search-order-shlib-1.c b/gdb/testsuite/gdb.base/symtab-search-order-shlib-1.c new file mode 100644 index 0000000..a23da5f --- /dev/null +++ b/gdb/testsuite/gdb.base/symtab-search-order-shlib-1.c @@ -0,0 +1,7 @@ +static int static_global = 42; + +int +shlib_1_func (void) +{ + return static_global; +} diff --git a/gdb/testsuite/gdb.base/symtab-search-order.c b/gdb/testsuite/gdb.base/symtab-search-order.c new file mode 100644 index 0000000..ab38db6 --- /dev/null +++ b/gdb/testsuite/gdb.base/symtab-search-order.c @@ -0,0 +1,11 @@ +extern int shlib_1_func (void); + +int +main () +{ + /* We need a reference to shlib_1_func to make sure its shlib is + not discarded from the link. This happens on windows. */ + int x = shlib_1_func (); + + return 0; +} diff --git a/gdb/testsuite/gdb.base/symtab-search-order.exp b/gdb/testsuite/gdb.base/symtab-search-order.exp new file mode 100644 index 0000000..eb39d87 --- /dev/null +++ b/gdb/testsuite/gdb.base/symtab-search-order.exp @@ -0,0 +1,59 @@ +# Copyright 2014 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 . + +if {[skip_shlib_tests]} { + return 0 +} + +standard_testfile .c symtab-search-order-1.c symtab-search-order-shlib-1.c +set srcfile $srcdir/$subdir/$srcfile +set srcfile2 $srcdir/$subdir/$srcfile2 +set lib1src $srcdir/$subdir/$srcfile3 +set lib1 [standard_output_file symtab-search-order-1.sl] + +set lib_opts "debug" +set exec_opts [list debug shlib=$lib1] + +if [get_compiler_info] { + return -1 +} + +if { [gdb_compile_shlib $lib1src $lib1 $lib_opts] != "" + || [gdb_compile [list $srcfile $srcfile2] $binfile executable \ + $exec_opts] != ""} { + untested "Could not compile $lib1, or $srcfile." + return -1 +} + +# Start with a fresh gdb. + +clean_restart $binfile +gdb_load_shlibs $lib1 + +if ![runto_main] { + fail "Can't run to main" + return -1 +} + +# PR 17564 +# Expand something in the shared library, +# and then try to print static_global in the binary. +# We should get the static_global in the binary. +# Note: static_global in the binary needs to be in a file +# other than the one with "main" because gdb will expand +# the symtab with main when starting. + +gdb_test "p shlib_1_func" "= .*" +gdb_test "p static_global" " = 23"