From: John Baldwin <jhb@freebsd.org>
To: Pedro Alves <palves@redhat.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 31/40] target_ops/C++: Base FreeBSD target
Date: Wed, 18 Apr 2018 00:40:00 -0000 [thread overview]
Message-ID: <2336080.G2aX46TNlR@ralph.baldwin.cx> (raw)
In-Reply-To: <4c3b320e-ecbe-4e97-9ee4-91cacca60b8d@redhat.com>
On Tuesday, April 17, 2018 06:07:37 PM Pedro Alves wrote:
> On 04/17/2018 05:05 PM, John Baldwin wrote:
> > On Saturday, April 14, 2018 08:09:44 PM Pedro Alves wrote:
> >> The
> >>
> >> $architecture x NetBSD/OpenBSD/FreeBSD
> >>
> >> support matrix complicates things a bit. There's common BSD target
> >> code, and there's common architecture-specific code shared between the
> >> different BSDs. Current, all that is stiched together to form a final
> >> target, via the i386bsd_target, x86bsd_target, fbsd_nat_add_target
> >> functions etc.
> >>
> >> Introduces a fbsd_nat_target base/prototype target. To be used in
> >> following patches.
> >
> > I will do some tests of FreeBSD/amd64 first and let you know what I find.
>
> Thank you!
I've pushed a target_ops-cxx branch to github.com/bsdjhb/gdb.git that has
some small fixups (compile fixes). I've built the amd64, i386, arm, and
aarch64 FreeBSD native targets so far. Simple testing of the the amd64
and i386 binaries seems to work, but I encountered a new test failure
in the testsuite for FreeBSD/amd64 that is a bit odd. In particular,
I get a core dump running 'info set' when it tries to display the
current setting of whether ASLR is disabled. Looking at the core of gdb:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0000000000d3a7d4 in target_ops::supports_disable_randomization (
this=0x28d4c68 <the_amd64_fbsd_nat_target>)
at ../../gdb/target-delegates.c:2732
2732 return this->beneath->supports_disable_randomization ();
(top-gdb) where
#0 0x0000000000d3a7d4 in target_ops::supports_disable_randomization (
this=0x28d4c68 <the_amd64_fbsd_nat_target>)
at ../../gdb/target-delegates.c:2732
#1 0x0000000000d3a857 in find_default_supports_disable_randomization (
#2 0x0000000000d3a805 in dummy_target::supports_disable_randomization (
this=0x8040d6060) at ../../gdb/target-delegates.c:2738
#3 0x0000000000d2edd8 in target_supports_disable_randomization ()
at ../../gdb/target.c:2560
#4 0x0000000000b9adbc in show_disable_randomization (file=0x8047b1200,
from_tty=1, c=0x80476db80, value=0x7fffffffd859 "on")
at ../../gdb/infrun.c:181
#5 0x00000000007b1178 in do_show_command (arg=0x0, from_tty=1, c=0x80476db80)
at ../../gdb/cli/cli-setshow.c:646
#6 0x00000000007b1434 in cmd_show_list (list=0x80476db80, from_tty=1,
prefix=0x22a7ead "") at ../../gdb/cli/cli-setshow.c:685
...
The native target isn't currently in the target_stack so its 'beneath' is
NULL:
(top-gdb) p beneath
During symbol reading, missing name for subprogram DIE at 14709647.
$1 = (target_ops *) 0x0
(top-gdb) p target_stack
$2 = (target_ops *) 0x8040d6060
(top-gdb) p *target_stack
$3 = {_vptr$target_ops = 0x183aaf0 <vtable for dummy_target+16>,
beneath = 0x0, to_stratum = dummy_stratum}
From the stack trace we can see that it already bounced down to the dummy
target which calls find_default_supports_disable_randomization. That
finds the native "run" target and invokes its method without pushing
it onto the stack. I think before if a native target didn't support ASLR
at all it just didn't set the function pointer and no harm was done.
Now the function pointer is effectively always set but to something that
assumes 'beneath' is valid. I'm not quite sure how you want to fix this.
The simple solution is to change the default method to return false if
beneath is NULL, but I'm not quite sure that fits in with the design this
branch is aiming for.
--
John Baldwin
next prev parent reply other threads:[~2018-04-18 0:40 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-14 19:09 [PATCH 00/40] C++ify target_ops, toward multi-target Pedro Alves
2018-04-14 19:10 ` [PATCH 09/40] target_ops/C++: bfd-target Pedro Alves
2018-04-14 19:10 ` [PATCH 02/40] make-target-delegates: line break between return type and function name Pedro Alves
2018-04-14 19:10 ` [PATCH 17/40] target_ops/C++: macOS/Darwin target Pedro Alves
2018-04-14 19:10 ` [PATCH 23/40] target_ops/C++: IA-64 GNU/Linux Pedro Alves
2018-04-14 19:10 ` [PATCH 19/40] target_ops/C++: AIX target Pedro Alves
2018-04-14 19:10 ` [PATCH 07/40] target_ops/C++: ravenscar-thread Pedro Alves
2018-04-14 19:10 ` [PATCH 03/40] target_ops/C++: exec target Pedro Alves
2018-04-14 19:10 ` [PATCH 08/40] target_ops/C++: bsd-uthread Pedro Alves
2018-04-14 19:10 ` [PATCH 27/40] target_ops/C++: SPARC GNU/Linux Pedro Alves
2018-04-14 19:10 ` [PATCH 39/40] linux_nat_target: More low methods Pedro Alves
2018-04-18 0:40 ` John Baldwin
2018-04-14 19:10 ` [PATCH 37/40] target_ops/C++: The Hurd Pedro Alves
2018-04-14 19:10 ` [PATCH 32/40] target_ops/C++: Generic i386/AMD64 BSD targets Pedro Alves
2018-04-14 19:10 ` [PATCH 29/40] target_ops/C++: Tile-Gx GNU/Linux Pedro Alves
2018-04-14 19:10 ` [PATCH 38/40] target_ops: Use bool throughout Pedro Alves
2018-04-14 19:10 ` [PATCH 20/40] target_ops/C++: ARM GNU/Linux Pedro Alves
2018-04-14 19:10 ` [PATCH 40/40] target factories, target open and multiple instances of targets Pedro Alves
2018-04-14 19:10 ` [PATCH 34/40] target_ops/C++: bsd_kvm_add_target, BSD libkvm target Pedro Alves
2018-04-14 19:15 ` [PATCH 14/40] target_ops/C++: PPC/PPC64 GNU/Linux Pedro Alves
2018-04-14 19:15 ` [PATCH 22/40] target_ops/C++: HP-PA GNU/Linux Pedro Alves
2018-04-14 19:15 ` [PATCH 12/40] target_ops/C++: target remote-sim Pedro Alves
2018-04-14 19:18 ` [PATCH 04/40] target_ops/C++: core target Pedro Alves
2018-04-14 19:18 ` [PATCH 24/40] target_ops/C++: m32r GNU/Linux Pedro Alves
2018-04-14 19:18 ` [PATCH 36/40] target_ops/C++: go32/DJGPP Pedro Alves
2018-04-14 19:18 ` [PATCH 25/40] target_ops/C++: m68k GNU/Linux Pedro Alves
2018-04-14 19:19 ` [PATCH 05/40] target_ops/C++: ctf/tfile targets Pedro Alves
2018-04-14 19:19 ` [PATCH 31/40] target_ops/C++: Base FreeBSD target Pedro Alves
2018-04-17 16:12 ` John Baldwin
2018-04-17 17:07 ` Pedro Alves
2018-04-17 17:28 ` Kamil Rytarowski
2018-04-17 18:13 ` Pedro Alves
2018-04-17 18:50 ` Kamil Rytarowski
2018-04-18 0:40 ` John Baldwin [this message]
2018-04-18 1:51 ` Kamil Rytarowski
2018-04-18 11:23 ` Pedro Alves
[not found] ` <0b900391-f06d-278c-cbed-b89b207bd12e@redhat.com>
2018-04-18 14:20 ` Pedro Alves
2018-04-18 20:55 ` John Baldwin
2018-04-14 19:19 ` [PATCH 26/40] target_ops/C++: s390 GNU/Linux Pedro Alves
2018-04-14 19:19 ` [PATCH 30/40] target_ops/C++: Xtensa GNU/Linux Pedro Alves
2018-04-14 19:19 ` [PATCH 16/40] target_ops/C++: Windows targets Pedro Alves
2018-04-14 19:19 ` [PATCH 35/40] target_ops/C++: NTO/QNX, nto-procfs.c Pedro Alves
2018-04-14 19:19 ` [PATCH 15/40] target_ops/C++: Solaris/procfs Pedro Alves
2018-04-14 19:20 ` [PATCH 06/40] target_ops/C++: spu-multiarch Pedro Alves
2018-04-14 19:20 ` [PATCH 33/40] target_ops/C++: The rest of the BSD targets Pedro Alves
2018-04-14 19:20 ` [PATCH 10/40] target_ops/C++: record targets Pedro Alves
2018-04-14 19:20 ` [PATCH 11/40] target_ops/C++: remote/extended-remote targets Pedro Alves
2018-04-14 19:28 ` [PATCH 21/40] target_ops/C++: Aarch64 GNU/Linux Pedro Alves
2018-04-14 19:28 ` [PATCH 28/40] target_ops/C++: SPU/Linux Pedro Alves
2018-05-04 17:09 ` Ulrich Weigand
2018-05-04 17:15 ` Pedro Alves
2018-05-04 17:22 ` Ulrich Weigand
2018-05-04 17:27 ` Pedro Alves
2018-04-14 19:29 ` [PATCH 13/40] target_ops/C++: GNU/Linux + x86/AMD64 Pedro Alves
2018-04-14 19:30 ` [PATCH 18/40] target_ops/C++: linux_trad_target, MIPS and Alpha GNU/Linux Pedro Alves
2018-04-16 15:15 ` [RESEND][PATCH 01/40] Convert struct target_ops to C++ Pedro Alves
2018-05-03 0:06 ` Pedro Alves
2018-10-27 21:58 ` 8.2 regression for invalid -data-directory [Re: [RESEND][PATCH 01/40] Convert struct target_ops to C++] Jan Kratochvil
2018-10-30 20:24 ` Tom Tromey
2019-02-14 15:30 ` [RESEND][PATCH 01/40] Convert struct target_ops to C++ Thomas Schwinge
2018-04-27 15:47 ` [PATCH 00/40] C++ify target_ops, toward multi-target Tom Tromey
2018-05-02 22:55 ` Pedro Alves
2018-04-29 15:22 ` Simon Marchi
2018-05-02 22:51 ` 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=2336080.G2aX46TNlR@ralph.baldwin.cx \
--to=jhb@freebsd.org \
--cc=gdb-patches@sourceware.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