2006-01-03 Kazu Hirata <kazu@codesourcery.com>
* arm/Makefile (RDPMON_OBJS): Add _exit.o and _kill.o. (RDIMON_OBJS): Define in terms of RDPMON_OBJS. (rdimon-_exit.o, rdimon-_kill.o): New. * arm/_exit.c, arm/_kill.c: New. * arm/syscalls.c (_exit, _kill): Remove.
This commit is contained in:
parent
35b4db0f30
commit
4d95d0e99a
@ -1,3 +1,11 @@
|
|||||||
|
2006-01-03 Kazu Hirata <kazu@codesourcery.com>
|
||||||
|
|
||||||
|
* arm/Makefile (RDPMON_OBJS): Add _exit.o and _kill.o.
|
||||||
|
(RDIMON_OBJS): Define in terms of RDPMON_OBJS.
|
||||||
|
(rdimon-_exit.o, rdimon-_kill.o): New.
|
||||||
|
* arm/_exit.c, arm/_kill.c: New.
|
||||||
|
* arm/syscalls.c (_exit, _kill): Remove.
|
||||||
|
|
||||||
2007-01-03 Kazu Hirata <kazu@codesourcery.com>
|
2007-01-03 Kazu Hirata <kazu@codesourcery.com>
|
||||||
|
|
||||||
Merge from newlib-csl-20060320-branch:
|
Merge from newlib-csl-20060320-branch:
|
||||||
|
@ -66,13 +66,13 @@ REDBOOT_INSTALL = install-redboot
|
|||||||
|
|
||||||
RDPMON_CRT0 = rdpmon-crt0.o
|
RDPMON_CRT0 = rdpmon-crt0.o
|
||||||
RDPMON_BSP = librdpmon.a
|
RDPMON_BSP = librdpmon.a
|
||||||
RDPMON_OBJS = syscalls.o libcfunc.o trap.o
|
RDPMON_OBJS = syscalls.o libcfunc.o trap.o _exit.o _kill.o
|
||||||
RDPMON_SCRIPTS = rdpmon.specs
|
RDPMON_SCRIPTS = rdpmon.specs
|
||||||
RDPMON_INSTALL = install-rdpmon
|
RDPMON_INSTALL = install-rdpmon
|
||||||
|
|
||||||
RDIMON_CRT0 = rdimon-crt0.o
|
RDIMON_CRT0 = rdimon-crt0.o
|
||||||
RDIMON_BSP = librdimon.a
|
RDIMON_BSP = librdimon.a
|
||||||
RDIMON_OBJS = rdimon-syscalls.o rdimon-libcfunc.o rdimon-trap.o
|
RDIMON_OBJS = $(patsubst %,rdimon-%,$(RDPMON_OBJS))
|
||||||
RDIMON_SCRIPTS = rdimon.specs
|
RDIMON_SCRIPTS = rdimon.specs
|
||||||
RDIMON_INSTALL = install-rdimon
|
RDIMON_INSTALL = install-rdimon
|
||||||
|
|
||||||
@ -115,6 +115,12 @@ rdimon-crt0.o: crt0.S
|
|||||||
rdimon-trap.o: trap.S
|
rdimon-trap.o: trap.S
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
|
rdimon-_exit.o: _exit.c
|
||||||
|
$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
|
rdimon-_kill.o: _kill.c
|
||||||
|
$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
rdimon-syscalls.o: syscalls.c
|
rdimon-syscalls.o: syscalls.c
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
|
15
libgloss/arm/_exit.c
Normal file
15
libgloss/arm/_exit.c
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include <_ansi.h>
|
||||||
|
|
||||||
|
int _kill _PARAMS ((int, int));
|
||||||
|
void _exit _PARAMS ((int));
|
||||||
|
|
||||||
|
void
|
||||||
|
_exit (int status)
|
||||||
|
{
|
||||||
|
/* There is only one SWI for both _exit and _kill. For _exit, call
|
||||||
|
the SWI with the second argument set to -1, an invalid value for
|
||||||
|
signum, so that the SWI handler can distinguish the two calls.
|
||||||
|
Note: The RDI implementation of _kill throws away both its
|
||||||
|
arguments. */
|
||||||
|
_kill (status, -1);
|
||||||
|
}
|
25
libgloss/arm/_kill.c
Normal file
25
libgloss/arm/_kill.c
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#include <_ansi.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include "swi.h"
|
||||||
|
|
||||||
|
int _kill _PARAMS ((int, int));
|
||||||
|
|
||||||
|
int
|
||||||
|
_kill (int pid, int sig)
|
||||||
|
{
|
||||||
|
(void) pid; (void) sig;
|
||||||
|
#ifdef ARM_RDI_MONITOR
|
||||||
|
/* 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
|
||||||
|
}
|
@ -13,7 +13,6 @@
|
|||||||
#include <sys/times.h>
|
#include <sys/times.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <reent.h>
|
#include <reent.h>
|
||||||
#include <signal.h>
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include "swi.h"
|
#include "swi.h"
|
||||||
@ -30,8 +29,6 @@ int _stat _PARAMS ((const char *, struct stat *));
|
|||||||
int _fstat _PARAMS ((int, struct stat *));
|
int _fstat _PARAMS ((int, struct stat *));
|
||||||
caddr_t _sbrk _PARAMS ((int));
|
caddr_t _sbrk _PARAMS ((int));
|
||||||
int _getpid _PARAMS ((int));
|
int _getpid _PARAMS ((int));
|
||||||
int _kill _PARAMS ((int, int));
|
|
||||||
void _exit _PARAMS ((int));
|
|
||||||
int _close _PARAMS ((int));
|
int _close _PARAMS ((int));
|
||||||
clock_t _clock _PARAMS ((void));
|
clock_t _clock _PARAMS ((void));
|
||||||
int _swiclose _PARAMS ((int));
|
int _swiclose _PARAMS ((int));
|
||||||
@ -439,36 +436,6 @@ _close (int file)
|
|||||||
return wrap (_swiclose (file));
|
return wrap (_swiclose (file));
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
_kill (int pid, int sig)
|
|
||||||
{
|
|
||||||
(void)pid; (void)sig;
|
|
||||||
#ifdef ARM_RDI_MONITOR
|
|
||||||
/* 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
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_exit (int status)
|
|
||||||
{
|
|
||||||
/* There is only one SWI for both _exit and _kill. For _exit, call
|
|
||||||
the SWI with the second argument set to -1, an invalid value for
|
|
||||||
signum, so that the SWI handler can distinguish the two calls.
|
|
||||||
Note: The RDI implementation of _kill throws away both its
|
|
||||||
arguments. */
|
|
||||||
_kill(status, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
int __attribute__((weak))
|
int __attribute__((weak))
|
||||||
_getpid (int n)
|
_getpid (int n)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user