diff options
Diffstat (limited to 'gcc/system.h')
-rw-r--r-- | gcc/system.h | 29 |
1 files changed, 29 insertions, 0 deletions
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__ */ |