* dwarf2loc.c (dwarf_expr_frame_base): Guard against NULL.
authorJerome Guitton <guitton@adacore.com>
Mon, 17 Sep 2007 14:53:05 +0000 (14:53 +0000)
committerJerome Guitton <guitton@adacore.com>
Mon, 17 Sep 2007 14:53:05 +0000 (14:53 +0000)
* Makefile.in (dwarf2loc.o): Depend on gdb_assert.h.

gdb/ChangeLog
gdb/Makefile.in
gdb/dwarf2loc.c

index c70570dcbf2f8b81989f542a7d5da8eed726513b..e481858e367ed478348929bc20d38e03a97f7ffb 100644 (file)
@@ -1,3 +1,8 @@
+2007-09-17  Jerome Guitton  <guitton@adacore.com>
+
+       * dwarf2loc.c (dwarf_expr_frame_base): Guard against NULL.
+       * Makefile.in (dwarf2loc.o): Depend on gdb_assert.h.
+
 2007-09-16  Vladimir Prus  <vladimir@codesourcery.com>
 
        * mi/mi-cmds.c (mi_cmds): Register -list-features.
index c740831dd7517307a75be9b0c1a8b6eb554b916e..65fc5b20fbf8991675cb47c34a3922cbd32d13a8 100644 (file)
@@ -1963,7 +1963,7 @@ dwarf2-frame.o: dwarf2-frame.c $(defs_h) $(dwarf2expr_h) $(elf_dwarf2_h) \
 dwarf2loc.o: dwarf2loc.c $(defs_h) $(ui_out_h) $(value_h) $(frame_h) \
        $(gdbcore_h) $(target_h) $(inferior_h) $(ax_h) $(ax_gdb_h) \
        $(regcache_h) $(objfiles_h) $(exceptions_h) $(elf_dwarf2_h) \
-       $(dwarf2expr_h) $(dwarf2loc_h) $(gdb_string_h)
+       $(dwarf2expr_h) $(dwarf2loc_h) $(gdb_string_h) $(gdb_assert_h)
 dwarf2read.o: dwarf2read.c $(defs_h) $(bfd_h) $(symtab_h) $(gdbtypes_h) \
        $(objfiles_h) $(elf_dwarf2_h) $(buildsym_h) $(demangle_h) \
        $(expression_h) $(filenames_h) $(macrotab_h) $(language_h) \
index 81b2f8701abc90642b360f18f6094072843a27bd..76d7f6edb557dd24f1e89fd33987601b9d643530 100644 (file)
@@ -37,6 +37,7 @@
 #include "dwarf2loc.h"
 
 #include "gdb_string.h"
+#include "gdb_assert.h"
 
 /* A helper function for dealing with location lists.  Given a
    symbol baton (BATON) and a pc value (PC), find the appropriate
@@ -145,6 +146,11 @@ dwarf_expr_frame_base (void *baton, gdb_byte **start, size_t * length)
 
   framefunc = get_frame_function (debaton->frame);
 
+  /* If we found a frame-relative symbol then it was certainly within
+     some function associated with a frame. If we can't find the frame,
+     something has gone wrong.  */
+  gdb_assert (framefunc != NULL);
+
   if (SYMBOL_OPS (framefunc) == &dwarf2_loclist_funcs)
     {
       struct dwarf2_loclist_baton *symbaton;