From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 54209 invoked by alias); 7 Jul 2015 12:54:06 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 54200 invoked by uid 89); 7 Jul 2015 12:54:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.1 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (207.82.80.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 07 Jul 2015 12:54:04 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-14-Z3neJMY4TDq0cwHWCEqZxg-13 Received: from e105615-lin.cambridge.arm.com ([10.1.2.79]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Tue, 7 Jul 2015 13:52:00 +0100 From: Pierre Langlois To: gdb-patches@sourceware.org Cc: Pierre Langlois Subject: [PATCH 6/8] [AArch64] Implement gdbarch_gen_return_address gdbarch method Date: Tue, 07 Jul 2015 12:54:00 -0000 Message-Id: <1436273518-5959-7-git-send-email-pierre.langlois@arm.com> In-Reply-To: <1436273518-5959-1-git-send-email-pierre.langlois@arm.com> References: <1436273518-5959-1-git-send-email-pierre.langlois@arm.com> X-MC-Unique: Z3neJMY4TDq0cwHWCEqZxg-13 Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2015-07/txt/msg00166.txt.bz2 This patch implements the 'collect $_ret' command to collect the return address of a function in a tracepoint. It marks the LR register for collection. gdb/ChangeLog: * aarch64-tdep.c: Add ax.h and ax-gdb.h includes. (aarch64_gen_return_address): New function. (aarch64_gdbarch_init): Hook it. --- gdb/aarch64-tdep.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 57976b7..c7ccbb5 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -42,6 +42,8 @@ #include "user-regs.h" #include "language.h" #include "infcall.h" +#include "ax.h" +#include "ax-gdb.h" =20 #include "aarch64-tdep.h" =20 @@ -2261,6 +2263,18 @@ aarch64_get_longjmp_target (struct frame_info *frame= , CORE_ADDR *pc) *pc =3D extract_unsigned_integer (buf, X_REGISTER_SIZE, byte_order); return 1; } + +/* Implement the "gen_return_address" gdbarch method. */ + +static void +aarch64_gen_return_address (struct gdbarch *gdbarch, + struct agent_expr *ax, struct axs_value *value, + CORE_ADDR scope) +{ + value->type =3D register_type (gdbarch, AARCH64_LR_REGNUM); + value->kind =3D axs_lvalue_register; + value->u.reg =3D AARCH64_LR_REGNUM; +} =0C =20 /* Return the pseudo register name corresponding to register regnum. */ @@ -2830,6 +2844,8 @@ aarch64_gdbarch_init (struct gdbarch_info info, struc= t gdbarch_list *arches) if (tdep->jb_pc >=3D 0) set_gdbarch_get_longjmp_target (gdbarch, aarch64_get_longjmp_target); =20 + set_gdbarch_gen_return_address (gdbarch, aarch64_gen_return_address); + tdesc_use_registers (gdbarch, tdesc, tdesc_data); =20 /* Add standard register aliases. */ --=20 2.1.0