am 7f38a3c9: Merge "Implement _Exit(3)."

* commit '7f38a3c9bef9c6efc30a6b60873bbdeea04a18f0':
  Implement _Exit(3).
This commit is contained in:
Elliott Hughes 2014-04-09 02:12:43 +00:00 committed by Android Git Automerger
commit 901b2839d8
10 changed files with 49 additions and 2 deletions

View File

@ -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

View File

@ -12,3 +12,6 @@ ENTRY(_exit)
neg r0, r0
b __set_errno
END(_exit)
.globl _Exit
.equ _Exit, _exit

View File

@ -19,3 +19,6 @@ ENTRY(_exit)
ret
END(_exit)
.globl _Exit
.equ _Exit, _exit

View File

@ -17,3 +17,6 @@ ENTRY(_exit)
nop
.set reorder
END(_exit)
.globl _Exit
.equ _Exit, _exit

View File

@ -23,3 +23,6 @@ ENTRY(_exit)
move ra, t0
.set pop
END(_exit)
.globl _Exit
.equ _Exit, _exit

View File

@ -20,3 +20,6 @@ ENTRY(_exit)
popl %ebx
ret
END(_exit)
.globl _Exit
.equ _Exit, _exit

View File

@ -14,3 +14,6 @@ ENTRY(_exit)
1:
ret
END(_exit)
.globl _Exit
.equ _Exit, _exit

View File

@ -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 *);

View File

@ -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));
}

View File

@ -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));
}