This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
This patch removes abort(3) from libgloss for the ARM target, using instead the stdlib definition provided by newlib. It maintains the previous semantics of abort(3) on RDI by throwing a ADP_Stopped_RunTimeError error if SIGABRT is passed to kill(2).
Cheers, Shaun
* newlib/configure.host (newlib_cflags): Remove -DABORT_PROVIDED. * libgloss/arm/syscalls.c (kill) [ARM_RDI_MONITOR]: Use the signal argument to choose a suitable ADP exception. * libgloss/arm/libcfunc.c (abort): Remove this function.
Index: newlib/configure.host =================================================================== RCS file: /cvs/src/src/newlib/configure.host,v retrieving revision 1.79 diff -u -r1.79 configure.host --- newlib/configure.host 21 Mar 2006 20:02:13 -0000 1.79 +++ newlib/configure.host 24 May 2006 19:08:41 -0000 @@ -511,7 +513,7 @@ ;; arm-*-*) syscall_dir=syscalls - newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY" + newlib_cflags="${newlib_cflags} -DHAVE_GETTIMEOFDAY" # If newlib is supplying syscalls, select which debug protocol is being used. # ARM_RDP_MONITOR selects the Demon monitor. # ARM_RDI_MONITOR selects the Angel monitor. Index: libgloss/arm/syscalls.c =================================================================== RCS file: /cvs/src/src/libgloss/arm/syscalls.c,v retrieving revision 1.9 diff -u -r1.9 syscalls.c --- libgloss/arm/syscalls.c 7 Feb 2006 18:46:23 -0000 1.9 +++ libgloss/arm/syscalls.c 24 May 2006 19:08:41 -0000 @@ -13,6 +13,7 @@ #include <sys/times.h> #include <errno.h> #include <reent.h> +#include <signal.h> #include <unistd.h> #include "swi.h"
@@ -463,9 +464,15 @@ { (void)pid; (void)sig; #ifdef ARM_RDI_MONITOR - /* Note: Both arguments are thrown away. */ - return do_AngelSWI (AngelSWI_Reason_ReportException, - (void *) ADP_Stopped_ApplicationExit); + /* Note: The pid argument is thrown away. */ + switch (sig) { + case SIGABRT: + return do_AngelSWI (AngelSWI_Reason_ReportException, + (void *) ADP_Stopped_RunTimeError); + default: + return do_AngelSWI (AngelSWI_Reason_ReportException, + (void *) ADP_Stopped_ApplicationExit); + } #else asm ("swi %a0" :: "i" (SWI_Exit)); #endif Index: libgloss/arm/libcfunc.c =================================================================== RCS file: /cvs/src/src/libgloss/arm/libcfunc.c,v retrieving revision 1.7 diff -u -r1.7 libcfunc.c --- libgloss/arm/libcfunc.c 7 Feb 2006 18:46:23 -0000 1.7 +++ libgloss/arm/libcfunc.c 24 May 2006 19:08:41 -0000 @@ -24,18 +24,6 @@ } #endif /* ARM_RDI_MONITOR */
-void -abort (void) -{ - extern void _exit (int n); -#ifdef ARM_RDI_MONITOR - do_AngelSWI (AngelSWI_Reason_ReportException, - (void *) ADP_Stopped_RunTimeError); -#else - _exit(17); -#endif -} - unsigned __attribute__((weak)) alarm (unsigned seconds) {
Attachment:
newlib-arm-abort.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |