From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.baldwin.cx (bigwig.baldwin.cx [IPv6:2607:f138:0:13::2]) by sourceware.org (Postfix) with ESMTPS id 5C155385773C for ; Mon, 9 Oct 2023 18:36:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5C155385773C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=FreeBSD.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=FreeBSD.org Received: from ralph.baldwin.net (unknown [98.47.15.113]) by mail.baldwin.cx (Postfix) with ESMTPSA id 687091A84E44; Mon, 9 Oct 2023 14:36:48 -0400 (EDT) From: John Baldwin To: gdb-patches@sourceware.org Cc: Willgerodt, Felix , George, Jini Susan , Simon Marchi Subject: [RFC 10/13] {amd64,i386}-fbsd-tdep: Include NT_X86_CPUID notes in core dumps from gcore Date: Mon, 9 Oct 2023 11:36:12 -0700 Message-ID: <20231009183617.24862-11-jhb@FreeBSD.org> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231009183617.24862-1-jhb@FreeBSD.org> References: <20231009183617.24862-1-jhb@FreeBSD.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.6.4 (mail.baldwin.cx [0.0.0.0]); Mon, 09 Oct 2023 14:36:49 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.103.1 at mail.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_STATUS,KHOP_HELO_FCRDNS,SPF_HELO_PASS,SPF_SOFTFAIL,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Override the gdbarch make_corefile_notes method for the FreeBSD x86 arches with a new function that calls fbsd_make_corefile_notes and x86_elf_make_cpuid_note to generate the core dump notes. --- gdb/amd64-fbsd-tdep.c | 1 + gdb/i386-fbsd-tdep.c | 15 +++++++++++++++ gdb/i386-fbsd-tdep.h | 7 +++++++ 3 files changed, 23 insertions(+) diff --git a/gdb/amd64-fbsd-tdep.c b/gdb/amd64-fbsd-tdep.c index 2b633cd479c..30cba8f6e6a 100644 --- a/gdb/amd64-fbsd-tdep.c +++ b/gdb/amd64-fbsd-tdep.c @@ -329,6 +329,7 @@ amd64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_core_read_description (gdbarch, amd64fbsd_core_read_description); + set_gdbarch_make_corefile_notes (gdbarch, i386_fbsd_make_corefile_notes); /* FreeBSD uses SVR4-style shared libraries. */ set_solib_svr4_fetch_link_map_offsets diff --git a/gdb/i386-fbsd-tdep.c b/gdb/i386-fbsd-tdep.c index 1789f3921fd..810ecc90df1 100644 --- a/gdb/i386-fbsd-tdep.c +++ b/gdb/i386-fbsd-tdep.c @@ -26,6 +26,7 @@ #include "tramp-frame.h" #include "i386-fbsd-tdep.h" +#include "x86-tdep.h" #include "i386-tdep.h" #include "i387-tdep.h" #include "fbsd-tdep.h" @@ -370,6 +371,19 @@ i386fbsd_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid, return fbsd_get_thread_local_address (gdbarch, dtv_addr, lm_addr, offset); } +/* See i386-fbsd-tdep.h. */ + +gdb::unique_xmalloc_ptr +i386_fbsd_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, + int *note_size) +{ + gdb::unique_xmalloc_ptr note_data = + fbsd_make_corefile_notes (gdbarch, obfd, note_size); + + x86_elf_make_cpuid_note (obfd, ¬e_data, note_size); + return note_data; +} + static void i386fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { @@ -403,6 +417,7 @@ i386fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_core_read_description (gdbarch, i386fbsd_core_read_description); + set_gdbarch_make_corefile_notes (gdbarch, i386_fbsd_make_corefile_notes); /* FreeBSD uses SVR4-style shared libraries. */ set_solib_svr4_fetch_link_map_offsets diff --git a/gdb/i386-fbsd-tdep.h b/gdb/i386-fbsd-tdep.h index c49cb1eba68..fc7bb1c521d 100644 --- a/gdb/i386-fbsd-tdep.h +++ b/gdb/i386-fbsd-tdep.h @@ -40,6 +40,13 @@ bool i386_fbsd_core_read_x86_xsave_layout (struct gdbarch *gdbarch, matches the layout on Linux. */ #define I386_FBSD_XSAVE_XCR0_OFFSET 464 +/* Create appropriate note sections for a corefile, returning them in + allocated memory. Extends fbsd_make_corefile_notes to add a + NT_X86_CPUID note. */ + +gdb::unique_xmalloc_ptr i386_fbsd_make_corefile_notes +(struct gdbarch *gdbarch, bfd *obfd, int *note_size); + extern const struct regset i386_fbsd_gregset; #endif /* i386-fbsd-tdep.h */ -- 2.41.0