diff options
-rw-r--r-- | include/string.h | 2 | ||||
-rw-r--r-- | include/sys/param.h | 2 | ||||
-rw-r--r-- | src/env/__init_security.c | 2 | ||||
-rw-r--r-- | src/exit/exit.c | 6 |
4 files changed, 8 insertions, 4 deletions
diff --git a/include/string.h b/include/string.h index 4aa930ed..8cf0ee9d 100644 --- a/include/string.h +++ b/include/string.h @@ -85,8 +85,10 @@ char *strcasestr(const char *, const char *); char *strsep(char **, const char *); void *memrchr(const void *, int, size_t); void *mempcpy(void *, const void *, size_t); +#ifndef __cplusplus char *basename(); #endif +#endif #ifdef __cplusplus } diff --git a/include/sys/param.h b/include/sys/param.h index 1650e772..344c0d23 100644 --- a/include/sys/param.h +++ b/include/sys/param.h @@ -18,7 +18,7 @@ #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) -#define ___bitop(x,i,o) ((a)[(i)/8] o 1<<(i)%8) +#define __bitop(x,i,o) ((x)[(i)/8] o (1<<(i)%8)) #define setbit(x,i) __bitop(x,i,|=) #define clrbit(x,i) __bitop(x,i,&=~) #define isset(x,i) __bitop(x,i,&) diff --git a/src/env/__init_security.c b/src/env/__init_security.c index 8270f1f4..395abeb5 100644 --- a/src/env/__init_security.c +++ b/src/env/__init_security.c @@ -8,7 +8,7 @@ #define AUX_CNT 24 -void dummy(size_t *auxv) +static void dummy(size_t *auxv) { } weak_alias(dummy, __init_ssp); diff --git a/src/exit/exit.c b/src/exit/exit.c index ae557c09..fc291484 100644 --- a/src/exit/exit.c +++ b/src/exit/exit.c @@ -2,6 +2,8 @@ #include <unistd.h> #include <stdio.h> #include "libc.h" +#include "atomic.h" +#include "syscall.h" static void dummy() { @@ -13,10 +15,10 @@ weak_alias(dummy, __fflush_on_exit); void exit(int code) { - static int lock[2]; + static int lock; /* If more than one thread calls exit, hang until _Exit ends it all */ - LOCK(lock); + while (a_swap(&lock, 1)) __syscall(SYS_pause); /* Only do atexit & stdio flush if they were actually used */ __funcs_on_exit(); |