From: Yichao Yu <yyc1992@gmail.com>
To: gdb@sourceware.org
Cc: Yichao Yu <yyc1992@gmail.com>
Subject: Re: [PATCH] Lookup the JIT descriptor symbol first to avoid finding the PLT entry of the breakpoint in the wrong object file.
Date: Thu, 26 Jan 2017 20:31:00 -0000 [thread overview]
Message-ID: <CAMvDr+Su69e=uFbX4UOch_ot5DAVWLY-K7MS3ysqOqtjRHe19g@mail.gmail.com> (raw)
In-Reply-To: <20170126202406.32412-1-yyc1992@gmail.com>
On Thu, Jan 26, 2017 at 3:24 PM, Yichao Yu <yyc1992@gmail.com> wrote:
> Fix 20633
..... I don't use git send-mail very often and missed the chance to
type more comments....
The link to the bug report is
https://sourceware.org/bugzilla/show_bug.cgi?id=20633 . I think
ideally the interface should find all the global and local symbols and
breakpoint on all of them since there isn't an agreement on who will
provide it AFAICT (and for example,a process can load multiple copies
of statically linked LLVM each providing a jit debugging interface).
However, I'm not really sure what's the right function to use for that
and it'll probably be a much bigger change so I went for this smaller
change that fixes the original issue.
Not sure how this should be tested....... =(
> ---
> gdb/jit.c | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/gdb/jit.c b/gdb/jit.c
> index 158d6d8..d6eb800 100644
> --- a/gdb/jit.c
> +++ b/gdb/jit.c
> @@ -1051,18 +1051,21 @@ jit_breakpoint_re_set_internal (struct gdbarch *gdbarch,
> if (ps_data->objfile == NULL)
> {
> /* Lookup the registration symbol. If it is missing, then we
> - assume we are not attached to a JIT. */
> - reg_symbol = lookup_minimal_symbol_and_objfile (jit_break_name);
> - if (reg_symbol.minsym == NULL
> - || BMSYMBOL_VALUE_ADDRESS (reg_symbol) == 0)
> - return 1;
> + assume we are not attached to a JIT.
> + Lookup the descriptor first since looking up the breakpoint might
> + return a PLT entry in the wrong file. */
>
> - desc_symbol = lookup_minimal_symbol (jit_descriptor_name, NULL,
> - reg_symbol.objfile);
> + desc_symbol = lookup_minimal_symbol_and_objfile (jit_descriptor_name);
> if (desc_symbol.minsym == NULL
> || BMSYMBOL_VALUE_ADDRESS (desc_symbol) == 0)
> return 1;
>
> + reg_symbol = lookup_minimal_symbol (jit_break_name, NULL,
> + desc_symbol.objfile);
> + if (reg_symbol.minsym == NULL
> + || BMSYMBOL_VALUE_ADDRESS (reg_symbol) == 0)
> + return 1;
> +
> objf_data = get_jit_objfile_data (reg_symbol.objfile);
> objf_data->register_code = reg_symbol.minsym;
> objf_data->descriptor = desc_symbol.minsym;
> --
> 2.10.2
>
next prev parent reply other threads:[~2017-01-26 20:31 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-26 20:24 Yichao Yu
2017-01-26 20:31 ` Yichao Yu [this message]
2017-02-06 0:46 ` Yichao Yu
2017-02-24 19:01 ` Yichao Yu
2017-03-09 12:25 ` Yichao Yu
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='CAMvDr+Su69e=uFbX4UOch_ot5DAVWLY-K7MS3ysqOqtjRHe19g@mail.gmail.com' \
--to=yyc1992@gmail.com \
--cc=gdb@sourceware.org \
/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