From patchwork Thu Mar 24 14:39:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 11501 Received: (qmail 3793 invoked by alias); 24 Mar 2016 14:39:53 -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 3736 invoked by uid 89); 24 Mar 2016 14:39:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=unwinder, Hx-languages-length:2136 X-HELO: mail-pa0-f68.google.com Received: from mail-pa0-f68.google.com (HELO mail-pa0-f68.google.com) (209.85.220.68) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 24 Mar 2016 14:39:36 +0000 Received: by mail-pa0-f68.google.com with SMTP id 1so3541826pal.3 for ; Thu, 24 Mar 2016 07:39:36 -0700 (PDT) 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=+lwx24TnyU1FS53unIzC0JeaNHU01CepaY1z2H9DTMw=; b=kqUROx7t1VycFBynY5wnVguNHA+hP2FZkpMAMEBcHpdsqRL4pri91gKkrphv79A4sK mCGxB/r6c2Hwu7wqcVyW/g6+HdQbfsH0yk+P9oe+IjsKZ2WkYB6yRLnV4r+mTomwF7O3 N5epyF04Q18IlyUqDhZADAr6gQDWWwqsjjKz6MP4I4yqVebMDtdoeL/tl/3x8JiARLHv bwQcjOG69t7ijzGZqr/LBneJTgjna99ybvvq7mdnXgMg3lmdqXldXQ1DS5sBAlByBBc7 UJdC/xEk7PU3KswsIqFybVQAqoHrNX3kOdgToc/ZOcImsKW3QFvHznjqv3pId5XSA4O6 KiJg== X-Gm-Message-State: AD7BkJKm0Fnr2tL7OtFAigbEVzrBwZ3/85Q2ZXvxOUNchmHIH/MoI3aBVbZdqtzsEXisKA== X-Received: by 10.66.55.39 with SMTP id o7mr13147463pap.13.1458830375041; Thu, 24 Mar 2016 07:39:35 -0700 (PDT) Received: from E107787-LIN.cambridge.arm.com (gcc1-power7.osuosl.org. [140.211.15.137]) by smtp.gmail.com with ESMTPSA id xs10sm10796025pab.4.2016.03.24.07.39.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 24 Mar 2016 07:39:34 -0700 (PDT) From: Yao Qi X-Google-Original-From: Yao Qi To: gdb-patches@sourceware.org Subject: [PATCH 1/2] Refactor arm_stack_frame_destroyed_p Date: Thu, 24 Mar 2016 14:39:28 +0000 Message-Id: <1458830369-1974-2-git-send-email-yao.qi@linaro.org> In-Reply-To: <1458830369-1974-1-git-send-email-yao.qi@linaro.org> References: <1458830369-1974-1-git-send-email-yao.qi@linaro.org> X-IsSubscribed: yes This patch is to refactor arm_stack_frame_destroyed_p, so that the code can be used in both arm_stack_frame_destroyed_p and arm epilogue unwinder I am going to add in the next patch. In fact, the code is the same in two places, but checking whether it is thumb mode is slightly different. arm_stack_frame_destroyed_p uses arm_pc_is_thumb, and epilogue unwinder should use arm_frame_is_thumb. gdb: 2016-03-24 Yao Qi * arm-tdep.c (arm_stack_frame_destroyed_p): Rename it ... (arm_stack_frame_destroyed_p_1): ... here. Don't call arm_pc_is_thumb. (arm_stack_frame_destroyed_p): Call thumb_stack_frame_destroyed_p and arm_stack_frame_destroyed_p_1. --- gdb/arm-tdep.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index d4d17f3..afd51f1 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -3124,19 +3124,14 @@ thumb_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc) return found_stack_adjust; } -/* Implement the stack_frame_destroyed_p gdbarch method. */ - static int -arm_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc) +arm_stack_frame_destroyed_p_1 (struct gdbarch *gdbarch, CORE_ADDR pc) { enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch); unsigned int insn; int found_return; CORE_ADDR func_start, func_end; - if (arm_pc_is_thumb (gdbarch, pc)) - return thumb_stack_frame_destroyed_p (gdbarch, pc); - if (!find_pc_partial_function (pc, NULL, &func_start, &func_end)) return 0; @@ -3178,6 +3173,16 @@ arm_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc) return 0; } +/* Implement the stack_frame_destroyed_p gdbarch method. */ + +static int +arm_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc) +{ + if (arm_pc_is_thumb (gdbarch, pc)) + return thumb_stack_frame_destroyed_p (gdbarch, pc); + else + return arm_stack_frame_destroyed_p_1 (gdbarch, pc); +} /* When arguments must be pushed onto the stack, they go on in reverse order. The code below implements a FILO (stack) to do this. */