This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [rfc]: Replace current_gdbarch in sentinel-frame.c
- From: Markus Deuling <deuling at de dot ibm dot com>
- To: Ulrich Weigand <uweigand at de dot ibm dot com>
- Cc: Thiago Jung Bauermann <bauerman at br dot ibm dot com>, msnyder at specifix dot com, GDB Patches <gdb-patches at sourceware dot org>
- Date: Mon, 18 Feb 2008 16:25:57 +0100
- Subject: Re: [rfc]: Replace current_gdbarch in sentinel-frame.c
- References: <200802151858.m1FIwvFg007698@d12av02.megacenter.de.ibm.com>
Ulrich Weigand schrieb:
Thiago Jung Bauermann wrote:
On Fri, 2008-02-15 at 18:43 +0100, Ulrich Weigand wrote:
This is not OK -- as the sentinel frame is always the innermost
frame, next_frame will always be NULL here.
Actually, what I observe here when running GDB is that next_frame is the
sentinel frame, probably because sentinel frame's next field points back
to itself.
Ah, right, I forgot about that. Still, it seems best to try to get
rid of this hack completely ...
I tested *addrp = 0 on x86 and saw no regression. I changed the patch to remove
register_offset_hack completely.
Ok ?
ChangeLog:
* sentinel-frame.c (sentinel_frame_prev_register): Do not call
register_offset_hack anymore.
* regcache.{c,h} (register_offset_hack): Remove.
Regards,
Markus
--
Markus Deuling
GNU Toolchain for Linux on Cell BE
deuling@de.ibm.com
diff -urpN src/gdb/regcache.c dev/gdb/regcache.c
--- src/gdb/regcache.c 2008-01-01 23:53:12.000000000 +0100
+++ dev/gdb/regcache.c 2008-02-18 16:19:40.000000000 +0100
@@ -761,18 +761,6 @@ regcache_cooked_write_part (struct regca
regcache_cooked_read, regcache_cooked_write);
}
-/* Hack to keep code that view the register buffer as raw bytes
- working. */
-
-int
-register_offset_hack (struct gdbarch *gdbarch, int regnum)
-{
- struct regcache_descr *descr = regcache_descr (gdbarch);
- gdb_assert (regnum >= 0 && regnum < descr->nr_cooked_registers);
- return descr->register_offset[regnum];
-}
-
-
/* Supply register REGNUM, whose contents are stored in BUF, to REGCACHE. */
void
diff -urpN src/gdb/regcache.h dev/gdb/regcache.h
--- src/gdb/regcache.h 2008-01-01 23:53:12.000000000 +0100
+++ dev/gdb/regcache.h 2008-02-18 16:21:04.000000000 +0100
@@ -104,18 +104,6 @@ extern void regcache_raw_collect (const
int regnum, void *buf);
-/* The register's ``offset''.
-
- FIXME: cagney/2002-11-07: The frame_register() function, when
- specifying the real location of a register, does so using that
- registers offset in the register cache. That offset is then used
- by valops.c to determine the location of the register. The code
- should instead use the register's number and a location expression
- to describe a value spread across multiple registers or memory. */
-
-extern int register_offset_hack (struct gdbarch *gdbarch, int regnum);
-
-
/* The type of a register. This function is slightly more efficient
then its gdbarch vector counterpart since it returns a precomputed
value stored in a table. */
diff -urpN src/gdb/sentinel-frame.c dev/gdb/sentinel-frame.c
--- src/gdb/sentinel-frame.c 2008-01-01 23:53:12.000000000 +0100
+++ dev/gdb/sentinel-frame.c 2008-02-18 16:21:39.000000000 +0100
@@ -54,7 +54,7 @@ sentinel_frame_prev_register (struct fra
onto the corresponding hardware register. */
*optimized = 0;
*lvalp = lval_register;
- *addrp = register_offset_hack (current_gdbarch, regnum);
+ *addrp = 0;
*realnum = regnum;
/* If needed, find and return the value of the register. */