2003-02-19 David Carlton <carlton@math.stanford.edu>
authorDavid Carlton <carlton@bactrian.org>
Thu, 20 Feb 2003 00:01:07 +0000 (00:01 +0000)
committerDavid Carlton <carlton@bactrian.org>
Thu, 20 Feb 2003 00:01:07 +0000 (00:01 +0000)
* Makefile.in (SFILES): Add block.c.
(block_h): New.
(COMMON_OBS): Add block.o.
(block.o): New.
(x86-64-tdep.o): Add $(block_h).
(values.o, valops.o, tracepoint.o, symtab.o, symmisc.o, symfile.o)
(stack.o, printcmd.o, p-exp.tab.o, parse.o, objfiles.o)
(objc-exp.tab.o, objc-lang.o, nlmread.o, mips-tdep.o, mdebugread.o)
(m2-exp.tab.o, linespec.o, jv-lang.o, jv-exp.tab.o, infcmd.o)
(f-valprint.o, findvar.o, f-exp.tab.o, expprint.o, coffread.o)
(c-exp.tab.o, buildsym.o, breakpoint.o, blockframe.o, ax-gdb.o)
(alpha-tdep.o, ada-lang.o, ada-exp.tab.o, mi-cmd-stack.o): Ditto.
* value.h: Add opaque declaration for struct block.
* parser-defs.h, objc-lang.h, buildsym.h, breakpoint.h: Ditto.
* ada-lang.h: Ditto.
* x86-64-tdep.c: #include "block.h"
* values.c, valops.c, tracepoint.c, symtab.c, symmisc.c: Ditto.
* symfile.c, stack.c, printcmd.c, p-exp.y, parse.c: Ditto.
* objfiles.c, objc-exp.y, objc-lang.c, nlmread.c: Ditto.
* mips-tdep.c, mdebugread.c, m2-exp.y, linespec.c: Ditto.
* jv-lang.c, jv-exp.y, infcmd.c, f-valprint.c: Ditto.
* findvar.c, f-exp.y, expprint.c, coffread.c, c-exp.y: Ditto.
* buildsym.c, breakpoint.c, blockframe.c, ax-gdb.c: Ditto.
* alpha-tdep.c, ada-lang.c, ada-exp.y: Ditto.
* blockframe.c (blockvector_for_pc_sect): Move to "block.c".
(blockvector_for_pc, block_for_pc_sect, block_for_pc): Ditto.
* symtab.c (block_function): Ditto.
(contained_in): Ditto.
* frame.h: Move block_for_pc and block_for_pc_sect declarations to
block.h.  Add opaque declaration for struct block.
* symtab.h: Move block_function and contained_in declarations to
block.h.  Add opaque declarations for struct block, struct
blockvector.
(struct block): Move to block.h.
(struct blockvector): Ditto.
(BLOCK_START, BLOCK_END, BLOCK_FUNCTION, BLOCK_SUPERBLOCK)
(BLOCK_GCC_COMPILED, BLOCK_HASHTABLE, BLOCK_NSYMS, BLOCK_SYM)
(BLOCK_BUCKETS, BLOCK_BUCKET, BLOCK_HASHTABLE_SIZE)
(ALL_BLOCK_SYMBOLS, BLOCK_SHOULD_SORT, BLOCKVECTOR_NBLOCKS)
(BLOCKVECTOR_BLOCK, GLOBAL_BLOCK, STATIC_BLOCK, FIRST_LOCAL_BLOCK):
Ditto.
* block.c: New file.
* block.h: New file.

2003-02-19  David Carlton  <carlton@math.stanford.edu>

* mi-cmd-stack.c: #include "block.h"

50 files changed:
gdb/ChangeLog
gdb/Makefile.in
gdb/ada-exp.y
gdb/ada-lang.c
gdb/ada-lang.h
gdb/alpha-tdep.c
gdb/ax-gdb.c
gdb/block.c [new file with mode: 0644]
gdb/block.h [new file with mode: 0644]
gdb/blockframe.c
gdb/breakpoint.c
gdb/breakpoint.h
gdb/buildsym.c
gdb/buildsym.h
gdb/c-exp.y
gdb/coffread.c
gdb/expprint.c
gdb/f-exp.y
gdb/f-valprint.c
gdb/findvar.c
gdb/frame.h
gdb/infcmd.c
gdb/jv-exp.y
gdb/jv-lang.c
gdb/linespec.c
gdb/m2-exp.y
gdb/mdebugread.c
gdb/mi/ChangeLog
gdb/mi/mi-cmd-stack.c
gdb/mips-tdep.c
gdb/nlmread.c
gdb/objc-exp.y
gdb/objc-lang.c
gdb/objc-lang.h
gdb/objfiles.c
gdb/p-exp.y
gdb/parse.c
gdb/parser-defs.h
gdb/printcmd.c
gdb/stack.c
gdb/symfile.c
gdb/symfile.h
gdb/symmisc.c
gdb/symtab.c
gdb/symtab.h
gdb/tracepoint.c
gdb/valops.c
gdb/value.h
gdb/values.c
gdb/x86-64-tdep.c

index 7ba4ce9c4577ef2ec3ca6d7fc3718b180a8cba5e..e72718d7f03b34c456b497863dabe94528e6e83a 100644 (file)
@@ -1,3 +1,49 @@
+2003-02-19  David Carlton  <carlton@math.stanford.edu>
+
+       * Makefile.in (SFILES): Add block.c.
+       (block_h): New.
+       (COMMON_OBS): Add block.o.
+       (block.o): New.
+       (x86-64-tdep.o): Add $(block_h).
+       (values.o, valops.o, tracepoint.o, symtab.o, symmisc.o, symfile.o)
+       (stack.o, printcmd.o, p-exp.tab.o, parse.o, objfiles.o)
+       (objc-exp.tab.o, objc-lang.o, nlmread.o, mips-tdep.o, mdebugread.o)
+       (m2-exp.tab.o, linespec.o, jv-lang.o, jv-exp.tab.o, infcmd.o)
+       (f-valprint.o, findvar.o, f-exp.tab.o, expprint.o, coffread.o)
+       (c-exp.tab.o, buildsym.o, breakpoint.o, blockframe.o, ax-gdb.o)
+       (alpha-tdep.o, ada-lang.o, ada-exp.tab.o, mi-cmd-stack.o): Ditto.
+       * value.h: Add opaque declaration for struct block.
+       * parser-defs.h, objc-lang.h, buildsym.h, breakpoint.h: Ditto.
+       * ada-lang.h: Ditto.
+       * x86-64-tdep.c: #include "block.h"
+       * values.c, valops.c, tracepoint.c, symtab.c, symmisc.c: Ditto.
+       * symfile.c, stack.c, printcmd.c, p-exp.y, parse.c: Ditto.
+       * objfiles.c, objc-exp.y, objc-lang.c, nlmread.c: Ditto.
+       * mips-tdep.c, mdebugread.c, m2-exp.y, linespec.c: Ditto.
+       * jv-lang.c, jv-exp.y, infcmd.c, f-valprint.c: Ditto.
+       * findvar.c, f-exp.y, expprint.c, coffread.c, c-exp.y: Ditto.
+       * buildsym.c, breakpoint.c, blockframe.c, ax-gdb.c: Ditto.
+       * alpha-tdep.c, ada-lang.c, ada-exp.y: Ditto.
+       * blockframe.c (blockvector_for_pc_sect): Move to "block.c".
+       (blockvector_for_pc, block_for_pc_sect, block_for_pc): Ditto.
+       * symtab.c (block_function): Ditto.
+       (contained_in): Ditto.
+       * frame.h: Move block_for_pc and block_for_pc_sect declarations to
+       block.h.  Add opaque declaration for struct block.
+       * symtab.h: Move block_function and contained_in declarations to
+       block.h.  Add opaque declarations for struct block, struct
+       blockvector.
+       (struct block): Move to block.h.
+       (struct blockvector): Ditto.
+       (BLOCK_START, BLOCK_END, BLOCK_FUNCTION, BLOCK_SUPERBLOCK)
+       (BLOCK_GCC_COMPILED, BLOCK_HASHTABLE, BLOCK_NSYMS, BLOCK_SYM)
+       (BLOCK_BUCKETS, BLOCK_BUCKET, BLOCK_HASHTABLE_SIZE)
+       (ALL_BLOCK_SYMBOLS, BLOCK_SHOULD_SORT, BLOCKVECTOR_NBLOCKS)
+       (BLOCKVECTOR_BLOCK, GLOBAL_BLOCK, STATIC_BLOCK, FIRST_LOCAL_BLOCK):
+       Ditto.
+       * block.c: New file.
+       * block.h: New file.
+
 2003-02-19  Theodore A. Roth  <troth@openavr.org>
 
        * avr-tdep.c (avr_extract_return_value): Remove function.
index c4199a8b3e750f862334b2cce7c57061953f5a33..51b5e9ad02e2b7492671e14ce31eb6de4267bad9 100644 (file)
@@ -511,7 +511,7 @@ TARGET_FLAGS_TO_PASS = \
 
 SFILES = ada-exp.y ada-lang.c ada-typeprint.c ada-valprint.c ada-tasks.c \
        ax-general.c ax-gdb.c \
-       bcache.c blockframe.c breakpoint.c buildsym.c builtin-regs.c \
+       bcache.c block.c blockframe.c breakpoint.c buildsym.c builtin-regs.c \
        c-exp.y c-lang.c c-typeprint.c c-valprint.c \
        charset.c cli-out.c coffread.c complaints.c completer.c corefile.c \
        cp-abi.c cp-support.c cp-valprint.c \
