]> Git Repo - uclibc-ng.git/commitdiff
More stuff. Down to only 43 missing functions before BusyBox will
authorEric Andersen <[email protected]>
Thu, 10 Aug 2000 19:47:55 +0000 (19:47 -0000)
committerEric Andersen <[email protected]>
Thu, 10 Aug 2000 19:47:55 +0000 (19:47 -0000)
link.  Fixed socket stuff so it doesn't pull in kernel headers and
stubbed out fork and clone.  A few other header file cleanups.
 -Erik

12 files changed:
Makefile
include/features.h
include/getopt.h
include/stdio.h
include/stdlib.h
include/sys/stat.h
include/sys/uio.h
include/unistd.h
libc/sysdeps/linux/common/glibcstat.h [new file with mode: 0644]
libc/sysdeps/linux/i386/Makefile
libc/sysdeps/linux/i386/bits/uio.h [new file with mode: 0644]
libc/sysdeps/linux/i386/clone.S [new file with mode: 0644]

index fcba9168a91d28c207d8207601cd477ca04932a6..1a143cfd0fc455e027a28b7c6576e337c7231404 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 DIRS = headers error getent malloc-simple misc regex stdio2 \
-           string sysdeps termios time #rpc
+           string termios time sysdeps #rpc
 
 all: libc.a
 
index e890edebe5ff7044cdca656515621467a280419e..b7dfd21c5479b85ba82538ea0e38847e1f8796f3 100644 (file)
@@ -41,6 +41,7 @@
 #define __USE_BSD
 #define __USE_MISC
 #define __USE_POSIX
+#define __USE_POSIX2
 #define _POSIX_THREAD_SAFE_FUNCTIONS
 
 #include <sys/cdefs.h>
index 0d71ff6bd90d3ff7a34ff664a2cfa111fc5e2ff9..a4cb954966774948bdd92c631f2fb7f6bbe3c1a1 100644 (file)
@@ -9,8 +9,9 @@
 #include <features.h>
 
 extern char *optarg;
-extern int opterr;
 extern int optind;
+extern int opterr;
+extern int optopt;
 
 extern int getopt __P((int argc, char *const *argv, const char *shortopts));
 
