From: Simon Marchi via Gdb-patches <gdb-patches@sourceware.org>
To: Luis Machado <luis.machado@linaro.org>, gdb-patches@sourceware.org
Subject: Re: [PATCH v5 17/25] AArch64: Report tag violation error information
Date: Thu, 4 Feb 2021 23:22:26 -0500 [thread overview]
Message-ID: <1bd853e9-00ce-9856-7bd6-f5ab0af88475@polymtl.ca> (raw)
In-Reply-To: <20210127202112.2485702-18-luis.machado@linaro.org>
> diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c
> index 1063dd7a82..4ccee9c34e 100644
> --- a/gdb/aarch64-linux-tdep.c
> +++ b/gdb/aarch64-linux-tdep.c
> @@ -1700,6 +1700,69 @@ aarch64_linux_memtag_to_string (struct gdbarch *gdbarch,
> return string_printf ("0x%s", phex_nz (tag, sizeof (tag)));
> }
>
> +/* AArch64 Linux implementation of the report_signal_info gdbarch
> + hook. Displays information about possible memory tag violations. */
> +
> +static void
> +aarch64_linux_report_signal_info (struct gdbarch *gdbarch,
> + struct ui_out *uiout,
> + enum gdb_signal siggnal)
> +{
> + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
> +
> + if (!tdep->has_mte () || siggnal != GDB_SIGNAL_SEGV)
> + return;
> +
> + CORE_ADDR fault_addr = 0;
> + long si_code = 0;
> +
> + try
> + {
> + /* Sigcode tells us if the segfault is actually a memory tag
> + violation. */
> + si_code = parse_and_eval_long ("$_siginfo.si_code");
> +
> + fault_addr
> + = parse_and_eval_long ("$_siginfo._sifields._sigfault.si_addr");
> + }
> + catch (const gdb_exception_error &exception)
> + {
> + exception_print (gdb_stderr, exception);
> + return;
> + }
> +
> + /* If this is not a memory tag violation, just return. */
> + if (si_code != SEGV_MTEAERR && si_code != SEGV_MTESERR)
> + return;
> +
> + uiout->text ("\n");
> +
> + uiout->field_string ("sigcode-meaning", _("Memory tag violation"));
> +
> + /* For synchronous faults, show additional information. */
> + if (si_code == SEGV_MTESERR)
> + {
> + uiout->text (_(" while accessing address "));
> + uiout->field_core_addr ("fault-addr", gdbarch, fault_addr);
> + uiout->text ("\n");
I guess there's no easy way of getting the logical address that was used
to attempt the memory access? I think it would be nice to say something
like "Your pointer had logical tag X, but the pointed memory has
allocation tag Y". But if we can't, we can't.
> +
> + gdb::optional<CORE_ADDR> atag = aarch64_mte_get_atag (fault_addr);
> +
> + if (!atag.has_value ())
> + uiout->text (_("Allocation tag unavailable"));
> + else
> + {
> + uiout->text (_("Allocation tag "));
> + uiout->field_string ("allocation-tag", hex_string (*atag));
> + }
> + }
> + else
> + {
> + uiout->text ("\n");
> + uiout->text (_("Fault address unavailable"));
> + }
> +}
I guess all of the `uiout->field_*` will appear as the stop event in MI?
I suppose that's fine, but we need to be careful to treat it as API and
not change it in a backwards-incompatible way. Can you give it a try
with MI to see the result, see if it makes sense (if you haven't
already)?
And if this indeed adds new MI fields, they should be documented, in
theory. Although I realize that there are equivalent fields in
i386-linux-tdep.c and sparc64-linux-tdep.c which aren't.
But otherwise, that LGTM.
Simon
next prev parent reply other threads:[~2021-02-05 4:22 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-27 20:20 [PATCH v5 00/25] Memory Tagging Support + AArch64 Linux implementation Luis Machado via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 01/25] New target methods for memory tagging support Luis Machado via Gdb-patches
2021-01-27 23:26 ` Lancelot SIX via Gdb-patches
2021-01-28 10:02 ` Luis Machado via Gdb-patches
2021-02-05 2:31 ` Simon Marchi via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 02/25] New gdbarch memory tagging hooks Luis Machado via Gdb-patches
2021-02-05 2:38 ` Simon Marchi via Gdb-patches
2021-02-05 3:58 ` Simon Marchi via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 03/25] Add GDB-side remote target support for memory tagging Luis Machado via Gdb-patches
2021-02-05 2:48 ` Simon Marchi via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 04/25] Unit testing for GDB-side remote memory tagging handling Luis Machado via Gdb-patches
2021-02-05 2:50 ` Simon Marchi via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 05/25] GDBserver remote packet support for memory tagging Luis Machado via Gdb-patches
2021-02-05 2:56 ` Simon Marchi via Gdb-patches
2021-02-05 12:38 ` Luis Machado via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 06/25] Unit tests for gdbserver memory tagging remote packets Luis Machado via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 07/25] Documentation for " Luis Machado via Gdb-patches
2021-01-28 3:30 ` Eli Zaretskii via Gdb-patches
2021-01-28 9:58 ` Luis Machado via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 08/25] AArch64: Add MTE CPU feature check support Luis Machado via Gdb-patches
2021-02-05 3:05 ` Simon Marchi via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 09/25] AArch64: Add target description/feature for MTE registers Luis Machado via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 10/25] AArch64: Add MTE register set support for GDB and gdbserver Luis Machado via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 11/25] AArch64: Add MTE ptrace requests Luis Machado via Gdb-patches
2021-02-05 3:13 ` Simon Marchi via Gdb-patches
2021-01-27 20:20 ` [PATCH v5 12/25] AArch64: Implement memory tagging target methods for AArch64 Luis Machado via Gdb-patches
2021-02-05 3:30 ` Simon Marchi via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 13/25] Convert char array to std::string in linux_find_memory_regions_full Luis Machado via Gdb-patches
2021-02-05 3:32 ` Simon Marchi via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 14/25] Refactor parsing of /proc/<pid>/smaps Luis Machado via Gdb-patches
2021-02-05 3:38 ` Simon Marchi via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 15/25] AArch64: Implement the memory tagging gdbarch hooks Luis Machado via Gdb-patches
2021-02-05 4:09 ` Simon Marchi via Gdb-patches
2021-02-05 14:05 ` Luis Machado via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 16/25] AArch64: Add unit testing for logical tag set/get operations Luis Machado via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 17/25] AArch64: Report tag violation error information Luis Machado via Gdb-patches
2021-02-05 4:22 ` Simon Marchi via Gdb-patches [this message]
2021-02-05 14:59 ` Luis Machado via Gdb-patches
2021-02-05 16:13 ` Simon Marchi via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 18/25] AArch64: Add gdbserver MTE support Luis Machado via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 19/25] AArch64: Add MTE register set support for core files Luis Machado via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 20/25] New memory-tag commands Luis Machado via Gdb-patches
2021-02-05 4:49 ` Simon Marchi via Gdb-patches
2021-02-05 4:52 ` Simon Marchi via Gdb-patches
2021-02-08 18:59 ` Luis Machado via Gdb-patches
2021-03-23 21:46 ` Simon Marchi via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 21/25] Documentation for the new mtag commands Luis Machado via Gdb-patches
2021-01-28 3:31 ` Eli Zaretskii via Gdb-patches
2021-02-05 4:50 ` Simon Marchi via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 22/25] Extend "x" and "print" commands to support memory tagging Luis Machado via Gdb-patches
2021-02-05 5:02 ` Simon Marchi via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 23/25] Document new "x" and "print" memory tagging extensions Luis Machado via Gdb-patches
2021-01-28 3:31 ` Eli Zaretskii via Gdb-patches
2021-02-05 5:04 ` Simon Marchi via Gdb-patches
2021-02-08 20:44 ` Luis Machado via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 24/25] Add NEWS entry Luis Machado via Gdb-patches
2021-01-28 3:32 ` Eli Zaretskii via Gdb-patches
2021-02-05 5:06 ` Simon Marchi via Gdb-patches
2021-02-08 20:44 ` Luis Machado via Gdb-patches
2021-01-27 20:21 ` [PATCH v5 25/25] Add memory tagging testcases Luis Machado via Gdb-patches
2021-02-04 14:18 ` [PING] [PATCH v5 00/25] Memory Tagging Support + AArch64 Linux implementation Luis Machado via Gdb-patches
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=1bd853e9-00ce-9856-7bd6-f5ab0af88475@polymtl.ca \
--to=gdb-patches@sourceware.org \
--cc=luis.machado@linaro.org \
--cc=simon.marchi@polymtl.ca \
/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