[patch:rfc] Invalidate ``current_gdbarch'' when createing a new

Andrew Cagney ac131313@cygnus.com
Wed May 1 15:05:00 GMT 2002


FYI,

> 2002-04-20  Andrew Cagney  <ac131313@redhat.com>
> 
> 	* gdbarch.sh (gdbarch_update_p): Swap out the old architecture
> 	before probing for a new one.  Detect errorenous gdbarch_init
> 	functions.
> 	* gdbarch.c: Regenerate.
> 

I've checked this in.  If there is a mysterious core dump in gdbarch.c, 
suspect this .....

Andrew



> Hello,
> 
> The attached follows up the threads:
> 
> [rfc] Swap out current when creating a new architecture
> http://sources.redhat.com/ml/gdb-patches/2001-09/msg00342.html
> http://sources.redhat.com/ml/gdb-patches/2001-10/msg00001.html
> and
> 
> [rfc] Sort architectures M.R.U.; Was: swap out current when ...
> http://sources.redhat.com/ml/gdb-patches/2002-04/msg00609.html
> 
> The original description is appended.
> 
> With the attached patch (and the two just posted fixes) applied, I was able to rebuild and start all the GDB targets.
> 
> Hopefully this can go in towards the end of the week.
> 
> enjoy,
> Andrew
> 
> 
> The attached changes the run-time environment within which a new architectures are created.  Briefly the simplified sequence:
> 
> - call XXX_gdbarch_init()
> - swap out old architecture
> - install new architecture
> 
> is changed to:
> 
> - swap out old architecture
> - call XX_gdbarch_init()
> - install new architecture
> 
> This has the effect of making current_gdbarch invalid for the lifetime of the XXX_gdbarch_init() call.
> 
> The motivation behind this change is to stop XXXX_gdbarch_init() functions refering (unintentionally I suspect) to the previous architecture.  I think it is proving effective since it has so far flushed out two bugs.
> 
> I can think of one additional tweek: add a ``gdb_assert (gdbarch != NULL)'' to each architecture method.  Without it a XXX_gdbarch_init() function that tries to use current_gdbarch will dump core :-/
> 
> thoughts?
> Andrew
> 
> 




More information about the Gdb-patches mailing list