From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id YDagFFGDsl+jXwAAWB0awg (envelope-from ) for ; Mon, 16 Nov 2020 08:49:05 -0500 Received: by simark.ca (Postfix, from userid 112) id 5205E1F08B; Mon, 16 Nov 2020 08:49:05 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_NONE,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (unknown [8.43.85.97]) (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 simark.ca (Postfix) with ESMTPS id C12151E58F for ; Mon, 16 Nov 2020 08:49:01 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 20C943857C61; Mon, 16 Nov 2020 13:49:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 20C943857C61 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1605534541; bh=0DOdQd5o92FEZDGCtoEYd/XuagUVk8Fdb/ZV/Ex7d0I=; h=Subject:To:References:Date:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=xU1U97lE/TgJmCY1PYofYj50Tb7iaMFP8Z6PP1pEj1wjSQbZXdAXrlqtfh+283UTU 5UVGpyZdkWD49/wkm0yaWHp/LFey+fvP+vHr8E3gsNu/S+cy4VrJ6WFQ5LzOLQ+ZRX d3LnMg359C00sqMbTFanqQEcUXf6lyB0Z2rPhxq8= Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by sourceware.org (Postfix) with ESMTPS id 703363857C61 for ; Mon, 16 Nov 2020 13:48:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 703363857C61 Received: by mail-qk1-x741.google.com with SMTP id k4so6810500qko.13 for ; Mon, 16 Nov 2020 05:48:49 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=0DOdQd5o92FEZDGCtoEYd/XuagUVk8Fdb/ZV/Ex7d0I=; b=Gfj4yqmSa8OYZvNSXJaGTWQwDrtJtdTsx3qwVByNOCMORKS3zhGgd+wIY8lI2alJqN 0GgPy9A3FdtkgkHS0BsPmTuVbse/XgC4qo3pjqd88g5dtjBSkAfXgu4AXmBE1Hxh5Xro SjDdaJjFmmvw0pJVkUxTKPjowLWfysLtm174t9/XzXAHPg1Ur+Irioe+aVzIpM1VZRpk +0+GrD9cC5E8CBCKNCC+74iDaFWRf2/9OJJKhf/8Nqp4WqPv6P/J/41MuYOj5I+aWYxH 0mZw9A+Dlr0hxSBHwnzgLyCOOWI6LG1IXCfJYTcecWSM4C7lAzRxtxL2p5dIioV97BgW poSg== X-Gm-Message-State: AOAM533r4dyICUgBz5Ec7MCoLhM7t4QwudnzekcMQYbesDxu4B1fls7P VWPkrZEXVWwKr61Qh+8dCJ9bSQ== X-Google-Smtp-Source: ABdhPJxxFhXKMmD6QRsjL4jDMA+b2DEboowTltrSBx3WwduJr5n/pmVQk2zdSsOp+8vYZ9la97k1jQ== X-Received: by 2002:ae9:dc45:: with SMTP id q66mr13862314qkf.407.1605534528927; Mon, 16 Nov 2020 05:48:48 -0800 (PST) Received: from ?IPv6:2804:7f0:8284:1487:34cb:6ef2:6b7f:4db2? ([2804:7f0:8284:1487:34cb:6ef2:6b7f:4db2]) by smtp.gmail.com with ESMTPSA id i15sm11391417qke.16.2020.11.16.05.48.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 16 Nov 2020 05:48:48 -0800 (PST) Subject: Re: [PATCH v3 00/24] Memory Tagging Support + AArch64 Linux implementation To: gdb-patches@sourceware.org References: <20201109170435.15766-1-luis.machado@linaro.org> Message-ID: Date: Mon, 16 Nov 2020 10:48:44 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20201109170435.15766-1-luis.machado@linaro.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Luis Machado via Gdb-patches Reply-To: Luis Machado Cc: david.spickett@linaro.org Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" Ping? FTR, I'm aiming at having this ready for GDB 11. On 11/9/20 2:04 PM, Luis Machado wrote: > Here's v3 of this patch series. > > Memory tagging improves memory safety by tagging various parts of memory and > raising exceptions when the allocation tag (the one associated with a range of > memory addresses) does not match the logical tag contained in a pointer that is > used to access the memory area. > > We already have an implementation of such a mechanism for sparc64 (ADI), but > it is target-specific and not exposed to the rest of GDB. This series aims to > make the infrastructure available to other targets that may wish to support > their specific memory tagging approaches. For AArch64 Linux this is called > MTE (Memory Tagging Extensions). > > The series is split into a set that deals with generic changes to GDB's > infrastructure (target methods, gdbarch hooks and remote packets), a set that > implements support for AArch64 Linux and one last set that implements new > commands, updates the documentation and adds tests. > > The goal is to make it so the architecture independent parts of GDB don't > need to interpret tag formats, given the formats are likely different > for each architecture. For this reason, GDB will handle tags as a sequence of > bytes and will not assume a particular format. > > The architecture-specific code can handle the sequence of bytes appropriately. > > Luis Machado (24): > New target methods for memory tagging support > New gdbarch memory tagging hooks > Add GDB-side remote target support for memory tagging > Unit testing for GDB-side remote memory tagging handling > GDBserver remote packet support for memory tagging > Unit tests for gdbserver memory tagging remote packets > Documentation for memory tagging remote packets > AArch64: Add MTE CPU feature check support > AArch64: Add target description/feature for MTE registers > AArch64: Add MTE register set support for GDB and gdbserver > AArch64: Add MTE ptrace requests > AArch64: Implement memory tagging target methods for AArch64 > Refactor parsing of /proc//smaps > AArch64: Implement the memory tagging gdbarch hooks > AArch64: Add unit testing for logical tag set/get operations > AArch64: Report tag violation error information > AArch64: Add gdbserver MTE support > AArch64: Add MTE register set support for core files > New mtag commands > Documentation for the new mtag commands > Extend "x" and "print" commands to support memory tagging > Document new "x" and "print" memory tagging extensions > Add NEWS entry. > Add memory tagging testcases > > gdb/Makefile.in | 3 + > gdb/NEWS | 32 ++ > gdb/aarch64-linux-nat.c | 129 ++++++- > gdb/aarch64-linux-tdep.c | 334 +++++++++++++++++- > gdb/aarch64-linux-tdep.h | 3 + > gdb/aarch64-tdep.c | 40 ++- > gdb/aarch64-tdep.h | 12 +- > gdb/arch-utils.c | 50 +++ > gdb/arch-utils.h | 23 ++ > gdb/arch/aarch64-mte-linux.c | 70 ++++ > gdb/arch/aarch64-mte-linux.h | 66 ++++ > gdb/arch/aarch64.c | 7 +- > gdb/arch/aarch64.h | 7 +- > gdb/configure.nat | 3 +- > gdb/configure.tgt | 1 + > gdb/doc/gdb.texinfo | 215 +++++++++++- > gdb/features/Makefile | 1 + > gdb/features/aarch64-mte.c | 14 + > gdb/features/aarch64-mte.xml | 11 + > gdb/gdbarch.c | 137 ++++++++ > gdb/gdbarch.h | 53 +++ > gdb/gdbarch.sh | 36 ++ > gdb/linux-tdep.c | 358 ++++++++++++------- > gdb/linux-tdep.h | 4 + > gdb/nat/aarch64-mte-linux-ptrace.c | 200 +++++++++++ > gdb/nat/aarch64-mte-linux-ptrace.h | 50 +++ > gdb/printcmd.c | 468 ++++++++++++++++++++++++- > gdb/remote.c | 232 ++++++++++++ > gdb/target-delegates.c | 84 +++++ > gdb/target.h | 37 ++ > gdb/testsuite/gdb.arch/aarch64-mte.c | 107 ++++++ > gdb/testsuite/gdb.arch/aarch64-mte.exp | 371 ++++++++++++++++++++ > gdb/testsuite/gdb.base/memtag.c | 22 ++ > gdb/testsuite/gdb.base/memtag.exp | 64 ++++ > gdb/testsuite/lib/gdb.exp | 16 + > gdb/valprint.h | 1 + > gdbserver/Makefile.in | 1 + > gdbserver/configure.srv | 2 + > gdbserver/linux-aarch64-ipa.cc | 8 +- > gdbserver/linux-aarch64-low.cc | 97 ++++- > gdbserver/linux-aarch64-tdesc.cc | 10 +- > gdbserver/linux-aarch64-tdesc.h | 3 +- > gdbserver/remote-utils.cc | 43 ++- > gdbserver/remote-utils.h | 7 +- > gdbserver/server.cc | 245 +++++++++++++ > gdbserver/server.h | 3 + > gdbserver/target.cc | 20 ++ > gdbserver/target.h | 17 + > gdbsupport/rsp-low.cc | 2 +- > include/elf/common.h | 3 + > 50 files changed, 3536 insertions(+), 186 deletions(-) > create mode 100644 gdb/arch/aarch64-mte-linux.c > create mode 100644 gdb/arch/aarch64-mte-linux.h > create mode 100644 gdb/features/aarch64-mte.c > create mode 100644 gdb/features/aarch64-mte.xml > create mode 100644 gdb/nat/aarch64-mte-linux-ptrace.c > create mode 100644 gdb/nat/aarch64-mte-linux-ptrace.h > create mode 100644 gdb/testsuite/gdb.arch/aarch64-mte.c > create mode 100644 gdb/testsuite/gdb.arch/aarch64-mte.exp > create mode 100644 gdb/testsuite/gdb.base/memtag.c > create mode 100644 gdb/testsuite/gdb.base/memtag.exp >