From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15592 invoked by alias); 15 May 2003 19:59:49 -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 15556 invoked from network); 15 May 2003 19:59:49 -0000 Received: from unknown (HELO crack.them.org) (146.82.138.56) by sources.redhat.com with SMTP; 15 May 2003 19:59:49 -0000 Received: from nevyn.them.org ([66.93.61.169] ident=mail) by crack.them.org with asmtp (Exim 3.12 #1 (Debian)) id 19GOtX-0003Fn-00; Thu, 15 May 2003 15:00:03 -0500 Received: from drow by nevyn.them.org with local (Exim 3.36 #1 (Debian)) id 19GOt2-0006Af-00; Thu, 15 May 2003 15:59:32 -0400 Date: Thu, 15 May 2003 19:59:00 -0000 From: Daniel Jacobowitz To: Kris Warkentin Cc: "Gdb-Patches@Sources.Redhat.Com" Subject: Re: [BFD PATCH] Fix QNX Neutrino core file reading Message-ID: <20030515195931.GA23668@nevyn.them.org> Mail-Followup-To: Kris Warkentin , "Gdb-Patches@Sources.Redhat.Com" References: <045401c31b18$7ebac400$0202040a@catdog> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <045401c31b18$7ebac400$0202040a@catdog> User-Agent: Mutt/1.5.1i X-SW-Source: 2003-05/txt/msg00253.txt.bz2 On Thu, May 15, 2003 at 03:30:51PM -0400, Kris Warkentin wrote: > I finally figured out why our core files weren't showing which thread was > active when it was generated. It seems we weren't setting lwpid correctly > and were not making the .reg section at the correct time. Okay to apply? Wrong list - ask on binutils@. Looks reasonable though. > > cheers, > > Kris > > Changelog: > > * elf.c (elfcore_grok_nto_status): Only set lwpid for the active or > signalled thread. > (elfcore_grok_nto_gregs): Only make .reg section for the active thread. > > Index: elf.c > =================================================================== > RCS file: /cvs/src/src/bfd/elf.c,v > retrieving revision 1.184 > diff -u -r1.184 elf.c > --- elf.c 9 May 2003 10:58:12 -0000 1.184 > +++ elf.c 15 May 2003 19:27:31 -0000 > @@ -7001,18 +7001,30 @@ > char buf[100]; > char *name; > asection *sect; > + short sig; > + unsigned flags; > > /* nto_procfs_status 'pid' field is at offset 0. */ > elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, (bfd_byte *) ddata); > > - /* nto_procfs_status 'tid' field is at offset 4. */ > - elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, (bfd_byte *) ddata + 4); > + /* nto_procfs_status 'tid' field is at offset 4. Pass it back. */ > + *tid = bfd_get_32 (abfd, (bfd_byte *) ddata + 4); > > - /* nto_procfs_status 'what' field is at offset 14. */ > - elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, (bfd_byte *) ddata + > 14); > + /* nto_procfs_status 'flags' field is at offset 8. */ > + flags = bfd_get_32 (abfd, (bfd_byte *) ddata + 8); > > - /* Pass tid back. */ > - *tid = elf_tdata (abfd)->core_lwpid; > + /* nto_procfs_status 'what' field is at offset 14. */ > + if( (sig = bfd_get_16 (abfd, (bfd_byte *) ddata + 14)) > 0 ){ > + elf_tdata (abfd)->core_signal = sig; > + elf_tdata (abfd)->core_lwpid = *tid; > + } > + > + /* _DEBUG_FLAG_CURTID (current thread) is 0x80. Some cores > + do not come from signals so we make sure we set the current > + thread just in case. */ > + if (flags & 0x00000080){ > + elf_tdata (abfd)->core_lwpid = *tid; > + } > > /* Make a ".qnx_core_status/%d" section. */ > sprintf (buf, ".qnx_core_status/%d", *tid); > @@ -7022,8 +7034,7 @@ > return FALSE; > strcpy (name, buf); > > - sect = bfd_make_section (abfd, name); > - if (sect == NULL) > + if ( (sect = bfd_make_section (abfd, name)) == NULL ) > return FALSE; > > sect->_raw_size = note->descsz; > @@ -7061,7 +7072,12 @@ > sect->flags = SEC_HAS_CONTENTS; > sect->alignment_power = 2; > > - return elfcore_maybe_make_sect (abfd, ".reg", sect); > + /* This is the current thread. */ > + if (elf_tdata (abfd)->core_lwpid == tid){ > + return elfcore_maybe_make_sect (abfd, ".reg", sect); > + } > + > + return TRUE; > } > > #define BFD_QNT_CORE_INFO 7 > > -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer