diff --git a/libgloss/ChangeLog b/libgloss/ChangeLog index 3b3ee459a..06ae76450 100644 --- a/libgloss/ChangeLog +++ b/libgloss/ChangeLog @@ -1,3 +1,9 @@ +2006-06-05 Shaun Jackman + + * arm/syscalls.c (kill) [ARM_RDI_MONITOR]: Use the signal + argument to choose an ADP exception reason. + * arm/libcfunc.c (abort): Remove this function. + 2006-05-30 Shaun Jackman * arm/Makefile.in: Add Linux syscall interface. diff --git a/libgloss/arm/libcfunc.c b/libgloss/arm/libcfunc.c index 4f131939a..335b175d2 100644 --- a/libgloss/arm/libcfunc.c +++ b/libgloss/arm/libcfunc.c @@ -24,18 +24,6 @@ do_AngelSWI (int reason, void * arg) } #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) { diff --git a/libgloss/arm/syscalls.c b/libgloss/arm/syscalls.c index a6d2f747e..855a374bd 100644 --- a/libgloss/arm/syscalls.c +++ b/libgloss/arm/syscalls.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include "swi.h" @@ -463,9 +464,15 @@ _kill (int pid, int sig) { (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