From patchwork Mon Oct 9 18:36:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Baldwin X-Patchwork-Id: 77308 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 998F338346B7 for ; Mon, 9 Oct 2023 18:37:52 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org 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@sourceware.org, Felix , George@sourceware.org, 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 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 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org 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 */