From patchwork Fri Nov 3 08:56:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 24064 Received: (qmail 12135 invoked by alias); 3 Nov 2017 08:56:13 -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 12126 invoked by uid 89); 3 Nov 2017 08:56:12 -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=Hx-spam-relays-external:209.85.128.195, H*RU:209.85.128.195, 10658, H*r:sk:static. X-HELO: mail-wr0-f195.google.com Received: from mail-wr0-f195.google.com (HELO mail-wr0-f195.google.com) (209.85.128.195) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 03 Nov 2017 08:56:11 +0000 Received: by mail-wr0-f195.google.com with SMTP id y9so1856865wrb.2 for ; Fri, 03 Nov 2017 01:56:10 -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; bh=Hroyp+5xmkiMHN53QNdoIsc2847nTbaq2NDk72OReOs=; b=GdG84XyEKtfZ+qKILoZNwi3KcTBqD9DnxETPxR3uutyj4sfCCBRoDmEcA2msrHjxN3 UO2/GqqSN2fvl5tsnasHv+nL0I7LMGPIwsgLevplWxQZStAJmIs0B3rnd6O7HjS9n6xq yLYIfrlS9NDPnGu4CJW9wTjzhUhq7Yes4Z6Ugv1ya2EoXXCur5Hspeu41aDfXbf01Mdg 9oOdHWpOfdmW7O8d3Ya8cNC1Go1K952mylCaCC3tG0sSntz0TGjb3MUXwaMiqFA5GbH+ EktLggr7K0HJfSBxPDlTuoJLtugCRKjUhjB1ujvwcL5gtQWzG0XxCZBTm+tk3Pz2AgQJ Q9yQ== X-Gm-Message-State: AMCzsaX9WEnDMIf+VkfIObHLInPcmFKCSQJnfsORRjb9Dc6y1Wo476mU aMR94blnb6ULtDZLLTifZ9uWbQ== X-Google-Smtp-Source: ABhQp+SSl1DPv5Tse6bX87krtquY1aCppX7hnZO/qhwhs/G67spboCnxgf2ZkSsw1wlkxDF2qL4e1g== X-Received: by 10.223.157.141 with SMTP id p13mr5512683wre.92.1509699368616; Fri, 03 Nov 2017 01:56:08 -0700 (PDT) Received: from E107787-LIN.cambridge.arm.com (static.42.136.251.148.clients.your-server.de. [148.251.136.42]) by smtp.gmail.com with ESMTPSA id j13sm3627541wrb.18.2017.11.03.01.56.07 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 03 Nov 2017 01:56:08 -0700 (PDT) From: Yao Qi X-Google-Original-From: Yao Qi To: gdb-patches@sourceware.org Subject: [PATCH 1/2] Change register_changed_p returns bool Date: Fri, 3 Nov 2017 08:56:03 +0000 Message-Id: <1509699364-16049-1-git-send-email-yao.qi@linaro.org> X-IsSubscribed: yes register_changed_p actually returns bool, but return type is still int. This patch changes the return type to bool. The caller of register_changed_p also checked whether the return value can be negative, which is not needed now. Such check was added in fb40c2090 in 2000, at that moment, register_changed_p returns -1 when read_relative_register_raw_bytes fails. I can tell from its name that it reads register contents, but we don't have this function called inside register_changed_p, and the regcache is read-only. gdb: 2017-11-01 Yao Qi * mi/mi-main.c (mi_cmd_data_list_changed_registers): Remove local 'changed'. Remove error. (register_changed_p): Change return type to bool. --- gdb/mi/mi-main.c | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 480d2fd..42df94e 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -95,8 +95,8 @@ static void mi_execute_cli_command (const char *cmd, int args_p, const char *args); static void mi_execute_async_cli_command (const char *cli_command, char **argv, int argc); -static int register_changed_p (int regnum, struct regcache *, - struct regcache *); +static bool register_changed_p (int regnum, regcache *, + regcache *); static void output_register (struct frame_info *, int regnum, int format, int skip_unavailable); @@ -988,7 +988,7 @@ mi_cmd_data_list_changed_registers (const char *command, char **argv, int argc) struct ui_out *uiout = current_uiout; std::unique_ptr prev_regs; struct gdbarch *gdbarch; - int regnum, numregs, changed; + int regnum, numregs; int i; /* The last time we visited this function, the current frame's @@ -1021,12 +1021,9 @@ mi_cmd_data_list_changed_registers (const char *command, char **argv, int argc) if (gdbarch_register_name (gdbarch, regnum) == NULL || *(gdbarch_register_name (gdbarch, regnum)) == '\0') continue; - changed = register_changed_p (regnum, prev_regs.get (), - this_regs.get ()); - if (changed < 0) - error (_("-data-list-changed-registers: " - "Unable to read register contents.")); - else if (changed) + + if (register_changed_p (regnum, prev_regs.get (), + this_regs.get ())) uiout->field_int (NULL, regnum); } } @@ -1041,12 +1038,8 @@ mi_cmd_data_list_changed_registers (const char *command, char **argv, int argc) && gdbarch_register_name (gdbarch, regnum) != NULL && *gdbarch_register_name (gdbarch, regnum) != '\000') { - changed = register_changed_p (regnum, prev_regs.get (), - this_regs.get ()); - if (changed < 0) - error (_("-data-list-changed-registers: " - "Unable to read register contents.")); - else if (changed) + if (register_changed_p (regnum, prev_regs.get (), + this_regs.get ())) uiout->field_int (NULL, regnum); } else @@ -1054,18 +1047,17 @@ mi_cmd_data_list_changed_registers (const char *command, char **argv, int argc) } } -static int +static bool register_changed_p (int regnum, struct regcache *prev_regs, struct regcache *this_regs) { struct gdbarch *gdbarch = this_regs->arch (); struct value *prev_value, *this_value; - int ret; /* First time through or after gdbarch change consider all registers as changed. */ if (!prev_regs || prev_regs->arch () != gdbarch) - return 1; + return true; /* Get register contents and compare. */ prev_value = prev_regs->cooked_read_value (regnum); @@ -1073,8 +1065,8 @@ register_changed_p (int regnum, struct regcache *prev_regs, gdb_assert (prev_value != NULL); gdb_assert (this_value != NULL); - ret = value_contents_eq (prev_value, 0, this_value, 0, - register_size (gdbarch, regnum)) == 0; + auto ret = value_contents_eq (prev_value, 0, this_value, 0, + register_size (gdbarch, regnum)) == 0; release_value (prev_value); release_value (this_value);