* PATCH: relax restrictions on per-architecture data registration [not found] <20010601233233.C19845E9CB@zwingli.cygnus.com> @ 2001-06-01 20:54 ` Jim Blandy 2001-06-06 4:59 ` RFA: " Andrew Cagney 2001-06-06 6:34 ` Andrew Cagney 2 siblings, 0 replies; 7+ messages in thread From: Jim Blandy @ 2001-06-01 20:54 UTC (permalink / raw) To: gdb-patches I tested this on a multi-arch target, and it seemed to work, so I've committed it. Jim Blandy <jimb@cygnus.com> writes: > This is supposed to fix G++ V3 on non-multiarch targets. Not sure > this is right yet, just posting for the curious. > > 2001-06-01 Jim Blandy <jimb@redhat.com> > > Expand the gdbarch per-architecture data vector as needed, rather > than requiring that all per-architecture data be registered before > the first gdbarch object is allocated. > * gdbarch.sh: Changes to effect the following: > * gdbarch.c (alloc_gdbarch_data, init_gdbarch_data): Delete > declarations and definitions. > (check_gdbarch_data): New function, and declaration. > (gdbarch_alloc): Don't call alloc_gdbarch_data; leaving the fields > zero is good enough. > (free_gdbarch_data): Tolerate a null data pointer. Free only > those data items gdbarch->data actually has allocated. > (set_gdbarch_data, gdbarch_data): Call check_gdbarch_data. > (gdbarch_update_p): No need to call init_gdbarch_data. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: RFA: relax restrictions on per-architecture data registration [not found] <20010601233233.C19845E9CB@zwingli.cygnus.com> 2001-06-01 20:54 ` PATCH: relax restrictions on per-architecture data registration Jim Blandy @ 2001-06-06 4:59 ` Andrew Cagney 2001-06-06 7:39 ` Jim Blandy 2001-06-06 6:34 ` Andrew Cagney 2 siblings, 1 reply; 7+ messages in thread From: Andrew Cagney @ 2001-06-06 4:59 UTC (permalink / raw) To: Jim Blandy; +Cc: gdb-patches > This is supposed to fix G++ V3 on non-multiarch targets. Not sure > this is right yet, just posting for the curious. > > 2001-06-01 Jim Blandy <jimb@redhat.com> > > Expand the gdbarch per-architecture data vector as needed, rather > than requiring that all per-architecture data be registered before > the first gdbarch object is allocated. > * gdbarch.sh: Changes to effect the following: > * gdbarch.c (alloc_gdbarch_data, init_gdbarch_data): Delete > declarations and definitions. > (check_gdbarch_data): New function, and declaration. > (gdbarch_alloc): Don't call alloc_gdbarch_data; leaving the fields > zero is good enough. > (free_gdbarch_data): Tolerate a null data pointer. Free only > those data items gdbarch->data actually has allocated. > (set_gdbarch_data, gdbarch_data): Call check_gdbarch_data. > (gdbarch_update_p): No need to call init_gdbarch_data. > > Jim, I think this is wrong. GDB's startup sequence is currently something like: o _initialize_*() registers any per-architecture data o GDB creates the initial architecture So that data buffer size would never change. Andrew PS: xmalloc(size) == zrealloc (NULL, size) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: RFA: relax restrictions on per-architecture data registration 2001-06-06 4:59 ` RFA: " Andrew Cagney @ 2001-06-06 7:39 ` Jim Blandy 2001-06-06 9:35 ` Andrew Cagney 0 siblings, 1 reply; 7+ messages in thread From: Jim Blandy @ 2001-06-06 7:39 UTC (permalink / raw) To: Andrew Cagney; +Cc: gdb-patches Andrew Cagney <ac131313@cygnus.com> writes: > > 2001-06-01 Jim Blandy <jimb@redhat.com> > > > > Expand the gdbarch per-architecture data vector as needed, rather > > than requiring that all per-architecture data be registered before > > the first gdbarch object is allocated. > > * gdbarch.sh: Changes to effect the following: > > * gdbarch.c (alloc_gdbarch_data, init_gdbarch_data): Delete > > declarations and definitions. > > (check_gdbarch_data): New function, and declaration. > > (gdbarch_alloc): Don't call alloc_gdbarch_data; leaving the fields > > zero is good enough. > > (free_gdbarch_data): Tolerate a null data pointer. Free only > > those data items gdbarch->data actually has allocated. > > (set_gdbarch_data, gdbarch_data): Call check_gdbarch_data. > > (gdbarch_update_p): No need to call init_gdbarch_data. > > I think this is wrong. GDB's startup sequence is currently something like: > > o _initialize_*() registers any > per-architecture data > > o GDB creates the initial architecture > > So that data buffer size would never change. > > To follow up my previous post. All I think is needed is for the code in > arch-utils.c:initialize_current_architecture(): > > > if (GDB_MULTI_ARCH) > { > if (! gdbarch_update_p (info)) > { > internal_error (__FILE__, __LINE__, > "initialize_current_architecture: Selection > of initial architecture > failed"); > } > } > > to be tweeked so that, when there is no multi-arch, the data vector is > still initialized. Okay. My first patch was exactly that, but then I felt like I was assuming that all per-architecture data would be registered by the time initialization was done, which wasn't a documented requirement in gdbarch.h. So I made it more dynamic. I'll revert my patch, and post a new one shortly. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: RFA: relax restrictions on per-architecture data registration 2001-06-06 7:39 ` Jim Blandy @ 2001-06-06 9:35 ` Andrew Cagney 0 siblings, 0 replies; 7+ messages in thread From: Andrew Cagney @ 2001-06-06 9:35 UTC (permalink / raw) To: Jim Blandy; +Cc: gdb-patches > Okay. My first patch was exactly that, but then I felt like I was > assuming that all per-architecture data would be registered by the > time initialization was done, which wasn't a documented requirement in > gdbarch.h. So I made it more dynamic. Ah. My e-mail actually contained a white lie. At present it really does: o compile in a static dummy architecture and wire things to use that o call _initialize_*() o create the real architecture the first step, a hack, is to get around a chicken/egg problem with the current GDB code. gdbtypes.[hc] assumes that there is an architecture _before_ anything has been initialized (ulgh). As usual, the long term objective is to eliminate the hack :-) Tweeking the ``create the real architecture'' code to create the data vector in both the multi-arch and non-multi-arch cases will actually take this a step closer - chunks of GDB can be rewritten to just use the register_gdbarch_data() mechanism. I'll add a comment to top.c / gdbint.texinfo to explain this. Andrew ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: RFA: relax restrictions on per-architecture data registration [not found] <20010601233233.C19845E9CB@zwingli.cygnus.com> 2001-06-01 20:54 ` PATCH: relax restrictions on per-architecture data registration Jim Blandy 2001-06-06 4:59 ` RFA: " Andrew Cagney @ 2001-06-06 6:34 ` Andrew Cagney 2001-06-06 9:59 ` RFA: initialize per-arch data in startup_gdbarch Jim Blandy 2 siblings, 1 reply; 7+ messages in thread From: Andrew Cagney @ 2001-06-06 6:34 UTC (permalink / raw) To: Jim Blandy; +Cc: gdb-patches Jim, To follow up my previous post. All I think is needed is for the code in arch-utils.c:initialize_current_architecture(): if (GDB_MULTI_ARCH) { if (! gdbarch_update_p (info)) { internal_error (__FILE__, __LINE__, "initialize_current_architecture: Selection of initial architecture failed"); } } to be tweeked so that, when there is no multi-arch, the data vector is still initialized. Andrew ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: RFA: initialize per-arch data in startup_gdbarch 2001-06-06 6:34 ` Andrew Cagney @ 2001-06-06 9:59 ` Jim Blandy 2001-06-06 10:13 ` Andrew Cagney 0 siblings, 1 reply; 7+ messages in thread From: Jim Blandy @ 2001-06-06 9:59 UTC (permalink / raw) To: gdb-patches; +Cc: Andrew Cagney Here's the (much simpler) patch that works the way you want, I think. 2001-06-06 Jim Blandy <jimb@redhat.com> * gdbarch.sh: Changes to effect the following: * gdbarch.c (initialize_non_multiarch): New function. * gdbarch.h (initialize_non_multiarch): New declaration. * arch-utils.c (initialize_current_architecture): For non-multiarch configurations, call initialize_non_multiarch. Index: gdb/arch-utils.c =================================================================== RCS file: /cvs/src/src/gdb/arch-utils.c,v retrieving revision 1.27 diff -c -r1.27 arch-utils.c *** gdb/arch-utils.c 2001/05/10 18:36:26 1.27 --- gdb/arch-utils.c 2001/06/06 16:55:00 *************** *** 701,706 **** --- 701,708 ---- "initialize_current_architecture: Selection of initial architecture failed"); } } + else + initialize_non_multiarch (); /* Create the ``set architecture'' command appending ``auto'' to the list of architectures. */ Index: gdb/gdbarch.c =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.c,v retrieving revision 1.61 diff -c -r1.61 gdbarch.c *** gdb/gdbarch.c 2001/06/06 14:46:30 1.61 --- gdb/gdbarch.c 2001/06/06 16:55:03 *************** *** 387,392 **** --- 387,401 ---- struct gdbarch *current_gdbarch = &startup_gdbarch; + /* Do any initialization needed for a non-multiarch configuration + after the _initialize_MODULE functions have been run. */ + void + initialize_non_multiarch () + { + alloc_gdbarch_data (&startup_gdbarch); + init_gdbarch_data (&startup_gdbarch); + } + /* Create a new ``struct gdbarch'' based on information provided by ``struct gdbarch_info''. */ Index: gdb/gdbarch.h =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.h,v retrieving revision 1.49 diff -c -r1.49 gdbarch.h *** gdb/gdbarch.h 2001/05/14 16:43:35 1.49 --- gdb/gdbarch.h 2001/06/06 16:55:04 *************** *** 1834,1839 **** --- 1834,1843 ---- extern void initialize_current_architecture (void); + /* For non-multiarched targets, do any initialization of the default + gdbarch object necessary after the _initialize_MODULE functions + have run. */ + extern void initialize_non_multiarch (); /* gdbarch trace variable */ extern int gdbarch_debug; Index: gdb/gdbarch.sh =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.sh,v retrieving revision 1.64 diff -c -r1.64 gdbarch.sh *** gdb/gdbarch.sh 2001/06/06 14:46:30 1.64 --- gdb/gdbarch.sh 2001/06/06 16:55:05 *************** *** 1065,1070 **** --- 1065,1074 ---- extern void initialize_current_architecture (void); + /* For non-multiarched targets, do any initialization of the default + gdbarch object necessary after the _initialize_MODULE functions + have run. */ + extern void initialize_non_multiarch (); /* gdbarch trace variable */ extern int gdbarch_debug; *************** *** 1246,1251 **** --- 1250,1264 ---- }; struct gdbarch *current_gdbarch = &startup_gdbarch; + + /* Do any initialization needed for a non-multiarch configuration + after the _initialize_MODULE functions have been run. */ + void + initialize_non_multiarch () + { + alloc_gdbarch_data (&startup_gdbarch); + init_gdbarch_data (&startup_gdbarch); + } EOF # Create a new gdbarch struct ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: RFA: initialize per-arch data in startup_gdbarch 2001-06-06 9:59 ` RFA: initialize per-arch data in startup_gdbarch Jim Blandy @ 2001-06-06 10:13 ` Andrew Cagney 0 siblings, 0 replies; 7+ messages in thread From: Andrew Cagney @ 2001-06-06 10:13 UTC (permalink / raw) To: Jim Blandy; +Cc: gdb-patches > 2001-06-06 Jim Blandy <jimb@redhat.com> > > * gdbarch.sh: Changes to effect the following: > * gdbarch.c (initialize_non_multiarch): New function. > * gdbarch.h (initialize_non_multiarch): New declaration. > * arch-utils.c (initialize_current_architecture): For > non-multiarch configurations, call initialize_non_multiarch. > > Yes, thanks! Andrew ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2001-06-06 10:13 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20010601233233.C19845E9CB@zwingli.cygnus.com>
2001-06-01 20:54 ` PATCH: relax restrictions on per-architecture data registration Jim Blandy
2001-06-06 4:59 ` RFA: " Andrew Cagney
2001-06-06 7:39 ` Jim Blandy
2001-06-06 9:35 ` Andrew Cagney
2001-06-06 6:34 ` Andrew Cagney
2001-06-06 9:59 ` RFA: initialize per-arch data in startup_gdbarch Jim Blandy
2001-06-06 10:13 ` Andrew Cagney
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox