summaryrefslogtreecommitdiffstats
path: root/gdb/dwarfread.c
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>1996-02-03 11:32:34 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>1996-02-03 11:32:34 +0000
commit255181a9ed97f7f2d8a283bc48e5b3f9f324beb8 (patch)
treeb1be7f543a0a4d4d2718423ca80bb5b3798f87ef /gdb/dwarfread.c
parentc2b6884b9717eb48570f4e602b09f70ce9744aa4 (diff)
downloadppe42-binutils-255181a9ed97f7f2d8a283bc48e5b3f9f324beb8.tar.gz
ppe42-binutils-255181a9ed97f7f2d8a283bc48e5b3f9f324beb8.zip
* dwarfread.c (read_func_scope): Avoid GDB core dumps if
AT_name tag is missing. * procfs.c (procfs_stopped_by_watchpoint): Fix logic when FLTWATCH and FLTKWATCH are defined. * remote.c (remote_read_bytes): Advance memaddr for transfers, return number of bytes transferred for partial reads. * top.c (init_signals): Reset SIGTRAP to SIG_DFL.
Diffstat (limited to 'gdb/dwarfread.c')
-rw-r--r--gdb/dwarfread.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gdb/dwarfread.c b/gdb/dwarfread.c
index fa7c9a2080..3d034e1ea0 100644
--- a/gdb/dwarfread.c
+++ b/gdb/dwarfread.c
@@ -170,6 +170,11 @@ struct complaint not_row_major =
"DIE @ 0x%x \"%s\", array not row major; not handled correctly", 0, 0
};
+struct complaint missing_at_name =
+{
+ "DIE @ 0x%x, AT_name tag missing", 0, 0
+};
+
typedef unsigned int DIE_REF; /* Reference to a DIE */
#ifndef GCC_PRODUCER
@@ -1807,6 +1812,16 @@ read_func_scope (dip, thisdie, enddie, objfile)
{
register struct context_stack *new;
+ /* AT_name is absent if the function is described with an
+ AT_abstract_origin tag.
+ Ignore the function description for now to avoid GDB core dumps.
+ FIXME: Add code to handle AT_abstract_origin tags properly. */
+ if (dip -> at_name == NULL)
+ {
+ complain (&missing_at_name, DIE_ID);
+ return;
+ }
+
if (objfile -> ei.entry_point >= dip -> at_low_pc &&
objfile -> ei.entry_point < dip -> at_high_pc)
{
OpenPOWER on IntegriCloud