From patchwork Mon Nov 14 17:42:45 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 17465 Received: (qmail 46564 invoked by alias); 14 Nov 2016 17:43:11 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 46342 invoked by uid 89); 14 Nov 2016 17:43:10 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=no version=3.3.2 spammy=Hx-spam-relays-external:74.125.83.68, H*RU:74.125.83.68, 1.9.1, nnpc X-HELO: mail-pg0-f68.google.com Received: from mail-pg0-f68.google.com (HELO mail-pg0-f68.google.com) (74.125.83.68) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 14 Nov 2016 17:43:07 +0000 Received: by mail-pg0-f68.google.com with SMTP id x23so9473306pgx.3 for ; Mon, 14 Nov 2016 09:43:07 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=FqRbeacI9box1YrBaGe/7cMi1vBQkoR63G0jmCIX7g8=; b=VqgiOwsmTBxA2YF+xglvVVdgUoaQ+/twxOI38hnnfrvo0TBAHd9M54MZ6oZrMhLrue x9cPxzjISfTDulDMsHmxHG0vRGrBBrSr+wp2tBvG5adZth1ewAc6Z1+A0ze66a0IdjB9 ZMNcl2l7YzLgJCUgKwXAwCZ3psAXCs2VsVqlVAyabVG83ctJUzP+KNhTqfSI8Wj7Xlyr 6orO+80RNjwASNaM3glh5W0GK81kY8ebw8PCG5oVsKR6191Z2FrWrO2ghP3h/UI+/HFX y7w1lFcYFMUvrgy5vhMgzgQ6DfTS3A3iZczIKJzzBD7iANl8VBtkIKTuj2BsnZXE3FCV 88fQ== X-Gm-Message-State: ABUngvcnnwqHK5qdyvb2N/dkIacpXoRP11d1QadxZDC1a/fGtjbcqaRSuAVj4P91QkurrA== X-Received: by 10.99.154.9 with SMTP id o9mr57278964pge.19.1479145385994; Mon, 14 Nov 2016 09:43:05 -0800 (PST) Received: from E107787-LIN.cambridge.arm.com (gcc1-power7.osuosl.org. [140.211.15.137]) by smtp.gmail.com with ESMTPSA id y29sm36696024pfd.63.2016.11.14.09.43.05 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 14 Nov 2016 09:43:05 -0800 (PST) From: Yao Qi X-Google-Original-From: Yao Qi To: gdb-patches@sourceware.org Subject: [PATCH 08/13] gdbarch software_single_step frame_info to regcache: sparc Date: Mon, 14 Nov 2016 17:42:45 +0000 Message-Id: <1479145370-11432-9-git-send-email-yao.qi@linaro.org> In-Reply-To: <1479145370-11432-1-git-send-email-yao.qi@linaro.org> References: <1479145370-11432-1-git-send-email-yao.qi@linaro.org> X-IsSubscribed: yes gdb: 2016-11-14 Yao Qi * sparc-tdep.c (sparc_analyze_control_transfer): Replace parameter frame with regcache. Call get_current_frame. (sparc_software_single_step): Call get_regcache_arch instead of get_frame_arch. Call regcache_raw_get_unsigned instead of get_frame_register_unsigned. --- gdb/sparc-tdep.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c index ea2435e..18b627d 100644 --- a/gdb/sparc-tdep.c +++ b/gdb/sparc-tdep.c @@ -1501,7 +1501,7 @@ sparc32_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, software single-step mechanism. */ static CORE_ADDR -sparc_analyze_control_transfer (struct frame_info *frame, +sparc_analyze_control_transfer (struct regcache *regcache, CORE_ADDR pc, CORE_ADDR *npc) { unsigned long insn = sparc_fetch_instruction (pc); @@ -1552,8 +1552,11 @@ sparc_analyze_control_transfer (struct frame_info *frame, } else if (X_OP (insn) == 2 && X_OP3 (insn) == 0x3a) { + struct frame_info *frame = get_current_frame (); + /* Trap instruction (TRAP). */ - return gdbarch_tdep (get_frame_arch (frame))->step_trap (frame, insn); + return gdbarch_tdep (get_regcache_arch (regcache))->step_trap (frame, + insn); } /* FIXME: Handle DONE and RETRY instructions. */ @@ -1602,19 +1605,19 @@ sparc_step_trap (struct frame_info *frame, unsigned long insn) static VEC (CORE_ADDR) * sparc_software_single_step (struct frame_info *frame) { - struct gdbarch *arch = get_frame_arch (frame); + struct regcache *regcache = get_current_regcache (); + struct gdbarch *arch = get_regcache_arch (regcache); struct gdbarch_tdep *tdep = gdbarch_tdep (arch); - struct address_space *aspace = get_frame_address_space (frame); CORE_ADDR npc, nnpc; CORE_ADDR pc, orig_npc; VEC (CORE_ADDR) *next_pcs = NULL; - pc = get_frame_register_unsigned (frame, tdep->pc_regnum); - orig_npc = npc = get_frame_register_unsigned (frame, tdep->npc_regnum); + pc = regcache_raw_get_unsigned (regcache, tdep->pc_regnum); + orig_npc = npc = regcache_raw_get_unsigned (regcache, tdep->npc_regnum); /* Analyze the instruction at PC. */ - nnpc = sparc_analyze_control_transfer (frame, pc, &npc); + nnpc = sparc_analyze_control_transfer (regcache, pc, &npc); if (npc != 0) VEC_safe_push (CORE_ADDR, next_pcs, npc);