From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25083 invoked by alias); 18 Mar 2003 20:57:50 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 24996 invoked from network); 18 Mar 2003 20:57:49 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 18 Mar 2003 20:57:49 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id h2IKvmQ17793 for ; Tue, 18 Mar 2003 15:57:48 -0500 Received: from pobox.corp.redhat.com (pobox.corp.redhat.com [172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id h2IKvmV07737 for ; Tue, 18 Mar 2003 15:57:48 -0500 Received: from localhost.localdomain (vpn50-21.rdu.redhat.com [172.16.50.21]) by pobox.corp.redhat.com (8.11.6/8.11.6) with ESMTP id h2IKvm006667 for ; Tue, 18 Mar 2003 15:57:48 -0500 Received: (from kev@localhost) by localhost.localdomain (8.11.6/8.11.6) id h2IKvgM24870 for gdb-patches@sources.redhat.com; Tue, 18 Mar 2003 13:57:42 -0700 Date: Tue, 18 Mar 2003 20:57:00 -0000 From: Kevin Buettner Message-Id: <1030318205742.ZM24869@localhost.localdomain> To: gdb-patches@sources.redhat.com Subject: [RFC] mdebugread.c: Fix IRIX segfault MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2003-03/txt/msg00414.txt.bz2 I recently discovered that a simple "Hello, world" program would cause gdb to segfault when compiled with the Irix compiler for the o32 ABI. The change which cause this breakage in gdb is due to Joel's Jan 3 change to mdebugread.c. It appears that the symbols in my o32 Irix binary don't use the convention that Joel is relying upon to terminate the loop which counts the fields. However, it does appear that simply looking for an iss of 0 is sufficient to terminate the search. The documentation that I've been able to locate about mdebug indicates that index 0 in in the string tables will be the null string. I'm using David Anderson's doc dated August 30, 1995. Any comments on the following patch? mdebugread.c is maintainerless, right? If not, I'll need approval from the maintainer to check this in. * mdebugread.c (parse_symbol): For stEnd, we're done counting when iss is 0. Index: mdebugread.c =================================================================== RCS file: /cvs/src/src/gdb/mdebugread.c,v retrieving revision 1.43 diff -u -p -r1.43 mdebugread.c --- mdebugread.c 25 Feb 2003 21:36:18 -0000 1.43 +++ mdebugread.c 18 Mar 2003 20:42:33 -0000 @@ -916,9 +916,13 @@ parse_symbol (SYMR *sh, union aux_ext *a method whose name is identical to the class name (in particular constructor method names are different from the class name). There is therefore no risk that - this check stops the count on the StEnd of a method. */ - if (strcmp (debug_info->ss + cur_fdr->issBase + tsym.iss, - name) == 0) + this check stops the count on the StEnd of a method. + + Also, assume that we're really at the end when tsym.iss + is 0. (An iss of zero points at the null string.) */ + if (tsym.iss == 0 + || strcmp (debug_info->ss + cur_fdr->issBase + tsym.iss, + name) == 0) goto end_of_fields; break;