From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id sUaFHoe8AWDrQwAAWB0awg (envelope-from ) for ; Fri, 15 Jan 2021 11:02:15 -0500 Received: by simark.ca (Postfix, from userid 112) id 6C9241EF80; Fri, 15 Jan 2021 11:02:15 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [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 DC6F61E590 for ; Fri, 15 Jan 2021 11:02:13 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 235DD3985836; Fri, 15 Jan 2021 16:02:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 235DD3985836 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1610726533; bh=67H57DSNJHqc2rAvMIY61mUyKuEPMwQyChTY+YxKvws=; 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=p5v8XOVRukOT21Cz40RTwGRFXnHqzRp59tUU1jKzOjBIfNriEhiqBZg5I2kR953jn SuTh7quAqUwVZXQDEMFCz5yyEYnU/duehtvbLZ3p0QlM5Szmv8HJTLdqifzzB6XJeJ p4HukI9Iac8q+ZpsZfFVta5Mhb7TWuWF/UNvkUw0= Received: from mail-qt1-x832.google.com (mail-qt1-x832.google.com [IPv6:2607:f8b0:4864:20::832]) by sourceware.org (Postfix) with ESMTPS id DB368385782D for ; Fri, 15 Jan 2021 16:02:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org DB368385782D Received: by mail-qt1-x832.google.com with SMTP id e15so6319197qte.9 for ; Fri, 15 Jan 2021 08:02:08 -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=67H57DSNJHqc2rAvMIY61mUyKuEPMwQyChTY+YxKvws=; b=uA3dGUfBa1/kpnoafIAvJMFx1wjD68J7T4gLpgsyRXo4RYlSztg8Fw4VfpB2pBDgQ9 4siwb/if35nBXvB9tfJdRBbOQ3UD3u7sM7fLI6xjhSLDlxgKPX8/ZTDCN+oqsIiC1qwp UjYFG5j/WnH2uGmXLcdxFfwjpziWU2b1+CDBPqJn2v8EQGVZ8d9QYCVig4cgZHKlrIBA 2pRrUzFLF6YL8chpfj9KlbBFE3lLONfAwJzZtXPo51Z8e8itcRS+B5JD6pofNP5VGh8n V/Lb55zD5xNQEPYji7d/G0D7IE058QXmpnqfJ3oLhkwAX6Jdr8ZHhoczrd92ty5cL208 Ljvg== X-Gm-Message-State: AOAM533fKVMCat108LeSPQubg9LhQv/k0sI+PJdXuatkRZFjrgjOggpv uCtshuA7gmtoTQIv9tyFp9E6t78FCVlmfg== X-Google-Smtp-Source: ABdhPJy6H5t/Tc3A8d3J7knlkb3GuUTzDHI+OH/G4EZ6zuOqO63Q38M/zO+70xPGDJiikQpJiB+D4w== X-Received: by 2002:ac8:5a95:: with SMTP id c21mr12071954qtc.115.1610726528238; Fri, 15 Jan 2021 08:02:08 -0800 (PST) Received: from ?IPv6:2804:7f0:8284:874d:9d36:d9eb:1a34:3ca4? ([2804:7f0:8284:874d:9d36:d9eb:1a34:3ca4]) by smtp.gmail.com with ESMTPSA id l24sm5360754qkl.46.2021.01.15.08.02.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 15 Jan 2021 08:02:07 -0800 (PST) Subject: Re: [PATCH v4 00/25] Memory Tagging Support + AArch64 Linux implementation To: gdb-patches@sourceware.org References: <20201230153916.1586725-1-luis.machado@linaro.org> Message-ID: <3ced805e-edef-922a-4181-b15f75e0e59a@linaro.org> Date: Fri, 15 Jan 2021 13:02:04 -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: <20201230153916.1586725-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? On 12/30/20 12:38 PM, Luis Machado wrote: > 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 (25): > 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 > Convert char array to std::string in linux_find_memory_regions_full > 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 memory-tag 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 | 36 +- > gdb/aarch64-linux-nat.c | 127 ++++++- > gdb/aarch64-linux-tdep.c | 336 +++++++++++++++++- > 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 | 73 ++++ > gdb/arch/aarch64-mte-linux.h | 75 ++++ > gdb/arch/aarch64.c | 7 +- > gdb/arch/aarch64.h | 7 +- > gdb/configure.nat | 3 +- > gdb/configure.tgt | 1 + > gdb/doc/gdb.texinfo | 233 +++++++++++- > 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 | 378 +++++++++++++------- > 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 | 227 ++++++++++++ > gdb/target-debug.h | 24 ++ > gdb/target-delegates.c | 95 +++++ > gdb/target.h | 41 +++ > gdb/testsuite/gdb.arch/aarch64-mte.c | 107 ++++++ > gdb/testsuite/gdb.arch/aarch64-mte.exp | 369 +++++++++++++++++++ > gdb/testsuite/gdb.base/memtag.c | 22 ++ > gdb/testsuite/gdb.base/memtag.exp | 66 ++++ > 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 | 219 ++++++++++++ > gdbserver/server.h | 3 + > gdbserver/target.cc | 20 ++ > gdbserver/target.h | 21 ++ > gdbsupport/common-utils.cc | 49 +++ > gdbsupport/common-utils.h | 15 + > gdbsupport/rsp-low.cc | 49 --- > gdbsupport/rsp-low.h | 19 - > include/elf/common.h | 3 + > 54 files changed, 3654 insertions(+), 264 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 >