From patchwork Sun Jun 8 01:03:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thiago Jung Bauermann X-Patchwork-Id: 894801 Delivered-To: patch@linaro.org Received: by 2002:a05:6000:ecd:b0:3a4:ee3f:8f15 with SMTP id ea13csp1175758wrb; Sat, 7 Jun 2025 18:06:41 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWrx+BQt1H1plC1pJg72jj8mCGOUhPnsDmSvX3B5lixYMxQ2Vl6qq/RicGUPEMbRtnOGaxqvQ==@linaro.org X-Google-Smtp-Source: AGHT+IFrHX6TVZ1xb486JyPizMauOQXt/0VbvSrBo6yMOAxlDG/dbcRQ7OUJwLUkFcGaeSXasIHu X-Received: by 2002:a05:620a:f14:b0:7cd:4b5b:a210 with SMTP id af79cd13be357-7d229900f28mr1300234485a.47.1749344801184; Sat, 07 Jun 2025 18:06:41 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1749344801; cv=pass; d=google.com; s=arc-20240605; b=hEr/d0z6WfnaV4Ccs8bn//6vB4QkFMaSgyqdFUBpDoUo0v6PAyEFRxunmbWL/bXu+i A8osVkcbwcxe/USL+RHO1aq+DHAdQia5WYE4nk2cy3TTjk27ydKIz6il0Q3fc4ZoaKa0 wYYe+MNjtnhD7i81gkGVLp+5sPAgdZ3TtPCiqlOn2AP8A1xSJOMP9JL+vJcg4Akd9BwF ZYlFDoxCyh6eKLWqYlmI8Cl3VBYZ7aqbuzqdj0IFiqxnkbM+t2vTLW4iZVHh+SK+c5oq xUIa4OnflkokC4fr82jZdSibN25VIoIzDa7bLQGql6Vh0WR0DHPHxUJ2eWciig7WXZrh p5LA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature:dkim-filter:arc-filter:dmarc-filter:delivered-to :dkim-filter; bh=yibp0W/5HA9jM6fvLmdYh6ZhayzexLwPUU1Ea9qr7i8=; fh=72kqq0iQhigvR9Vv/oqX5ebs3Yyyw7XhzWxOOEPdupI=; b=UL9wNsGAl2Y3b2l3PKjUHjZYt7vk0/lnGBLl9UiogOyjaV6MK0uXDKchW/J4R84W2l rFYm9oTF2XsbEQf5JYDMO/zsiOME1C46/FM1NdNxVSZIlrn/HD/Vwrhjr8o9x/2WVXqK 8sffJi+p1LltzqYM6TH4iq0rmzZcoyoPH6d+w1favW8nsoCB0OxlfrwfLJIsNsFe725V uerwxdvPIvuoamgBtfnik/2WHbb/ZEtD+26ZfY6ajayenTY33/+UCe1SE33lpKR7t7un 7hZthYrX3FKMZIQwdM5WWDj0oAh2gWam9Qd/LQZsOrrOxrnMH90OZuHBN9TH5guL0qjS EODA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="oKU/ISYe"; arc=pass (i=1); spf=pass (google.com: domain of gdb-patches-bounces~patch=linaro.org@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gdb-patches-bounces~patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id af79cd13be357-7d38d5ae08dsi157304585a.550.2025.06.07.18.06.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Jun 2025 18:06:41 -0700 (PDT) Received-SPF: pass (google.com: domain of gdb-patches-bounces~patch=linaro.org@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="oKU/ISYe"; arc=pass (i=1); spf=pass (google.com: domain of gdb-patches-bounces~patch=linaro.org@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gdb-patches-bounces~patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9BB263858D26 for ; Sun, 8 Jun 2025 01:06:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9BB263858D26 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=oKU/ISYe X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-vk1-xa2d.google.com (mail-vk1-xa2d.google.com [IPv6:2607:f8b0:4864:20::a2d]) by sourceware.org (Postfix) with ESMTPS id 7F1273858C51 for ; Sun, 8 Jun 2025 01:03:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7F1273858C51 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7F1273858C51 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::a2d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1749344625; cv=none; b=KQ0YYfy5Mvq/70GG3o6CUJNRqvCWOGf7rUdjdpY+ylpY7TtXrGXH2u64jTcmPuiIz2NwHaBguNGLgH6Ee8aD9yyVOg6SwogetxMUZhTfNKJAjD5U1Wlrl0lzCONhzzwnBv2LpU0CVv32S5wpwaVsdxNa50OsxRuCO1lJANuCphc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1749344625; c=relaxed/simple; bh=6726D433xy3GdURz5wTNsepMVCpaD7OdXkLwszA2Eck=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=tc+9s/Nw9vwxMSV9zy3EaVPbyYl1pLuy0VnaXGoiGZ1SOQrvtEbPm6b6K3SqiJ6f0Cgw510RaJ4w9fK7cxm57uVgsRhZQ1RxNYlETmv0EugP79LuPkVZIZN1eh27r+edvPHAG5AiSpZtR8gTiAvsZdQStTBKjuH9psyF1glqFkE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7F1273858C51 Received: by mail-vk1-xa2d.google.com with SMTP id 71dfb90a1353d-530756db3d0so1195027e0c.2 for ; Sat, 07 Jun 2025 18:03:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749344625; x=1749949425; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=yibp0W/5HA9jM6fvLmdYh6ZhayzexLwPUU1Ea9qr7i8=; b=oKU/ISYernd4WR5TlxdX0+htJoKduqiemCwuRlTScUrb5VHygviJRKp5SLmlePJyl5 EiWaXwvOA5lvIFfhgpNE/VcRpKg6Ok7j2GDiVQtymLqr0Ye4UbWzVrlqZhLkIRHIi/xW sLrInKxt/OgoRCDIZxkcyYM93KTbx59HIbTh4DcUcRVpngn9mHY9+WyXxTC9/RFQK0vl qK8ytWPDRG7N9nCyQWRXYw/8vt8ha5sdrQ1WTSHw3mpjU0Gi05ALwBff+vrWF+sGyZVD oVQUBZYAc8xULcY7YThfWXDSxr1fmOkWAGu7qH6gwrqf1ZAShLkJcTqMs6Q4aJ+AWJD/ mFpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749344625; x=1749949425; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yibp0W/5HA9jM6fvLmdYh6ZhayzexLwPUU1Ea9qr7i8=; b=SXLTZ9tL348BfZwniI+GBBOQghMhVXsVOEWW8dPZo2zABOLEjFed/ppMrP+z8NUwiv 3rcpsvuY9P2DZd7kWBBzb9/4bnyNi/9Ki8//fBLCNvs1bQQg4sz7PTUvl5d8ei9IB24x jOq+zfIBCEBKMkZRz7lWzuDP36AC9qeK510e96NXKu6+wxQGw+ZuME9T6wVezVjyfPqV CPWwSmutdBoBDPA9Tp5F6wku22ASbN9yNUV8cTffY5rGYljVwO1VHgpisxnOr8Ms5nPR ioe6zFK0ObCcgovMNCxlrJOzk/9ioxuOjxMJa3m5zr5HqjXPbEGjGsR8ID5V627MXlSF jT4A== X-Gm-Message-State: AOJu0YyMX71b4aHQZQnIVl9FrylPCeZB+9++djpKWpzHU25ePQQ7up9n 3hcSsru+AQ2Rv7JKiwqW5SOKUVGkqKzjXnj3dZkwZExXIvj3YH1cpE+MDDDydiQkgVzNekVps3o PJkyX X-Gm-Gg: ASbGnctpoeJBZkNGPzO9rm9k/Am1R/n4ZQIMo2WdGUazXAwMNpKTYEG0LXLRloMyqcz tRhToLujbKf8VVzyr9YPfSHpfO8cj9LZflpqDiYk+OalIDOaRg3zpcIi/840fvru5OAsxNEsvdV rTxCCBttI3B1Wbd0aL8rlLyoLDGKplLuASZ3KHDLaIL1KxOC0HhTxwyvq/Sva1td/KTBuL9AzbV TfXl11EbeApgDiOmBULeNTv+Yec8/2NjQ516m6n2U8gZ6QDe2h8+PnMe/apuaIyVlGuxxp2LCxH bndeTw1GKlQEzMxjTW0lMbndMrShl1HqPRrs6ecgPh7/8/rtFQSPG7Kyv/xysbJlyo1lVA/6 X-Received: by 2002:a05:6122:130f:b0:530:7bd4:1761 with SMTP id 71dfb90a1353d-530e48a0013mr7287682e0c.11.1749344624741; Sat, 07 Jun 2025 18:03:44 -0700 (PDT) Received: from localhost ([2804:14d:7e39:88d6:8cb1:1e8e:e951:f687]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-530e6427ad8sm2969037e0c.43.2025.06.07.18.03.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Jun 2025 18:03:44 -0700 (PDT) From: Thiago Jung Bauermann To: gdb-patches@sourceware.org Subject: [PATCH 1/8] bfd/aarch64-linux: Support reading and writing the GCS core file note Date: Sat, 7 Jun 2025 22:03:12 -0300 Message-ID: <20250608010338.2234530-2-thiago.bauermann@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250608010338.2234530-1-thiago.bauermann@linaro.org> References: <20250608010338.2234530-1-thiago.bauermann@linaro.org> MIME-Version: 1.0 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~patch=linaro.org@sourceware.org --- bfd/elf.c | 31 +++++++++++++++++++++++++++++++ include/elf/common.h | 3 +++ 2 files changed, 34 insertions(+) I just posted this patch to the binutils mailing list. I'm including it in this series for completeness. diff --git a/bfd/elf.c b/bfd/elf.c index 3073f860621f..6a6b3f1bb9ee 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -10629,6 +10629,15 @@ elfcore_grok_aarch_zt (bfd *abfd, Elf_Internal_Note *note) return elfcore_make_note_pseudosection (abfd, ".reg-aarch-zt", note); } +/* Convert NOTE into a bfd_section called ".reg-aarch-gcs". Return TRUE if + successful, otherwise return FALSE. */ + +static bool +elfcore_grok_aarch_gcs (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-aarch-gcs", note); +} + static bool elfcore_grok_arc_v2 (bfd *abfd, Elf_Internal_Note *note) { @@ -11372,6 +11381,12 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note) else return true; + case NT_ARM_GCS: + if (note->namesz == 6 && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_aarch_gcs (abfd, note); + else + return true; + case NT_GDB_TDESC: if (note->namesz == 4 && strcmp (note->namedata, "GDB") == 0) @@ -13042,6 +13057,20 @@ elfcore_write_aarch_zt (bfd *abfd, size); } +/* Write the buffer of GCS register values in AARCH_GCS (length SIZE) into + the note buffer BUF and update *BUFSIZ. ABFD is the bfd the note is being + written into. Return a pointer to the new start of the note buffer, to + replace BUF which may no longer be valid. */ + +static char * +elfcore_write_aarch_gcs (bfd *abfd, char *buf, int *bufsiz, + const void *aarch_gcs, int size) +{ + const char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, note_name, NT_ARM_GCS, + aarch_gcs, size); +} + char * elfcore_write_arc_v2 (bfd *abfd, char *buf, @@ -13231,6 +13260,8 @@ elfcore_write_register_note (bfd *abfd, return elfcore_write_aarch_za (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-aarch-zt") == 0) return elfcore_write_aarch_zt (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-aarch-gcs") == 0) + return elfcore_write_aarch_gcs (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-arc-v2") == 0) return elfcore_write_arc_v2 (abfd, buf, bufsiz, data, size); if (strcmp (section, ".gdb-tdesc") == 0) diff --git a/include/elf/common.h b/include/elf/common.h index fd032d1e03ed..f4b543b353ac 100644 --- a/include/elf/common.h +++ b/include/elf/common.h @@ -740,6 +740,9 @@ /* Note: name must be "LINUX". */ #define NT_ARM_ZT 0x40d /* AArch64 SME2 ZT registers. */ /* Note: name must be "LINUX". */ +#define NT_ARM_GCS 0x410 /* AArch64 Guarded Control Stack + registers. */ + /* Note name must be "LINUX". */ #define NT_ARC_V2 0x600 /* ARC HS accumulator/extra registers. */ /* note name must be "LINUX". */ #define NT_LARCH_CPUCFG 0xa00 /* LoongArch CPU config registers */