summaryrefslogtreecommitdiff
path: root/libc/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'libc/stdlib')
-rw-r--r--libc/stdlib/atexit.c1
-rw-r--r--libc/stdlib/drand48-iter.c3
-rw-r--r--libc/stdlib/realpath.c1
-rw-r--r--libc/stdlib/setenv.c4
-rw-r--r--libc/stdlib/system.c8
5 files changed, 12 insertions, 5 deletions
diff --git a/libc/stdlib/atexit.c b/libc/stdlib/atexit.c
index d6bac6eee..cad25feb1 100644
--- a/libc/stdlib/atexit.c
+++ b/libc/stdlib/atexit.c
@@ -186,6 +186,7 @@ extern int __cxa_atexit (cxaefuncp func, void *arg, void *dso_handle)
* with the same dso handle. Otherwise, if D is NULL, call all of the
* registered handlers.
*/
+void __cxa_finalize (void *dso_handle);
void __cxa_finalize (void *dso_handle)
{
struct exit_function *efp;
diff --git a/libc/stdlib/drand48-iter.c b/libc/stdlib/drand48-iter.c
index fc2a4ae9e..45aac678e 100644
--- a/libc/stdlib/drand48-iter.c
+++ b/libc/stdlib/drand48-iter.c
@@ -27,7 +27,8 @@
struct drand48_data __libc_drand48_data attribute_hidden;
-int attribute_hidden
+int __drand48_iterate (unsigned short int xsubi[3], struct drand48_data *buffer) attribute_hidden;
+int
__drand48_iterate (unsigned short int xsubi[3], struct drand48_data *buffer)
{
uint64_t X;
diff --git a/libc/stdlib/realpath.c b/libc/stdlib/realpath.c
index f82676709..c3cc517de 100644
--- a/libc/stdlib/realpath.c
+++ b/libc/stdlib/realpath.c
@@ -18,6 +18,7 @@
#include <limits.h> /* for PATH_MAX */
#include <sys/param.h> /* for MAXPATHLEN */
#include <errno.h>
+#include <stdlib.h>
#include <sys/stat.h> /* for S_IFLNK */
diff --git a/libc/stdlib/setenv.c b/libc/stdlib/setenv.c
index bf154035e..e7dc26053 100644
--- a/libc/stdlib/setenv.c
+++ b/libc/stdlib/setenv.c
@@ -52,7 +52,9 @@ static char **last_environ;
must be used directly. This is all complicated by the fact that we try
to reuse values once generated for a `setenv' call since we can never
free the strings. */
-int attribute_hidden __add_to_environ (const char *name, const char *value,
+int __add_to_environ (const char *name, const char *value,
+ const char *combined, int replace) attribute_hidden;
+int __add_to_environ (const char *name, const char *value,
const char *combined, int replace)
{
register char **ep;
diff --git a/libc/stdlib/system.c b/libc/stdlib/system.c
index 89168cc73..5f85a0819 100644
--- a/libc/stdlib/system.c
+++ b/libc/stdlib/system.c
@@ -9,6 +9,7 @@
#include <signal.h>
#include <unistd.h>
#include <sys/wait.h>
+#include <stdlib.h>
libc_hidden_proto(_exit)
libc_hidden_proto(wait4)
@@ -18,12 +19,13 @@ libc_hidden_proto(vfork)
/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */
#include <sys/syscall.h>
-#if ! defined __NR_vfork
-#define vfork fork
+#ifndef __NR_vfork
+# define vfork fork
libc_hidden_proto(fork)
#endif
-int __libc_system(char *command)
+extern __typeof(system) __libc_system;
+int __libc_system(const char *command)
{
int wait_val, pid;
__sighandler_t save_quit, save_int, save_chld;