@@ -606,6 +606,7 @@ arm_tdep_h = arm-tdep.h
 ax_gdb_h = ax-gdb.h
 ax_h = ax.h $(doublest_h)
 bcache_h = bcache.h
+block_h = block.h
 breakpoint_h = breakpoint.h $(frame_h) $(value_h) $(gdb_events_h)
 buildsym_h = buildsym.h
 builtin_regs_h = builtin-regs.h
@@ -824,7 +825,7 @@ TAGFILES_WITH_SRCDIR = $(HFILES_WITH_SRCDIR)
 COMMON_OBS = version.o blockframe.o breakpoint.o findvar.o regcache.o \
        charset.o disasm.o dummy-frame.o \
        source.o values.o eval.o valops.o valarith.o valprint.o printcmd.o \
-       symtab.o symfile.o symmisc.o linespec.o infcmd.o infrun.o \
+       block.o symtab.o symfile.o symmisc.o linespec.o infcmd.o infrun.o \
        expprint.o environ.o stack.o thread.o \
        interps.o \
        macrotab.o macrocmd.o macroexp.o macroscope.o \
@@ -1431,32 +1432,32 @@ z8k-tdep.o: $(srcdir)/z8k-tdep.c
 c-exp.tab.o: c-exp.tab.c $(defs_h) $(gdb_string_h) $(expression_h) \
        $(value_h) $(parser_defs_h) $(language_h) $(c_lang_h) $(bfd_h) \
        $(charset_h) \
-       $(symfile_h) $(objfiles_h)
+       $(symfile_h) $(objfiles_h) $(block_h)
 
 objc-exp.tab.o: objc-exp.tab.c $(objc_lang_h) $(defs_h) $(expression_h) \
        $(gdbtypes_h) $(language_h) $(parser_defs_h) $(symtab_h) $(value_h) \
-       $(bfd_h) $(objfiles_h) $(symfile_h)
+       $(bfd_h) $(objfiles_h) $(symfile_h) $(block_h)
 
 jv-exp.tab.o: jv-exp.tab.c jv-lang.h $(defs_h) $(expression_h) \
        $(gdbtypes_h) $(language_h) $(parser_defs_h) $(symtab_h) $(value_h) \
-       $(bfd_h) $(objfiles_h) $(symfile_h)
+       $(bfd_h) $(objfiles_h) $(symfile_h) $(block_h)
 
 f-exp.tab.o: f-exp.tab.c f-lang.h $(defs_h) $(expression_h) \
        $(language_h) $(parser_defs_h) $(value_h) $(bfd_h) $(objfiles_h) \
-       $(symfile_h)
+       $(symfile_h) $(block_h)
 
 m2-exp.tab.o: m2-exp.tab.c $(defs_h) $(expression_h) $(gdbtypes_h) \
        $(language_h) m2-lang.h $(parser_defs_h) $(symtab_h) $(value_h) \
-       $(bfd_h) $(objfiles_h) $(symfile_h)
+       $(bfd_h) $(objfiles_h) $(symfile_h) $(block_h)
 
 p-exp.tab.o: p-exp.tab.c $(defs_h) $(expression_h) $(gdbtypes_h) \
        $(language_h) p-lang.h $(parser_defs_h) $(symtab_h) $(value_h) \
-       $(bfd_h) $(objfiles_h) $(symfile_h)
+       $(bfd_h) $(objfiles_h) $(symfile_h) $(block_h)
 
 ada-exp.tab.o: ada-exp.tab.c ada-lex.c ada-lang.h \
        $(defs_h) $(expression_h) \
        $(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_h) \
-       $(bfd_h) objfiles.h symfile.h
+       $(bfd_h) objfiles.h symfile.h $(block_h)
 
 #
 # The dependencies.  In aphabetic order.
@@ -1467,7 +1468,7 @@ abug-rom.o: abug-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
 ada-lang.o: ada-lang.c $(gdb_string_h) $(demangle_h) $(defs_h) $(symtab_h) \
        $(gdbtypes_h) $(gdbcmd_h) $(expression_h) $(parser_defs_h) \
        $(language_h) $(c_lang_h) $(inferior_h) $(symfile_h) $(objfiles_h) \
-       $(breakpoint_h) $(gdbcore_h) $(ada_lang_h) $(ui_out_h)
+       $(breakpoint_h) $(gdbcore_h) $(ada_lang_h) $(ui_out_h) $(block_h)
 ada-tasks.o: ada-tasks.c $(defs_h) $(command_h) $(value_h) $(language_h) \
        $(inferior_h) $(symtab_h) $(target_h) $(gdbcore_h) $(gregset_h) \
        $(ada_lang_h)
@@ -1491,7 +1492,7 @@ alpha-tdep.o: alpha-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
        $(value_h) $(gdbcmd_h) $(gdbcore_h) $(dis_asm_h) $(symfile_h) \
        $(objfiles_h) $(gdb_string_h) $(linespec_h) $(regcache_h) \
        $(doublest_h) $(arch_utils_h) $(elf_bfd_h) $(alpha_tdep_h) \
-       $(osabi_h)
+       $(osabi_h) $(block_h)
 alphabsd-nat.o: alphabsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
        $(alpha_tdep_h) $(alphabsd_tdep_h) $(gregset_h)
 alphabsd-tdep.o: alphabsd-tdep.c $(defs_h) $(regcache_h) $(alpha_tdep_h) \
@@ -1527,24 +1528,26 @@ avr-tdep.o: avr-tdep.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) $(inferior_h) \
        $(symfile_h) $(arch_utils_h) $(regcache_h) $(gdb_string_h)
 ax-gdb.o: ax-gdb.c $(defs_h) $(symtab_h) $(symfile_h) $(gdbtypes_h) \
        $(value_h) $(expression_h) $(command_h) $(gdbcmd_h) $(frame_h) \
-       $(target_h) $(ax_h) $(ax_gdb_h) $(gdb_string_h)
+       $(target_h) $(ax_h) $(ax_gdb_h) $(gdb_string_h) $(block_h)
 ax-general.o: ax-general.c $(defs_h) $(ax_h) $(value_h) $(gdb_string_h)
 bcache.o: bcache.c $(defs_h) $(gdb_obstack_h) $(bcache_h) $(gdb_string_h)
+block.o: block.c $(defs_h) $(block_h) $(symtab_h) $(symfile_h)
 blockframe.o: blockframe.c $(defs_h) $(symtab_h) $(bfd_h) $(symfile_h) \
        $(objfiles_h) $(frame_h) $(gdbcore_h) $(value_h) $(target_h) \
        $(inferior_h) $(annotate_h) $(regcache_h) $(gdb_assert_h) \
-       $(dummy_frame_h) $(command_h) $(gdbcmd_h)
+       $(dummy_frame_h) $(command_h) $(gdbcmd_h) $(block_h)
 breakpoint.o: breakpoint.c $(defs_h) $(symtab_h) $(frame_h) $(breakpoint_h) \
        $(gdbtypes_h) $(expression_h) $(gdbcore_h) $(gdbcmd_h) $(value_h) \
        $(command_h) $(inferior_h) $(gdbthread_h) $(target_h) $(language_h) \
        $(gdb_string_h) $(demangle_h) $(annotate_h) $(symfile_h) \
        $(objfiles_h) $(linespec_h) $(completer_h) $(gdb_h) $(ui_out_h) \
-       $(cli_script_h) $(gdb_events_h) $(source_h) $(gdb_assert_h)
+       $(cli_script_h) $(gdb_events_h) $(source_h) $(gdb_assert_h) \
+       $(block_h)
 buildsym.o: buildsym.c $(defs_h) $(bfd_h) $(gdb_obstack_h) $(symtab_h) \
        $(symfile_h) $(objfiles_h) $(gdbtypes_h) $(gdb_assert_h) \
        $(complaints_h) $(gdb_string_h) $(expression_h) $(language_h) \
        $(bcache_h) $(filenames_h) $(macrotab_h) $(demangle_h) $(buildsym_h) \
-       $(stabsread_h)
+       $(stabsread_h) $(block_h)
 builtin-regs.o: builtin-regs.c $(defs_h) $(builtin_regs_h) $(gdbtypes_h) \
        $(gdb_string_h) $(gdb_assert_h)
 c-lang.o: c-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
@@ -1567,7 +1570,7 @@ coffread.o: coffread.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(demangle_h) \
        $(breakpoint_h) $(bfd_h) $(gdb_obstack_h) $(gdb_string_h) \
        $(coff_internal_h) $(libcoff_h) $(symfile_h) $(objfiles_h) \
        $(buildsym_h) $(gdb_stabs_h) $(stabsread_h) $(complaints_h) \
-       $(target_h) $(gdb_assert_h)
+       $(target_h) $(gdb_assert_h) $(block_h)
 complaints.o: complaints.c $(defs_h) $(complaints_h) $(gdb_assert_h) \
        $(command_h) $(gdbcmd_h)
 completer.o: completer.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
@@ -1654,7 +1657,8 @@ exec.o: exec.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) $(gdbcmd_h) \
        $(gdb_string_h) $(gdbcore_h) $(gdb_stat_h) $(xcoffsolib_h) \
        $(readline_h)
 expprint.o: expprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
