From patchwork Mon Apr 28 09:40:45 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Arnez X-Patchwork-Id: 698 Return-Path: X-Original-To: siddhesh@wilcox.dreamhost.com Delivered-To: siddhesh@wilcox.dreamhost.com Received: from homiemail-mx23.g.dreamhost.com (mx2.sub5.homie.mail.dreamhost.com [208.113.200.128]) by wilcox.dreamhost.com (Postfix) with ESMTP id 0C43036007C for ; Mon, 28 Apr 2014 02:40:59 -0700 (PDT) Received: by homiemail-mx23.g.dreamhost.com (Postfix, from userid 14314964) id C180F632F496A; Mon, 28 Apr 2014 02:40:58 -0700 (PDT) X-Original-To: gdb@patchwork.siddhesh.in Delivered-To: x14314964@homiemail-mx23.g.dreamhost.com Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by homiemail-mx23.g.dreamhost.com (Postfix) with ESMTPS id A26DE632F4969 for ; Mon, 28 Apr 2014 02:40:58 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version:content-type; q=dns; s=default; b=fLPJr 5/oMblPnZlTQvZUBaWhmTXIhzQXCopuCK5F7nveYh9TuUEMBcZBEFkeS8W6ys8P2 d5fm3hQqxCdAkqU+4II9Yuz7y3tHJhElMrmiGupQx8fffhAlIp6eppELzT50Y4Yu gXk+z/nzBBOp1pUfdlI6KgoAiQytavJdN3VrE0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version:content-type; s=default; bh=KGHOThSiNn6 HicGq+UhQh26ecYA=; b=pYjORYNDYVPNb43A4dF02QvqDSzOz4gx2iBA4J8f/Ye h/60QhEhDYZ78Js6aa54G7CtpJ0pgorT0Nc1s2PpxwZB7bVvHJynt3AmmBY8pOPb zykF4/JKSyfVl64BIVdbfMFDLJkEL/RSzwKmeQgPeRt1HizCjybKH50BnUpgNw7I = Received: (qmail 23185 invoked by alias); 28 Apr 2014 09:40:57 -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 23116 invoked by uid 89); 28 Apr 2014 09:40:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.7 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: e06smtp15.uk.ibm.com Received: from e06smtp15.uk.ibm.com (HELO e06smtp15.uk.ibm.com) (195.75.94.111) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Mon, 28 Apr 2014 09:40:54 +0000 Received: from /spool/local by e06smtp15.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 28 Apr 2014 10:40:51 +0100 Received: from d06dlp02.portsmouth.uk.ibm.com (9.149.20.14) by e06smtp15.uk.ibm.com (192.168.101.145) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 28 Apr 2014 10:40:48 +0100 Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by d06dlp02.portsmouth.uk.ibm.com (Postfix) with ESMTP id 873FF2190046 for ; Mon, 28 Apr 2014 10:40:40 +0100 (BST) Received: from d06av01.portsmouth.uk.ibm.com (d06av01.portsmouth.uk.ibm.com [9.149.37.212]) by b06cxnps4075.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s3S9em4A52166878 for ; Mon, 28 Apr 2014 09:40:48 GMT Received: from d06av01.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av01.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s3S9ekE5000366 for ; Mon, 28 Apr 2014 03:40:47 -0600 Received: from br87z6lw.de.ibm.com (dyn-9-152-212-188.boeblingen.de.ibm.com [9.152.212.188]) by d06av01.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id s3S9ejqZ000327; Mon, 28 Apr 2014 03:40:46 -0600 From: Andreas Arnez To: gdb-patches@sourceware.org Cc: Kevin Buettner , Yao Qi , Mark Kettenis Subject: [RFC 02/23] Remove 'arch' field from regset structure References: <87eh0h6bkq.fsf@br87z6lw.de.ibm.com> Date: Mon, 28 Apr 2014 11:40:45 +0200 In-Reply-To: <87eh0h6bkq.fsf@br87z6lw.de.ibm.com> (Andreas Arnez's message of "Mon, 28 Apr 2014 11:35:33 +0200") Message-ID: <8738gx6bc2.fsf@br87z6lw.de.ibm.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) MIME-Version: 1.0 X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14042809-0342-0000-0000-00000894B230 X-IsSubscribed: yes X-DH-Original-To: gdb@patchwork.siddhesh.in Removes the 'arch' field from the regset structure, since it represents the only "dynamic" data in a regset. It was referenced in some regset supply- and collect routines, to get access to the gdbarch associated with the regset. Naturally, the affected routines always have access to the regcache to be supplied to or collected from. Thus the gdbarch associated with that regcache can be used instead. gdb/ * regset.h (struct regset): Remove gdbarch field. * regset.c (regset_alloc): Drop initialization of gdbarch field. * nios2-linux-tdep.c (nios2_core_regset): Likewise. * ppcfbsd-tdep.c (ppc32_fbsd_gregset, ppc64_fbsd_gregset): Likewise. * ppc-linux-tdep.c (ppc32_linux_gregset, ppc64_linux_gregset) (ppc32_linux_fpregset, ppc32_linux_vrregset) (ppc32_linux_vsxregset): Likewise. * i386obsd-tdep.c (i386obsd_aout_supply_regset): Get the gdbarch via the regcache instead of the regset. * i386-tdep.c (i386_supply_gregset, i386_collect_gregset) (i386_supply_fpregset, i386_collect_fpregset): Likewise. * amd64obsd-tdep.c (amd64obsd_supply_regset): Likewise. * amd64-tdep.c (amd64_supply_fpregset, amd64_collect_fpregset): Likewise. --- gdb/amd64-tdep.c | 4 ++-- gdb/amd64obsd-tdep.c | 2 +- gdb/i386-tdep.c | 8 ++++---- gdb/i386obsd-tdep.c | 2 +- gdb/nios2-linux-tdep.c | 1 - gdb/ppc-linux-tdep.c | 15 +++++---------- gdb/ppcfbsd-tdep.c | 6 ++---- gdb/regset.c | 1 - gdb/regset.h | 3 --- 9 files changed, 15 insertions(+), 27 deletions(-) diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index 035b460..df4a3f4 100644 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -2842,7 +2842,7 @@ static void amd64_supply_fpregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *fpregs, size_t len) { - const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); + const struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache)); gdb_assert (len == tdep->sizeof_fpregset); amd64_supply_fxsave (regcache, regnum, fpregs); @@ -2858,7 +2858,7 @@ amd64_collect_fpregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *fpregs, size_t len) { - const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); + const struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache)); gdb_assert (len == tdep->sizeof_fpregset); amd64_collect_fxsave (regcache, regnum, fpregs); diff --git a/gdb/amd64obsd-tdep.c b/gdb/amd64obsd-tdep.c index 9446318..c5ed731 100644 --- a/gdb/amd64obsd-tdep.c +++ b/gdb/amd64obsd-tdep.c @@ -45,7 +45,7 @@ amd64obsd_supply_regset (const struct regset *regset, struct regcache *regcache, int regnum, const void *regs, size_t len) { - const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); + const struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache)); gdb_assert (len >= tdep->sizeof_gregset + I387_SIZEOF_FXSAVE); diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index ecbf730..de783f6 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -3724,7 +3724,7 @@ void i386_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len) { - const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); + const struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache)); const gdb_byte *regs = gregs; int i; @@ -3748,7 +3748,7 @@ i386_collect_gregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs, size_t len) { - const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); + const struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache)); gdb_byte *regs = gregs; int i; @@ -3770,7 +3770,7 @@ static void i386_supply_fpregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *fpregs, size_t len) { - const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); + const struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache)); if (len == I387_SIZEOF_FXSAVE) { @@ -3792,7 +3792,7 @@ i386_collect_fpregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *fpregs, size_t len) { - const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); + const struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache)); if (len == I387_SIZEOF_FXSAVE) { diff --git a/gdb/i386obsd-tdep.c b/gdb/i386obsd-tdep.c index cf19c50..bc29606 100644 --- a/gdb/i386obsd-tdep.c +++ b/gdb/i386obsd-tdep.c @@ -142,7 +142,7 @@ i386obsd_aout_supply_regset (const struct regset *regset, struct regcache *regcache, int regnum, const void *regs, size_t len) { - const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); + const struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache)); const gdb_byte *gregs = regs; gdb_assert (len >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE); diff --git a/gdb/nios2-linux-tdep.c b/gdb/nios2-linux-tdep.c index d9a51a8..84ab576 100644 --- a/gdb/nios2-linux-tdep.c +++ b/gdb/nios2-linux-tdep.c @@ -78,7 +78,6 @@ static const struct regset nios2_core_regset = NULL, nios2_supply_gregset, NULL, - NULL }; /* Implement the regset_from_core_section gdbarch method. */ diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index 5278a24..5410554 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -498,36 +498,31 @@ static const struct ppc_reg_offsets ppc64_linux_reg_offsets = static const struct regset ppc32_linux_gregset = { &ppc32_linux_reg_offsets, ppc_linux_supply_gregset, - ppc_linux_collect_gregset, - NULL + ppc_linux_collect_gregset }; static const struct regset ppc64_linux_gregset = { &ppc64_linux_reg_offsets, ppc_linux_supply_gregset, - ppc_linux_collect_gregset, - NULL + ppc_linux_collect_gregset }; static const struct regset ppc32_linux_fpregset = { &ppc32_linux_reg_offsets, ppc_supply_fpregset, - ppc_collect_fpregset, - NULL + ppc_collect_fpregset }; static const struct regset ppc32_linux_vrregset = { &ppc32_linux_reg_offsets, ppc_supply_vrregset, - ppc_collect_vrregset, - NULL + ppc_collect_vrregset }; static const struct regset ppc32_linux_vsxregset = { &ppc32_linux_reg_offsets, ppc_supply_vsxregset, - ppc_collect_vsxregset, - NULL + ppc_collect_vsxregset }; const struct regset * diff --git a/gdb/ppcfbsd-tdep.c b/gdb/ppcfbsd-tdep.c index 77292f3..28f5b7b 100644 --- a/gdb/ppcfbsd-tdep.c +++ b/gdb/ppcfbsd-tdep.c @@ -100,8 +100,7 @@ static const struct ppc_reg_offsets ppc64_fbsd_reg_offsets = static const struct regset ppc32_fbsd_gregset = { &ppc32_fbsd_reg_offsets, ppc_supply_gregset, - ppc_collect_gregset, - NULL + ppc_collect_gregset }; /* 64-bit general-purpose register set. */ @@ -109,8 +108,7 @@ static const struct regset ppc32_fbsd_gregset = { static const struct regset ppc64_fbsd_gregset = { &ppc64_fbsd_reg_offsets, ppc_supply_gregset, - ppc_collect_gregset, - NULL + ppc_collect_gregset }; /* 32-/64-bit floating-point register set. */ diff --git a/gdb/regset.c b/gdb/regset.c index a56641f..1d19d34 100644 --- a/gdb/regset.c +++ b/gdb/regset.c @@ -36,7 +36,6 @@ regset_alloc (struct gdbarch *arch, { struct regset *regset = GDBARCH_OBSTACK_ZALLOC (arch, struct regset); - regset->arch = arch; regset->supply_regset = supply_regset; regset->collect_regset = collect_regset; diff --git a/gdb/regset.h b/gdb/regset.h index fe804cc..f1a6e24 100644 --- a/gdb/regset.h +++ b/gdb/regset.h @@ -50,9 +50,6 @@ struct regset /* Function collecting values in a register set from a register cache. */ collect_regset_ftype *collect_regset; - - /* Architecture associated with the register set. */ - struct gdbarch *arch; }; /* Allocate a fresh 'struct regset' whose supply_regset function is