This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Get backtrace at PLT and stepi into PLT
- From: Thinker Li <thinker at branda dot to>
- To: Daniel Jacobowitz <drow at false dot org>
- Cc: Thinker Li <thinker at branda dot to>, gdb-patches at sourceware dot org
- Date: Tue, 21 Jul 2009 10:57:06 +0800
- Subject: Re: Get backtrace at PLT and stepi into PLT
- References: <20090720120722.GA28313@caradoc.them.org>
Daniel Jacobowitz writes:
> On Mon, Jul 20, 2009 at 03:36:18PM +0800, Thinker Li wrote:
> > And, as what you had said, there are a lot of ABI-defined mapping symbols
> > ($a, $t) in symbol tables of shared objects. But, they are generated
> > only for .text but .plt section. So, it got nothing to try to issue
> > a backtrace command when the inferior is stopped at .plt section.
> >
> > Is GNU ld supposed to generate ABI-defined mapping symbols for
> > .plt? Or, does GDB need to do more work on this issue?
>
> Mapping symbols are used for other things, like setting breakpoints,
> but not for backtrace. What's the actual problem with backtracing?
>
You can not do backtrace when you stop at PLT with GDB.
arm_stub_unwind_sniffer create a frame with NORMAL_FRAME type for
PLT. But, when we do backtrace, get_prev_frame() will check if
this frame inside_entry_func. Since we can not found any symbol for
PLT, it:s func address is 0, and entry_point_address() is also 0 if
symfile_objfile is NULL (no main symbol table). It makes problem on
backtracing.
> Current versions of GNU ld do generate correct mapping symbols for the
> PLT. Some earlier versions didn't, though.