Force gdbarch.c to be initialized first.
authorAndrew Cagney <cagney@redhat.com>
Tue, 11 Jun 2002 01:31:36 +0000 (01:31 +0000)
committerAndrew Cagney <cagney@redhat.com>
Tue, 11 Jun 2002 01:31:36 +0000 (01:31 +0000)
gdb/ChangeLog
gdb/Makefile.in

index 8c3ca23c9951a15bce816b121eb1151e41ceac90..ad2d6e78a46effc30ac7aab7e35b7b567ba6758a 100644 (file)
@@ -1,3 +1,8 @@
+2002-06-10  Andrew Cagney  <ac131313@redhat.com>
+
+       * Makefile.in (init.c): Move the call to _initialize_gdbtypes to
+       the front of the initialize list.
+
 2002-06-10  Andrew Cagney  <ac131313@redhat.com>
 
        * infrun.c (struct inferior_status): Replace fields
index 0f8f7b41f640922b886d53e03dd323e3919588bb..1d5492a317faf98d80d0d3f23b9ba1a74c21ac2c 100644 (file)
@@ -844,7 +844,16 @@ uninstall: force $(CONFIG_UNINSTALL)
 # list includes a file twice (because of some mistake somewhere else) 
 # the _initialize_* function will be included twice in init.c. Second, 
 # init.c may force unnecessary files to be linked in.
-#
+
+# FIXME: cagney/2002-06-09: gdb/564: gdb/563: Force the order so that
+# the first call is to _initialize_gdbtypes.  This is a hack to ensure
+# that all the architecture dependant global builtin_type_* variables
+# are initialized before anything else (per-architecture code is
+# called in the same order that it is registered).  The ``correct
+# fix'' is to have all the builtin types made part of the architecture
+# and initialize them on-demand (using gdbarch_data) just like
+# everything else.  The catch is that other modules still take the
+# address of these builtin types forcing them to be variables, sigh!
 
 INIT_FILES = $(OBS) $(TSOBS) $(CONFIG_OBS) $(CONFIG_INITS)
 init.c: $(INIT_FILES)
@@ -869,7 +878,8 @@ init.c: $(INIT_FILES)
            -e 's,signals\.c,signals/signals\.c,' \
            -e 's|\([^  ][^     ]*\)|$(srcdir)/\1|g' | \
        while read f; do grep '^_initialize_[a-z_0-9A-Z]* *(' $$f 2>/dev/null; done | \
-       sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/\1/' > init.l-tmp
+       sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/\1/' | \
+       ( echo _initialize_gdbtypes ; grep -v -e '^_initialize_gdbtypes$$' ) > init.l-tmp
        @echo '/* Do not modify this file.  */' >>init.c-tmp
        @echo '/* It is created automatically by the Makefile.  */'>>init.c-tmp
        @echo '#include "defs.h"' >>init.c-tmp