Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* PING: PATCH: PR backtrace/14646: [x32] backtrace doesn't work
@ 2012-10-03 15:26 H.J. Lu
  2012-10-03 15:43 ` Mark Kettenis
       [not found] ` <20121003154712.GH3028@adacore.com>
  0 siblings, 2 replies; 20+ messages in thread
From: H.J. Lu @ 2012-10-03 15:26 UTC (permalink / raw)
  To: GDB; +Cc: mark.kettenis

On Sun, Sep 30, 2012 at 2:40 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> Hi,
>
> amd64_x32_init_abi has
>
>   tdep->sp_regnum_from_eax = AMD64_RSP_REGNUM;
>   tdep->pc_regnum_from_eax = AMD64_RIP_REGNUM;
>
> But unwind frame info is based on the real RSP/RIP
> registers.  Pseudo sp/pc registers don't work with
> frame related codes:
>
> [hjl@gnu-tools-1 gdb]$ egrep "pc_regnum|sp_regnum" *fram*.c
> dwarf2-frame.c:  if (regnum == gdbarch_pc_regnum (gdbarch))
> dwarf2-frame.c:  else if (regnum == gdbarch_sp_regnum (gdbarch))
> dwarf2-frame.c:          == gdbarch_sp_regnum (gdbarch)))
> dwarf2-frame-tailcall.c:  if (regnum == gdbarch_pc_regnum
> (this_gdbarch))
> dwarf2-frame-tailcall.c:  else if (cache->prev_sp_p && regnum ==
> gdbarch_sp_regnum (this_gdbarch))
> dwarf2-frame-tailcall.c:      int sp_regnum;
> dwarf2-frame-tailcall.c:      sp_regnum = gdbarch_sp_regnum
> (prev_gdbarch);
> dwarf2-frame-tailcall.c:      if (sp_regnum == -1)
> dwarf2-frame-tailcall.c:      prev_sp = frame_unwind_register_unsigned
> (this_frame, sp_regnum);
> frame.c:      && gdbarch_pc_regnum (gdbarch) >= 0
> frame.c:                      gdbarch_pc_regnum (gdbarch),
> frame.c:                      gdbarch_pc_regnum (gdbarch),
> frame.c:     the gdbarch_sp_regnum register is meaningful.  */
> frame.c:  if (gdbarch_sp_regnum (gdbarch) >= 0)
> frame.c:                    gdbarch_sp_regnum (gdbarch));
> [hjl@gnu-tools-1 gdb]$
>
> It is nice to print
>
> (gdb) p $sp
> $1 = (void *) 0xffffd028
>
> instead of
>
> (gdb) p $sp
> $1 = 4294955048
>
> But it breaks frame unwind.  This patch removes pseudo sp/pc regnum from
> x32.  "p $sp" and "p $pc" will print 64bit integers.  But "p $esp" and
> "p $esp" work fine.  OK for trunk and 4.5 branch?
>
> Thanks.
>
>
> H.J.
> ---
> 2012-09-30  H.J. Lu  <hongjiu.lu@intel.com>
>
>         PR backtrace/14646
>         PR gdb/14647
>         * i386-tdep.h (gdbarch_tdep): Remove sp_regnum_from_eax and
>         pc_regnum_from_eax.
>         * i386-tdep.c (i386_gdbarch_init): Don't use sp_regnum_from_eax
>         nor pc_regnum_from_eax.
>         * amd64-tdep.c (amd64_x32_init_abi): Don't set sp_regnum_from_eax
>         nor pc_regnum_from_eax.
>

PING.

-- 
H.J.


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2012-10-15 20:41 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-03 15:26 PING: PATCH: PR backtrace/14646: [x32] backtrace doesn't work H.J. Lu
2012-10-03 15:43 ` Mark Kettenis
2012-10-03 15:59   ` H.J. Lu
2012-10-03 17:03     ` H.J. Lu
2012-10-05  2:08       ` H.J. Lu
     [not found] ` <20121003154712.GH3028@adacore.com>
     [not found]   ` <CAMe9rOreX6NAf08vD8=k4LBGevvTFUd-tqwwWmbsA3iRxxsE2A@mail.gmail.com>
     [not found]     ` <201210040657.q946vJlc006566@glazunov.sibelius.xs4all.nl>
     [not found]       ` <CAMe9rOounZ9e14QeMLvXR64gG5rJxQ9nNxt64YoLW54bx5VtHw@mail.gmail.com>
2012-10-08 19:48         ` Mark Kettenis
2012-10-08 20:04           ` H.J. Lu
2012-10-08 20:22             ` Mark Kettenis
2012-10-08 20:38               ` H.J. Lu
2012-10-08 20:47                 ` Mark Kettenis
2012-10-08 21:01                   ` H.J. Lu
2012-10-09 15:32                     ` H.J. Lu
2012-10-09 15:40                       ` Mark Kettenis
2012-10-09 15:48                         ` Mark Kettenis
2012-10-09 16:35                           ` H.J. Lu
2012-10-09 16:38                             ` H.J. Lu
2012-10-15 10:10                               ` Mark Kettenis
2012-10-15 20:41                                 ` H.J. Lu
2012-10-11 22:34                           ` H.J. Lu
2012-10-12  8:31                             ` Mark Kettenis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox