am 7f38a3c9: Merge "Implement _Exit(3)."
* commit '7f38a3c9bef9c6efc30a6b60873bbdeea04a18f0': Implement _Exit(3).
This commit is contained in:
commit
901b2839d8
@ -308,7 +308,7 @@ int __epoll_pwait:epoll_pwait(int, struct epoll_event*, int, int, const sigset_t
|
||||
|
||||
int eventfd:eventfd2(unsigned int, int) all
|
||||
|
||||
void _exit:exit_group(int) all
|
||||
void _exit|_Exit:exit_group(int) all
|
||||
void __exit:exit(int) all
|
||||
|
||||
int futex(void*, int, int, void*, void*, int) all
|
||||
|
@ -12,3 +12,6 @@ ENTRY(_exit)
|
||||
neg r0, r0
|
||||
b __set_errno
|
||||
END(_exit)
|
||||
|
||||
.globl _Exit
|
||||
.equ _Exit, _exit
|
||||
|
@ -19,3 +19,6 @@ ENTRY(_exit)
|
||||
|
||||
ret
|
||||
END(_exit)
|
||||
|
||||
.globl _Exit
|
||||
.equ _Exit, _exit
|
||||
|
@ -17,3 +17,6 @@ ENTRY(_exit)
|
||||
nop
|
||||
.set reorder
|
||||
END(_exit)
|
||||
|
||||
.globl _Exit
|
||||
.equ _Exit, _exit
|
||||
|
@ -23,3 +23,6 @@ ENTRY(_exit)
|
||||
move ra, t0
|
||||
.set pop
|
||||
END(_exit)
|
||||
|
||||
.globl _Exit
|
||||
.equ _Exit, _exit
|
||||
|
@ -20,3 +20,6 @@ ENTRY(_exit)
|
||||
popl %ebx
|
||||
ret
|
||||
END(_exit)
|
||||
|
||||
.globl _Exit
|
||||
.equ _Exit, _exit
|
||||
|
@ -14,3 +14,6 @@ ENTRY(_exit)
|
||||
1:
|
||||
ret
|
||||
END(_exit)
|
||||
|
||||
.globl _Exit
|
||||
.equ _Exit, _exit
|
||||
|
@ -41,8 +41,9 @@ __BEGIN_DECLS
|
||||
#define EXIT_FAILURE 1
|
||||
#define EXIT_SUCCESS 0
|
||||
|
||||
extern __noreturn void exit(int);
|
||||
extern __noreturn void abort(void);
|
||||
extern __noreturn void exit(int);
|
||||
extern __noreturn void _Exit(int);
|
||||
extern int atexit(void (*)(void));
|
||||
|
||||
extern char *getenv(const char *);
|
||||
|
@ -202,3 +202,17 @@ TEST(stdlib, strtof) {
|
||||
TEST(stdlib, strtold) {
|
||||
ASSERT_DOUBLE_EQ(1.23, strtold("1.23", NULL));
|
||||
}
|
||||
|
||||
TEST(unistd, _Exit) {
|
||||
int pid = fork();
|
||||
ASSERT_NE(-1, pid) << strerror(errno);
|
||||
|
||||
if (pid == 0) {
|
||||
_Exit(99);
|
||||
}
|
||||
|
||||
int status;
|
||||
ASSERT_EQ(pid, waitpid(pid, &status, 0));
|
||||
ASSERT_TRUE(WIFEXITED(status));
|
||||
ASSERT_EQ(99, WEXITSTATUS(status));
|
||||
}
|
||||
|
@ -116,3 +116,17 @@ TEST(unistd, read_EBADF) {
|
||||
TEST(unistd, alarm) {
|
||||
ASSERT_EQ(0U, alarm(0));
|
||||
}
|
||||
|
||||
TEST(unistd, _exit) {
|
||||
int pid = fork();
|
||||
ASSERT_NE(-1, pid) << strerror(errno);
|
||||
|
||||
if (pid == 0) {
|
||||
_exit(99);
|
||||
}
|
||||
|
||||
int status;
|
||||
ASSERT_EQ(pid, waitpid(pid, &status, 0));
|
||||
ASSERT_TRUE(WIFEXITED(status));
|
||||
ASSERT_EQ(99, WEXITSTATUS(status));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user