[commit] Clear register cache when architecture changes

Ulrich Weigand uweigand@de.ibm.com
Fri Aug 22 13:43:00 GMT 2008


Hello,

another obvious fix as fall-out from the multi-arch work: when the current
architecture is changed, deprecated_current_gdbarch_select_hack currently
calls reinit_frame_cache.  However, this is not really enough, because the
register cache still uses the old architecture.

The following patch changes this function to use registers_changed instead.

Tested on powerpc-linux and powerpc64-linux.
Committed to mainline.

Bye,
Ulrich


ChangeLog:

	* gdbarch.sh: Include "regcache.h" into gdbarch.c.
	(deprecated_current_gdbarch_select_hack): Call registers_changed
	instead of reinit_frame_cache.
	* gdbarch.c: Regenerate.


Index: gdb/gdbarch.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.c,v
retrieving revision 1.432
diff -u -p -r1.432 gdbarch.c
--- gdb/gdbarch.c	11 Aug 2008 19:00:24 -0000	1.432
+++ gdb/gdbarch.c	22 Aug 2008 11:51:44 -0000
@@ -48,6 +48,7 @@
 #include "osabi.h"
 #include "gdb_obstack.h"
 #include "observer.h"
+#include "regcache.h"
 
 /* Static function declarations */
 
@@ -3666,7 +3667,7 @@ deprecated_current_gdbarch_select_hack (
   gdb_assert (new_gdbarch->initialized_p);
   current_gdbarch = new_gdbarch;
   observer_notify_architecture_changed (new_gdbarch);
-  reinit_frame_cache ();
+  registers_changed ();
 }
 
 extern void _initialize_gdbarch (void);
Index: gdb/gdbarch.sh
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.sh,v
retrieving revision 1.473
diff -u -p -r1.473 gdbarch.sh
--- gdb/gdbarch.sh	11 Aug 2008 19:00:25 -0000	1.473
+++ gdb/gdbarch.sh	22 Aug 2008 11:51:44 -0000
@@ -1137,6 +1137,7 @@ cat <<EOF
 #include "osabi.h"
 #include "gdb_obstack.h"
 #include "observer.h"
+#include "regcache.h"
 
 /* Static function declarations */
 
@@ -2022,7 +2023,7 @@ deprecated_current_gdbarch_select_hack (
   gdb_assert (new_gdbarch->initialized_p);
   current_gdbarch = new_gdbarch;
   observer_notify_architecture_changed (new_gdbarch);
-  reinit_frame_cache ();
+  registers_changed ();
 }
 
 extern void _initialize_gdbarch (void);
-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  Ulrich.Weigand@de.ibm.com



More information about the Gdb-patches mailing list