From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28267 invoked by alias); 3 Jan 2014 19:16:11 -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 28193 invoked by uid 89); 3 Jan 2014 19:16:11 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-0.0 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,RCVD_IN_SORBS_WEB,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-ee0-f49.google.com Received: from mail-ee0-f49.google.com (HELO mail-ee0-f49.google.com) (74.125.83.49) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Fri, 03 Jan 2014 19:16:09 +0000 Received: by mail-ee0-f49.google.com with SMTP id c41so6872372eek.36 for ; Fri, 03 Jan 2014 11:16:06 -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:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=jGkxkGtPLNRdOr/ShY48b2yaHkZbJYDfgmNBaUlY8j4=; b=jTZifNbhyHh4fbd6ufCmJsIasAkm4SweibuJhrXoiNWci5Mh2eWqApGGCICtqnzCH3 Fv5wf2uv5yu2PWPS9HmU9DgZpx/9ifWCb+WZIBw8feoAp4//n8mAmF2+Mbk6yw8J4oDY smVn7r4kfVPK2JaqYz/fZ9p/mCo93s3OubkJSZKL01IuVcq2LTzadkV9XZuX6QbXChdC X2VVx4UNf/SWxYSjnATF8t1UeYybGwKFuvzqcgITV7xFdlxx/QmNUsE2V7MYu0xxNot7 aRRYX1W7443ZvmxNnwrWC1/ad1asxffr8Q4GGJomevBK2HMI8j/K3lITMOTh5C8q7IKA jM9w== X-Gm-Message-State: ALoCoQklzJ0ER1Pe9MjsMhEMomkWKSJ7HbOi+f2o6JJXWWVg8+46U8TzFCe5qR96sYMX8wnsnqvq X-Received: by 10.14.241.130 with SMTP id g2mr3325350eer.106.1388776566264; Fri, 03 Jan 2014 11:16:06 -0800 (PST) Received: from localhost.localdomain ([182.185.255.37]) by mx.google.com with ESMTPSA id h48sm147395187eev.3.2014.01.03.11.16.04 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 03 Jan 2014 11:16:05 -0800 (PST) From: Omair Javaid To: gdb-patches@sourceware.org Cc: patches@linaro.org Subject: [PATCH v2 2/7] Fix for bugs in push and ldm instructions decoding Date: Fri, 03 Jan 2014 19:16:00 -0000 Message-Id: <0f7fb3b570618db992dda74ac94b3bbc4cdd714b.1388709773.git.omair.javaid@linaro.org> In-Reply-To: References: In-Reply-To: References: X-IsSubscribed: yes X-SW-Source: 2014-01/txt/msg00012.txt.bz2 This patch corrects the register numbers and removes multiple loops in recording procedure of instructions involving multiple registers. gdb: 2014-01-03 Omair Javaid * arm-tdep.c (thumb_record_misc): Update to correct logical error while recording ldm, ldmia and pop instructions. --- gdb/arm-tdep.c | 61 +++++++++++++++++--------------------------------------- 1 file changed, 18 insertions(+), 43 deletions(-) diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 223a7db..24bacf8 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -11786,26 +11786,15 @@ arm_record_ld_st_multiple (insn_decode_record *arm_insn_r) while (register_bits) { if (register_bits & 0x00000001) - register_list[register_count++] = 1; + record_buf[index++] = register_count; register_bits = register_bits >> 1; + register_count++; } /* Extra space for Base Register and CPSR; wihtout optimization. */ - record_buf[register_count] = reg_src1; - record_buf[register_count + 1] = ARM_PS_REGNUM; - arm_insn_r->reg_rec_count = register_count + 2; - - for (register_count = 0; register_count < no_of_regs; register_count++) - { - if (register_list[register_count]) - { - /* Register_count gives total no of registers - and dually working as reg number. */ - record_buf[index] = register_count; - index++; - } - } - + record_buf[index++] = reg_src1; + record_buf[index++] = ARM_PS_REGNUM; + arm_insn_r->reg_rec_count = index; } else { @@ -12209,22 +12198,15 @@ thumb_record_misc (insn_decode_record *thumb_insn_r) /* POP. */ register_bits = bits (thumb_insn_r->arm_insn, 0, 7); while (register_bits) - { - if (register_bits & 0x00000001) - register_list[register_count++] = 1; - register_bits = register_bits >> 1; - } - record_buf[register_count] = ARM_PS_REGNUM; - record_buf[register_count + 1] = ARM_SP_REGNUM; - thumb_insn_r->reg_rec_count = register_count + 2; - for (register_count = 0; register_count < 8; register_count++) - { - if (register_list[register_count]) - { - record_buf[index] = register_count; - index++; - } - } + { + if (register_bits & 0x00000001) + record_buf[index++] = register_count; + register_bits = register_bits >> 1; + register_count++; + } + record_buf[index++] = ARM_PS_REGNUM; + record_buf[index++] = ARM_SP_REGNUM; + thumb_insn_r->reg_rec_count = index; } else if (10 == opcode2) { @@ -12321,19 +12303,12 @@ thumb_record_ldm_stm_swi (insn_decode_record *thumb_insn_r) while (register_bits) { if (register_bits & 0x00000001) - register_list[register_count++] = 1; + record_buf[index++] = register_count; register_bits = register_bits >> 1; + register_count++; } - record_buf[register_count] = reg_src1; - thumb_insn_r->reg_rec_count = register_count + 1; - for (register_count = 0; register_count < 8; register_count++) - { - if (register_list[register_count]) - { - record_buf[index] = register_count; - index++; - } - } + record_buf[index++] = reg_src1; + thumb_insn_r->reg_rec_count = index; } else if (0 == opcode2) { -- 1.7.9.5