-       $(value_h) $(language_h) $(parser_defs_h) $(target_h) $(gdb_string_h)
+       $(value_h) $(language_h) $(parser_defs_h) $(target_h) $(gdb_string_h) \
+       $(block_h)
 f-lang.o: f-lang.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
        $(expression_h) $(parser_defs_h) $(language_h) $(f_lang_h) \
        $(valprint_h)
@@ -1663,13 +1667,13 @@ f-typeprint.o: f-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
        $(f_lang_h) $(gdb_string_h)
 f-valprint.o: f-valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) \
        $(gdbtypes_h) $(expression_h) $(value_h) $(valprint_h) $(language_h) \
-       $(f_lang_h) $(frame_h) $(gdbcore_h) $(command_h)
+       $(f_lang_h) $(frame_h) $(gdbcore_h) $(command_h) $(block_h)
 fbsd-proc.o: fbsd-proc.c $(defs_h) $(gdbcore_h) $(inferior_h) \
        $(gdb_string_h) $(elf_bfd_h) $(gregset_h)
 findvar.o: findvar.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(frame_h) \
        $(value_h) $(gdbcore_h) $(inferior_h) $(target_h) $(gdb_string_h) \
        $(gdb_assert_h) $(floatformat_h) $(symfile_h) $(regcache_h) \
-       $(builtin_regs_h)
+       $(builtin_regs_h) $(block_h)
 fork-child.o: fork-child.c $(defs_h) $(gdb_string_h) $(frame_h) \
        $(inferior_h) $(target_h) $(gdb_wait_h) $(gdb_vfork_h) $(gdbcore_h) \
        $(terminal_h) $(gdbthread_h) $(command_h)
@@ -1791,7 +1795,7 @@ infcmd.o: infcmd.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
        $(frame_h) $(inferior_h) $(environ_h) $(value_h) $(gdbcmd_h) \
        $(symfile_h) $(gdbcore_h) $(target_h) $(language_h) $(symfile_h) \
        $(objfiles_h) $(completer_h) $(ui_out_h) $(event_top_h) \
-       $(parser_defs_h) $(regcache_h)
+       $(parser_defs_h) $(regcache_h) $(block_h)
 inflow.o: inflow.c $(defs_h) $(frame_h) $(inferior_h) $(command_h) \
        $(serial_h) $(terminal_h) $(target_h) $(gdbthread_h) $(gdb_string_h) \
        $(inflow_h)
@@ -1816,7 +1820,7 @@ irix5-nat.o: irix5-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(target_h) \
 jv-lang.o: jv-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
        $(parser_defs_h) $(language_h) $(gdbtypes_h) $(symtab_h) \
        $(symfile_h) $(objfiles_h) $(gdb_string_h) $(value_h) $(c_lang_h) \
-       $(jv_lang_h) $(gdbcore_h)
+       $(jv_lang_h) $(gdbcore_h) $(block_h)
 jv-typeprint.o: jv-typeprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) \
        $(value_h) $(demangle_h) $(jv_lang_h) $(gdb_string_h) $(typeprint_h) \
        $(c_lang_h) $(cp_abi_h)
@@ -1833,7 +1837,7 @@ lin-lwp.o: lin-lwp.c $(defs_h) $(gdb_assert_h) $(gdb_string_h) $(gdb_wait_h) \
        $(gdbthread_h) $(inferior_h) $(target_h) $(regcache_h) $(gdbcmd_h)
 linespec.o: linespec.c $(defs_h) $(symtab_h) $(frame_h) $(command_h) \
        $(symfile_h) $(objfiles_h) $(demangle_h) $(value_h) $(completer_h) \
-       $(cp_abi_h) $(source_h) $(parser_defs_h)
+       $(cp_abi_h) $(source_h) $(parser_defs_h) $(block_h)
 linux-proc.o: linux-proc.c $(defs_h) $(inferior_h) $(regcache_h) \
        $(gregset_h) $(gdbcore_h) $(gdbthread_h) $(elf_bfd_h) \
        $(cli_decode_h) $(gdb_string_h)
@@ -1896,6 +1900,7 @@ mcore-tdep.o: mcore-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(value_h) \
 mdebugread.o: mdebugread.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(gdbcore_h) \
        $(symfile_h) $(objfiles_h) $(gdb_obstack_h) $(buildsym_h) \
        $(stabsread_h) $(complaints_h) $(demangle_h) $(gdb_assert_h) \
+       $(block_h) \
        $(coff_sym_h) $(coff_symconst_h) $(gdb_stat_h) $(gdb_string_h) \
        $(bfd_h) $(coff_ecoff_h) $(libaout_h) $(aout_aout64_h) \
        $(aout_stab_gnu_h) $(expression_h) $(language_h)
