This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] gcore/linux-proc fix


On Wed, Sep 24, 2003 at 12:52:20PM -0400, Elena Zannoni wrote:
> 
> This patch fixes some problems with the gcore command on single
> threaded programs.  Before the patch, the core file did not report
> anywhere the PID of the process:
> 
> 
>   CORE                 144  PRSTATUS
>     SIGINFO:  signo: 0, code = 0, errno = 0
>     signal: 0, pending: 00000000, holding: 00000000
>     pid: 0, ppid = 0, pgrp = 0, sid = 0
>   ^^^^^^^^^
> 
> 
>      utime:      0.000000s,  stime:      0.000000s
>     cutime:      0.000000s, cstime:      0.000000s
>     eax: fffffffc  ebx: bfffc4a4  ecx: bfffc4a4  edx: b75d79f8
>     esi: bfffc5bc  edi: bfffc53c  ebp: bfffc648  esp: bfffc484
>     eip: b75ebc02  eflags: 00000246, original eax: 000000a2
>     cs: 0023  ds: 002b  es: 002b  fs: 0000  gs: 0033  ss: 002b
> 
> 
> 
> 
> after the patch:
> 
> 
>   CORE                 144  PRSTATUS
>     SIGINFO:  signo: 0, code = 0, errno = 0
>     signal: 0, pending: 00000000, holding: 00000000
>     pid: 5846, ppid = 0, pgrp = 0, sid = 0
>   ^^^^^^^^^^^^
> 
>      utime:      0.000000s,  stime:      0.000000s
>     cutime:      0.000000s, cstime:      0.000000s
>     eax: fffffffc  ebx: bffff674  ecx: bffff674  edx: b75d79f8
>     esi: bffff78c  edi: bffff70c  ebp: bffff818  esp: bffff654
>     eip: b75ebc02  eflags: 00000246, original eax: 000000a2
>     cs: 0023  ds: 002b  es: 002b  fs: 0000  gs: 0033  ss: 002b
> 
>   CORE                 108  FPREGSET
>   LINUX                512  <unknown>: 1189489535
> 
> 
> 
> Note also that if the function to write the note section is called via
> the iterator for multi-threaded programs
> (i.e. linux_corefile_thread_callback),
> registers_changed()/target_fetch_registers() are called, but if
> invoked directly for the single-threaded case,
> registers_changed()/target_fetch_registers() are not called.
> So I added a wrapper to do that.
> 
> It all works fine with multi-threaded apps.

Looks good to me.  I've been using a similar hack to call
target_fetch_registers, too.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]