From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9816 invoked by alias); 8 Apr 2013 03:27:37 -0000 Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org Received: (qmail 9800 invoked by uid 89); 8 Apr 2013 03:27:36 -0000 X-Spam-SWARE-Status: No, score=-2.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE autolearn=ham version=3.3.1 Received: from mail-vc0-f173.google.com (HELO mail-vc0-f173.google.com) (209.85.220.173) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Mon, 08 Apr 2013 03:27:35 +0000 Received: by mail-vc0-f173.google.com with SMTP id gf11so1638427vcb.18 for ; Sun, 07 Apr 2013 20:27:34 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.220.77.138 with SMTP id g10mr9151313vck.69.1365391654181; Sun, 07 Apr 2013 20:27:34 -0700 (PDT) Received: by 10.221.5.4 with HTTP; Sun, 7 Apr 2013 20:27:34 -0700 (PDT) In-Reply-To: <515D459A.9080802@redhat.com> References: <515D459A.9080802@redhat.com> Date: Mon, 08 Apr 2013 03:27:00 -0000 Message-ID: Subject: Re: Fwd: Question regarding core dump debugging using gdb on armv4 From: Abhijit Ray Chaudhury To: Pedro Alves Cc: gdb@sourceware.org Content-Type: text/plain; charset=UTF-8 X-SW-Source: 2013-04/txt/msg00016.txt.bz2 Pedro, That is exactly what I wanted to do. I want get back traces of all the running treads and the stack variables. I would dump the NOTE PHDRS, which has NT_PRSTATTUS, NT_PRPSINFO, NT_AUXV and a bunch of NT_PRSTATUS structures. Then I need to decide which of the PHDRS ( which are of load type) , to be dumped. >From your answer it looked like I need lot of ELF parsing , so I think I need to invoke user level program when core dump happens. Do you know of any documents describing the shared object loading process by gdb from core files ? Thanks in advance, -Abhijit On Thu, Apr 4, 2013 at 2:49 PM, Pedro Alves wrote: > On 04/04/2013 04:30 AM, Abhijit Ray Chaudhury wrote: >> Hi , >> >> I am trying to reduce core dump size on target running linux . The >> processor is armv4 family. I tweak elf_core_dump function of linux >> kernel 2.6.23. >> >> I tweaked the kernel to dump only elf note, registers and stack >> segments of the running process. >> >> But gdb fails to load required shared object files and fails to give >> the backtraces of the running process. >> >> Could you please help me ascertain how gdb loads the required >> libraries from the core dump. Which ELF section of the core contains >> the information ? > > GDB reads the load map off of structures in the dynamic loader (which runs > in userspace). The dynamic loader->debugger interface has a 'struct r_debug' > structure in memory that holds the list of loaded libraries. You need to > preserve that and whatever it references in the core. > > In dynamic executables you can find where r_debug is by consulting > the DT_DEBUG dyntag, found in the .dynamic section of the executable, > which in turn can be found in the PT_DYNAMIC program header, > which is found by scanning the OS auxiliary vector, which the kernel > has access to. All this can be seen in action in gdb's solib-svr4.c. > Dumping all of libc's memory may work too.. > > -- > Pedro Alves >