This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFA] dwarf2loc, guard against null
Daniel Jacobowitz (drow@false.org):
> Yes, that's probably it. If you stay connected to the target after
> mourning, you may want to look at the new target_mark_exited. I
> haven't had time to contribute the target extended-remote bits that
> go along with that yet but soon, soon...
OK, thanks for your help.
> Assertion, please. 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.
OK, makes sense. I will commit the patch in attachment.
2007-09-17 Jerome Guitton <guitton@adacore.com>
* dwarf2loc.c (dwarf_expr_frame_base): Guard against NULL.
Part of G917-008.
* Makefile.in (dwarf2loc.o): Depend on gdb_assert.h.
Index: gdb/Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.936
diff -u -p -r1.936 Makefile.in
--- gdb/Makefile.in 5 Sep 2007 00:14:02 -0000 1.936
+++ gdb/Makefile.in 17 Sep 2007 13:41:35 -0000
@@ -1963,7 +1963,7 @@ dwarf2-frame.o: dwarf2-frame.c $(defs_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: gdb/dwarf2loc.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2loc.c,v
retrieving revision 1.45
diff -u -p -r1.45 dwarf2loc.c
--- gdb/dwarf2loc.c 23 Aug 2007 18:08:28 -0000 1.45
+++ gdb/dwarf2loc.c 17 Sep 2007 13:41:36 -0000
@@ -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_
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;