* [rfc]: Replace current_gdbarch in sentinel-frame.c
@ 2008-02-15 9:27 Markus Deuling
2008-02-15 17:44 ` Ulrich Weigand
2008-02-15 17:44 ` Michael Snyder
0 siblings, 2 replies; 9+ messages in thread
From: Markus Deuling @ 2008-02-15 9:27 UTC (permalink / raw)
To: GDB Patches; +Cc: Ulrich Weigand
[-- Attachment #1: Type: text/plain, Size: 327 bytes --]
Hi,
this is a trivial replacement of current_gdbarch in sentinel-frame.c. Tested on x86.
Ok to commit?
ChangeLog:
* sentinel-frame.c (sentinel_frame_prev_register): Use get_frame_arch
to get at the current architecture.
Regards,
Markus
--
Markus Deuling
GNU Toolchain for Linux on Cell BE
deuling@de.ibm.com
[-- Attachment #2: diff-sentinel --]
[-- Type: text/plain, Size: 568 bytes --]
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-15 10:07:36.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 = register_offset_hack (get_frame_arch (next_frame), regnum);
*realnum = regnum;
/* If needed, find and return the value of the register. */
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [rfc]: Replace current_gdbarch in sentinel-frame.c 2008-02-15 9:27 [rfc]: Replace current_gdbarch in sentinel-frame.c Markus Deuling @ 2008-02-15 17:44 ` Ulrich Weigand 2008-02-15 18:40 ` Thiago Jung Bauermann 2008-02-15 17:44 ` Michael Snyder 1 sibling, 1 reply; 9+ messages in thread From: Ulrich Weigand @ 2008-02-15 17:44 UTC (permalink / raw) To: Markus Deuling; +Cc: GDB Patches Markus Deuling wrote: > @@ -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 = register_offset_hack (get_frame_arch (next_frame), regnum); > *realnum = regnum; This is not OK -- as the sentinel frame is always the innermost frame, next_frame will always be NULL here. You could use the gdbarch of the sentinel frame's regcache (cache->regcache). However, I think setting the "address" for register values is no longer needed anymore, so the whole call to register_offset_hack (and the function itself) can be removed. Can you try whether simply setting *addrp = 0 works? Bye, Ulrich -- Dr. Ulrich Weigand GNU Toolchain for Linux on System z and Cell BE Ulrich.Weigand@de.ibm.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [rfc]: Replace current_gdbarch in sentinel-frame.c 2008-02-15 17:44 ` Ulrich Weigand @ 2008-02-15 18:40 ` Thiago Jung Bauermann 2008-02-15 18:59 ` Ulrich Weigand 0 siblings, 1 reply; 9+ messages in thread From: Thiago Jung Bauermann @ 2008-02-15 18:40 UTC (permalink / raw) To: Ulrich Weigand; +Cc: Markus Deuling, GDB Patches On Fri, 2008-02-15 at 18:43 +0100, Ulrich Weigand wrote: > Markus Deuling wrote: > > > @@ -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 = register_offset_hack (get_frame_arch (next_frame), regnum); > > *realnum = regnum; > > 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. -- []'s Thiago Jung Bauermann Software Engineer IBM Linux Technology Center ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [rfc]: Replace current_gdbarch in sentinel-frame.c 2008-02-15 18:40 ` Thiago Jung Bauermann @ 2008-02-15 18:59 ` Ulrich Weigand 2008-02-18 15:28 ` Markus Deuling 0 siblings, 1 reply; 9+ messages in thread From: Ulrich Weigand @ 2008-02-15 18:59 UTC (permalink / raw) To: Thiago Jung Bauermann; +Cc: Markus Deuling, GDB Patches 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 ... Bye, Ulrich -- Dr. Ulrich Weigand GNU Toolchain for Linux on System z and Cell BE Ulrich.Weigand@de.ibm.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [rfc]: Replace current_gdbarch in sentinel-frame.c 2008-02-15 18:59 ` Ulrich Weigand @ 2008-02-18 15:28 ` Markus Deuling 2008-02-18 16:05 ` Ulrich Weigand 0 siblings, 1 reply; 9+ messages in thread From: Markus Deuling @ 2008-02-18 15:28 UTC (permalink / raw) To: Ulrich Weigand; +Cc: Thiago Jung Bauermann, msnyder, GDB Patches [-- Attachment #1: Type: text/plain, Size: 887 bytes --] 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 [-- Attachment #2: diff-sentinel --] [-- Type: text/plain, Size: 2180 bytes --] 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. */ ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [rfc]: Replace current_gdbarch in sentinel-frame.c 2008-02-18 15:28 ` Markus Deuling @ 2008-02-18 16:05 ` Ulrich Weigand 2008-02-18 16:38 ` Markus Deuling 0 siblings, 1 reply; 9+ messages in thread From: Ulrich Weigand @ 2008-02-18 16:05 UTC (permalink / raw) To: Markus Deuling; +Cc: Thiago Jung Bauermann, msnyder, GDB Patches Markus Deuling wrote: > * sentinel-frame.c (sentinel_frame_prev_register): Do not call > register_offset_hack anymore. > > * regcache.{c,h} (register_offset_hack): Remove. 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] 9+ messages in thread
* Re: [rfc]: Replace current_gdbarch in sentinel-frame.c 2008-02-18 16:05 ` Ulrich Weigand @ 2008-02-18 16:38 ` Markus Deuling 0 siblings, 0 replies; 9+ messages in thread From: Markus Deuling @ 2008-02-18 16:38 UTC (permalink / raw) To: Ulrich Weigand; +Cc: Thiago Jung Bauermann, msnyder, GDB Patches Ulrich Weigand schrieb: > Markus Deuling wrote: > >> * sentinel-frame.c (sentinel_frame_prev_register): Do not call >> register_offset_hack anymore. >> >> * regcache.{c,h} (register_offset_hack): Remove. > > This is OK as well. > > Thanks, > Ulrich > Thank you. Committed as well. -- Markus Deuling GNU Toolchain for Linux on Cell BE deuling@de.ibm.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [rfc]: Replace current_gdbarch in sentinel-frame.c 2008-02-15 9:27 [rfc]: Replace current_gdbarch in sentinel-frame.c Markus Deuling 2008-02-15 17:44 ` Ulrich Weigand @ 2008-02-15 17:44 ` Michael Snyder 2008-02-15 17:51 ` Michael Snyder 1 sibling, 1 reply; 9+ messages in thread From: Michael Snyder @ 2008-02-15 17:44 UTC (permalink / raw) To: Markus Deuling; +Cc: GDB Patches, Ulrich Weigand On Fri, 2008-02-15 at 10:24 +0100, Markus Deuling wrote: > Hi, > > this is a trivial replacement of current_gdbarch in sentinel-frame.c. Tested on x86. > > Ok to commit? Looks fine to me. > > > ChangeLog: > > * sentinel-frame.c (sentinel_frame_prev_register): Use get_frame_arch > to get at the current architecture. > > Regards, > Markus > > > plain text document attachment (diff-sentinel) > 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-15 10:07:36.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 = register_offset_hack (get_frame_arch (next_frame), regnum); > *realnum = regnum; > > /* If needed, find and return the value of the register. */ ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [rfc]: Replace current_gdbarch in sentinel-frame.c 2008-02-15 17:44 ` Michael Snyder @ 2008-02-15 17:51 ` Michael Snyder 0 siblings, 0 replies; 9+ messages in thread From: Michael Snyder @ 2008-02-15 17:51 UTC (permalink / raw) To: Markus Deuling; +Cc: GDB Patches, Ulrich Weigand On Fri, 2008-02-15 at 09:44 -0800, Michael Snyder wrote: > On Fri, 2008-02-15 at 10:24 +0100, Markus Deuling wrote: > > Hi, > > > > this is a trivial replacement of current_gdbarch in sentinel-frame.c. Tested on x86. > > > > Ok to commit? > > Looks fine to me. And it seems I was premature. I defer to Ulrich. ;-) > > > > > > > ChangeLog: > > > > * sentinel-frame.c (sentinel_frame_prev_register): Use get_frame_arch > > to get at the current architecture. > > > > Regards, > > Markus > > > > > > plain text document attachment (diff-sentinel) > > 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-15 10:07:36.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 = register_offset_hack (get_frame_arch (next_frame), regnum); > > *realnum = regnum; > > > > /* If needed, find and return the value of the register. */ > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2008-02-18 16:38 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2008-02-15 9:27 [rfc]: Replace current_gdbarch in sentinel-frame.c Markus Deuling 2008-02-15 17:44 ` Ulrich Weigand 2008-02-15 18:40 ` Thiago Jung Bauermann 2008-02-15 18:59 ` Ulrich Weigand 2008-02-18 15:28 ` Markus Deuling 2008-02-18 16:05 ` Ulrich Weigand 2008-02-18 16:38 ` Markus Deuling 2008-02-15 17:44 ` Michael Snyder 2008-02-15 17:51 ` Michael Snyder
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox