public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Mark Kettenis <mark.kettenis@xs4all.nl>
To: jhb@freebsd.org
Cc: palves@redhat.com, gdb-patches@sourceware.org
Subject: Re: [PATCH] Fix signal trampoline detection/unwinding on recent FreeBSD/i386 and FreeBSD/amd64
Date: Wed, 11 Feb 2015 00:01:00 -0000	[thread overview]
Message-ID: <201502110000.t1B00hKq019459@glazunov.sibelius.xs4all.nl> (raw)
In-Reply-To: <54DA9572.1010304@redhat.com> (message from Pedro Alves on Tue,	10 Feb 2015 23:34:10 +0000)

> Date: Tue, 10 Feb 2015 23:34:10 +0000
> From: Pedro Alves <palves@redhat.com>
> 
> Thanks, updated patch looks good.  Feel free to push.

Same here.  Although you guys should really make randomize the
location signal trampoline page.  In that case you should look at
amd64obsd-tdep.c:amd64obsd_sigtramp_p().

> On 02/10/2015 07:14 PM, John Baldwin wrote:
> > On Tuesday, February 10, 2015 05:08:14 PM Pedro Alves wrote:
> >> On 02/10/2015 02:50 PM, John Baldwin wrote:
> >>>> +     sysctl that returns the location of the signal trampoline.
> >>>> +     Note that this fetches the address for the current (gdb) process.
> >>>> +     This will be correct for other 64-bit processes, but the signal
> >>>> +     trampoline location is not properly set for 32-bit processes. */
> >>
> >> I'm not sure I understand what does "but the signal trampoline
> >> location is not properly set for 32-bit processes" means.  You mean
> >> it's not properly set because GDB is 64-bit; or it's not properly set
> >> in the kernel; or something else?
> > 
> > The sysctl is designed to be used against the target process, but I did not
> > see an easy way to hook into each run and ptrace attach to invoke the sysctl
> > against the inferior directly.  
> 
> You'd do something like the patch below, on top of yours.  Completely
> untested.  Just for illustration.
> 
> However, unless this info is recorded in core dumps, this is all of course
> broken for core file debugging ...
> 
> Do we _really_ need to know the sigtramp location?  What does the sigtramp
> disassembly look like?  How about just detecting the sigtramp
> like other platforms do, by recognizing the instructions?  On Linux, this
> is just:
> 
>   mov $__NR_rt_sigreturn, %rax
>   syscall
> 
> And is parsed in amd64_linux_sigtramp_p -> amd64_linux_sigtramp_start.
> 
> Looking at:
> 
> https://github.com/freebsd/freebsd/blob/master/sys/amd64/amd64/sigtramp.S
> 
> It looks pretty much the same.  That should make it always work correctly
> for (cross) core and remote debugging.
> 
> -------------

  reply	other threads:[~2015-02-11  0:01 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-04 15:47 John Baldwin
2015-02-10 14:51 ` [PATCH] " John Baldwin
2015-02-10 17:08   ` Pedro Alves
2015-02-10 19:14     ` John Baldwin
2015-02-10 23:34       ` Pedro Alves
2015-02-11  0:01         ` Mark Kettenis [this message]
2015-02-11 16:04         ` John Baldwin
2015-02-11 16:40           ` Pedro Alves
2015-02-16 18:25             ` John Baldwin
2015-02-16 22:56               ` Pedro Alves
2015-02-23 16:33                 ` John Baldwin
2015-02-23 16:56                   ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201502110000.t1B00hKq019459@glazunov.sibelius.xs4all.nl \
    --to=mark.kettenis@xs4all.nl \
    --cc=gdb-patches@sourceware.org \
    --cc=jhb@freebsd.org \
    --cc=palves@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).