From patchwork Sun Jun 8 00:59:52 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: 894800 Delivered-To: patch@linaro.org Received: by 2002:a05:6000:ecd:b0:3a4:ee3f:8f15 with SMTP id ea13csp1174168wrb; Sat, 7 Jun 2025 18:00:38 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXSQlqw1KHIItzliw3gDp79zl5I+4geJSMCXuCz1+s7mywhV1HX4dySWpW4+3Kk/reYsdOQkw==@linaro.org X-Google-Smtp-Source: AGHT+IE4UzbKKegxjh029jqT4RqW7/iJMaapxcEp+MXfxkaYhPNQZqnD6WjOKjlV4QhUtv+3WxD3 X-Received: by 2002:ad4:5d6c:0:b0:6e8:9dfa:d932 with SMTP id 6a1803df08f44-6fb08f5dc96mr144682226d6.15.1749344438269; Sat, 07 Jun 2025 18:00:38 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1749344438; cv=pass; d=google.com; s=arc-20240605; b=PoWqDKOUR+N9PYQ0YoU8sBEUFQYQ9xB9C9GpmaRZ+IQrQcRESqUL49gnshYnwhdBA8 hlMB3+RqnxOI1l6Nq6nocII2w9aK2bWrOoJLLb0V9Tprkyl1TFL7e1QmgSxStXjTFLjL tVxEcbH7CNQq4R9SpfjwzD+MwbQf69Gaer36K6bwMEjK654Rye/IV/noFIJfQi2SqVuA 2KfSlLv/yj9Hpv0ALJL+guSMCRvb3+5acE7DMnfK+CMbIvbl1tMvYOBhGP9IqB1GiikJ wk0iCzBpLyvlZDdcaac/pwPqyv8jmR46zjUqvjIinPVNihu5XOWLoemvnoatMy8gKQDf PepQ== 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:message-id:date:subject:to:from:dkim-signature :dkim-filter:arc-filter:dmarc-filter:delivered-to:dkim-filter; bh=ORqivx8VNFCzTgtVtQRXNa2zZOgzbATgNOxpv/0Uj9M=; fh=NLxAvL/bDfPg4AGOtxqvQlND8vazkZrNzKLY8+LAbBY=; b=FfE7BSjFUdhNGnFZuKP8Mt5t3oB2/rLY6pA1pOUKnIXu6mDNgmCs/SY8iyox1kMN3Y 1l/932DRIKJVxfB6baYTLsiXPSk1r2ct3D9cSPRhlQ1cR/jMJVsOwU4caseCTX2VzdAv zAHVDTsI5B6StuPk/vqJBxc9JXOqtJlUMiMzsGLB2Q7357ux/8GGTvTyvnZDutQ7IXH4 +c91dPL8Vy0UVq0iz3femduDfPA4rMnni6S8/A86Jrvyvqg6EwT8qPES4qTwjHJ1Uu94 hR7K2QY6GBjnKuC6Gqthfm6TBkqMvbSt4q1WBGF2KnUxalkpYUs0CPIIgiKNVDWyUxlE MKPg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=CvxB+3Wr; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces~patch=linaro.org@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-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-7d25a532be7si481523785a.156.2025.06.07.18.00.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Jun 2025 18:00:38 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-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=CvxB+3Wr; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces~patch=linaro.org@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-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 D18B3385840C for ; Sun, 8 Jun 2025 01:00:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D18B3385840C 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=CvxB+3Wr X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-vs1-xe34.google.com (mail-vs1-xe34.google.com [IPv6:2607:f8b0:4864:20::e34]) by sourceware.org (Postfix) with ESMTPS id 113D03858D26 for ; Sun, 8 Jun 2025 00:59:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 113D03858D26 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 113D03858D26 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::e34 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1749344396; cv=none; b=pbYLOFdHY9yMndkFpVyKTiToYaIUyedUzGx09J2C+X4nPJgNy/6yAis1R7I4ScIWv6pa2LsiEAvKMoi/lj6RarhItLbGp0MDL6nhqsjfjhXlj8U7R3/uaz6j1etqxsQDZTKJF5EoiqReQPUiWC3la8TJ+tOwU54m/slKK4d0yns= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1749344396; c=relaxed/simple; bh=snlkQnf3N+r21ts+/gmuMzUjfLvYYcN2FKqSkv4vNes=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=KUqbMWIell/nCUfw9TUG7nOFysTXu8hGdRb6JGsvNJ1a8HarMpu68n4WVbLSflW4qGhaNbXi/O4QgVeeBXwZIJ0C3r2bPSqHr6EMBz0VzoO1SseL0dnJqIaWV5qRzmne2w/HWx1zaPOk4qO0J46WemT19/6p3LkAu+iqGW20cMs= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 113D03858D26 Received: by mail-vs1-xe34.google.com with SMTP id ada2fe7eead31-4c6cf5e4cd5so2209163137.2 for ; Sat, 07 Jun 2025 17:59:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749344395; x=1749949195; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=ORqivx8VNFCzTgtVtQRXNa2zZOgzbATgNOxpv/0Uj9M=; b=CvxB+3WrmNWiBSIBy06WqeMhiM214pDUJaPwNmbVQNxS1CaDICQ2K+3fKSBXIXO/LV 9Zp//WFDdbRMwQk38vu/P+h91WIqSSHmaXnZSCJReFfnq9AKvqAFQSOQRou48oDf5kqh 7vW07RO78Etmum/TN0CkRVv5haDzYwRyb/ku4esgSvvISDjo/LGFTbtECbCnYTtpofZ8 2WqvtezUnr4Fw4okFugSKirqWWHqTA5DSH+TUNF5dud6cJSxemOHAx9ppzVg8Lr38UbP s/4qpz6/hSv0Z5V66NcAdDRB0y+IIe5syO0wUb5FsQAfNprRVPOHf6i36ENCdLRhX0y1 3a8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749344395; x=1749949195; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ORqivx8VNFCzTgtVtQRXNa2zZOgzbATgNOxpv/0Uj9M=; b=DICEbozwMrclLWPS89COOuh3UqapV8Lr/IcJSnQb8DlSRQAYwpSH3UrXRc+Zg57K2L oQTGVMXuAVIm3iPLUOo2tY/7GG0xLJEl7IPCk5QxgIii9uGrGTWVxTghKbCP8lAtBDwr ayK1Q1siU/T4Yl7EzEE+tY3cR22cubq4DaaweW7HC5oS6S+eXDTJh2NNxdYijclvU2NK /vZv6e1k+hw9BXamWLf6AnKkyadCtVyiL9kuewJqKcqas6OxYptM1mayVQ9iIvtQoO7h vFaeoyrMHmCzswOrULCNHyk+7ya6pek/bJcnXjjm+jyIRjTkyeNsBQHr1twEkc4/yJGm vNag== X-Gm-Message-State: AOJu0Yx6oCkUNL3IwjLxya42Q9FZyP/Rl4MaZJVlQO1n7ToowB6BO4RA ZVuFWb4NyYL40wIDBfmigxXMYuFVmbZ15D0gL8IbrmEGDttWWEVMsf/bua30VE/qqc9fb/f0J6y 2b4Ja X-Gm-Gg: ASbGncsvMmIHKmXRBb37+1JaXVjD4mYO0IH1qIwoxjFHiUiZAKs9bQjHfB+SOBT1YWl ZsmtjW2rIydKL1i77oh+rut0ykWTbGsdsy6sC7ygC/6nShR+TQPl4MkOOv1pssuNrOVed8dx+mb 9xMWOCic9n4NyErGQggR6F9KTGbBB0HkwaSSNBCczdW+ZCnO6ijPGI30IRmv7MzD8QeGK/MvGVN NqnnJfvJ+5DyMYa+c2DV6k8X3sqtAhyJdx4XjCpHZ+3q6o04fDOk91yCgg/ppbhEzDJdve26fYG pJn4KSkT5u/TdWdQcPIYtIpcrMLv8I7Ai0js0kUV0nVWDjv+VPIWlo/mZQA8YatnRvamFAlJ X-Received: by 2002:a05:6102:160f:b0:4e2:a29d:ecb9 with SMTP id ada2fe7eead31-4e77291b3a3mr7662411137.1.1749344395305; Sat, 07 Jun 2025 17:59:55 -0700 (PDT) Received: from localhost ([2804:14d:7e39:88d6:8cb1:1e8e:e951:f687]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-87ec9b2cc4bsm1469621241.24.2025.06.07.17.59.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Jun 2025 17:59:54 -0700 (PDT) From: Thiago Jung Bauermann To: binutils@sourceware.org Subject: [PATCH] bfd/aarch64-linux: Support reading and writing the GCS core file note Date: Sat, 7 Jun 2025 21:59:52 -0300 Message-ID: <20250608005952.2233196-1-thiago.bauermann@linaro.org> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patch=linaro.org@sourceware.org --- bfd/elf.c | 31 +++++++++++++++++++++++++++++++ include/elf/common.h | 3 +++ 2 files changed, 34 insertions(+) Hello, I need this for a GDB patch series adding support for GCS which I will post shortly. 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 */