From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 102633 invoked by alias); 8 Feb 2017 12:24:45 -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 102564 invoked by uid 89); 8 Feb 2017 12:24:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=BAYES_00,FREEMAIL_FROM,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=Alan.Hayward@arm.com, alanhaywardarmcom, alan.hayward@arm.com, AlanHaywardarmcom 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; Wed, 08 Feb 2017 12:24:33 +0000 Received: by mail-wr0-f195.google.com with SMTP id 89so8589547wrr.1 for ; Wed, 08 Feb 2017 04:24:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references :user-agent:date:message-id:mime-version:content-transfer-encoding; bh=lqgnszxo2GXpulb1o65UEBapSgNToGiXiA+fiaaxtZ4=; b=UG2xBS/p3FAd7259YaBeZ+Jfml00OAkXy7lQhux/GQM9w/CJ+Z8J8hy3cZRc5l2t8T M6Dc3+aQ2B35pO3+73lnHO84OOpvGj4Ue4nvSAJEa5pGa45d7hySuF1EpJpi7j3+wOU+ QdEGPNQqcLi9f9weqKDZRxuS+a9x4tZTlAuDS4ClkUqYgi1T2bLC85bLJkUCo83dO4sd /TZbovHOq4wz7GoaCN7Laa3Xgvf5+2LGDDWyuGhnoEopth5N1bkNAodQACKtfonD15zl jL4JkOh2qFrMeHfVpbhMNk/seMagoRgIInxJI+y6dGARWlOuTKdykpBcs4HLM28N/tv+ Zobg== X-Gm-Message-State: AIkVDXLM1RkSfAtIBuy73huzlvq/U67MvzsttWzLNv23sv0cmiMBo4qoHO7lv2UhQdPHIg== X-Received: by 10.223.160.84 with SMTP id l20mr18649777wrl.106.1486556671961; Wed, 08 Feb 2017 04:24:31 -0800 (PST) Received: from E107787-LIN ([194.214.185.158]) by smtp.gmail.com with ESMTPSA id q4sm12699819wrc.35.2017.02.08.04.24.20 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 08 Feb 2017 04:24:20 -0800 (PST) From: Yao Qi To: Alan Hayward Cc: Pedro Alves , Joel Brobecker , "gdb-patches\@sourceware.org" , Subject: Re: [PATCH] Removal of uses of MAX_REGISTER_SIZE In-Reply-To: <5F3D30AE-9A53-493A-B6DC-DF594C2FAB18@arm.com> (Alan Hayward's message of "Tue, 7 Feb 2017 16:33:19 +0000") References: <45e3a5e1-a9aa-1bc0-5d08-526b89fc458e@redhat.com> <20170201124123.GA27498@E107787-LIN> <20170202094012.dge4r6rsl2skdrii@adacore.com> <20170203102819.GA11916@E107787-LIN> <25716edf-096e-20c5-4170-fb8ca04d897b@redhat.com> <0C6A0D51-4C49-4400-8C46-E77DD512DF56@arm.com> <20170203165022.GB11916@E107787-LIN> <1E0030CE-FB37-4821-AA53-9C6D1CC285C9@arm.com> <20170206152635.GE11916@E107787-LIN> <5F3D30AE-9A53-493A-B6DC-DF594C2FAB18@arm.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Date: Wed, 08 Feb 2017 12:24:00 -0000 Message-ID: <86inokq39w.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2017-02/txt/msg00182.txt.bz2 Alan Hayward writes: > diff --git a/gdb/stack.c b/gdb/stack.c > index e00e2972cf20bc63917af19f86bf57f1c6b0b5b0..7ba7d68bde8d83ea1e700faa4= 66c6951979e0f76 100644 > --- a/gdb/stack.c > +++ b/gdb/stack.c > @@ -1650,33 +1650,35 @@ frame_info (char *addr_exp, int from_tty) > int count; > int i; > int need_nl =3D 1; > + int sp_regnum =3D gdbarch_sp_regnum (gdbarch); > > /* The sp is special; what's displayed isn't the save address, but > the value of the previous frame's sp. This is a legacy thing, > at one stage the frame cached the previous frame's SP instead > of its address, hence it was easiest to just display the cached > value. */ > - if (gdbarch_sp_regnum (gdbarch) >=3D 0) > + if (sp_regnum >=3D 0) > { > /* Find out the location of the saved stack pointer with out > actually evaluating it. */ > - frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch), > - &optimized, &unavailable, &lval, &addr, > - &realnum, NULL); > + frame_register_unwind (fi, sp_regnum, &optimized, &unavailable, &lval, > + &addr, &realnum, NULL); > if (!optimized && !unavailable && lval =3D=3D not_lval) > { > enum bfd_endian byte_order =3D gdbarch_byte_order (gdbarch); > - int sp_size =3D register_size (gdbarch, gdbarch_sp_regnum (gdbarch)= ); > - gdb_byte value[MAX_REGISTER_SIZE]; > + int sp_size =3D register_size (gdbarch, sp_regnum); > CORE_ADDR sp; > + struct value *value =3D frame_unwind_register_value (fi, sp_regnum); > > - frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch), > - &optimized, &unavailable, &lval, &addr, > - &realnum, value); > + gdb_assert (value !=3D NULL); Why don't you hoist frame_unwind_register_value above?, so the frame_register_unwind call is no longer needed, struct value *value =3D frame_unwind_register_value (fi, sp_regnum); gdb_assert (value !=3D NULL); if (!value_optimized_out (value) && value_entirely_available (value)) { if (VALUE_LVAL (value) =3D=3D not_lval) { sp =3D extract_unsigned_integer (value_contents_all (value), sp_size, byte_order); } else if (VALUE_LVAL (value) =3D=3D lval_memory) { // use value_address (value); } else if (VALUE_LVAL (value) =3D=3D lval_register) { // use VALUE_REGNUM (value); } } /* else keep quiet. */ release_value (value); value_free (value); > /* NOTE: cagney/2003-05-22: This is assuming that the > stack pointer was packed as an unsigned integer. That > may or may not be valid. */ > - sp =3D extract_unsigned_integer (value, sp_size, byte_order); > + sp =3D extract_unsigned_integer (value_contents_all (value), sp_siz= e, > + byte_order); > + release_value (value); > + value_free (value); > + > printf_filtered (" Previous frame's sp is "); > fputs_filtered (paddress (gdbarch, sp), gdb_stdout); > printf_filtered ("\n"); > @@ -1702,7 +1704,7 @@ frame_info (char *addr_exp, int from_tty) > numregs =3D gdbarch_num_regs (gdbarch) > + gdbarch_num_pseudo_regs (gdbarch); > for (i =3D 0; i < numregs; i++) > - if (i !=3D gdbarch_sp_regnum (gdbarch) > + if (i !=3D sp_regnum > && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup)) > { > /* Find out the location of the saved register without --=20 Yao (=E9=BD=90=E5=B0=A7)