From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id rGz3A0MCHGBLAgAAWB0awg (envelope-from ) for ; Thu, 04 Feb 2021 09:18:43 -0500 Received: by simark.ca (Postfix, from userid 112) id 0011A1EFCB; Thu, 4 Feb 2021 09:18:42 -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 A292F1E945 for ; Thu, 4 Feb 2021 09:18:41 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0DB3A383541C; Thu, 4 Feb 2021 14:18:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0DB3A383541C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1612448321; bh=+MJYp4kFvMij85aSg4ZcMPopcBuVn4RccrJCmo+81eM=; h=Subject:To:References:Date:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=QYdiyd6z/GzJtqBXA8LqLH0vRoSpZj8Hckwih8Cw2QLFXgn65QJdXc8tXkxqj1Zi3 crErYRDPC1Yh6w8tuxBAtmI6AlT6XCg3GoS/RaICfVGrjtSOCd2YAs1bAMFGs+x/Yu IZw8Pg5ayunUopHVS936trBrPdx/5BJx6WELAF8o= Received: from mail-qt1-x834.google.com (mail-qt1-x834.google.com [IPv6:2607:f8b0:4864:20::834]) by sourceware.org (Postfix) with ESMTPS id F1B74383541C for ; Thu, 4 Feb 2021 14:18:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org F1B74383541C Received: by mail-qt1-x834.google.com with SMTP id h16so2402160qth.11 for ; Thu, 04 Feb 2021 06:18:38 -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:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=+MJYp4kFvMij85aSg4ZcMPopcBuVn4RccrJCmo+81eM=; b=KJr82GqS8rmTD2CoGXfTk77166Es3V4AukxGpcDStgFMlOrAq26Jttd0svsvhF4MJD y1MqP507K0g2hoX834gr4a+9X11cYjYAIdGkTMo/JTXuu3r/uZan929lzivCn2qeMDTB g68P4J7PRbH1cdYbrw54jEPxxRXLpFS9nkMSLXU+ZtvjJCOfYEquo0wFtYJ26srNJEQV d5Xqbfgy5W5Q8wfmlCXqV2YG0Q+KvJesRcF97l/T9+htN4wQiqrtS3IaX+f0FLAZ1gn9 TVwsKGCHPzUbpRc+b8hQHHOnq6VsY8hwvEwUlsrA7cZ16l9veKbunBYlQQLxP8rvMHl9 l1jg== X-Gm-Message-State: AOAM531n4cxnv1vLHvVoU0vjhcOtIXDM5FlszEBFvcg5k5QJ4v/e35QC HxdOpkAI48dSireJZMVYC/zgGjusV4pUbQ== X-Google-Smtp-Source: ABdhPJxpZeRCB3M4GnMdJH21L9yEZhTnxrt7qkqIfNgQ+fHZVG5kCWVetTMPOz/x4RTCSvwxUbEmtQ== X-Received: by 2002:ac8:709a:: with SMTP id y26mr6105375qto.18.1612448318533; Thu, 04 Feb 2021 06:18:38 -0800 (PST) Received: from ?IPv6:2804:7f0:8284:848d:48d0:224b:b76:8a76? ([2804:7f0:8284:848d:48d0:224b:b76:8a76]) by smtp.gmail.com with ESMTPSA id b16sm5117945qkh.21.2021.02.04.06.18.36 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Feb 2021 06:18:37 -0800 (PST) Subject: [PING] [PATCH v5 00/25] Memory Tagging Support + AArch64 Linux implementation To: gdb-patches@sourceware.org References: <20210127202112.2485702-1-luis.machado@linaro.org> Message-ID: <02d8983c-a5ac-d793-8c33-af29d377a04b@linaro.org> Date: Thu, 4 Feb 2021 11:18:34 -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: <20210127202112.2485702-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 Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" On 1/27/21 5:20 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 | 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 | 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 | 444 ++++++++++++++++++++++++- > 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/gdb.base/options.exp | 1 + > gdb/testsuite/gdb.base/with.exp | 2 +- > gdb/testsuite/lib/gdb.exp | 16 + > gdb/valprint.c | 22 ++ > gdb/valprint.h | 4 + > 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 + > 57 files changed, 3655 insertions(+), 265 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 >