From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from nx231.node01.secure-mailgate.com (nx231.node01.secure-mailgate.com [89.22.108.231]) by sourceware.org (Postfix) with ESMTPS id 6CB7A3857C63 for ; Sat, 10 Apr 2021 21:17:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 6CB7A3857C63 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=trande.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=zied.guermazi@trande.de Received: from host202.checkdomain.de ([185.137.168.148]) by node01.secure-mailgate.com with esmtps (TLSv1.2:AES128-GCM-SHA256:128) (Exim 4.92) (envelope-from ) id 1lVKzK-00ER26-BM for gdb-patches@sourceware.org; Sat, 10 Apr 2021 23:17:55 +0200 X-SecureMailgate-Identity: zied.guermazi@trande.de;host202.checkdomain.de Received: from Trande0001.fritz.box (x4db55ac6.dyn.telefonica.de [77.181.90.198]) (Authenticated sender: zied.guermazi@trande.de) by host202.checkdomain.de (Postfix) with ESMTPSA id 476D6280096; Sat, 10 Apr 2021 23:17:53 +0200 (CEST) X-SecureMailgate-Identity: zied.guermazi@trande.de;host202.checkdomain.de From: Zied Guermazi To: gdb-patches@sourceware.org Cc: Zied Guermazi Subject: [PATCH v4 0/7] extend branch tracing to use ARM CoreSight traces Date: Sat, 10 Apr 2021 23:17:37 +0200 Message-Id: <20210410211744.7662-1-zied.guermazi@trande.de> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-PPP-Message-ID: <20210410211753.2587045.82362@host202.checkdomain.de> X-PPP-Vhost: trande.de X-Originating-IP: 185.137.168.148 X-SecureMailgate-Domain: host202.checkdomain.de X-SecureMailgate-Username: 185.137.168.148 Authentication-Results: secure-mailgate.com; auth=pass smtp.auth=185.137.168.148@host202.checkdomain.de X-SecureMailgate-Outgoing-Class: ham X-SecureMailgate-Outgoing-Evidence: Combined (0.03) X-Recommended-Action: accept X-Filter-ID: Pt3MvcO5N4iKaDQ5O6lkdGlMVN6RH8bjRMzItlySaT9C7X7eaODsRYWFuW9m0kcGPUtbdvnXkggZ 3YnVId/Y5jcf0yeVQAvfjHznO7+bT5wgSQOko5ya3orWH1MkzQXa2oPZqVS5i0KNMNtVCi0tRw/C h5SE4jAyhe1COeASyU+0K5sIc2JboNt06Sg+p4wk4ld5rdi2ZxohSIq+dqifZoVY3IcDeckxfee+ NDQ6wUl3g/WbBekzB3IK8RY7uNAEcY1i02TJefD768F5oV2iM8C0xB8SW32wy2mbLZXD/P+t8ebU KGAHl/zKrzp4ep5Out5PpkrBQueV+Yg5wqLK/DPxZnad5mPqz8E0hUQw3qwLMK9HC+pUQBAyR03+ Yzd8ARsynxDH0D+SLDJWdESXziw50BoEYB44qFPH6be8XgtMhiMRK0C70oXENkWqJaNtpfX1h/uL cDQJCG2naSen4S0KEAnwyE9dte+FkDKSV99EDBffVZVjmVaNbG4ZJG7F2RgQw3d3zmVen9wp80qQ nk5/t+UnI24Hleg6UWHjmGmLb5mum9xAXSaS3KKPtTZXWZip9+GhedmPokL8D3vhvahEk99rw1D2 l4a96yndXIAi94PWRqqg5f2zj0Czwt/2p7q+TsC7yjBBM4GUNkApbtfNeYdo3zQkL6d8fnrVN7/o G2luZ2kwu8znxkHgZW9l++DuIQUs/5JJj4C/n4CILuHmHOYlZT6wp+jJoJHpQBB6nw04N4sSvqbX c29M4Um3WINOdkmMSibIpFWl+UgeUrZvG6g/HuvmrLCiD+ucDmeMOC1XYD6oENz9RSepjWumxMww lmJT37b8CHOVqIzTPPdjzQ6YC7Heg3Xf7O1TOd61f628jJZW6EmR3fQuCfTT1zqyACU+4Rd8whTK dl5wej8peWQQgAfzW2MmbvmqMnmVR4+uXH1RoNfYbS3lJvVbZuM7jUXIESohoO51xWmU8e2ATa/l PFbC7mHZO6K28yiwInQ++pv7Ng60eviJn4ZcguZm/om7W4zIghViJ9dWi1BCFDdxe1OpmDrNi/71 5+xlV0jhvow/FYacDOLJ9p+/d238YjBdkVxGcor5nDrEAgzYc1X3WAFlD/U9uzx6jri9gThRk31T Rgf1b+pEf0gQDNwaU/TXHJLE1rXYU2nwSGYnRfVgnnPoPsK4CB595Ss= X-Report-Abuse-To: spam@node04.secure-mailgate.com X-Spam-Status: No, score=-4.5 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , X-List-Received-Date: Sat, 10 Apr 2021 21:17:58 -0000 This patch set adds support for branch tracing in GDB on arm platforms using coresight etm traces Branch tracing offers instructions and functions histories as well as execution record and replay (forwards and reverse debugging) this patch set was tested using the gdb.btrace testsuite on ARMv7 and ARMv8 cortex A processors running linux operating system with coresight drivers. test results of gdb.btrace testsuite on ARMv8, variation unix # of expected passes 595 # of unexpected failures 1 # of unsupported tests 1 test results of gdb.btrace testsuite on ARMv8 variation native-gdbserver # of expected passes 582 # of unexpected failures 4 # of unsupported tests 2 test results of gdb.btrace testsuite on ARMv7, variation unix # of expected passes 588 # of unexpected failures 7 # of untested testcases 1 # of unsupported tests 1 test results of gdb.btrace testsuite on ARMv7 variation native-gdbserver # of expected passes 583 # of unexpected failures 4 # of unsupported tests 2 known limitations: for arm v7 only - some registers needed for breakpoint address calculation in forwards executions may be missing. for arm v7 and arm v8 - sometimes trace buffers are not flushed properly or flushed in the buffer of a different thread. this was observed in test scripts only. - sometimes, in non-stop mode, while executing "stepi n" for two threads in parallel, a thread is hitting breakpoints intended for stepping the other one. Gdb recognizes that it is intended for the second thread, but decreases the step counter. leading to a stepping less than "n" times. patches are: Zied Guermazi (7): configure gdb build system for supporting btrace on arm processors add btrace coresight related commands start/stop btrace with coresight etm and parse etm buffer. nat independant start/stop btrace with coresight etm and collect etm buffer on linux os fix issue: gdb hangs in the command following a commad returning with TARGET_WAITKIND_NO_HISTORY add support for coresight btrace via remote protocol adapt btrace testcases for arm target gdb/Makefile.in | 5 +- gdb/NEWS | 30 + gdb/aarch64-linux-nat.c | 68 ++ gdb/arch/arm.h | 33 + gdb/arm-linux-nat.c | 68 ++ gdb/btrace.c | 967 +++++++++++++++++- gdb/btrace.h | 16 +- gdb/config.in | 3 + gdb/configure | 545 ++++++++++ gdb/configure.nat | 4 +- gdb/doc/gdb.texinfo | 115 ++- gdb/features/btrace-conf.dtd | 10 +- gdb/features/btrace.dtd | 38 +- gdb/infrun.c | 3 +- gdb/nat/linux-btrace.c | 399 +++++++- gdb/nat/linux-btrace.h | 19 + gdb/record-btrace.c | 181 +++- gdb/record.c | 2 + gdb/remote.c | 66 +- .../gdb.btrace/aarch64-instruction_history.S | 31 + .../gdb.btrace/aarch64-record_goto.S | 399 ++++++++ .../gdb.btrace/aarch64-tailcall-only.S | 516 ++++++++++ gdb/testsuite/gdb.btrace/aarch64-tailcall.S | 408 ++++++++ .../gdb.btrace/arm-instruction_history.S | 31 + gdb/testsuite/gdb.btrace/arm-record_goto.S | 432 ++++++++ gdb/testsuite/gdb.btrace/arm-tailcall-only.S | 503 +++++++++ gdb/testsuite/gdb.btrace/arm-tailcall.S | 390 +++++++ gdb/testsuite/gdb.btrace/buffer-size.exp | 15 +- gdb/testsuite/gdb.btrace/delta.exp | 14 +- .../gdb.btrace/instruction_history.exp | 146 ++- gdb/testsuite/gdb.btrace/non-stop.exp | 60 +- gdb/testsuite/gdb.btrace/record_goto.exp | 257 +++-- gdb/testsuite/gdb.btrace/stepi.exp | 113 +- gdb/testsuite/gdb.btrace/tailcall-only.exp | 24 +- gdb/testsuite/gdb.btrace/tailcall.exp | 62 +- ...on_history.S => x86-instruction_history.S} | 0 gdb/testsuite/lib/gdb.exp | 2 +- gdb/top.c | 10 +- gdbserver/config.in | 3 + gdbserver/configure | 545 ++++++++++ gdbserver/configure.srv | 4 + gdbserver/linux-low.cc | 100 +- gdbserver/server.cc | 34 +- gdbsupport/Makefile.in | 3 + gdbsupport/btrace-common.cc | 43 + gdbsupport/btrace-common.h | 115 ++- gdbsupport/common.m4 | 39 + gdbsupport/config.in | 3 + gdbsupport/configure | 545 ++++++++++ 49 files changed, 7208 insertions(+), 211 deletions(-) create mode 100644 gdb/testsuite/gdb.btrace/aarch64-instruction_history.S create mode 100644 gdb/testsuite/gdb.btrace/aarch64-record_goto.S create mode 100644 gdb/testsuite/gdb.btrace/aarch64-tailcall-only.S create mode 100644 gdb/testsuite/gdb.btrace/aarch64-tailcall.S create mode 100644 gdb/testsuite/gdb.btrace/arm-instruction_history.S create mode 100644 gdb/testsuite/gdb.btrace/arm-record_goto.S create mode 100644 gdb/testsuite/gdb.btrace/arm-tailcall-only.S create mode 100644 gdb/testsuite/gdb.btrace/arm-tailcall.S rename gdb/testsuite/gdb.btrace/{instruction_history.S => x86-instruction_history.S} (100%) -- 2.25.1