From patchwork Sun Dec 23 16:10:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eli Zaretskii X-Patchwork-Id: 30823 Received: (qmail 73352 invoked by alias); 23 Dec 2018 16:10:46 -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 73216 invoked by uid 89); 23 Dec 2018 16:10:43 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-11.9 required=5.0 tests=BAYES_00, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=Based, stepping, continuing X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 23 Dec 2018 16:10:41 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gb6Kt-0003Ox-89 for gdb-patches@sourceware.org; Sun, 23 Dec 2018 11:10:40 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:56159) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gb6Kt-0003Od-4i; Sun, 23 Dec 2018 11:10:39 -0500 Received: from [176.228.60.248] (port=3025 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1gb6Ks-0006NL-OE; Sun, 23 Dec 2018 11:10:39 -0500 Date: Sun, 23 Dec 2018 18:10:27 +0200 Message-Id: <83sgyo8brg.fsf@gnu.org> From: Eli Zaretskii To: Simon Marchi CC: gdb-patches@sourceware.org In-reply-to: (message from Simon Marchi on Sat, 22 Dec 2018 11:47:07 -0500) Subject: Re: GDB internal error in pc_in_thread_step_range References: <83h8kjr8r6.fsf@gnu.org> <100001f1b27aa7d90902a75d5db37710@polymtl.ca> <83a7m6tk92.fsf@gnu.org> <8336qxfpjo.fsf@gnu.org> <83tvjde68l.fsf@gnu.org> <83ftutcy7p.fsf@gnu.org> <659d33b5e4af35aea6c3aaef08559f31@polymtl.ca> <837eg4cick.fsf@gnu.org> <988ca92d2c5c976fbea57c2381eb6279@polymtl.ca> <834lb6ar3g.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-IsSubscribed: yes > Date: Sat, 22 Dec 2018 11:47:07 -0500 > From: Simon Marchi > Cc: gdb-patches@sourceware.org > > >> Huh, interesting. I looked at elfread, and similar undefined symbols > >> are skipped: > >> > >> https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/elfread.c;h=71e6fcca6ec62ec57f93f06d8a9913612be6f9e2;hb=HEAD#l270 > > > > So maybe GDB should skip them as well? > > Yes. Can you please give it a try it? Like this? > >> Note that if we implement the solution of rejecting the symbols with > >> section == -1, those mst_abs symbols won't be there anymore. > > > > Fine by me. Should we push such a change? > > Based on what we saw, I would be for it. But you'll need to make the > change and test it for regression, as I don't have the necessary setup > (and knowledge) to do that on Windows. I'm sorry, I don't have such a setup, either. Can anyone else run the regression tests? If not, how are MinGW related changes tested when submitted here? > >> So it kind of works for your use case, but it's not right, IMO. If > >> the > >> process did not exit as it does here, the behavior would be erratic. > > > > I don't think it would be erratic, we will just see the same > > > > 0x00401nnn in __register_frame_info () > > > > for several steps. Is that so bad? > > Well, first thing, I think it's wrong that we show that it's in > __register_frame_info. If this was an actual resolved .text symbol, it > wouldn't be so bad, but here it's not even a function in the program, it > doesn't make sense. The change above causes the following behavior, when stepping out of 'main' with "next": 6 return 0; (gdb) n 7 } (gdb) 0x00401288 in ?? () (gdb) n Cannot find bounds of current function (gdb) c Continuing. [Inferior 1 (process 9228) exited normally] (gdb) q If this is fine with you, it's fine with me. Thanks. --- gdb/coffread.c~1 2018-07-04 18:41:59.000000000 +0300 +++ gdb/coffread.c 2018-12-23 10:24:15.758116900 +0200 @@ -874,8 +874,10 @@ coff_symtab_read (minimal_symbol_reader int section = cs_to_section (cs, objfile); tmpaddr = cs->c_value; - record_minimal_symbol (reader, cs, tmpaddr, mst_text, - section, objfile); + /* Don't record unresolved symbols. */ + if (!(cs->c_secnum <= 0 && cs->c_value == 0)) + record_minimal_symbol (reader, cs, tmpaddr, mst_text, + section, objfile); fcn_line_ptr = main_aux.x_sym.x_fcnary.x_fcn.x_lnnoptr; fcn_start_addr = tmpaddr;