From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id qYwlClzg32maGxoAWB0awg (envelope-from ) for ; Wed, 15 Apr 2026 15:00:44 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=UVh+i+ux; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 211F61E0C3; Wed, 15 Apr 2026 15:00:44 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-0.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_SBL_CSS,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=no autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 533F01E04F for ; Wed, 15 Apr 2026 15:00:43 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id D56BA4BA2E10 for ; Wed, 15 Apr 2026 19:00:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D56BA4BA2E10 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=UVh+i+ux Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id C43984BA23C2 for ; Wed, 15 Apr 2026 18:59:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C43984BA23C2 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C43984BA23C2 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776279559; cv=none; b=ifh6WVUV/J7rzP+wMwn/DpIFKtFeNOIl6oPYUdNdbDjBqPiLxE0GGjDSTEVDjkpBXG914hW2BZ+g46OLNVKC9YzchGODrfMjZbbwvrxLEjqMp+7v8yIk8dE9mNKVxTAPdLcxs/VekHUVUmS+VtJ1AGL/79p8h+OJSZr2FYtn5Yg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776279559; c=relaxed/simple; bh=zkOx/vPRnezzMF+JtYg83gpwQ8BJ6q6ggKQWLpjSu4k=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=JIlYziTLjlYWJvpiac6Dk9FcIbh+oilE7JgevK1qJS2EyGa4AnbtsuNTJ8c+uNu4bvpPK8ZqCWz8fsyIM1gV+ZeEBhRXlk3CqqkLsnv1oTu85t8e2axPJrviK7fa/5tA0IPCkglEV/8T46EIp4TyKDFudLG0olPHH/bmJhB614s= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C43984BA23C2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776279559; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rAJaRb9K7j5jbmYalYRo41DW73mGQQYpeV3bDfFC/tg=; b=UVh+i+uxUG8iiOiPu0oXKw4BUcSE/2mu4SKMv7/ZaNJ+Aovx4Ba1fXikmX7lZEjQP1dYfz Md5p/CAHWbSKCcN4JafvYee6f8HL/Zip3kQoQLUqVjkmQNUktvvWGmTQVXYT1ua+i3pm4x UlmWrr+AksxFgVx3zrMdRkarjquCRJ0= Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-622-se6UD-7mPiS7QvHzj4gCXw-1; Wed, 15 Apr 2026 14:59:18 -0400 X-MC-Unique: se6UD-7mPiS7QvHzj4gCXw-1 X-Mimecast-MFC-AGG-ID: se6UD-7mPiS7QvHzj4gCXw_1776279557 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 6830C19560A6 for ; Wed, 15 Apr 2026 18:59:17 +0000 (UTC) Received: from fedora.tailb97d54.ts.net (unknown [10.96.134.153]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5564530001A5; Wed, 15 Apr 2026 18:59:16 +0000 (UTC) From: Guinevere Larsen To: gdb-patches@sourceware.org Cc: Guinevere Larsen Subject: [PATCH 6/6] gdb/record: Define new version of the record-save section Date: Wed, 15 Apr 2026 15:58:36 -0300 Message-ID: <20260415185836.2732968-7-guinevere@redhat.com> In-Reply-To: <20260415185836.2732968-1-guinevere@redhat.com> References: <20260415185836.2732968-1-guinevere@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: eLPVCtQkkyYrSBi8aD7HiapZjb26NPSapuIb7dcTLv4_1776279557 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true 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~public-inbox=simark.ca@sourceware.org With the changes to the internal representation of the history, we can no longer support the previous record save format. This commit makes it official, documenting the new format and changing the magic number. --- gdb/NEWS | 3 +++ gdb/record-full.c | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/gdb/NEWS b/gdb/NEWS index 4cf91053c95..4380a394376 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -42,6 +42,9 @@ * Support for the binary file format dbx has been removed. +* The format for a saved execution record has been updated, and + previous formats are no longer supported. + * When connected to an extended-remote target GDB can now automatically set the 'remote exec-file' in some cases. GDB will auto set the remote exec-file only if the remote wasn't started with diff --git a/gdb/record-full.c b/gdb/record-full.c index 297b5b76ae7..f7cfe5ca1e9 100644 --- a/gdb/record-full.c +++ b/gdb/record-full.c @@ -76,7 +76,8 @@ ( (record_full_next_insn != record_full_list.size ()) \ || ::execution_direction == EXEC_REVERSE) -#define RECORD_FULL_FILE_MAGIC netorder32(0x20091016) +#define RECORD_FULL_FILE_MAGIC_OLD netorder32(0x20091016) +#define RECORD_FULL_FILE_MAGIC netorder32(0x20260415) /* These are the core structs of the process record functionality. @@ -2161,6 +2162,27 @@ record_full_core_target::has_execution (inferior *inf) 8 bytes: memory address (network byte order). n bytes: memory value (n == memory length). + Version 3 (all numbers are in network order). + 4 bytes: Magic number (0x20260415). + NOTE: be sure to change whenever this file format changes! + + Records: + record_full_instruction: + 4 bytes: number of reg and mem entries for this instruction. + 1 byte: signal. + 4 bytes: instruction count. + 4 bytes: PC register ID. + N bytes: PC address of instruction (N == size of PC). + Effects: + record_full_reg: + 1 byte: record_type (record_full_reg, see enum record_full_type). + 4 bytes: Register ID. + n bytes: register value (n == actual register size). + record_full_mem: + 1 byte: record_type (record_full_mem, see enum record_full_type). + 4 bytes: memory length. + 8 bytes: memory address. + n bytes: memory value (n = memory length). */ /* bfdcore_read -- read bytes from a core file section. */ @@ -2323,9 +2345,14 @@ record_full_restore (struct bfd &cbfd) /* Check the magic code. */ bfdcore_read (&cbfd, osec, &magic, sizeof (magic), &bfd_offset); if (magic != RECORD_FULL_FILE_MAGIC) - error (_("Version mismatch or file format error in core file %ps."), - styled_string (file_name_style.style (), - bfd_get_filename (&cbfd))); + { + if (magic == RECORD_FULL_FILE_MAGIC_OLD) + error (_("This old recording format is no longer supported.")); + else + error (_("Version mismatch or file format error in core file %ps."), + styled_string (file_name_style.style (), + bfd_get_filename (&cbfd))); + } if (record_debug) gdb_printf (gdb_stdlog, " Reading 4-byte magic cookie " -- 2.53.0