* dwarfread.c (read_func_scope): Avoid GDB core dumps if
authorPeter Schauer <Peter.Schauer@mytum.de>
Sat, 3 Feb 1996 11:32:34 +0000 (11:32 +0000)
committerPeter Schauer <Peter.Schauer@mytum.de>
Sat, 3 Feb 1996 11:32:34 +0000 (11:32 +0000)
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.

gdb/ChangeLog
gdb/dwarfread.c
gdb/procfs.c
gdb/top.c

index c0d3d3741527500834b804c636105677d5a7de6f..cc0d56296b3b63edce72293e196acf32b7e87e1f 100644 (file)
@@ -1,3 +1,16 @@
+Sat Feb  3 03:26:21 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)
+
+       * 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.
+
 Fri Feb  2 13:40:50 1996  Steve Chamberlain  <sac@slash.cygnus.com>
 
        * win32-nat.c (mappings): Add ppc registers.
index fa7c9a2080b451edadc4b1bda10e7da422f0b4de..3d034e1ea079c8549134b7810fdc0f0d4ba0b9b4 100644 (file)
@@ -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)
     {
index 55dc5bdb345e8bd61974ff443526b216f6a37182..edc062bfd000f7ae222b700bf8e71868f163df8e 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine independent support for SVR4 /proc (process file system) for GDB.
-   Copyright 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+   Copyright 1991, 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
    Written by Fred Fish at Cygnus Support.
 
 This file is part of GDB.
@@ -3711,7 +3711,7 @@ procfs_stopped_by_watchpoint(pid)
       what = pi->prstatus.pr_what;
       if (why == PR_FAULTED 
 #if defined (FLTWATCH) && defined (FLTKWATCH)
-         && (what == FLTWATCH) || (what == FLTKWATCH)
+         && (what == FLTWATCH || what == FLTKWATCH)
 #else
 #ifdef FLTWATCH
          && (what == FLTWATCH) 
index cf22bce58e0d892cfb1488bbf902659f7d463006..d579caf772989e864da9f40cf6e568fe188a26fb 100644 (file)
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1,5 +1,5 @@
 /* Top level stuff for GDB, the GNU debugger.
-   Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995
+   Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996
    Free Software Foundation, Inc.
 
 This file is part of GDB.
@@ -1840,6 +1840,12 @@ init_signals ()
 {
   signal (SIGINT, request_quit);
 
+  /* If SIGTRAP was set to SIG_IGN, then the SIG_IGN will get passed
+     to the inferior and breakpoints will be ignored.  */
+#ifdef SIGTRAP
+  signal (SIGTRAP, SIG_DFL);
+#endif
+
   /* If we initialize SIGQUIT to SIG_IGN, then the SIG_IGN will get
      passed to the inferior, which we don't want.  It would be
      possible to do a "signal (SIGQUIT, SIG_DFL)" after we fork, but