@@ -1914,7 +1919,7 @@ mips-nat.o: mips-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(regcache_h)
 mips-tdep.o: mips-tdep.c $(defs_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
        $(symtab_h) $(value_h) $(gdbcmd_h) $(language_h) $(gdbcore_h) \
        $(symfile_h) $(objfiles_h) $(gdbtypes_h) $(target_h) $(arch_utils_h) \
-       $(regcache_h) $(osabi_h) $(mips_tdep_h) $(opcode_mips_h) \
+       $(regcache_h) $(osabi_h) $(mips_tdep_h) $(block_h) $(opcode_mips_h) \
        $(elf_mips_h) $(elf_bfd_h) $(symcat_h)
 mipsm3-nat.o: mipsm3-nat.c $(defs_h) $(inferior_h) $(regcache_h)
 mipsnbsd-nat.o: mipsnbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
@@ -1939,7 +1944,7 @@ monitor.o: monitor.c $(defs_h) $(gdbcore_h) $(target_h) $(gdb_string_h) \
        $(gdb_regex_h) $(srec_h) $(regcache_h)
 nbsd-tdep.o: nbsd-tdep.c $(defs_h) $(gdb_string_h) $(solib_svr4_h)
 nlmread.o: nlmread.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
-       $(objfiles_h) $(buildsym_h) $(stabsread_h)
+       $(objfiles_h) $(buildsym_h) $(stabsread_h) $(block_h)
 ns32k-tdep.o: ns32k-tdep.c $(defs_h) $(frame_h) $(gdbtypes_h) $(gdbcore_h) \
        $(inferior_h) $(regcache_h) $(target_h) $(arch_utils_h) \
        $(ns32k_tdep_h) $(gdb_string_h) $(osabi_h)
@@ -1951,10 +1956,11 @@ objc-lang.o: objc-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
        $(parser_defs_h) $(language_h) $(c_lang_h) $(objc_lang_h) \
        $(complaints_h) $(value_h) $(symfile_h) $(objfiles_h) \
        $(gdb_string_h) $(target_h) $(gdbcore_h) $(gdbcmd_h) $(frame_h) \
-       $(gdb_regex_h) $(regcache_h)
+       $(gdb_regex_h) $(regcache_h) $(block_h)
 objfiles.o: objfiles.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
        $(objfiles_h) $(gdb_stabs_h) $(target_h) $(bcache_h) $(gdb_stat_h) \
-       $(gdb_obstack_h) $(gdb_string_h) $(breakpoint_h) $(mmalloc_h)
+       $(gdb_obstack_h) $(gdb_string_h) $(breakpoint_h) $(mmalloc_h) \
+       $(block_h)
 ocd.o: ocd.c $(defs_h) $(gdbcore_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
        $(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) $(objfiles_h) \
        $(gdb_stabs_h) $(serial_h) $(ocd_h) $(regcache_h)
@@ -1979,7 +1985,7 @@ pa64solib.o: pa64solib.c $(defs_h) $(frame_h) $(bfd_h) $(libhppa_h) \
 parse.o: parse.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
        $(frame_h) $(expression_h) $(value_h) $(command_h) $(language_h) \
        $(parser_defs_h) $(gdbcmd_h) $(symfile_h) $(inferior_h) \
-       $(doublest_h) $(builtin_regs_h) $(gdb_assert_h)
+       $(doublest_h) $(builtin_regs_h) $(gdb_assert_h) $(block_h)
 ppc-bdm.o: ppc-bdm.c $(defs_h) $(gdbcore_h) $(gdb_string_h) $(frame_h) \
        $(inferior_h) $(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) \
        $(objfiles_h) $(gdb_stabs_h) $(serial_h) $(ocd_h) $(ppc_tdep_h) \
@@ -2004,7 +2010,7 @@ printcmd.o: printcmd.c $(defs_h) $(gdb_string_h) $(frame_h) $(symtab_h) \
        $(gdbtypes_h) $(value_h) $(language_h) $(expression_h) $(gdbcore_h) \
        $(gdbcmd_h) $(target_h) $(breakpoint_h) $(demangle_h) $(valprint_h) \
        $(annotate_h) $(symfile_h) $(objfiles_h) $(completer_h) $(ui_out_h) \
-       $(gdb_assert_h)
+       $(gdb_assert_h) $(block_h)
 proc-api.o: proc-api.c $(defs_h) $(gdbcmd_h) $(completer_h) $(gdb_wait_h) \
        $(proc_utils_h)
 proc-events.o: proc-events.c $(defs_h)
@@ -2191,7 +2197,7 @@ stabsread.o: stabsread.c $(defs_h) $(gdb_string_h) $(bfd_h) $(gdb_obstack_h) \
 stack.o: stack.c $(defs_h) $(gdb_string_h) $(value_h) $(symtab_h) \
        $(gdbtypes_h) $(expression_h) $(language_h) $(frame_h) $(gdbcmd_h) \
        $(gdbcore_h) $(target_h) $(breakpoint_h) $(demangle_h) $(inferior_h) \
-       $(annotate_h) $(ui_out_h) $(source_h)
+       $(annotate_h) $(ui_out_h) $(source_h) $(block_h)
 standalone.o: standalone.c $(gdb_stat_h) $(defs_h) $(symtab_h) $(frame_h) \
        $(inferior_h) $(gdb_wait_h)
 std-regs.o: std-regs.c $(defs_h) $(builtin_regs_h) $(frame_h) $(gdbtypes_h) \
@@ -2203,7 +2209,7 @@ symfile.o: symfile.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(gdbcore_h) \
        $(gdbcmd_h) $(breakpoint_h) $(language_h) $(complaints_h) \
        $(demangle_h) $(inferior_h) $(gdb_stabs_h) $(gdb_obstack_h) \
        $(completer_h) $(bcache_h) $(gdb_string_h) $(gdb_stat_h) $(source_h) \
-       $(gdb_assert_h) $(readline_h) $(filenames_h)
+       $(gdb_assert_h) $(readline_h) $(filenames_h) $(block_h)
 symm-nat.o: symm-nat.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
        $(target_h) $(regcache_h) $(gdb_wait_h) $(gdb_stat_h) $(gdbcore_h) \
        $(gdbcore_h)
@@ -2212,13 +2218,13 @@ symm-tdep.o: symm-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
 symmisc.o: symmisc.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(bfd_h) \
        $(symfile_h) $(objfiles_h) $(breakpoint_h) $(command_h) \
        $(gdb_obstack_h) $(language_h) $(bcache_h) $(gdb_string_h) \
-       $(readline_h)
+       $(readline_h) $(block_h)
 symtab.o: symtab.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(gdbcore_h) \
        $(frame_h) $(target_h) $(value_h) $(symfile_h) $(objfiles_h) \
        $(gdbcmd_h) $(call_cmds_h) $(gdb_regex_h) $(expression_h) \
        $(language_h) $(demangle_h) $(inferior_h) $(linespec_h) \
        $(filenames_h) $(gdb_obstack_h) $(gdb_string_h) $(gdb_stat_h) \
-       $(cp_abi_h) $(source_h)
+       $(cp_abi_h) $(source_h) $(block_h)
 target.o: target.c $(defs_h) $(gdb_string_h) $(target_h) $(gdbcmd_h) \
        $(symtab_h) $(inferior_h) $(bfd_h) $(symfile_h) $(objfiles_h) \
        $(gdb_wait_h) $(dcache_h) $(regcache_h)
@@ -2238,8 +2244,8 @@ top.o: top.c $(defs_h) $(gdbcmd_h) $(call_cmds_h) $(cli_cmds_h) \
 tracepoint.o: tracepoint.c $(defs_h) $(symtab_h) $(frame_h) $(gdbtypes_h) \
        $(expression_h) $(gdbcmd_h) $(value_h) $(target_h) $(language_h) \
        $(gdb_string_h) $(inferior_h) $(tracepoint_h) $(remote_h) \
-       $(linespec_h) $(regcache_h) $(completer_h) $(gdb_events_h) $(ax_h) \
-       $(ax_gdb_h) $(readline_h)
+       $(linespec_h) $(regcache_h) $(completer_h) $(gdb_events_h) \
+       $(block_h) $(ax_h) $(ax_gdb_h) $(readline_h)
 typeprint.o: typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
        $(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(command_h) \
        $(gdbcmd_h) $(target_h) $(language_h) $(cp_abi_h) $(gdb_string_h)
@@ -2264,14 +2270,14 @@ valarith.o: valarith.c $(defs_h) $(value_h) $(symtab_h) $(gdbtypes_h) \
 valops.o: valops.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(value_h) $(frame_h) \
        $(inferior_h) $(gdbcore_h) $(target_h) $(demangle_h) $(language_h) \
        $(gdbcmd_h) $(regcache_h) $(cp_abi_h) $(gdb_string_h) \
-       $(gdb_assert_h)
+       $(gdb_assert_h) $(block_h)
 valprint.o: valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
        $(value_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) $(language_h) \
        $(annotate_h) $(valprint_h) $(floatformat_h) $(doublest_h)
 values.o: values.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
        $(value_h) $(gdbcore_h) $(command_h) $(gdbcmd_h) $(target_h) \
        $(language_h) $(scm_lang_h) $(demangle_h) $(doublest_h) \
-       $(gdb_assert_h) $(regcache_h)
+       $(gdb_assert_h) $(regcache_h) $(block_h)
 varobj.o: varobj.c $(defs_h) $(value_h) $(expression_h) $(frame_h) \
        $(language_h) $(wrapper_h) $(gdbcmd_h) $(gdb_string_h) $(varobj_h)
 vax-tdep.o: vax-tdep.c $(defs_h) $(symtab_h) $(opcode_vax_h) $(gdbcore_h) \
@@ -2296,7 +2302,7 @@ x86-64-linux-tdep.o: x86-64-linux-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \
        $(osabi_h)
 x86-64-tdep.o: x86-64-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \
        $(gdbcmd_h) $(arch_utils_h) $(regcache_h) $(symfile_h) $(objfiles_h) \
-       $(x86_64_tdep_h) $(dwarf2cfi_h) $(gdb_assert_h)
+       $(x86_64_tdep_h) $(dwarf2cfi_h) $(gdb_assert_h) $(block_h)
 xcoffread.o: xcoffread.c $(defs_h) $(bfd_h) $(gdb_string_h) $(gdb_stat_h) \
        $(coff_internal_h) $(libcoff_h) $(coff_xcoff_h) $(libxcoff_h) \
        $(coff_rs6000_h) $(symtab_h) $(gdbtypes_h) $(symfile_h) \
@@ -2512,7 +2518,7 @@ mi-cmd-env.o: $(srcdir)/mi/mi-cmd-env.c $(defs_h) $(inferior_h) $(value_h) \
        $(environ_h) $(command_h) $(ui_out_h) $(top_h) $(gdb_string_h)
        $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-env.c
 mi-cmd-stack.o: $(srcdir)/mi/mi-cmd-stack.c $(defs_h) $(target_h) $(frame_h) \
-       $(value_h) $(mi_cmds_h) $(ui_out_h) $(symtab_h)
+       $(value_h) $(mi_cmds_h) $(ui_out_h) $(symtab_h) $(block_h)
        $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-stack.c
 mi-cmd-var.o: $(srcdir)/mi/mi-cmd-var.c $(defs_h) $(mi_cmds_h) $(ui_out_h) \
        $(mi_out_h) $(varobj_h) $(value_h) $(gdb_string_h)
index 70a4b584f1c5c7ee4e2aa6e7a32797c2fa7310d5..6651dfd46612435cb55d67d1fd66582e4a57da25 100644 (file)
@@ -49,6 +49,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "symfile.h" /* Required by objfiles.h.  */
 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
 #include "frame.h"
+#include "block.h"
 
 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
    as well as gratuitiously global symbol names, so we can have multiple
index 5d5aaf8ab560d60a184e950b876750b5afff7d5a..eb4ccbec9b14097f6a2869ce1409f3efefdc6ad8 100644 (file)
@@ -37,6 +37,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "gdbcore.h"
 #include "ada-lang.h"
 #include "ui-out.h"
+#include "block.h"
 
 struct cleanup *unresolved_names;
 
index d2b426c8ceb5299439bae24bd205e91bdbd298f8..45c156a1210d9cc998db0f3bc4f7a0d93c10b70b 100644 (file)
@@ -23,6 +23,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "value.h"
 #include "gdbtypes.h"
 
+struct block;
+
 /* A macro to reorder the bytes of an address depending on the endiannes
    of the target */
 #define EXTRACT_ADDRESS(x) ((void *) extract_address (&(x), sizeof (x)))
index cf5abc84372445c7f80387f23bbfa468a4129651..208c7f2fb69fa771c2fd305f1c00d333d7db33c6 100644 (file)
@@ -35,6 +35,7 @@
 #include "doublest.h"
 #include "arch-utils.h"
 #include "osabi.h"
+#include "block.h"
 
 #include "elf-bfd.h"
 
index e38e67560f5838471e9f4575010604c5ffc2cd74..319cf99a6472940f2cc80caa7cc81938e481a980 100644 (file)
@@ -33,6 +33,7 @@
 #include "ax.h"
 #include "ax-gdb.h"
 #include "gdb_string.h"
+#include "block.h"
 
 /* To make sense of this file, you should read doc/agentexpr.texi.
    Then look at the types and enums in ax-gdb.h.  For the code itself,
diff --git a/gdb/block.c b/gdb/block.c
new file mode 100644 (file)
index 0000000..8aa08fb
--- /dev/null
@@ -0,0 +1,141 @@
+/* Block-related functions for the GNU debugger, GDB.
+
+   Copyright 2003 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include "defs.h"
+#include "block.h"
+#include "symtab.h"
+#include "symfile.h"
+
+/* Return Nonzero if block a is lexically nested within block b,
+   or if a and b have the same pc range.
+   Return zero otherwise. */
+
+int
+contained_in (struct block *a, struct block *b)
+{
+  if (!a || !b)
+    return 0;
+  return BLOCK_START (a) >= BLOCK_START (b)
+    && BLOCK_END (a) <= BLOCK_END (b);
+}
+
+
+/* Return the symbol for the function which contains a specified
+   lexical block, described by a struct block BL.  */
+
+struct symbol *
+block_function (struct block *bl)
+{
+  while (BLOCK_FUNCTION (bl) == 0 && BLOCK_SUPERBLOCK (bl) != 0)
+    bl = BLOCK_SUPERBLOCK (bl);
+
+  return BLOCK_FUNCTION (bl);
+}
+
+/* Return the blockvector immediately containing the innermost lexical block
+   containing the specified pc value and section, or 0 if there is none.
+   PINDEX is a pointer to the index value of the block.  If PINDEX
+   is NULL, we don't pass this information back to the caller.  */
+
+struct blockvector *
+blockvector_for_pc_sect (register CORE_ADDR pc, struct sec *section,
+                        int *pindex, struct symtab *symtab)
+{
+  register struct block *b;
+  register int bot, top, half;
+  struct blockvector *bl;
+
+  if (symtab == 0)             /* if no symtab specified by caller */
+    {
+      /* First search all symtabs for one whose file contains our pc */
+      if ((symtab = find_pc_sect_symtab (pc, section)) == 0)
+       return 0;
+    }
+
+  bl = BLOCKVECTOR (symtab);
+  b = BLOCKVECTOR_BLOCK (bl, 0);
+
+  /* Then search that symtab for the smallest block that wins.  */
+  /* Use binary search to find the last block that starts before PC.  */
+
+  bot = 0;
+  top = BLOCKVECTOR_NBLOCKS (bl);
+
+  while (top - bot > 1)
+    {
+      half = (top - bot + 1) >> 1;
+      b = BLOCKVECTOR_BLOCK (bl, bot + half);
+      if (BLOCK_START (b) <= pc)
+       bot += half;
+      else
+       top = bot + half;
+    }
+
+  /* Now search backward for a block that ends after PC.  */
+
+  while (bot >= 0)
+    {
+      b = BLOCKVECTOR_BLOCK (bl, bot);
+      if (BLOCK_END (b) > pc)
+       {
+         if (pindex)
+           *pindex = bot;
+         return bl;
+       }
+      bot--;
+    }
+  return 0;
+}
+
+/* Return the blockvector immediately containing the innermost lexical block
+   containing the specified pc value, or 0 if there is none.
+   Backward compatibility, no section.  */
+
+struct blockvector *
+blockvector_for_pc (register CORE_ADDR pc, int *pindex)
+{
+  return blockvector_for_pc_sect (pc, find_pc_mapped_section (pc),
+                                 pindex, NULL);
+}
+
+/* Return the innermost lexical block containing the specified pc value
+   in the specified section, or 0 if there is none.  */
+
+struct block *
+block_for_pc_sect (register CORE_ADDR pc, struct sec *section)
+{
+  register struct blockvector *bl;
+  int index;
+
+  bl = blockvector_for_pc_sect (pc, section, &index, NULL);
+  if (bl)
+    return BLOCKVECTOR_BLOCK (bl, index);
+  return 0;
+}
+
+/* Return the innermost lexical block containing the specified pc value,
+   or 0 if there is none.  Backward compatibility, no section.  */
+
+struct block *
+block_for_pc (register CORE_ADDR pc)
+{
+  return block_for_pc_sect (pc, find_pc_mapped_section (pc));
+}
diff --git a/gdb/block.h b/gdb/block.h
new file mode 100644 (file)
index 0000000..d7dbf31
--- /dev/null
@@ -0,0 +1,183 @@
+/* Code dealing with blocks for GDB.
+
+   Copyright 2003 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef BLOCK_H
+#define BLOCK_H
+
+/* Opaque declarations.  */
+
+struct symbol;
+struct symtab;
+
+/* All of the name-scope contours of the program
+   are represented by `struct block' objects.
+   All of these objects are pointed to by the blockvector.
+
+   Each block represents one name scope.
+   Each lexical context has its own block.
+
+   The blockvector begins with some special blocks.
+   The GLOBAL_BLOCK contains all the symbols defined in this compilation
+   whose scope is the entire program linked together.
+   The STATIC_BLOCK contains all the symbols whose scope is the
+   entire compilation excluding other separate compilations.
+   Blocks starting with the FIRST_LOCAL_BLOCK are not special.
+
+   Each block records a range of core addresses for the code that
+   is in the scope of the block.  The STATIC_BLOCK and GLOBAL_BLOCK
+   give, for the range of code, the entire range of code produced
+   by the compilation that the symbol segment belongs to.
+
+   The blocks appear in the blockvector
+   in order of increasing starting-address,
+   and, within that, in order of decreasing ending-address.
+
+   This implies that within the body of one function
+   the blocks appear in the order of a depth-first tree walk.  */
+
+struct block
+{
+
+  /* Addresses in the executable code that are in this block.  */
+
+  CORE_ADDR startaddr;
+  CORE_ADDR endaddr;
+
+  /* The symbol that names this block, if the block is the body of a
+     function; otherwise, zero.  */
+
+  struct symbol *function;
+
+  /* The `struct block' for the containing block, or 0 if none.
+
+     The superblock of a top-level local block (i.e. a function in the
+     case of C) is the STATIC_BLOCK.  The superblock of the
+     STATIC_BLOCK is the GLOBAL_BLOCK.  */
+
+  struct block *superblock;
+
+  /* Version of GCC used to compile the function corresponding
+     to this block, or 0 if not compiled with GCC.  When possible,
+     GCC should be compatible with the native compiler, or if that
+     is not feasible, the differences should be fixed during symbol
+     reading.  As of 16 Apr 93, this flag is never used to distinguish
+     between gcc2 and the native compiler.
+
+     If there is no function corresponding to this block, this meaning
+     of this flag is undefined.  */
+
+  unsigned char gcc_compile_flag;
+
+  /* The symbols for this block are either in a simple linear list or
+     in a simple hashtable.  Blocks which correspond to a function
+     (which have a list of symbols corresponding to arguments) use
+     a linear list, as do some older symbol readers (currently only
+     mdebugread and dstread).  Other blocks are hashed.
+
+     The hashtable uses the same hash function as the minsym hashtables,
+     found in minsyms.c:minsym_hash_iw.  Symbols are hashed based on
+     their demangled name if appropriate, and on their name otherwise.
+     The hash function ignores space, and stops at the beginning of the
+     argument list if any.
+
+     The table is laid out in NSYMS/5 buckets and symbols are chained via
+     their hash_next field.  */
+
+  /* If this is really a hashtable of the symbols, this flag is 1.  */
+
+  unsigned char hashtable;
+
+  /* Number of local symbols.  */
+
+  int nsyms;
+
+  /* The symbols.  If some of them are arguments, then they must be
+     in the order in which we would like to print them.  */
+
+  struct symbol *sym[1];
+};
+
+#define BLOCK_START(bl)                (bl)->startaddr
+#define BLOCK_END(bl)          (bl)->endaddr
+#define BLOCK_FUNCTION(bl)     (bl)->function
+#define BLOCK_SUPERBLOCK(bl)   (bl)->superblock
+#define BLOCK_GCC_COMPILED(bl) (bl)->gcc_compile_flag
+#define BLOCK_HASHTABLE(bl)    (bl)->hashtable
+
+/* For blocks without a hashtable (BLOCK_HASHTABLE (bl) == 0) only.  */
+#define BLOCK_NSYMS(bl)                (bl)->nsyms
+#define BLOCK_SYM(bl, n)       (bl)->sym[n]
+
+/* For blocks with a hashtable, but these are valid for non-hashed blocks as
+   well - each symbol will appear to be one bucket by itself.  */
+#define BLOCK_BUCKETS(bl)      (bl)->nsyms
+#define BLOCK_BUCKET(bl, n)    (bl)->sym[n]
+
+/* Macro used to set the size of a hashtable for N symbols.  */
+#define BLOCK_HASHTABLE_SIZE(n)        ((n)/5 + 1)
+
+/* Macro to loop through all symbols in a block BL, in no particular order.
+   i counts which bucket we are in, and sym points to the current symbol.  */
+
+#define ALL_BLOCK_SYMBOLS(bl, i, sym)                          \
+       for ((i) = 0; (i) < BLOCK_BUCKETS ((bl)); (i)++)        \
+         for ((sym) = BLOCK_BUCKET ((bl), (i)); (sym);         \
+              (sym) = (sym)->hash_next)
+
+/* Nonzero if symbols of block BL should be sorted alphabetically.
+   Don't sort a block which corresponds to a function.  If we did the
+   sorting would have to preserve the order of the symbols for the
+   arguments.  Also don't sort any block that we chose to hash.  */
+
+#define BLOCK_SHOULD_SORT(bl) (! BLOCK_HASHTABLE (bl) \
+                              && BLOCK_FUNCTION (bl) == NULL)
+
+struct blockvector
+{
+  /* Number of blocks in the list.  */
+  int nblocks;
+  /* The blocks themselves.  */
+  struct block *block[1];
+};
+
+#define BLOCKVECTOR_NBLOCKS(blocklist) (blocklist)->nblocks
+#define BLOCKVECTOR_BLOCK(blocklist,n) (blocklist)->block[n]
+
+/* Special block numbers */
+
+#define GLOBAL_BLOCK           0
+#define        STATIC_BLOCK            1
+#define        FIRST_LOCAL_BLOCK       2
+
+extern struct symbol *block_function (struct block *);
+
+extern int contained_in (struct block *, struct block *);
+
+extern struct blockvector *blockvector_for_pc (CORE_ADDR, int *);
+
+extern struct blockvector *blockvector_for_pc_sect (CORE_ADDR, asection *,
+                                                   int *, struct symtab *);
+
+extern struct block *block_for_pc (CORE_ADDR);
+
+extern struct block *block_for_pc_sect (CORE_ADDR, asection *);
+
+#endif /* BLOCK_H */
index d5ed002593234fe305924190e0ab48877fbbd639..1f1659f89a606b4b9584a1358fdebf58f2e77b1e 100644 (file)
@@ -38,6 +38,7 @@
 #include "dummy-frame.h"
 #include "command.h"
 #include "gdbcmd.h"
+#include "block.h"
 
 /* Prototypes for exported functions. */
 
@@ -257,96 +258,6 @@ get_frame_function (struct frame_info *frame)
 }
 \f
 
-/* Return the blockvector immediately containing the innermost lexical block
-   containing the specified pc value and section, or 0 if there is none.
-   PINDEX is a pointer to the index value of the block.  If PINDEX
-   is NULL, we don't pass this information back to the caller.  */
-
-struct blockvector *
-blockvector_for_pc_sect (register CORE_ADDR pc, struct sec *section,
-                        int *pindex, struct symtab *symtab)
-{
-  register struct block *b;
-  register int bot, top, half;
-  struct blockvector *bl;
-
-  if (symtab == 0)             /* if no symtab specified by caller */
-    {
-      /* First search all symtabs for one whose file contains our pc */
-      if ((symtab = find_pc_sect_symtab (pc, section)) == 0)
-       return 0;
-    }
-
-  bl = BLOCKVECTOR (symtab);
-  b = BLOCKVECTOR_BLOCK (bl, 0);
-
-  /* Then search that symtab for the smallest block that wins.  */
-  /* Use binary search to find the last block that starts before PC.  */
-
-  bot = 0;
-  top = BLOCKVECTOR_NBLOCKS (bl);
-
-  while (top - bot > 1)
-    {
-      half = (top - bot + 1) >> 1;
-      b = BLOCKVECTOR_BLOCK (bl, bot + half);
-      if (BLOCK_START (b) <= pc)
-       bot += half;
-      else
-       top = bot + half;
-    }
-
-  /* Now search backward for a block that ends after PC.  */
-
-  while (bot >= 0)
-    {
-      b = BLOCKVECTOR_BLOCK (bl, bot);
-      if (BLOCK_END (b) > pc)
-       {
-         if (pindex)
-           *pindex = bot;
-         return bl;
-       }
-      bot--;
-    }
-  return 0;
-}
-
-/* Return the blockvector immediately containing the innermost lexical block
-   containing the specified pc value, or 0 if there is none.
-   Backward compatibility, no section.  */
-
-struct blockvector *
-blockvector_for_pc (register CORE_ADDR pc, int *pindex)
-{
-  return blockvector_for_pc_sect (pc, find_pc_mapped_section (pc),
-                                 pindex, NULL);
-}
-
-/* Return the innermost lexical block containing the specified pc value
-   in the specified section, or 0 if there is none.  */
-
-struct block *
-block_for_pc_sect (register CORE_ADDR pc, struct sec *section)
-{
-  register struct blockvector *bl;
-  int index;
-
-  bl = blockvector_for_pc_sect (pc, section, &index, NULL);
-  if (bl)
-    return BLOCKVECTOR_BLOCK (bl, index);
-  return 0;
-}
-
-/* Return the innermost lexical block containing the specified pc value,
-   or 0 if there is none.  Backward compatibility, no section.  */
-
-struct block *
-block_for_pc (register CORE_ADDR pc)
-{
-  return block_for_pc_sect (pc, find_pc_mapped_section (pc));
-}
-
 /* Return the function containing pc value PC in section SECTION.
    Returns 0 if function is not known.  */
 
index 5327d7a9d42ecd266bfdad463f4f54e92845f188..6a6eba307ab458c034aca94eb116828027dcb97b 100644 (file)
@@ -48,6 +48,7 @@
 #include "ui-out.h"
 #include "cli/cli-script.h"
 #include "gdb_assert.h"
+#include "block.h"
 
 #include "gdb-events.h"
 
index d5d6171a0a6224f94c3e5d0849875485810fffc1..e8c8750eef4841df7935b2ba82c56088ff0ad8aa 100644 (file)
@@ -28,6 +28,7 @@
 #include "gdb-events.h"
 
 struct value;
+struct block;
 
 /* This is the maximum number of bytes a breakpoint instruction can take.
    Feel free to increase it.  It's just used in a few places to size
index 5e9ac84b4e32eb91428335e85633596b58415f2a..3fbc8d1af1a33ccd4a8092c012555192685737ed 100644 (file)
@@ -43,6 +43,7 @@
 #include "filenames.h"         /* For DOSish file names */
 #include "macrotab.h"
 #include "demangle.h"          /* Needed by SYMBOL_INIT_DEMANGLED_NAME.  */
+#include "block.h"
 /* Ask buildsym.h to define the vars it normally declares `extern'.  */
 #define        EXTERN
 /**/
index b2a249c5574dc585de2a0f7543d41ac3776324d7..6987742b031b75deca408e4e65289641a191cd16 100644 (file)
@@ -34,6 +34,8 @@
    normally extern, but which get defined in a single module using
    this technique.  */
 
+struct block;
+
 #ifndef EXTERN
 #define        EXTERN extern
 #endif
index d47588ec59ed67d2b9389ef497af19ec1f967f33..cd4e8d0ae8df41a0cbc09ee8edc5b2b0d794e18d 100644 (file)
@@ -50,6 +50,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "symfile.h" /* Required by objfiles.h.  */
 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
 #include "charset.h"
+#include "block.h"
 
 /* Flag indicating we're dealing with HP-compiled objects */ 
 extern int hp_som_som_object_present;
index adbca1c16ca81cf1e51cac54037378265010a599..c2f140ba7b49102701d97c3c828bd13175b179cd 100644 (file)
@@ -44,6 +44,7 @@
 #include "complaints.h"
 #include "target.h"
 #include "gdb_assert.h"
+#include "block.h"
 
 extern void _initialize_coffread (void);
 
index 69d45594068810b5ae95d3cd9ec442a47edec0a5..b64c3c5f4bf9897593c9f5ba5981ff267b2a30e1 100644 (file)
@@ -30,6 +30,7 @@
 #include "frame.h"             /* For frame_map_regnum_to_name.  */
 #include "target.h"
 #include "gdb_string.h"
+#include "block.h"
 
 #ifdef HAVE_CTYPE_H
 #include <ctype.h>
index 69662310e1de9f4084860ea259e965f13fd650c7..a9504c18418a799244408421e5bec8a3c9ab3cdb 100644 (file)
@@ -53,6 +53,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "bfd.h" /* Required by objfiles.h.  */
 #include "symfile.h" /* Required by objfiles.h.  */
 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
+#include "block.h"
 #include <ctype.h>
 
 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
index 6b4b36dae90242f4d9bd205d648f5777f0db3a56..7f178a4b604e60b8501c5f051324c20214d1634d 100644 (file)
@@ -33,6 +33,7 @@
 #include "frame.h"
 #include "gdbcore.h"
 #include "command.h"
+#include "block.h"
 
 #if 0
 static int there_is_a_visible_common_named (char *);
index 4e8a42dc2188399987cce20e13f9fd07962b49f2..577b8afa083e092beff26e7c2b3ac8ba32a8a645 100644 (file)
@@ -35,6 +35,7 @@
 #include "symfile.h"           /* for overlay functions */
 #include "regcache.h"
 #include "builtin-regs.h"
+#include "block.h"
 
 /* Basic byte-swapping routines.  GDB has needed these for a long time...
    All extract a target-format integer at ADDR which is LEN bytes long.  */
index 816917324309cff93358f9ee9a35bf2e04a433cb..abaf9234e543f35633fcca13f2e567150908c3c2 100644 (file)
@@ -25,6 +25,7 @@
 
 struct symtab_and_line;
 struct frame_unwind;
+struct block;
 
 /* The traditional frame unwinder.  */
 extern const struct frame_unwind *trad_frame_unwind;
@@ -506,10 +507,6 @@ extern CORE_ADDR frame_address_in_block (struct frame_info *);
 
 extern CORE_ADDR get_pc_function_start (CORE_ADDR);
 
-extern struct block *block_for_pc (CORE_ADDR);
-
-extern struct block *block_for_pc_sect (CORE_ADDR, asection *);
-
 extern int frameless_look_for_prologue (struct frame_info *);
 
 extern void print_frame_args (struct symbol *, struct frame_info *,
index 7a96900a24e65227fd28e7f383b13dd7da1e7d28..0f88d637d45938fab866da0ceff190f06e6142db 100644 (file)
@@ -42,6 +42,7 @@
 #include "parser-defs.h"
 #include "regcache.h"
 #include "reggroups.h"
+#include "block.h"
 #include <ctype.h>
 
 /* Functions exported for general use, in inferior.h: */
index b4ae3401ea4ca0b4a4aea1ec22ea0a0fa6ee73f6..565881d914258fb4fde9d36091c637d7f97fb24c 100644 (file)
@@ -48,6 +48,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "bfd.h" /* Required by objfiles.h.  */
 #include "symfile.h" /* Required by objfiles.h.  */
 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
+#include "block.h"
 
 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
    as well as gratuitiously global symbol names, so we can have multiple
index b283f36cbc869f58a8487df47bef80c3b0126a36..be82fe9a24b0409d62d3215d8f55a27b772730dd 100644 (file)
@@ -33,6 +33,7 @@
 #include "c-lang.h"
 #include "jv-lang.h"
 #include "gdbcore.h"
+#include "block.h"
 #include <ctype.h>
 
 struct type *java_int_type;
index 4c0e3c12753136cda182a1b398128288f214d87d..a4d4ab1bab41fd353de39f9f761999a20fecb644 100644 (file)
@@ -32,6 +32,7 @@
 #include "completer.h"
 #include "cp-abi.h"
 #include "parser-defs.h"
+#include "block.h"
 
 /* We share this one with symtab.c, but it is not exported widely. */
 
index 3fb46851c84b424ae88951f9834ca9a9be207fa0..cf0846c667d1ea3e9e3f2d5707494c11a7c708f3 100644 (file)
@@ -50,6 +50,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "bfd.h" /* Required by objfiles.h.  */
 #include "symfile.h" /* Required by objfiles.h.  */
 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
+#include "block.h"
 
 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
    as well as gratuitiously global symbol names, so we can have multiple
index ad87f464563d006699f1ad6bb583b55b94574c99..ac49ca0fafd1c1b822649d1103d3e76345780944 100644 (file)
@@ -53,6 +53,7 @@
 #include "complaints.h"
 #include "demangle.h"
 #include "gdb_assert.h"
+#include "block.h"
 
 /* These are needed if the tm.h file does not contain the necessary
    mips specific definitions.  */
index fdc6b4d14187a903e6c7d71df4cbad1bacc6e4d8..948748907abbe44e8ee139c4a4eabbc0daa71ff5 100644 (file)
@@ -1,3 +1,7 @@
+2003-02-19  David Carlton  <carlton@math.stanford.edu>
+
+       * mi-cmd-stack.c: #include "block.h"
+
 2003-02-09  Andrew Cagney  <ac131313@redhat.com>
 
        * mi-interp.c (mi_remove_notify_hooks): Convert function
index 34fb308218990a2a82cea4106f1e0826d9ac7e73..7f32ef1e80c43df679994e9fac4a20fe45b669f0 100644 (file)
@@ -26,6 +26,7 @@
 #include "mi-cmds.h"
 #include "ui-out.h"
 #include "symtab.h"
+#include "block.h"
 
 /* FIXME: these should go in some .h file but stack.c doesn't have a
    corresponding .h file. These wrappers will be obsolete anyway, once
index 5898e579f1cb8c9fb9a3da8dd5dbc9956a585f37..3c7c2ca43e07248b2f85d990b6e1928557b29e79 100644 (file)
@@ -40,6 +40,7 @@
 #include "regcache.h"
 #include "osabi.h"
 #include "mips-tdep.h"
+#include "block.h"
 
 #include "opcode/mips.h"
 #include "elf/mips.h"
index eaa9ddeb2f337ad08bd66de67975ec9f2538c19e..089c0f7dfb5acad817416dc71b90c5c14d322855 100644 (file)
@@ -27,6 +27,7 @@
 #include "objfiles.h"
 #include "buildsym.h"
 #include "stabsread.h"
+#include "block.h"
 
 extern void _initialize_nlmread (void);
 
index 1a7c5f002a8c80b11006793e13c2ee98b28dae10..8e52fc0f12420d606b03ebe8187e84a88e781203 100644 (file)
@@ -52,6 +52,7 @@
 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols.  */
 #include "top.h"
 #include "completer.h" /* For skip_quoted().  */
+#include "block.h"
 
 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror,
    etc), as well as gratuitiously global symbol names, so we can have
index 00a57dddae04eca8b5149836bddcc2813105cbcf..e447b912574a0a794f365d298e7d16e54bab2adf 100644 (file)
@@ -41,6 +41,7 @@
 #include "frame.h"
 #include "gdb_regex.h"
 #include "regcache.h"
+#include "block.h"
 
 #include <ctype.h>
 
index 58f1884c6026842724955d0725c4195560b438ed..4156dd7d9543e407d01ee8acd5839ab57e81e964 100644 (file)
@@ -20,6 +20,7 @@
    Boston, MA 02111-1307, USA.  */
 
 struct value;
+struct block;
 
 extern int objc_parse (void);          /* Defined in c-exp.y */
 
index dd4ef62b268402a2d291fcbf81e4db61e7a1e424..8f141b315bec21604351ce97ad7bcb09b0399d31 100644 (file)
@@ -42,6 +42,7 @@
 #include "hashtab.h"
 
 #include "breakpoint.h"
+#include "block.h"
 
 /* Prototypes for local functions */
 
index b4d4739d69c9b280fe31d16dc1a5c957a3a981eb..896a06b539fda86126bd79340d1d43f8dda46a48 100644 (file)
@@ -56,6 +56,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "bfd.h" /* Required by objfiles.h.  */
 #include "symfile.h" /* Required by objfiles.h.  */
 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
+#include "block.h"
 
 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
    as well as gratuitiously global symbol names, so we can have multiple
index 45a95975fe152f61c9718ee0c09544651855e7e8..d4a6a0519376740ca624f3ef7d9a9b02e0d377d0 100644 (file)
@@ -48,6 +48,7 @@
                                   with "gdbarch.h" when appropriate.  */
 #include "doublest.h"
 #include "gdb_assert.h"
+#include "block.h"
 
 \f
 /* Symbols which architectures can redefine.  */
index e6753848bc97c61c6851e2e530bfe31596b6da1d..f03f53700961c96aaa79f919c0a4ff5ae24574b3 100644 (file)
@@ -28,6 +28,8 @@
 
 #include "doublest.h"
 
+struct block;
+
 extern struct expression *expout;
 extern int expout_size;
 extern int expout_ptr;
index e2406c7b104ce0fae6b8cac7a9537741f999a462..99a822dbac02327ab44f4470ba7fb0d187d5f3f6 100644 (file)
@@ -41,6 +41,7 @@
 #include "completer.h"         /* for completion functions */
 #include "ui-out.h"
 #include "gdb_assert.h"
+#include "block.h"
 
 extern int asm_demangle;       /* Whether to demangle syms in asm printouts */
 extern int addressprint;       /* Whether to print hex addresses in HLL " */
index 6b242b2ab8acb1169bcc2421f4a93810c5baae59..d689f9c3486b335183bfa0be050a2704ece9013c 100644 (file)
@@ -39,6 +39,7 @@
 #include "inferior.h"
 #include "annotate.h"
 #include "ui-out.h"
+#include "block.h"
 
 /* Prototypes for exported functions. */
 
index 23ca1d24bb5a6d5b91da477adeb777fb9f0a77de..62f96798b6e87b636940c36197af1ee6f045466c 100644 (file)
@@ -47,6 +47,7 @@
 #include "hashtab.h"
 #include <readline/readline.h>
 #include "gdb_assert.h"
+#include "block.h"
 
 #include <sys/types.h>
 #include <fcntl.h>
index 267146375c65b774b71c8b579157522fe1fcabd8..17bcb4cddaefe5bf4a1d3c34f7d39a2b16298f25 100644 (file)
@@ -28,6 +28,7 @@
 /* Opaque declarations.  */
 
 struct obstack;
+struct block;
 
 /* Partial symbols are stored in the psymbol_cache and pointers to them
    are kept in a dynamically grown array that is obtained from malloc and
index 3011335230ad3983fb8039f0213e22b0055f4350..f6a86741c2348c07b0506514fdb1b5e03922b6db 100644 (file)
@@ -32,6 +32,7 @@
 #include "gdb_obstack.h"
 #include "language.h"
 #include "bcache.h"
+#include "block.h"
 
 #include "gdb_string.h"
 #include <readline/readline.h>
index 606a53875925bc94aaf01ca469be5cf080bb7508..e77cd21c6cf225e1467412368ec647eb0a356856 100644 (file)
@@ -44,6 +44,7 @@
 #include "hashtab.h"
 
 #include "gdb_obstack.h"
+#include "block.h"
 
 #include <sys/types.h>
 #include <fcntl.h>
@@ -1786,18 +1787,6 @@ find_active_alias (struct symbol *sym, CORE_ADDR addr)
 }
 \f
 
-/* Return the symbol for the function which contains a specified
-   lexical block, described by a struct block BL.  */
-
-struct symbol *
-block_function (struct block *bl)
-{
-  while (BLOCK_FUNCTION (bl) == 0 && BLOCK_SUPERBLOCK (bl) != 0)
-    bl = BLOCK_SUPERBLOCK (bl);
-
-  return BLOCK_FUNCTION (bl);
-}
-
 /* Find the symtab associated with PC and SECTION.  Look through the
    psymtabs and read in another symtab if necessary. */
 
@@ -3283,19 +3272,6 @@ rbreak_command (char *regexp, int from_tty)
 }
 \f
 
