* [rfc] Get rid of current_gdbarch in amd64
@ 2008-01-11 17:13 Markus Deuling
2008-01-12 9:44 ` Joel Brobecker
2008-01-15 20:41 ` Ulrich Weigand
0 siblings, 2 replies; 5+ messages in thread
From: Markus Deuling @ 2008-01-11 17:13 UTC (permalink / raw)
To: GDB Patches, Ulrich Weigand
[-- Attachment #1: Type: text/plain, Size: 942 bytes --]
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
[-- Attachment #2: diff-amd64 --]
[-- Type: text/plain, Size: 6645 bytes --]
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. */
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [rfc] Get rid of current_gdbarch in amd64
2008-01-11 17:13 [rfc] Get rid of current_gdbarch in amd64 Markus Deuling
@ 2008-01-12 9:44 ` Joel Brobecker
2008-01-15 4:45 ` Markus Deuling
2008-01-15 20:41 ` Ulrich Weigand
1 sibling, 1 reply; 5+ messages in thread
From: Joel Brobecker @ 2008-01-12 9:44 UTC (permalink / raw)
To: Markus Deuling; +Cc: GDB Patches, Ulrich Weigand
> 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.
[...]
> 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.
Tested on x86_64-linux, no regression :).
--
Joel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [rfc] Get rid of current_gdbarch in amd64
2008-01-12 9:44 ` Joel Brobecker
@ 2008-01-15 4:45 ` Markus Deuling
0 siblings, 0 replies; 5+ messages in thread
From: Markus Deuling @ 2008-01-15 4:45 UTC (permalink / raw)
To: Joel Brobecker; +Cc: GDB Patches, Ulrich Weigand
Joel Brobecker schrieb:
>> 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.
> [...]
>> 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.
>
> Tested on x86_64-linux, no regression :).
>
Hi Joel,
thanks a lot !
Regards,
Markus
--
Markus Deuling
GNU Toolchain for Linux on Cell BE
deuling@de.ibm.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [rfc] Get rid of current_gdbarch in amd64
2008-01-11 17:13 [rfc] Get rid of current_gdbarch in amd64 Markus Deuling
2008-01-12 9:44 ` Joel Brobecker
@ 2008-01-15 20:41 ` Ulrich Weigand
2008-01-16 4:54 ` Markus Deuling
1 sibling, 1 reply; 5+ messages in thread
From: Ulrich Weigand @ 2008-01-15 20:41 UTC (permalink / raw)
To: Markus Deuling; +Cc: GDB Patches
Markus Deuling wrote:
> * 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.
This is OK as well.
Thanks,
Ulrich
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [rfc] Get rid of current_gdbarch in amd64
2008-01-15 20:41 ` Ulrich Weigand
@ 2008-01-16 4:54 ` Markus Deuling
0 siblings, 0 replies; 5+ messages in thread
From: Markus Deuling @ 2008-01-16 4:54 UTC (permalink / raw)
To: Ulrich Weigand; +Cc: GDB Patches
Ulrich Weigand schrieb:
> Markus Deuling wrote:
>
>> * 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.
>
> This is OK as well.
>
> Thanks,
> Ulrich
>
Thank you very much, committed this one.
--
Markus Deuling
GNU Toolchain for Linux on Cell BE
deuling@de.ibm.com
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-01-16 4:54 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-01-11 17:13 [rfc] Get rid of current_gdbarch in amd64 Markus Deuling
2008-01-12 9:44 ` Joel Brobecker
2008-01-15 4:45 ` Markus Deuling
2008-01-15 20:41 ` Ulrich Weigand
2008-01-16 4:54 ` Markus Deuling
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox