From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 54907 invoked by alias); 11 Apr 2017 15:37:36 -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 54504 invoked by uid 89); 11 Apr 2017 15:37:35 -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; Tue, 11 Apr 2017 15:37:33 +0000 Received: by mail-wr0-f193.google.com with SMTP id u18so128314wrc.1 for ; Tue, 11 Apr 2017 08:37:34 -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:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=QaO/MANAXpsA1of6737Ez8yBRbCW30ZQHa0hA3RsKEU=; b=DtPvX34boDZmby8MCtODUawYeojCGpVzx+9/jWwM5eP5BreGA04NakMefSBFEPE3Ce hHv4RKMVsF7VgZDEz8yPaBIg00qaYXqDWt+R1ZWbrz4ANIx0J7VY+HQ5yKbH45NB3Kfy fsm3qOVURi9inS1SMQ8CidWNit+171xxoRMXqk3xrEcnjBw2C67TJnVWECnwPsB1Vjhn e/sftbTzgPskBgqRd2hwkRL6vwJBtSvbg9qUGe0p/e1POo1X6/ctRHa8ATtA/xvvuZDJ 00mJJmLuoxdChjMwRXOVFiKGpuaYSYphbVYdU1P4+JFYG01SVXsYVlOd1QwgSpr95o78 J8Qw== X-Gm-Message-State: AN3rC/570tHJ8Yzrye01e5MNLObQTJuaUTMFdK6P/FGN+Cf+Z6P/0PMGl1OpUhjfVESclg== X-Received: by 10.223.135.234 with SMTP id c39mr20891253wrc.16.1491925053103; Tue, 11 Apr 2017 08:37:33 -0700 (PDT) Received: from E107787-LIN ([194.214.185.158]) by smtp.gmail.com with ESMTPSA id 32sm21997511wrq.25.2017.04.11.08.37.31 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Tue, 11 Apr 2017 08:37:32 -0700 (PDT) From: Yao Qi To: Alan Hayward Cc: "gdb-patches\@sourceware.org" , Subject: Re: [PATCH 3/11] Add MIPS_MAX_REGISTER_SIZE References: <3C00280E-37C9-4C0A-9DA6-F3B9DB1A6E8F@arm.com> Date: Tue, 11 Apr 2017 15:37:00 -0000 In-Reply-To: <3C00280E-37C9-4C0A-9DA6-F3B9DB1A6E8F@arm.com> (Alan Hayward's message of "Tue, 4 Apr 2017 10:12:39 +0000") Message-ID: <86y3v7uf9j.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2017-04/txt/msg00287.txt.bz2 Alan Hayward writes: Hi Alan, There are different ways of getting rid of MAX_REGISTER_SIZE, let us try some simple approaches first. Some uses of MAX_REGISTER_SIZE still can't be removed, but let us start from easy part. > diff --git a/gdb/mips-linux-tdep.c b/gdb/mips-linux-tdep.c > index 57e75b5343e1b927e9fe28dea16759f769cf4506..ce2f378854f4b66c426fd9d66= 83831e8795c58a6 100644 > --- a/gdb/mips-linux-tdep.c > +++ b/gdb/mips-linux-tdep.c > @@ -118,7 +118,7 @@ supply_32bit_reg (struct regcache *regcache, int regn= um, const void *addr) > { > struct gdbarch *gdbarch =3D get_regcache_arch (regcache); > enum bfd_endian byte_order =3D gdbarch_byte_order (gdbarch); > - gdb_byte buf[MAX_REGISTER_SIZE]; > + gdb_byte buf[MIPS_MAX_REGISTER_SIZE]; Given the function name supply_32bit_reg, all registers are 32-bit here, so we can do "buf[4]"? > @@ -470,7 +470,7 @@ mips64_fill_gregset (const struct regcache *regcache, > > if (regaddr !=3D -1) > { > - gdb_byte buf[MAX_REGISTER_SIZE]; > + gdb_byte buf[MIPS_MAX_REGISTER_SIZE]; > LONGEST val; > > regcache_raw_collect (regcache, regno, buf); The "buf" is used by regcache_raw_collect + extract_signed_integer, regcache_raw_collect (regcache, regno, buf); val =3D extract_signed_integer (buf, register_size (gdbarch, regno), byte_order); this pattern exists in some places, so can we add a new regcache api, LONGEST regcache_raw_collect_signed (const struct regcache *regcache, int regnum) { struct gdbarch *gdbarch =3D get_regcache_arch (regcache); enum bfd_endian byte_order =3D gdbarch_byte_order (gdbarch); return extract_signed_integer (register_buffer (regcache, regnum), register_size (gdbarch, regnum), byte_order); } this will remove one memory copy, as well as the local buffer "buf". > diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c > index 41cb9d82c6ef473c1fbbf86601914f9a4f462411..51a22ba29a520639bdeb95c23= 5c00c74ad40435b 100644 > --- a/gdb/mips-tdep.c > +++ b/gdb/mips-tdep.c > @@ -4527,7 +4527,7 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch,= struct value *function, > for (argnum =3D 0; argnum < nargs; argnum++) > { > const gdb_byte *val; > - gdb_byte valbuf[MAX_REGISTER_SIZE]; > + gdb_byte valbuf[MIPS_MAX_REGISTER_SIZE]; > struct value *arg =3D args[argnum]; > struct type *arg_type =3D check_typedef (value_type (arg)); > int len =3D TYPE_LENGTH (arg_type); > @@ -5758,7 +5758,7 @@ mips_o32_return_value (struct gdbarch *gdbarch, str= uct value *function, > /* A struct that contains one or two floats. Each value is part > in the least significant part of their floating point > register.. */ > - gdb_byte reg[MAX_REGISTER_SIZE]; > + gdb_byte reg[MIPS_MAX_REGISTER_SIZE]; "reg" is not used at all, we can remove it. > int regnum; > int field; > for (field =3D 0, regnum =3D mips_regnum (gdbarch)->fp0; > @@ -6473,7 +6473,7 @@ print_gp_register_row (struct ui_file *file, struct= frame_info *frame, > { > struct gdbarch *gdbarch =3D get_frame_arch (frame); > /* Do values for GP (int) regs. */ > - gdb_byte raw_buffer[MAX_REGISTER_SIZE]; > + gdb_byte raw_buffer[MIPS_MAX_REGISTER_SIZE]; > int ncols =3D (mips_abi_regsize (gdbarch) =3D=3D 8 ? 4 : 8); /* dis= play cols > per row. */ "raw_buffer" is used in deprecated_frame_register_read, so can we use get_frame_register_value instead? so that "raw_buffer" is not needed. --=20 Yao (=E9=BD=90=E5=B0=A7)