gdb: change linux gdbarch data from post to pre-init
authorSimon Marchi <simon.marchi@efficios.com>
Fri, 4 Dec 2020 21:43:56 +0000 (16:43 -0500)
committerSimon Marchi <simon.marchi@efficios.com>
Fri, 4 Dec 2020 21:43:56 +0000 (16:43 -0500)
The following patch will need to fill a field in linux_gdbarch_data
while the gdbarch is being built.  linux_gdbarch_data is currently
allocated as a post-init gdbarch data, meaning it's not possible to fill
it before the gdbarch is completely initialized.  Change it to a
pre-init gdbarch data to allow this.

The init_linux_gdbarch_data function doesn't use the created gdbarch,
it only allocates the linux_gdbarch_data structure on the gdbarch's
obstack, so the change is trivial.

gdb/ChangeLog:

* linux-tdep.c (init_linux_gdbarch_data): Change parameter to
obkstack.
(_initialize_linux_tdep): Register pre-init gdb data instead of
post-init.

Change-Id: If35ce91b6bb5435680d43b9268d811d95661644f

gdb/ChangeLog
gdb/linux-tdep.c

index f39730fa5850b53515f0ef88b47dde12cdd2ee3c..d79b2217dea7659f63eda2eba7d05b3f2246c064 100644 (file)
@@ -1,3 +1,10 @@
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+       * linux-tdep.c (init_linux_gdbarch_data): Change parameter to
+       obkstack.
+       (_initialize_linux_tdep): Register pre-init gdb data instead of
+       post-init.
+
 2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
 
        * displaced-stepping.h (struct
index 70e74d510971b328ca43210557248a561e998616..57ea45cf6b6b5df9abe8ec980b17275d0890777d 100644 (file)
@@ -171,9 +171,9 @@ struct linux_gdbarch_data
   };
 
 static void *
-init_linux_gdbarch_data (struct gdbarch *gdbarch)
+init_linux_gdbarch_data (struct obstack *obstack)
 {
-  return GDBARCH_OBSTACK_ZALLOC (gdbarch, struct linux_gdbarch_data);
+  return obstack_zalloc<linux_gdbarch_data> (obstack);
 }
 
 static struct linux_gdbarch_data *
@@ -2676,7 +2676,7 @@ void
 _initialize_linux_tdep ()
 {
   linux_gdbarch_data_handle =
-    gdbarch_data_register_post_init (init_linux_gdbarch_data);
+    gdbarch_data_register_pre_init (init_linux_gdbarch_data);
 
   /* Observers used to invalidate the cache when needed.  */
   gdb::observers::inferior_exit.attach (invalidate_linux_cache_inf);