From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id x879DhUTEGAoKQAAWB0awg (envelope-from ) for ; Tue, 26 Jan 2021 08:03:17 -0500 Received: by simark.ca (Postfix, from userid 112) id 306951EF80; Tue, 26 Jan 2021 08:03:17 -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 BB81C1E945 for ; Tue, 26 Jan 2021 08:03:16 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 36010383F843; Tue, 26 Jan 2021 13:03:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 36010383F843 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1611666196; bh=Si9ICl7qqn714MJRv2jZj4H6TNxnEULQ73AmOeMdm9s=; 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=sVAGUcFsYF6UgQg3YinQEXHEEDNQ+cz/2DQvl8L5FqMNqIhKGIja0pJHAtpvhOL1e XTZU4tHS1YDLywTIPEZkgfj+HM4r4R9lgcBuHgcbI7aL1Dz4f/8GL06KrnDkgXE+h0 w/+E/hvp7lie5f1es6DmZlUNsI/6CVO7m+mnGoPw= Received: from mail-qt1-x82c.google.com (mail-qt1-x82c.google.com [IPv6:2607:f8b0:4864:20::82c]) by sourceware.org (Postfix) with ESMTPS id 1DEAD3850403 for ; Tue, 26 Jan 2021 13:03:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 1DEAD3850403 Received: by mail-qt1-x82c.google.com with SMTP id v3so12078919qtw.4 for ; Tue, 26 Jan 2021 05:03:13 -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=Si9ICl7qqn714MJRv2jZj4H6TNxnEULQ73AmOeMdm9s=; b=U4gOZOFjz8kxSMIXbqwpyFpCnhphUTPDzZbP5ECz6i371AR3OXNYxlJJ/kWFZtG9FQ 7SqsO+dXooP5XtHhAzFCrCsxb1skxmsiMEY4Kp9zuUwfZ7GnBHcwkw56fhj4BlQnuaDL xvsAt+2R0glRJt4S68D7XDsYyYU6So6IXGajcIOasur/AaHp9NUrfuajePTG8ZypwaRf wiahpUA0RBUupJPwmT6jBaEXdCva7t60k/XB7PAV80k9J9nSR9akY+SA7LSX+aoWdn6I Fe205T4gNbdo4YbPLFQXFe5oYUxvXjhradvTHet4thPzWFQw4N1Ho2yayupbkh+DhKRl gdCg== X-Gm-Message-State: AOAM532rLG/wWXjt+KHSiI+RXRFDXnqzWSe1Fx/4O9p5Rw74/rIRSYKH 025o9bMq0mWgoDOm7+hBeXSLKgGinITa3A== X-Google-Smtp-Source: ABdhPJxmx7WMQt7Ouef1E0yXQ5lWeARH7rAcWhPVRlFQFIO59RrSJu9puO+kzP18GwMKaMH0mxZZEg== X-Received: by 2002:ac8:7681:: with SMTP id g1mr4852518qtr.391.1611666192587; Tue, 26 Jan 2021 05:03:12 -0800 (PST) Received: from ?IPv6:2804:7f0:8284:874d:f0cc:fc7b:2678:d042? ([2804:7f0:8284:874d:f0cc:fc7b:2678:d042]) by smtp.gmail.com with ESMTPSA id r89sm2927010qtd.25.2021.01.26.05.03.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 26 Jan 2021 05:03:11 -0800 (PST) Subject: [PING] [PATCH v4 00/25] Memory Tagging Support + AArch64 Linux implementation To: gdb-patches@sourceware.org References: <20201230153916.1586725-1-luis.machado@linaro.org> <3ced805e-edef-922a-4181-b15f75e0e59a@linaro.org> Message-ID: Date: Tue, 26 Jan 2021 10:03:08 -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: <3ced805e-edef-922a-4181-b15f75e0e59a@linaro.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit 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" On 1/15/21 1:02 PM, Luis Machado wrote: > 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 >>