aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@cygnus.com>1998-04-27 08:49:53 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1998-04-27 08:49:53 +0000
commit22c4957e6b744aed9b442a6e0075fbb70f469b47 (patch)
tree2ed7d0789f9ba1f4d88b4964a3f3e56422310726
parent563c063f761d5f25fe0cb3821f36f9635b9832b3 (diff)
downloadgcc-22c4957e6b744aed9b442a6e0075fbb70f469b47.zip
gcc-22c4957e6b744aed9b442a6e0075fbb70f469b47.tar.gz
gcc-22c4957e6b744aed9b442a6e0075fbb70f469b47.tar.bz2
Redefine abort to report linenumber and filename of the error
From-SVN: r19423
-rw-r--r--gcc/.gdbinit5
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/system.h29
3 files changed, 40 insertions, 0 deletions
diff --git a/gcc/.gdbinit b/gcc/.gdbinit
index dea758b..fe4592b 100644
--- a/gcc/.gdbinit
+++ b/gcc/.gdbinit
@@ -90,6 +90,11 @@ end
# stdio stop working and therefore the `pr' command below as well.
b abort
+# Put breakpoints at exit and fancy_abort in case abort is mapped
+# to either fprintf/exit or fancy_abort.
+b exit
+b fancy_abort
+
# Make gdb complain about symbol reading errors. This is so that gcc
# developers can see and fix bugs in gcc debug output.
set complaints 20
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 77848d6..23e212d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
Mon Apr 27 08:55:23 1998 Michael Meissner <meissner@cygnus.com>
+ * system.h (abort): If abort is not defined, and neither is
+ USE_SYSTEM_ABORT, redefine abort to call fprintf and exit,
+ reporting the line and filename of the error.
+
+ * .gdbinit: Add breakpoints on exit and fancy_abort.
+
* final.c (split_double): Avoid a compiler warning if
BITS_PER_WORD is less than or equal to HOST_BIT_PER_WIDE_INT.
diff --git a/gcc/system.h b/gcc/system.h
index 6e8548e..e381c2d 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -188,4 +188,33 @@ extern void free ();
extern char *getenv ();
#endif
+/* Redefine abort to report an internal error w/o coredump, and reporting the
+ location of the error in the source file. */
+#ifndef abort
+#ifndef __STDC__
+#ifndef __GNUC__
+#ifndef USE_SYSTEM_ABORT
+#define USE_SYSTEM_ABORT
+#endif /* !USE_SYSTEM_ABORT */
+#endif /* !__GNUC__ */
+#endif /* !__STDC__ */
+
+#ifndef USE_SYSTEM_ABORT
+#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+#define abort() \
+(fprintf (stderr, \
+ "%s:%d: Internal compiler error\n", __FILE__, __LINE__), \
+ exit (FATAL_EXIT_CODE))
+
+#else
+#define abort() \
+(fprintf (stderr, \
+ "%s:%d: Internal compiler error in function %s\n", \
+ __FILE__, __LINE__, __PRETTY_FUNCTION__), \
+ exit (FATAL_EXIT_CODE))
+
+#endif /* recent gcc */
+#endif /* !USE_SYSTEM_ABORT */
+#endif /* !abort */
+
#endif /* __GCC_SYSTEM_H__ */