index e807262f0c6dae7fd5383b1802b132374d4e4730..5f944f1f7a4efe6bbd1fc5396c513e309b8b8eda 100644 (file)
@@ -201,6 +201,10 @@ extern int vfscanf __P ((FILE *__restrict __s,
 /* Print a message describing the meaning of the value of errno.  */
 extern void perror __P ((__const char *__s));
 
+/* Like `getdelim', but reads up to a newline.  */
+extern int getline __P ((char **__restrict __lineptr,
+                                size_t *__restrict __n,
+                                FILE *__restrict __stream));
 
 
 #endif /* __STDIO_H */
index 51ce80ba25c2ebdce73ddd0b52ba5c26546394b7..fefaf447a29f9e0d012c51264cf957bb11f8f0ad 100644 (file)
@@ -58,6 +58,7 @@ extern int putenv __P ((__const char *__string));
 
 extern int setenv __P ((__const char *__name, __const char *__value,
                         int __replace));
+extern void unsetenv __P ((__const char *__name));
 
 extern int system __P ((__const char *__command));
 
@@ -87,7 +88,6 @@ extern void qsort __P ((__ptr_t __base, size_t __nmemb, size_t __size,
 #define atof(x) strtod((x),(char**)0)
 #define atoi(x) (int)strtol((x),(char**)0,10)
 #define atol(x) strtol((x),(char**)0,10)
-char* itoa(int i);
 
 /* Returned by `div'.  */
 typedef struct
index 13c50411daa7b2c1d31ff70bb9892deca309a181..b4e1620dfc1146254a19fef445aac75f2706ec25 100644 (file)
@@ -276,37 +276,37 @@ extern int mkfifo __P ((__const char *__path, __mode_t __mode));
 
 /* Wrappers for stat and mknod system calls.  */
 #ifndef __USE_FILE_OFFSET64
-extern int __fxstat __P ((int __ver, int __fildes,
+extern int _fxstat __P ((int __ver, int __fildes,
                          struct stat *__stat_buf));
-extern int __xstat __P ((int __ver, __const char *__filename,
+extern int _xstat __P ((int __ver, __const char *__filename,
                         struct stat *__stat_buf));
-extern int __lxstat __P ((int __ver, __const char *__filename,
+extern int _lxstat __P ((int __ver, __const char *__filename,
                          struct stat *__stat_buf));
 #else
 # ifdef __REDIRECT
-extern int __REDIRECT (__fxstat, __P ((int __ver, int __fildes,
-                                      struct stat *__stat_buf)), __fxstat64);
-extern int __REDIRECT (__xstat, __P ((int __ver, __const char *__filename,
-                                     struct stat *__stat_buf)), __xstat64);
-extern int __REDIRECT (__lxstat, __P ((int __ver, __const char *__filename,
-                                      struct stat *__stat_buf)), __lxstat64);
+extern int __REDIRECT (_fxstat, __P ((int __ver, int __fildes,
+                                      struct stat *__stat_buf)), _fxstat64);
+extern int __REDIRECT (_xstat, __P ((int __ver, __const char *__filename,
+                                     struct stat *__stat_buf)), _xstat64);
+extern int __REDIRECT (_lxstat, __P ((int __ver, __const char *__filename,
+                                      struct stat *__stat_buf)), _lxstat64);
 
 # else
-#  define __fxstat __fxstat64
-#  define __xstat __xstat64
-#  define __lxstat __lxstat64
+#  define _fxstat _fxstat64
+#  define _xstat _xstat64
+#  define _lxstat _lxstat64
 # endif
 #endif
 
 #ifdef __USE_LARGEFILE64
-extern int __fxstat64 __P ((int __ver, int __fildes,
+extern int _fxstat64 __P ((int __ver, int __fildes,
                            struct stat64 *__stat_buf));
-extern int __xstat64 __P ((int __ver, __const char *__filename,
+extern int _xstat64 __P ((int __ver, __const char *__filename,
                           struct stat64 *__stat_buf));
-extern int __lxstat64 __P ((int __ver, __const char *__filename,
+extern int _lxstat64 __P ((int __ver, __const char *__filename,
                            struct stat64 *__stat_buf));
 #endif
-extern int __xmknod __P ((int __ver, __const char *__path,
+extern int _xmknod __P ((int __ver, __const char *__path,
                          __mode_t __mode, __dev_t *__dev));
 
 #if defined __GNUC__ && __GNUC__ >= 2
@@ -315,27 +315,27 @@ extern int __xmknod __P ((int __ver, __const char *__path,
 extern __inline__ int stat (__const char *__path,
                            struct stat *__statbuf) 
 {
-  return __xstat (_STAT_VER, __path, __statbuf);
+  return _xstat (_STAT_VER, __path, __statbuf);
 }
 
 # if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
 extern __inline__ int lstat (__const char *__path,
                             struct stat *__statbuf) 
 {
-  return __lxstat (_STAT_VER, __path, __statbuf);
+  return _lxstat (_STAT_VER, __path, __statbuf);
 }
 # endif
 
 extern __inline__ int fstat (int __fd, struct stat *__statbuf) 
 {
-  return __fxstat (_STAT_VER, __fd, __statbuf);
+  return _fxstat (_STAT_VER, __fd, __statbuf);
 }
 
 # if defined __USE_MISC || defined __USE_BSD
 extern __inline__ int mknod (__const char *__path, __mode_t __mode,
                             __dev_t __dev) 
 {
-  return __xmknod (_MKNOD_VER, __path, __mode, &__dev);
+  return _xmknod (_MKNOD_VER, __path, __mode, &__dev);
 }
 # endif
 
@@ -343,20 +343,20 @@ extern __inline__ int mknod (__const char *__path, __mode_t __mode,
 extern __inline__ int stat64 (__const char *__path,
                              struct stat64 *__statbuf) 
 {
-  return __xstat64 (_STAT_VER, __path, __statbuf);
+  return _xstat64 (_STAT_VER, __path, __statbuf);
 }
 
 #  if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
 extern __inline__ int lstat64 (__const char *__path,
                               struct stat64 *__statbuf) 
 {
-  return __lxstat64 (_STAT_VER, __path, __statbuf);
+  return _lxstat64 (_STAT_VER, __path, __statbuf);
 }
 #  endif
 
 extern __inline__ int fstat64 (int __fd, struct stat64 *__statbuf) 
 {
-  return __fxstat64 (_STAT_VER, __fd, __statbuf);
+  return _fxstat64 (_STAT_VER, __fd, __statbuf);
 }
 # endif
 
index 87120e6ff659d9eeec809140ced847017b9e85e7..0be33e9b45e948c506addc2806f0776d3d205223 100644 (file)
@@ -1,64 +1,49 @@
-/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* Copyright (C) 1991, 1992, 1996, 1997, 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
 
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
 
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Library General Public License for more details.
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 #ifndef _SYS_UIO_H
-
 #define _SYS_UIO_H     1
-#include <features.h>
-
-__BEGIN_DECLS
 
-#define        __need_size_t
-#include <stddef.h>
-
-/* That is a klude for Linux. */
-#ifdef __linux__
-#include <linux/socket.h>
-#endif
+#include <features.h>
 
-#ifndef __LINUX_UIO_H
+#include <sys/types.h>
 
-/* Structure describing a section of memory.  */
+__BEGIN_DECLS
 
-struct iovec
-{
-  /* Starting address.  */
-  __ptr_t iov_base;
-  /* Length in bytes.  */
-  size_t iov_len;
-};
+/* This file defines `struct iovec'.  */
+#include <bits/uio.h>
 
-#endif
 
 /* Read data from file descriptor FD, and put the result in the
    buffers described by VECTOR, which is a vector of COUNT `struct iovec's.
    The buffers are filled in the order specified.
    Operates just like `read' (see <unistd.h>) except that data are
    put in VECTOR instead of a contiguous buffer.  */
-int readv __P ((int __fd, __const struct iovec * __vector, size_t __count));
+extern ssize_t readv __P ((int __fd, __const struct iovec *__vector,
+                          int __count));
 
 /* Write data pointed by the buffers described by VECTOR, which
    is a vector of COUNT `struct iovec's, to file descriptor FD.
    The data is written in the order specified.
    Operates just like `write' (see <unistd.h>) except that the data
    are taken from VECTOR instead of a contiguous buffer.  */
-int writev __P ((int __fd, __const struct iovec * __vector, size_t __count));
-
+extern ssize_t writev __P ((int __fd, __const struct iovec *__vector,
+                           int __count));
 
 __END_DECLS
 
index 57a203dfd73ffd28424a55ba9b616563be05e5bd..6c2d1cece338109c24798b6146634a5c95f0c6e7 100644 (file)
@@ -65,13 +65,71 @@ extern char * mktemp __P ((char * __template));
 
 extern int _clone __P ((int (*fn)(void *arg), void *child_stack, int flags, void *arg));
 
+/* Return the current machine's Internet number.  */
+extern long int gethostid __P ((void));
 
-/* Make PATH be the root directory (the starting point for absolute paths).
+/* Put the name of the current host in no more than LEN bytes of NAME.
+   The result is null-terminated if LEN is large enough for the full
+   name and the terminator.  */
+extern int gethostname __P ((char *__name, size_t __len));
+
+/* Set the name of the current host to NAME, which is LEN bytes long.
    This call is restricted to the super-user.  */
-extern int chroot __P ((__const char *__path));
+extern int sethostname __P ((__const char *__name, size_t __len));
+
+
+/* Set the user ID of the calling process to UID.
+   If the calling process is the super-user, set the real
+   and effective user IDs, and the saved set-user-ID to UID;
+   if not, the effective user ID is set to UID.  */
+extern int setuid __P ((__uid_t __uid));
+
+/* Create a new session with the calling process as its leader.
+   The process group IDs of the session and the calling process
+   are set to the process ID of the calling process, which is returned.  */
+extern __pid_t setsid __P ((void));
+
+/* Get the real user ID of the calling process.  */
+extern __uid_t getuid __P ((void));
+
+/* Get the effective user ID of the calling process.  */
+extern __uid_t geteuid __P ((void));
+
+/* Get the real group ID of the calling process.  */
+extern __gid_t getgid __P ((void));
+
+/* Get the effective group ID of the calling process.  */
+extern __gid_t getegid __P ((void));
+
+/* If SIZE is zero, return the number of supplementary groups
+   the calling process is in.  Otherwise, fill in the group IDs
+   of its supplementary groups in LIST and return the number written.  */
+extern int getgroups __P ((int __size, __gid_t __list[]));
+
 
 
+/* Return the foreground process group ID of FD.  */
+extern __pid_t tcgetpgrp __P ((int __fd));
+/* Set the foreground process group ID of FD set PGRP_ID.  */
+extern int tcsetpgrp __P ((int __fd, __pid_t __pgrp_id));
 
+/* Get the process group ID of the calling process.
+   This function is different on old BSD. */
+extern __pid_t getpgrp __P ((void));
+/* Set the process group ID of the process matching PID to PGID.
+   If PID is zero, the current process's process group ID is set.
+   If PGID is zero, the process ID of the process is used.  */
+extern int setpgid __P ((__pid_t __pid, __pid_t __pgid));
+
+/* Get the process ID of the calling process.  */
+extern __pid_t getpid __P ((void));
+
+
+
+
+/* Make PATH be the root directory (the starting point for absolute paths).
+   This call is restricted to the super-user.  */
+extern int chroot __P ((__const char *__path));
 
 /* Execute PATH with all arguments after PATH until
    a NULL pointer and environment from `environ'.  */
@@ -113,6 +171,18 @@ extern __pid_t fork __P ((void));
  *          and the process ID of the new process to the old process.  */
 extern __pid_t vfork __P ((void));
 
+/* Return the number of bytes in a page.  This is the system's page size,
+   which is not necessarily the same as the hardware page size.  */
+extern int getpagesize __P ((void)) __attribute__ ((__const__));
+
+#ifdef __USE_POSIX2
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.  */
+# define __need_getopt
+# include <getopt.h>
+#endif
+
 
 #ifndef SEEK_SET
 #define SEEK_SET 0
diff --git a/libc/sysdeps/linux/common/glibcstat.h b/libc/sysdeps/linux/common/glibcstat.h
new file mode 100644 (file)
index 0000000..f5a2e7c
--- /dev/null
@@ -0,0 +1,68 @@
+/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef        _GLIBCSTAT_H
+#define        _GLIBCSTAT_H    1
+
+/* Versions of the `struct stat' data structure.  */
+#define _STAT_VER_LINUX_OLD    1
+#define _STAT_VER_SVR4         2
+#define _STAT_VER_LINUX                3
+#define _STAT_VER              _STAT_VER_LINUX /* The one defined below.  */
+
+/* Versions of the `xmknod' interface.  */
+#define _MKNOD_VER_LINUX       1
+#define _MKNOD_VER_SVR4                2
+#define _MKNOD_VER             _MKNOD_VER_LINUX /* The bits defined below.  */
+
+typedef unsigned long long int __glibc_dev_t;
+typedef unsigned long int __glibc_ino_t;
+typedef unsigned int __glibc_mode_t;
+typedef unsigned int __glibc_nlink_t;
+typedef unsigned int __glibc_uid_t;
+typedef unsigned int __glibc_gid_t;
+typedef long int __glibc_off_t;
+typedef long int __glibc_time_t;
+
+struct glibcstat
+  {
+    __glibc_dev_t st_dev;              /* Device.  */
+    unsigned short int __pad1;
+    __glibc_ino_t st_ino;              /* File serial number.  */
+    __glibc_mode_t st_mode;            /* File mode.  */
+    __glibc_nlink_t st_nlink;          /* Link count.  */
+    __glibc_uid_t st_uid;              /* User ID of the file's owner. */
+    __glibc_gid_t st_gid;              /* Group ID of the file's group.*/
+    __glibc_dev_t st_rdev;             /* Device number, if device.  */
+    unsigned short int __pad2;
+    __glibc_off_t st_size;             /* Size of file, in bytes.  */
+    unsigned long int st_blksize;      /* Optimal block size for I/O.  */
+#define        _STATBUF_ST_BLKSIZE             /* Tell code we have this member.  */
+
+    unsigned long int st_blocks;       /* Number of 512-byte blocks allocated.  */
+    __glibc_time_t st_atime;           /* Time of last access.  */
+    unsigned long int __unused1;
+    __glibc_time_t st_mtime;           /* Time of last modification.  */
+    unsigned long int __unused2;
+    __glibc_time_t st_ctime;                   /* Time of last status change.  */
+    unsigned long int __unused3;
+    unsigned long int __unused4;
+    unsigned long int __unused5;
+  };
+
+#endif /* glibcstat.h */
index 4db2b57fc65dd13a79b4396b1858eefa12460266..57fed3bf4af96f7ff691e76eee3c68291af9e190 100644 (file)
@@ -15,7 +15,7 @@ LIBC=$(TOPDIR)libc.a
        $(CC) $(CFLAGS) -c -o $*.o $<
 
 SSRC=syscalls.S
-OBJ= setjmp.o longjmp.o readdir.o _start.o _exit.o #select.o 
+OBJ= setjmp.o longjmp.o readdir.o _start.o _exit.o fork.o #select.o 
 include makefile.objs
 
 all: $(LIBC)
diff --git a/libc/sysdeps/linux/i386/bits/uio.h b/libc/sysdeps/linux/i386/bits/uio.h
new file mode 100644 (file)
index 0000000..38ac17b
--- /dev/null
@@ -0,0 +1,46 @@
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_UIO_H
+# error "Never include <bits/uio.h> directly; use <sys/uio.h> instead."
+#endif
+
+
+#include <sys/types.h>
+
+
+/* We should normally use the Linux kernel header file to define this
+   type and macros but this calls for trouble because of the header
+   includes other kernel headers.  */
+
+/* Size of object which can be written atomically.
+
+   This macro has different values in different kernel versions.  The
+   latest versions of ther kernel use 1024 and this is good choice.  Since
+   the C library implementation of readv/writev is able to emulate the
+   functionality even if the currently running kernel does not support
+   this large value the readv/writev call will not fail because of this.  */
+#define UIO_MAXIOV     1024
+
+
+/* Structure for scatter/gather I/O.  */
+struct iovec
+  {
+    void *iov_base;    /* Pointer to data.  */
+    size_t iov_len;    /* Length of data.  */
+  };
diff --git a/libc/sysdeps/linux/i386/clone.S b/libc/sysdeps/linux/i386/clone.S
new file mode 100644 (file)
index 0000000..7a2025b
--- /dev/null
@@ -0,0 +1,87 @@
+/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Richard Henderson ([email protected])
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* clone() is even more special than fork() as it mucks with stacks
+   and invokes a function in the right context after its all over.  */
+
+#include <sysdep.h>
+#define _ERRNO_H       1
+#include <bits/errno.h>
+#include <asm-syntax.h>
+
+/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
+
+        .text
+ENTRY(__clone)
+       /* Sanity check arguments.  */
+       movl    $-EINVAL,%eax
+       movl    4(%esp),%ecx            /* no NULL function pointers */
+#ifdef PIC
+       jecxz   SYSCALL_ERROR_LABEL
+#else
+       testl   %ecx,%ecx
+       jz      SYSCALL_ERROR_LABEL
+#endif
+       movl    8(%esp),%ecx            /* no NULL stack pointers */
+#ifdef PIC
+       jecxz   SYSCALL_ERROR_LABEL
+#else
+       testl   %ecx,%ecx
+       jz      SYSCALL_ERROR_LABEL
+#endif
+
+       /* Insert the argument onto the new stack.  */
+       subl    $8,%ecx
+       movl    16(%esp),%eax           /* no negative argument counts */
+       movl    %eax,4(%ecx)
+
+       /* Save the function pointer as the zeroth argument.
+          It will be popped off in the child in the ebx frobbing below.  */
+       movl    4(%esp),%eax
+       movl    %eax,0(%ecx)
+
+       /* Do the system call */
+       pushl   %ebx
+       movl    16(%esp),%ebx
+       movl    $SYS_ify(clone),%eax
+       int     $0x80
+       popl    %ebx
+
+       test    %eax,%eax
+       jl      SYSCALL_ERROR_LABEL
+       jz      thread_start
+
+L(pseudo_end):
+       ret
+
+thread_start:
+       subl    %ebp,%ebp       /* terminate the stack frame */
+       call    *%ebx
+#ifdef PIC
+       call    L(here)
+L(here):
+       popl    %ebx
+       addl    $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ebx
+#endif
+       pushl   %eax
+       call    JUMPTARGET (_exit)
+
+PSEUDO_END (__clone)
+
+weak_alias (__clone, clone)
This page took 0.055578 seconds and 4 git commands to generate.