From: Christina Schimpe <christina.schimpe@intel.com>
To: gdb-patches@sourceware.org
Cc: hjl.tools@gmail.com, keiths@redhat.com
Subject: [PATCH 1/2] gdb: add maintenance set/show gcore xml-target-description command
Date: Tue, 2 Jun 2026 11:11:21 +0000 [thread overview]
Message-ID: <20260602111122.3187712-2-christina.schimpe@intel.com> (raw)
In-Reply-To: <20260602111122.3187712-1-christina.schimpe@intel.com>
From: Felix Willgerodt <felix.willgerodt@intel.com>
This command will allow to enable/disable creating the NT_GDB_TDESC note
in corefiles. While GDB writes and reads this node, there aren't really many
other pieces of software that create this node (e.g. the Linux kernel doesn't).
To be able to test the code path in GDB that is used when NT_GDB_TDESC is not
there, add a maintenance command which tests can use to test both cases.
Co-authored-by: Christina Schimpe <christina.schimpe@intel.com>
---
gdb/NEWS | 6 ++++++
gdb/doc/gdb.texinfo | 7 +++++++
gdb/elf-none-tdep.c | 16 +++++++++-------
gdb/fbsd-tdep.c | 15 +++++++++------
gdb/gcore.c | 40 ++++++++++++++++++++++++++++++++++++++++
gdb/gcore.h | 3 +++
gdb/linux-tdep.c | 15 +++++++++------
7 files changed, 83 insertions(+), 19 deletions(-)
diff --git a/gdb/NEWS b/gdb/NEWS
index 7c8cf9af4c2..eef1924c9f0 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -97,6 +97,12 @@ AArch64 MinGW aarch64-*-mingw*
* New commands
+maintenance set/show gcore xml-target-description
+ With this command you can control whether or not the generate-core-file
+ command emits the NT_GDB_TDESC note. This is mainly useful for testing
+ how GDB handles corefiles without this note, as not all software that
+ creates corefiles generates it.
+
set local-environment
show local-environment
unset local-environment
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index a698b2b8451..636fd0d6b1f 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -42077,6 +42077,13 @@ buffer.
Control whether @value{GDBN} will skip PAD packets when computing the
packet history.
+@kindex maint set gcore xml-target-description
+@item maint set gcore xml-target-description
+@kindex maint show gcore xml-target-description
+@item maint show gcore xml-target-description
+Control whether @value{GDBN} will create the NT_GDB_TDESC note when using
+the @samp{generate-core-file} command.
+
@kindex maint info jit
@item maint info jit
Print information about JIT code objects loaded in the current inferior.
diff --git a/gdb/elf-none-tdep.c b/gdb/elf-none-tdep.c
index 0d063038f5e..f874ba9d4b9 100644
--- a/gdb/elf-none-tdep.c
+++ b/gdb/elf-none-tdep.c
@@ -109,13 +109,15 @@ elf_none_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd,
¬e_data, note_size);
}
-
- /* Include the target description when possible. Some architectures
- allow for per-thread gdbarch so we should really be emitting a tdesc
- per-thread, however, we don't currently support reading in a
- per-thread tdesc, so just emit the tdesc for the signalled thread. */
- gdbarch = target_thread_architecture (signalled_thr->ptid);
- gcore_elf_make_tdesc_note (gdbarch, obfd, ¬e_data, note_size);
+ if (maint_gcore_emit_xml_tdesc)
+ {
+ /* Include the target description when possible. Some architectures
+ allow for per-thread gdbarch so we should really be emitting a tdesc
+ per-thread, however, we don't currently support reading in a
+ per-thread tdesc, so just emit the tdesc for the signalled thread. */
+ gdbarch = target_thread_architecture (signalled_thr->ptid);
+ gcore_elf_make_tdesc_note (gdbarch, obfd, ¬e_data, note_size);
+ }
return note_data;
}
diff --git a/gdb/fbsd-tdep.c b/gdb/fbsd-tdep.c
index 419f935ea72..d77395dbb45 100644
--- a/gdb/fbsd-tdep.c
+++ b/gdb/fbsd-tdep.c
@@ -762,12 +762,15 @@ fbsd_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, int *note_size)
return NULL;
}
- /* Include the target description when possible. Some architectures
- allow for per-thread gdbarch so we should really be emitting a tdesc
- per-thread, however, we don't currently support reading in a
- per-thread tdesc, so just emit the tdesc for the signalled thread. */
- gdbarch = target_thread_architecture (signalled_thr->ptid);
- gcore_elf_make_tdesc_note (gdbarch, obfd, ¬e_data, note_size);
+ if (maint_gcore_emit_xml_tdesc)
+ {
+ /* Include the target description when possible. Some architectures
+ allow for per-thread gdbarch so we should really be emitting a tdesc
+ per-thread, however, we don't currently support reading in a
+ per-thread tdesc, so just emit the tdesc for the signalled thread. */
+ gdbarch = target_thread_architecture (signalled_thr->ptid);
+ gcore_elf_make_tdesc_note (gdbarch, obfd, ¬e_data, note_size);
+ }
return note_data;
}
diff --git a/gdb/gcore.c b/gdb/gcore.c
index e50115370c7..03876969ae9 100644
--- a/gdb/gcore.c
+++ b/gdb/gcore.c
@@ -28,6 +28,7 @@
#include "completer.h"
#include "gcore.h"
#include "cli/cli-decode.h"
+#include "cli/cli-cmds.h"
#include <fcntl.h>
#include "regcache.h"
#include "regset.h"
@@ -919,6 +920,24 @@ gcore_find_signalled_thread ()
return nullptr;
}
+/* When true, emit NT_GDB_TDESC. */
+bool maint_gcore_emit_xml_tdesc = true;
+
+/* Command lists for gcore maintenance commands. */
+struct cmd_list_element *maint_gcore_cmdlist;
+struct cmd_list_element *maint_gcore_set_cmdlist;
+struct cmd_list_element *maint_gcore_show_cmdlist;
+
+/* "Show" callback for "maint set gcore xml-target-description". */
+static void
+show_gcore_xml_target_description (struct ui_file *file, int from_tty,
+ struct cmd_list_element *c,
+ const char *value)
+{
+ gdb_printf (file, _("Write NT_GDB_TDESC note into corefiles: %s.\n"),
+ value);
+}
+
INIT_GDB_FILE (gcore)
{
cmd_list_element *generate_core_file_cmd
@@ -928,4 +947,25 @@ Usage: generate-core-file [FILENAME]\n\
Argument is optional filename. Default filename is 'core.PROCESS_ID'."));
add_com_alias ("gcore", generate_core_file_cmd, class_files, 1);
+
+ add_basic_prefix_cmd ("gcore", class_maintenance,
+ _("gcore maintenance commands."),
+ &maint_gcore_cmdlist, 0, &maintenancelist);
+
+ add_setshow_prefix_cmd ("gcore", class_maintenance,
+ _("Set gcore specific variables."),
+ _("Show gcore specific variables."),
+ &maint_gcore_set_cmdlist, &maint_gcore_show_cmdlist,
+ &maintenance_set_cmdlist, &maintenance_show_cmdlist);
+
+ add_setshow_boolean_cmd ("xml-target-description", class_obscure,
+ &maint_gcore_emit_xml_tdesc, _("\
+Set whether gcore emits a xml-target-description."), _("\
+Show whether gore emits a xml-target-description."), _("\
+By default, gcore emits the note NT_GDB_TDESC.\n\
+Disabling this setting will cause gcore to no longer emit this note."),
+ nullptr,
+ show_gcore_xml_target_description,
+ &maint_gcore_set_cmdlist,
+ &maint_gcore_show_cmdlist);
}
diff --git a/gdb/gcore.h b/gdb/gcore.h
index 2431e123b60..2481bf0decc 100644
--- a/gdb/gcore.h
+++ b/gdb/gcore.h
@@ -37,4 +37,7 @@ extern bool objfile_find_memory_regions (struct target_ops *self,
extern thread_info *gcore_find_signalled_thread ();
+/* When true, emit NT_GDB_TDESC. */
+extern bool maint_gcore_emit_xml_tdesc;
+
#endif /* GDB_GCORE_H */
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index a7381677498..6bc4e55aa56 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -2495,12 +2495,15 @@ linux_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, int *note_size)
/* File mappings. */
linux_make_mappings_corefile_notes (gdbarch, obfd, note_data, note_size);
- /* Include the target description when possible. Some architectures
- allow for per-thread gdbarch so we should really be emitting a tdesc
- per-thread, however, we don't currently support reading in a
- per-thread tdesc, so just emit the tdesc for the signalled thread. */
- gdbarch = target_thread_architecture (signalled_thr->ptid);
- gcore_elf_make_tdesc_note (gdbarch, obfd, ¬e_data, note_size);
+ if (maint_gcore_emit_xml_tdesc)
+ {
+ /* Include the target description when possible. Some architectures
+ allow for per-thread gdbarch so we should really be emitting a tdesc
+ per-thread, however, we don't currently support reading in a
+ per-thread tdesc, so just emit the tdesc for the signalled thread. */
+ gdbarch = target_thread_architecture (signalled_thr->ptid);
+ gcore_elf_make_tdesc_note (gdbarch, obfd, ¬e_data, note_size);
+ }
return note_data;
}
--
2.34.1
Intel Deutschland GmbH
Registered Address: Dornacher Strasse 1, 85622 Feldkirchen, Germany
Tel: +49 89 991 430, www.intel.de
Managing Directors: Harry Demas, Jeffrey Schneiderman, Yin Chong Sorrell
Chairperson of the Supervisory Board: Nicole Lau
Registered Seat: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
next prev parent reply other threads:[~2026-06-02 11:12 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-02 11:11 [PATCH 0/2] Add Intel APX support Christina Schimpe
2026-06-02 11:11 ` Christina Schimpe [this message]
2026-06-02 12:22 ` [PATCH 1/2] gdb: add maintenance set/show gcore xml-target-description command Eli Zaretskii
2026-06-09 21:02 ` Schimpe, Christina
2026-06-10 11:43 ` Eli Zaretskii
2026-06-15 7:54 ` Schimpe, Christina
2026-06-18 17:31 ` Keith Seitz
2026-07-07 17:07 ` Schimpe, Christina
2026-07-10 11:57 ` Schimpe, Christina
2026-06-02 11:11 ` [PATCH 2/2] gdb, gdbserver: Add Intel APX register support Christina Schimpe
2026-06-02 12:25 ` Eli Zaretskii
2026-06-18 17:33 ` Keith Seitz
2026-07-07 17:15 ` Schimpe, Christina
2026-07-07 17:53 ` Keith Seitz
2026-07-07 17:15 ` Schimpe, Christina
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=20260602111122.3187712-2-christina.schimpe@intel.com \
--to=christina.schimpe@intel.com \
--cc=gdb-patches@sourceware.org \
--cc=hjl.tools@gmail.com \
--cc=keiths@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