From 4c602151f22a2f3bef9eed5adc61be1e3f9762d6 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Mon, 5 Jun 2006 19:46:18 +0000 Subject: [PATCH] 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. --- libgloss/ChangeLog | 6 ++++++ libgloss/arm/libcfunc.c | 12 ------------ libgloss/arm/syscalls.c | 13 ++++++++++--- 3 files changed, 16 insertions(+), 15 deletions(-) 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