From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12371 invoked by alias); 11 Jan 2008 17:13:47 -0000 Received: (qmail 12351 invoked by uid 22791); 11 Jan 2008 17:13:45 -0000 X-Spam-Check-By: sourceware.org Received: from mtagate7.de.ibm.com (HELO mtagate7.de.ibm.com) (195.212.29.156) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 11 Jan 2008 17:13:23 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate7.de.ibm.com (8.13.8/8.13.8) with ESMTP id m0BHDJVK217620 for ; Fri, 11 Jan 2008 17:13:19 GMT Received: from d12av02.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1607.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v8.7) with ESMTP id m0BHDJZt2678890 for ; Fri, 11 Jan 2008 18:13:19 +0100 Received: from d12av02.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m0BHDJmo006022 for ; Fri, 11 Jan 2008 18:13:19 +0100 Received: from bbkeks.de.ibm.com (dyn-9-152-248-40.boeblingen.de.ibm.com [9.152.248.40]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id m0BHDI22006016 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 11 Jan 2008 18:13:19 +0100 Message-ID: <4787A33F.6050305@de.ibm.com> Date: Fri, 11 Jan 2008 17:13:00 -0000 From: Markus Deuling User-Agent: Thunderbird 2.0.0.9 (X11/20071031) MIME-Version: 1.0 To: GDB Patches , Ulrich Weigand Subject: [rfc] Get rid of current_gdbarch in amd64 Content-Type: multipart/mixed; boundary="------------090600010807050301070705" 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 X-SW-Source: 2008-01/txt/msg00276.txt.bz2 This is a multi-part message in MIME format. --------------090600010807050301070705 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Content-length: 942 Hi, this patch removes all but one remaining occurence of current_gdbarch in AMD64 targets. I dont have access to an AMD64 machine. Maybe someone from this list has and could do a testrun with this patch to see if there are regressions? Thanks a lot. Would this be ok to commit? ChangeLog: * amd64-nat.h (amd64_native_gregset_supplies_p): Add gdbarch as parameter. * amd64-nat.c (amd64_native_gregset_supplies_p): Likewise. (amd64_native_gregset_reg_offset): Add gdbarch as parameter. Replace current_gdbarch by gdbarch. Update caller. * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers) (amd64_linux_store_inferior_registers): Use get_regcache_arch to get at the current architecture. Update calls of amd64_native_gregset_supplies_p. * amd64bsd-nat.c (amd64bsd_fetch_inferior_registers) (amd64bsd_store_inferior_registers): Likewise. -- Markus Deuling GNU Toolchain for Linux on Cell BE deuling@de.ibm.com --------------090600010807050301070705 Content-Type: text/plain; name="diff-amd64" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diff-amd64" Content-length: 6645 diff -urpN src/gdb/amd64bsd-nat.c dev/gdb/amd64bsd-nat.c --- src/gdb/amd64bsd-nat.c 2008-01-01 23:53:09.000000000 +0100 +++ dev/gdb/amd64bsd-nat.c 2008-01-11 18:04:56.000000000 +0100 @@ -41,7 +41,9 @@ static void amd64bsd_fetch_inferior_registers (struct regcache *regcache, int regnum) { - if (regnum == -1 || amd64_native_gregset_supplies_p (regnum)) + struct gdbarch *gdbarch = get_regcache_arch (regcache); + + if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum)) { struct reg regs; @@ -54,7 +56,7 @@ amd64bsd_fetch_inferior_registers (struc return; } - if (regnum == -1 || !amd64_native_gregset_supplies_p (regnum)) + if (regnum == -1 || !amd64_native_gregset_supplies_p (gdbarch, regnum)) { struct fpreg fpregs; @@ -72,7 +74,9 @@ amd64bsd_fetch_inferior_registers (struc static void amd64bsd_store_inferior_registers (struct regcache *regcache, int regnum) { - if (regnum == -1 || amd64_native_gregset_supplies_p (regnum)) + struct gdbarch *gdbarch = get_regcache_arch (regcache); + + if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum)) { struct reg regs; @@ -90,7 +94,7 @@ amd64bsd_store_inferior_registers (struc return; } - if (regnum == -1 || !amd64_native_gregset_supplies_p (regnum)) + if (regnum == -1 || !amd64_native_gregset_supplies_p (gdbarch, regnum)) { struct fpreg fpregs; diff -urpN src/gdb/amd64-linux-nat.c dev/gdb/amd64-linux-nat.c --- src/gdb/amd64-linux-nat.c 2008-01-01 23:53:09.000000000 +0100 +++ dev/gdb/amd64-linux-nat.c 2008-01-11 18:03:17.000000000 +0100 @@ -157,6 +157,7 @@ fill_fpregset (const struct regcache *re static void amd64_linux_fetch_inferior_registers (struct regcache *regcache, int regnum) { + struct gdbarch *gdbarch = get_regcache_arch (regcache); int tid; /* GNU/Linux LWP ID's are process ID's. */ @@ -164,7 +165,7 @@ amd64_linux_fetch_inferior_registers (st if (tid == 0) tid = PIDGET (inferior_ptid); /* Not a threaded program. */ - if (regnum == -1 || amd64_native_gregset_supplies_p (regnum)) + if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum)) { elf_gregset_t regs; @@ -176,7 +177,7 @@ amd64_linux_fetch_inferior_registers (st return; } - if (regnum == -1 || !amd64_native_gregset_supplies_p (regnum)) + if (regnum == -1 || !amd64_native_gregset_supplies_p (gdbarch, regnum)) { elf_fpregset_t fpregs; @@ -194,6 +195,7 @@ amd64_linux_fetch_inferior_registers (st static void amd64_linux_store_inferior_registers (struct regcache *regcache, int regnum) { + struct gdbarch *gdbarch = get_regcache_arch (regcache); int tid; /* GNU/Linux LWP ID's are process ID's. */ @@ -201,7 +203,7 @@ amd64_linux_store_inferior_registers (st if (tid == 0) tid = PIDGET (inferior_ptid); /* Not a threaded program. */ - if (regnum == -1 || amd64_native_gregset_supplies_p (regnum)) + if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum)) { elf_gregset_t regs; @@ -217,7 +219,7 @@ amd64_linux_store_inferior_registers (st return; } - if (regnum == -1 || !amd64_native_gregset_supplies_p (regnum)) + if (regnum == -1 || !amd64_native_gregset_supplies_p (gdbarch, regnum)) { elf_fpregset_t fpregs; diff -urpN src/gdb/amd64-nat.c dev/gdb/amd64-nat.c --- src/gdb/amd64-nat.c 2008-01-01 23:53:09.000000000 +0100 +++ dev/gdb/amd64-nat.c 2008-01-11 18:00:35.000000000 +0100 @@ -51,23 +51,23 @@ int amd64_native_gregset64_num_regs = AM general-purpose register set. */ static int -amd64_native_gregset_reg_offset (int regnum) +amd64_native_gregset_reg_offset (struct gdbarch *gdbarch, int regnum) { int *reg_offset = amd64_native_gregset64_reg_offset; int num_regs = amd64_native_gregset64_num_regs; gdb_assert (regnum >= 0); - if (gdbarch_ptr_bit (current_gdbarch) == 32) + if (gdbarch_ptr_bit (gdbarch) == 32) { reg_offset = amd64_native_gregset32_reg_offset; num_regs = amd64_native_gregset32_num_regs; } - if (num_regs > gdbarch_num_regs (current_gdbarch)) - num_regs = gdbarch_num_regs (current_gdbarch); + if (num_regs > gdbarch_num_regs (gdbarch)) + num_regs = gdbarch_num_regs (gdbarch); - if (regnum < num_regs && regnum < gdbarch_num_regs (current_gdbarch)) + if (regnum < num_regs && regnum < gdbarch_num_regs (gdbarch)) return reg_offset[regnum]; return -1; @@ -77,9 +77,9 @@ amd64_native_gregset_reg_offset (int reg register REGNUM. */ int -amd64_native_gregset_supplies_p (int regnum) +amd64_native_gregset_supplies_p (struct gdbarch *gdbarch, int regnum) { - return (amd64_native_gregset_reg_offset (regnum) != -1); + return (amd64_native_gregset_reg_offset (gdbarch, regnum) != -1); } @@ -105,7 +105,7 @@ amd64_supply_native_gregset (struct regc { if (regnum == -1 || regnum == i) { - int offset = amd64_native_gregset_reg_offset (i); + int offset = amd64_native_gregset_reg_offset (gdbarch, i); if (offset != -1) regcache_raw_supply (regcache, i, regs + offset); @@ -135,13 +135,13 @@ amd64_collect_native_gregset (const stru for (i = 0; i <= I386_EIP_REGNUM; i++) { if (regnum == -1 || regnum == i) - memset (regs + amd64_native_gregset_reg_offset (i), 0, 8); + memset (regs + amd64_native_gregset_reg_offset (gdbarch, i), 0, 8); } /* Ditto for %cs, %ss, %ds, %es, %fs, and %gs. */ for (i = I386_CS_REGNUM; i <= I386_GS_REGNUM; i++) { if (regnum == -1 || regnum == i) - memset (regs + amd64_native_gregset_reg_offset (i), 0, 8); + memset (regs + amd64_native_gregset_reg_offset (gdbarch, i), 0, 8); } } @@ -152,7 +152,7 @@ amd64_collect_native_gregset (const stru { if (regnum == -1 || regnum == i) { - int offset = amd64_native_gregset_reg_offset (i); + int offset = amd64_native_gregset_reg_offset (gdbarch, i); if (offset != -1) regcache_raw_collect (regcache, i, regs + offset); diff -urpN src/gdb/amd64-nat.h dev/gdb/amd64-nat.h --- src/gdb/amd64-nat.h 2008-01-01 23:53:09.000000000 +0100 +++ dev/gdb/amd64-nat.h 2008-01-11 17:57:41.000000000 +0100 @@ -33,7 +33,8 @@ extern int amd64_native_gregset64_num_re /* Return whether the native general-purpose register set supplies register REGNUM. */ -extern int amd64_native_gregset_supplies_p (int regnum); +extern int amd64_native_gregset_supplies_p (struct gdbarch *gdbarch, + int regnum); /* Supply register REGNUM, whose contents are store in BUF, to REGCACHE. If REGNUM is -1, supply all appropriate registers. */ --------------090600010807050301070705--