-/* Return Nonzero if block a is lexically nested within block b,
-   or if a and b have the same pc range.
-   Return zero otherwise. */
-int
-contained_in (struct block *a, struct block *b)
-{
-  if (!a || !b)
-    return 0;
-  return BLOCK_START (a) >= BLOCK_START (b)
-    && BLOCK_END (a) <= BLOCK_END (b);
-}
-\f
-
 /* Helper routine for make_symbol_completion_list.  */
 
 static int return_val_size;
index 42a144b30b73fe9c04dd2389ca32e569d487325f..2b5a17ba8bcaa9ef46c09ff2ceed2cd62a5a61c6 100644 (file)
 #define SYMTAB_H 1
 
 /* Opaque declarations.  */
+
 struct obstack;
 struct objfile;
+struct block;
+struct blockvector;
 
 /* Don't do this; it means that if some .o's are compiled with GNU C
    and some are not (easy to do accidentally the way we configure
@@ -287,148 +290,7 @@ struct minimal_symbol
 
 #define MSYMBOL_INFO(msymbol)          (msymbol)->info
 #define MSYMBOL_TYPE(msymbol)          (msymbol)->type
-\f
-
-
-/* All of the name-scope contours of the program
-   are represented by `struct block' objects.
-   All of these objects are pointed to by the blockvector.
-
-   Each block represents one name scope.
-   Each lexical context has its own block.
-
-   The blockvector begins with some special blocks.
-   The GLOBAL_BLOCK contains all the symbols defined in this compilation
-   whose scope is the entire program linked together.
-   The STATIC_BLOCK contains all the symbols whose scope is the
-   entire compilation excluding other separate compilations.
-   Blocks starting with the FIRST_LOCAL_BLOCK are not special.
-
-   Each block records a range of core addresses for the code that
-   is in the scope of the block.  The STATIC_BLOCK and GLOBAL_BLOCK
-   give, for the range of code, the entire range of code produced
-   by the compilation that the symbol segment belongs to.
-
-   The blocks appear in the blockvector
-   in order of increasing starting-address,
-   and, within that, in order of decreasing ending-address.
-
-   This implies that within the body of one function
-   the blocks appear in the order of a depth-first tree walk.  */
-
-struct blockvector
-{
-  /* Number of blocks in the list.  */
-  int nblocks;
-  /* The blocks themselves.  */
-  struct block *block[1];
-};
-
-#define BLOCKVECTOR_NBLOCKS(blocklist) (blocklist)->nblocks
-#define BLOCKVECTOR_BLOCK(blocklist,n) (blocklist)->block[n]
-
-/* Special block numbers */
-
-#define GLOBAL_BLOCK           0
-#define        STATIC_BLOCK            1
-#define        FIRST_LOCAL_BLOCK       2
-
-struct block
-{
-
-  /* Addresses in the executable code that are in this block.  */
-
-  CORE_ADDR startaddr;
-  CORE_ADDR endaddr;
-
-  /* The symbol that names this block, if the block is the body of a
-     function; otherwise, zero.  */
-
-  struct symbol *function;
-
-  /* The `struct block' for the containing block, or 0 if none.
-
-     The superblock of a top-level local block (i.e. a function in the
-     case of C) is the STATIC_BLOCK.  The superblock of the
-     STATIC_BLOCK is the GLOBAL_BLOCK.  */
-
-  struct block *superblock;
-
-  /* Version of GCC used to compile the function corresponding
-     to this block, or 0 if not compiled with GCC.  When possible,
-     GCC should be compatible with the native compiler, or if that
-     is not feasible, the differences should be fixed during symbol
-     reading.  As of 16 Apr 93, this flag is never used to distinguish
-     between gcc2 and the native compiler.
 
-     If there is no function corresponding to this block, this meaning
-     of this flag is undefined.  */
-
-  unsigned char gcc_compile_flag;
-
-  /* The symbols for this block are either in a simple linear list or
-     in a simple hashtable.  Blocks which correspond to a function
-     (which have a list of symbols corresponding to arguments) use
-     a linear list, as do some older symbol readers (currently only
-     mdebugread and dstread).  Other blocks are hashed.
-
-     The hashtable uses the same hash function as the minsym hashtables,
-     found in minsyms.c:minsym_hash_iw.  Symbols are hashed based on
-     their demangled name if appropriate, and on their name otherwise.
-     The hash function ignores space, and stops at the beginning of the
-     argument list if any.
-
-     The table is laid out in NSYMS/5 buckets and symbols are chained via
-     their hash_next field.  */
-
-  /* If this is really a hashtable of the symbols, this flag is 1.  */
-
-  unsigned char hashtable;
-
-  /* Number of local symbols.  */
-
-  int nsyms;
-
-  /* The symbols.  If some of them are arguments, then they must be
-     in the order in which we would like to print them.  */
-
-  struct symbol *sym[1];
-};
-
-#define BLOCK_START(bl)                (bl)->startaddr
-#define BLOCK_END(bl)          (bl)->endaddr
-#define BLOCK_FUNCTION(bl)     (bl)->function
-#define BLOCK_SUPERBLOCK(bl)   (bl)->superblock
-#define BLOCK_GCC_COMPILED(bl) (bl)->gcc_compile_flag
-#define BLOCK_HASHTABLE(bl)    (bl)->hashtable
-
-/* For blocks without a hashtable (BLOCK_HASHTABLE (bl) == 0) only.  */
-#define BLOCK_NSYMS(bl)                (bl)->nsyms
-#define BLOCK_SYM(bl, n)       (bl)->sym[n]
-
-/* For blocks with a hashtable, but these are valid for non-hashed blocks as
-   well - each symbol will appear to be one bucket by itself.  */
-#define BLOCK_BUCKETS(bl)      (bl)->nsyms
-#define BLOCK_BUCKET(bl, n)    (bl)->sym[n]
-
-/* Macro used to set the size of a hashtable for N symbols.  */
-#define BLOCK_HASHTABLE_SIZE(n)        ((n)/5 + 1)
-
-/* Macro to loop through all symbols in a block BL, in no particular order.
-   i counts which bucket we are in, and sym points to the current symbol.  */
-
-#define ALL_BLOCK_SYMBOLS(bl, i, sym)                          \
-       for ((i) = 0; (i) < BLOCK_BUCKETS ((bl)); (i)++)        \
-         for ((sym) = BLOCK_BUCKET ((bl), (i)); (sym);         \
-              (sym) = (sym)->hash_next)
-
-/* Nonzero if symbols of block BL should be sorted alphabetically.
-   Don't sort a block which corresponds to a function.  If we did the
-   sorting would have to preserve the order of the symbols for the
-   arguments.  Also don't sort any block that we chose to hash.  */
-
-#define BLOCK_SHOULD_SORT(bl) (! BLOCK_HASHTABLE (bl) \
-                              && BLOCK_FUNCTION (bl) == NULL)
 \f
 
 /* Represent one symbol name; a variable, constant, function or typedef.  */
