diff --git a/components/libc/compilers/armlibc/syscalls.c b/components/libc/compilers/armlibc/syscalls.c index 43b655e1a642ddf3f8c4e95c4b54e040d943ecce..eb31a9118a739f69cf27cda304a4b6b4804b2a06 100644 --- a/components/libc/compilers/armlibc/syscalls.c +++ b/components/libc/compilers/armlibc/syscalls.c @@ -258,8 +258,9 @@ void _ttywrch(int ch) RT_WEAK void _sys_exit(int return_code) { - extern rt_inline void __exit__(int status); + extern void __exit__(int status); __exit__(return_code); + while(1); } /** @@ -305,7 +306,7 @@ int remove(const char *filename) #else int system(const char *string) { - extern rt_inline int __system__(const char *string); + extern int __system__(const char *string); return __system__(string); } #endif diff --git a/components/libc/compilers/common/stdlib.c b/components/libc/compilers/common/stdlib.c index 01f18aca5ffe3fe763c039f5eb0a6b751a4d14aa..022342aea9444330803c52c09806e8870ef438e5 100644 --- a/components/libc/compilers/common/stdlib.c +++ b/components/libc/compilers/common/stdlib.c @@ -12,7 +12,7 @@ #define ABORT_STATUS 2 -rt_inline void __exit__(int status) +void __exit__(int status) { rt_thread_t self = rt_thread_self(); @@ -27,7 +27,7 @@ rt_inline void __exit__(int status) { if(status == ABORT_STATUS) /* abort() */ { - rt_kprintf("thread:%s abort!\n", RT_NAME_MAX, self->name, status); + rt_kprintf("thread:%s abort!\n", RT_NAME_MAX, self->name); } else /* exit() */ { @@ -36,16 +36,14 @@ rt_inline void __exit__(int status) rt_thread_suspend(self); rt_schedule(); } - - while(1); /* noreturn */ } -rt_inline void __abort__(void) +void __abort__(void) { __exit__(ABORT_STATUS); } -rt_inline int __system__(const char *string) +int __system__(const char *string) { /* TODO */ return 0; diff --git a/components/libc/compilers/dlib/syscalls.c b/components/libc/compilers/dlib/syscalls.c index 6f16da2fcb57997c054e940bfcaefd70c1a90932..a185b0104bf9df3c21b3cabff9ad700c516ce0bb 100644 --- a/components/libc/compilers/dlib/syscalls.c +++ b/components/libc/compilers/dlib/syscalls.c @@ -11,12 +11,14 @@ void exit (int status) { - extern rt_inline void __exit__(int status); - __exit__(return_code); + extern void __exit__(int status); + __exit__(status); + while(1); } void abort(void) { - extern rt_inline void __abort__(void); + extern void __abort__(void); __abort__(); + while(1); } diff --git a/components/libc/compilers/newlib/syscalls.c b/components/libc/compilers/newlib/syscalls.c index 7fe02eb0a013a2a25bcff2ec6c7fe671e00b407f..6f833f05e462145fec743d295585ab3c45f92891 100644 --- a/components/libc/compilers/newlib/syscalls.c +++ b/components/libc/compilers/newlib/syscalls.c @@ -286,15 +286,16 @@ _free_r (struct _reent *ptr, void *addr) void exit (int status) { - extern rt_inline void __exit__(int status); + extern void __exit__(int status); __exit__(status); + while(1); } void _system(const char *s) { - extern rt_inline int __system__(const char *string); - __system__(string); + extern int __system__(const char *string); + __system__(s); } void __libc_init_array(void) @@ -304,8 +305,9 @@ void __libc_init_array(void) void abort(void) { - extern rt_inline void __abort__(void); + extern void __abort__(void); __abort__(); + while(1); } uid_t getuid(void)