From patchwork Thu Apr 13 07:26:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 20020 Received: (qmail 119130 invoked by alias); 13 Apr 2017 07:26:24 -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 119058 invoked by uid 89); 13 Apr 2017 07:26:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-wr0-f193.google.com Received: from mail-wr0-f193.google.com (HELO mail-wr0-f193.google.com) (209.85.128.193) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 13 Apr 2017 07:26:22 +0000 Received: by mail-wr0-f193.google.com with SMTP id u18so7337211wrc.1 for ; Thu, 13 Apr 2017 00:26:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=QXWwvnV71096u0ex8VcKMWXeQuStJ+cpbfU6yCoZ+No=; b=D0eYP6WeJ/Efw51km/t5JbbIz4VK7XHUlRc23xqRM/H8efL5/D6wdjFNncuxHbKEal H2dJ+PXcjVZdwVML3qHUVQx78BLfaWFABivHGaaaypPdeL1IYn3vVKJv57fptFKY1fu1 nWeMa+OSIfKgTmptBx77TMlGEQ3cKHwzvuKYljKqH5i22XECd5lbQA0rIsEfg4QW/9dN Wm3i8h+OgfVnw7ACryZl+LXB77VKbpZfOTA+qJ/y7ruZPGs1OpCaXldjsd6nTxhljHde KzWpUbyAJCc7GsU6c8tCcsEDqbOMkN91UwdK3CaeKpmaenr/cFfev47bEiY2WKQxd3ax bnwg== X-Gm-Message-State: AN3rC/7QKFyXkQazcVXfJM6fo6UeFQt778lbpEp/eMcU01q3bCkAVhIR c7tiAkqE5SlTUcao X-Received: by 10.223.179.2 with SMTP id j2mr1382604wrd.51.1492068381610; Thu, 13 Apr 2017 00:26:21 -0700 (PDT) Received: from E107787-LIN.cambridge.arm.com ([194.214.185.158]) by smtp.gmail.com with ESMTPSA id e21sm8719934wmd.3.2017.04.13.00.26.20 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 13 Apr 2017 00:26:21 -0700 (PDT) From: Yao Qi X-Google-Original-From: Yao Qi To: gdb-patches@sourceware.org Subject: [PATCH 5/9] Restrict m68k_convert_register_p Date: Thu, 13 Apr 2017 08:26:09 +0100 Message-Id: <1492068373-4916-6-git-send-email-yao.qi@linaro.org> In-Reply-To: <1492068373-4916-1-git-send-email-yao.qi@linaro.org> References: <1492068373-4916-1-git-send-email-yao.qi@linaro.org> X-IsSubscribed: yes We need to convert register if the type is float. Suppose we get a value from float point register, but its type is integer, we don't have to convert. This case may not exist in real code, but exist in my unit test case. warning: Cannot convert floating-point register value to non-floating-point type. Self test failed: arch m68k: self-test failed at gdb/git/gdb/findvar.c:1072 ok = gdbarch_register_to_value (gdbarch, frame, regnum, type, buf.data (), &optim, &unavail); 1072: SELF_CHECK (ok); gdb: 2017-04-12 Yao Qi * m68k-tdep.c (m68k_convert_register_p): Check type's code is TYPE_CODE_FLT or not. --- gdb/m68k-tdep.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c index 7c3bf4c..1486841 100644 --- a/gdb/m68k-tdep.c +++ b/gdb/m68k-tdep.c @@ -188,6 +188,8 @@ m68k_convert_register_p (struct gdbarch *gdbarch, if (!gdbarch_tdep (gdbarch)->fpregs_present) return 0; return (regnum >= M68K_FP0_REGNUM && regnum <= M68K_FP0_REGNUM + 7 + /* We only support floating-point values. */ + && TYPE_CODE (type) == TYPE_CODE_FLT && type != register_type (gdbarch, M68K_FP0_REGNUM)); } @@ -203,17 +205,6 @@ m68k_register_to_value (struct frame_info *frame, int regnum, struct type *fpreg_type = register_type (get_frame_arch (frame), M68K_FP0_REGNUM); - /* We only support floating-point values. */ - if (TYPE_CODE (type) != TYPE_CODE_FLT) - { - warning (_("Cannot convert floating-point register value " - "to non-floating-point type.")); - *optimizedp = *unavailablep = 0; - return 0; - } - - /* Convert to TYPE. */ - /* Convert to TYPE. */ if (!get_frame_register_bytes (frame, regnum, 0, TYPE_LENGTH (type), from, optimizedp, unavailablep))