From: Simon Marchi <simark@simark.ca>
To: Victor Collod <vcollod@nvidia.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH v2 1/2] Add i386 support for endbr skipping
Date: Sun, 21 Jun 2020 07:27:38 -0400 [thread overview]
Message-ID: <1d846c51-1736-45a6-b4ae-5bae77314b49@simark.ca> (raw)
In-Reply-To: <20200611225455.9354-2-vcollod@nvidia.com>
On 2020-06-11 6:54 p.m., Victor Collod via Gdb-patches wrote:
> 2020-06-11 Victor Collod <vcollod@nvidia.com>
>
> * i386-tdep.c (i386_skip_endbr): Add a helper function to skip endbr.
> (i386_analyze_prologue): Call i386_skip_endbr.
> ---
> gdb/i386-tdep.c | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
> index 9b905c1996a..263a3fd452e 100644
> --- a/gdb/i386-tdep.c
> +++ b/gdb/i386-tdep.c
> @@ -1537,6 +1537,24 @@ struct i386_insn i386_frame_setup_skip_insns[] =
> { 0 }
> };
>
> +/* Check whether PC points to an endbr32 instruction. */
> +static CORE_ADDR
> +i386_skip_endbr (CORE_ADDR pc)
> +{
> + static const gdb_byte endbr32[] = { 0xf3, 0x0f, 0x1e, 0xfb };
> +
> + gdb_byte buf[sizeof (endbr32)];
> +
> + /* Stop there if we can't read the code */
> + if (target_read_code (pc, buf, sizeof (endbr32)))
> + return pc;
> +
> + /* If the instruction isn't an endbr32, stop */
> + if (memcmp (buf, endbr32, sizeof (endbr32)) != 0)
> + return pc;
> +
> + return pc + sizeof (endbr32);
> +}
>
> /* Check whether PC points to a no-op instruction. */
> static CORE_ADDR
> @@ -1814,6 +1832,7 @@ i386_analyze_prologue (struct gdbarch *gdbarch,
> CORE_ADDR pc, CORE_ADDR current_pc,
> struct i386_frame_cache *cache)
> {
> + pc = i386_skip_endbr (pc);
> pc = i386_skip_noop (pc);
> pc = i386_follow_jump (gdbarch, pc);
> pc = i386_analyze_struct_return (pc, current_pc, cache);
> --
> 2.20.1
Hi Victor,
I hadn't realized that this instriction also existed in the 32 bit variant.
The patch looks fine, but is just missing a test. You could maybe adapt
gdb.arch/amd64-prologue-skip-cf-protection.exp so that it runs on i386 as
well? If so, I'd rename it from amd64- to i386-, like there are other tests
running on both amd64 and i386 that are prefixed i386. It's not great, but
at least it would be consistent.
Simon
next prev parent reply other threads:[~2020-06-21 11:27 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-05 23:23 [PATCH] Improve intel IBT support Victor Collod
2020-06-05 23:55 ` Victor Collod
2020-06-11 3:18 ` Simon Marchi
2020-06-11 22:54 ` [PATCH v2 0/2] " Victor Collod
2020-06-11 22:54 ` [PATCH v2 1/2] Add i386 support for endbr skipping Victor Collod
2020-06-21 11:27 ` Simon Marchi [this message]
2020-06-11 22:54 ` [PATCH v2 2/2] Refactor amd64_analyze_prologue Victor Collod
2020-06-21 11:38 ` Simon Marchi
2020-06-24 1:28 ` [PATCH v3 0/7] Improve intel IBT support Victor Collod
2020-06-24 1:28 ` [PATCH v3 1/7] Add i386 support for endbr skipping Victor Collod
2020-08-06 13:57 ` Simon Marchi
2020-09-19 0:29 ` [PATCH] gdb: Update i386_analyze_prologue to skip endbr32 H.J. Lu
2020-09-19 0:38 ` Simon Marchi
2020-06-24 1:28 ` [PATCH v3 2/7] amd64_analyze_prologue: swap upper bound check condition operands Victor Collod
2020-08-06 14:41 ` Simon Marchi
2020-06-24 1:28 ` [PATCH v3 3/7] amd64_analyze_prologue: merge op and buf Victor Collod
2020-08-06 14:55 ` Simon Marchi
2020-06-24 1:28 ` [PATCH v3 4/7] amd64_analyze_prologue: invert a condition for readability Victor Collod
2020-08-06 14:57 ` Simon Marchi
2020-06-24 1:28 ` [PATCH v3 5/7] amd64_analyze_prologue: gradually update pc Victor Collod
2020-08-06 14:59 ` Simon Marchi
2020-06-24 1:28 ` [PATCH v3 6/7] amd64_analyze_prologue: fix incorrect comment Victor Collod
2020-08-06 15:05 ` Simon Marchi
2020-06-24 1:28 ` [PATCH v3 7/7] amd64_analyze_prologue: use target_read_code instead of read_code Victor Collod
2020-08-06 15:01 ` Simon Marchi
2020-08-05 21:44 ` [PATCH v3 0/7] Improve intel IBT support Victor Collod
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=1d846c51-1736-45a6-b4ae-5bae77314b49@simark.ca \
--to=simark@simark.ca \
--cc=gdb-patches@sourceware.org \
--cc=vcollod@nvidia.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