@@ -1054,10 +916,6 @@ extern struct type *lookup_union (char *, struct block *);
 
 extern struct type *lookup_enum (char *, struct block *);
 
-/* lookup the function corresponding to the block */
-
-extern struct symbol *block_function (struct block *);
-
 /* from blockframe.c: */
 
 /* lookup the function symbol corresponding to the address */
@@ -1112,8 +970,6 @@ extern struct partial_symbol *find_pc_sect_psymbol (struct partial_symtab *,
 
 extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
 
-extern int contained_in (struct block *, struct block *);
-
 extern void reread_symbols (void);
 
 extern struct type *lookup_transparent_type (const char *);
@@ -1317,13 +1173,6 @@ extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
 extern struct symtab_and_line find_function_start_sal (struct symbol *sym,
                                                       int);
 
-/* blockframe.c */
-
-extern struct blockvector *blockvector_for_pc (CORE_ADDR, int *);
-
-extern struct blockvector *blockvector_for_pc_sect (CORE_ADDR, asection *,
-                                                   int *, struct symtab *);
-
 /* symfile.c */
 
 extern void clear_symtab_users (void);
index cd1c752c25d7796f3121391abff62ea081d2361e..58ca98fbb3035f383037571a613a0251e185b9cc 100644 (file)
@@ -37,6 +37,7 @@
 #include "regcache.h"
 #include "completer.h"
 #include "gdb-events.h"
+#include "block.h"
 
 #include "ax.h"
 #include "ax-gdb.h"
index 2304274c2bb31abdd7e97c9cc74cc680d2abb2e2..f904f8cc2341515f50cd7fa4ca385d89a5295578 100644 (file)
@@ -33,6 +33,7 @@
 #include "gdbcmd.h"
 #include "regcache.h"
 #include "cp-abi.h"
+#include "block.h"
 
 #include <errno.h>
 #include "gdb_string.h"
index 8f222fcdfec1fc20d43db0523270e9e355f6c80c..04be76ad7fb099e75cac42ef912dd430ca573299 100644 (file)
@@ -24,6 +24,7 @@
 #define VALUE_H 1
 
 struct regcache;
+struct block;
 
 #include "doublest.h"
 
index 2dfaee9aad687377581ca2ac7bf8e7e51704f7fe..8b1d013a0e1cf292edc89d2fccb5a4af32914884 100644 (file)
@@ -36,6 +36,7 @@
 #include "doublest.h"
 #include "gdb_assert.h"
 #include "regcache.h"
+#include "block.h"
 
 /* Prototypes for exported functions. */
 
index af8fbd537e05454775358d4ec275fc229488d961..fb67d75a23f15c7734dacda10e08649112670424 100644 (file)
@@ -31,6 +31,7 @@
 #include "x86-64-tdep.h"
 #include "dwarf2cfi.h"
 #include "gdb_assert.h"
+#include "block.h"
 
 /* Register numbers of various important registers.  */
 #define RAX_REGNUM 0