This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v4 00/18] All-stop on top of non-stop
- From: Pedro Alves <palves at redhat dot com>
- To: Joel Brobecker <brobecker at adacore dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Wed, 12 Aug 2015 20:05:43 +0100
- Subject: Re: [PATCH v4 00/18] All-stop on top of non-stop
- Authentication-results: sourceware.org; auth=none
- References: <1432250354-2721-1-git-send-email-palves at redhat dot com> <55C4E3BD dot 8040801 at redhat dot com> <20150812183208 dot GA24901 at adacore dot com>
On 08/12/2015 07:32 PM, Joel Brobecker wrote:
> This uncovered what I think is a latent bug in the "how-did-we-never-
> see-this-before" category.
Wow! Indeed. Many thanks for tracking this down and fixing it.
A couple minor comments below, but this looks good to me.
> Does this patch look OK to you?
> * gdb.base/dso2dso-impl.c, gdb.base/dso2dso-impl.h,
> gdb.base/dso2dso-pck.c, gdb.base/dso2dso-pck.h, gdb.base/dso2dso.c,
> gdb.base/dso2dso.exp: New files.
>
Nit: the "pck" and "impl"s here confuse me -- I guess they meant something
in the original test? Do they still have any meaning here? I'd suggest
renaming to dso2dso-dso1.c, dso2dso-dso2.c, and then
sub() -> sub1(), impl__initialize() -> sub2(). That way, it should
be clearer that a function in dso1 calls a function in dso2.
> diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
> index 5e63b5e..5b4a8f4 100644
> --- a/gdb/amd64-tdep.c
> +++ b/gdb/amd64-tdep.c
> @@ -1662,7 +1662,7 @@ amd64_displaced_step_fixup (struct gdbarch *gdbarch,
>
> regcache_cooked_read_unsigned (regs, AMD64_RSP_REGNUM, &rsp);
> retaddr = read_memory_unsigned_integer (rsp, retaddr_len, byte_order);
> - retaddr = (retaddr - insn_offset) & 0xffffffffUL;
> + retaddr = (retaddr - insn_offset) & 0xffffffffffffffffUL;
I think this should use the ULL suffix now.
> +
> +if { [gdb_compile_shlib $srcfile_libimpl $binfile_libimpl \
> + [list debug additional_flags=-fPIC]] != "" } {
> + untested "Could not compile $binfile_libimpl."
> + return -1
> +}
> +
> +if { [gdb_compile_shlib $srcfile_libpck $binfile_libpck \
> + [list debug additional_flags=-fPIC]] != "" } {
> + untested "Could not compile $binfile_libpck."
> + return -1
> +}
> +
> +if { [gdb_compile $srcdir/$subdir/$srcfile $binfile executable \
> + [list debug shlib=$binfile_libimpl shlib=$binfile_libpck]] != "" } {
> + return -1
> +}
> +
> +clean_restart $binfile
> +
I think a
gdb_load_shlibs $binfile_libimpl $binfile_libpck
is missing here.
> +if { ![runto_main] } {
> + return -1
> +}
> +
> +set bp_location [gdb_get_line_number "impl__initialize" $srcfile_libpck]
> +gdb_breakpoint ${srcfile_libpck}:${bp_location}
> +
> +gdb_continue_to_breakpoint "at call to impl__initialize" \
> + ".*impl__initialize ().*"
> +
> +gdb_test "next" \
> + ".*return 5;.*" \
> + "next over call to impl__initialize"
> -- 2.1.4
Thanks,
Pedro Alves