more newlib patches
authorbrian <brian@brianweb.net>
Fri, 21 May 2004 02:56:51 +0000 (19:56 -0700)
committerbrian <brian@brianweb.net>
Fri, 21 May 2004 02:56:51 +0000 (19:56 -0700)
darcs-hash:20040521025651-24bed-0f7fca4f2fac28a2bdf8b90bf86d78b991fdcb34.gz

src/tests/Test.c
upstream/patches/newlib-extraheaders.sh [new file with mode: 0755]
upstream/patches/newlib-nomemcpy.patch [new file with mode: 0644]

index e8aa5df..659254b 100644 (file)
@@ -101,36 +101,6 @@ int main(int argc, char **argv) {
     } else if(argc > 2 && strcmp(argv[1],"crashme") == 0) {
         volatile int *mem = (int*) atoi(argv[2]);
         *mem = 1;
-    } else if(argc > 2 && strcmp(argv[1],"get") == 0) {
-        extern int _open_socket(const char *host, int port);
-        fd = _open_socket(argv[2],80);
-        if(fd == -1) { perror("open_socket"); exit(EXIT_FAILURE); }
-#define REQ "GET / HTTP/1.0\r\n\r\n"
-        n = write(fd,REQ,strlen(REQ));
-        if(n != strlen(REQ)) { perror("write"); exit(EXIT_FAILURE); }
-        for(;;) {
-            n = read(fd,buf,sizeof(buf));
-            if(n < 0) { perror("read"); exit(EXIT_FAILURE); }
-            if(n == 0) break;
-            write(1,buf,n);
-        }
-    } else if(argc > 1 && strcmp(argv[1],"server") == 0) {
-        extern int _listen_socket(int port);
-        extern int _accept(int fd);
-        
-        int server = _listen_socket(2000);
-        if(server< 0) { perror("server_socket"); exit(EXIT_FAILURE); }
-        while((fd = _accept(server)) >= 0) {
-            char buf2[1024];
-            int n = read(fd,buf,sizeof(buf));
-            if(n < 0) { perror("read"); continue; }
-            if(n == 0) continue;
-            while(n > 0 && (buf[n-1] == '\r' || buf[n-1] == '\n')) n--;
-            buf[n] = '\0';
-            snprintf(buf2,sizeof(buf2),"Hello, %s from nestedvm's socket support\r\n",buf);
-            write(fd,buf2,strlen(buf2));
-            close(fd);
-        }
     } else { 
         printf("%d\n", 0xffffff);
         printf("%u\n", 0xffffffU);
diff --git a/upstream/patches/newlib-extraheaders.sh b/upstream/patches/newlib-extraheaders.sh
new file mode 100755 (executable)
index 0000000..17d2612
--- /dev/null
@@ -0,0 +1,456 @@
+#!/bin/sh -e
+
+mkdir -p arpa netinet sys nestedvm
+
+for f in arpa/inet.h netdb.h netinet/in.h sys/socket.h; do
+    test -e $f || echo "#include <nestedvm/socket.h>" > $f
+done
+
+for f in getopt.h; do
+    test -e $f || echo "#include <unistd.h>" > $f
+done
+
+cat <<__EOF__ > sys/ioctl.h
+
+__EOF__
+
+cat <<__EOF__ > sys/klog.h
+#ifndef __SYS_KLOG_H
+#define __SYS_KLOG_H
+
+int klogctl(int cmd, char *buf, int buflen);
+
+#endif
+__EOF__
+
+cat <<__EOF__ > sys/utsname.h
+#ifndef __SYS_UTSNAME_H
+#define __SYS_UTSNAME_H
+
+#define SYS_NMLN 32
+
+struct utsname {
+    char sysname[SYS_NMLN];
+    char nodename[SYS_NMLN];
+    char release[SYS_NMLN];
+    char version[SYS_NMLN];
+    char machine[SYS_NMLN];
+};
+
+int uname(struct utsname *);
+
+#endif
+__EOF__
+
+cat <<__EOF__ > sys/sysctl.h
+/*
+ * Copyright (c) 1989, 1993
+ *      The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Mike Karels at Berkeley Software Design, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the University of
+ *      California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+            * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *      @(#)sysctl.h    8.1 (Berkeley) 6/2/93
+ * $FreeBSD: src/sys/sys/sysctl.h,v 1.81.2.10 2003/05/01 22:48:09 trhodes Exp $
+ */
+
+#ifndef __SYS_SYSCTL_H
+#define __SYS_SYSCTL_H
+
+#define CTL_MAXNAME     12
+
+
+/*
+ * Top-level identifiers
+ */
+#define        CTL_UNSPEC      0               /* unused */
+#define        CTL_KERN        1               /* "high kernel": proc, limits */
+#define        CTL_VM          2               /* virtual memory */
+#define        CTL_VFS         3               /* file system, mount type is next */
+#define        CTL_NET         4               /* network, see socket.h */
+#define        CTL_DEBUG       5               /* debugging parameters */
+#define        CTL_HW          6               /* generic cpu/io */
+#define        CTL_MACHDEP     7               /* machine dependent */
+#define        CTL_USER        8               /* user-level */
+#define        CTL_P1003_1B    9               /* POSIX 1003.1B */
+#define        CTL_MAXID       10              /* number of valid top-level ids */
+
+#define CTL_NAMES { \
+       { 0, 0 }, \
+{ "kern", CTLTYPE_NODE }, \
+{ "vm", CTLTYPE_NODE }, \
+{ "vfs", CTLTYPE_NODE }, \
+{ "net", CTLTYPE_NODE }, \
+{ "debug", CTLTYPE_NODE }, \
+{ "hw", CTLTYPE_NODE }, \
+{ "machdep", CTLTYPE_NODE }, \
+{ "user", CTLTYPE_NODE }, \
+{ "p1003_1b", CTLTYPE_NODE }, \
+}
+
+/*
+ * CTL_KERN identifiers
+ */
+#define        KERN_OSTYPE              1      /* string: system version */
+#define        KERN_OSRELEASE           2      /* string: system release */
+#define        KERN_OSREV               3      /* int: system revision */
+#define        KERN_VERSION             4      /* string: compile time info */
+#define        KERN_MAXVNODES           5      /* int: max vnodes */
+#define        KERN_MAXPROC             6      /* int: max processes */
+#define        KERN_MAXFILES            7      /* int: max open files */
+#define        KERN_ARGMAX              8      /* int: max arguments to exec */
+#define        KERN_SECURELVL           9      /* int: system security level */
+#define        KERN_HOSTNAME           10      /* string: hostname */
+#define        KERN_HOSTID             11      /* int: host identifier */
+#define        KERN_CLOCKRATE          12      /* struct: struct clockrate */
+#define        KERN_VNODE              13      /* struct: vnode structures */
+#define        KERN_PROC               14      /* struct: process entries */
+#define        KERN_FILE               15      /* struct: file entries */
+#define        KERN_PROF               16      /* node: kernel profiling info */
+#define        KERN_POSIX1             17      /* int: POSIX.1 version */
+#define        KERN_NGROUPS            18      /* int: # of supplemental group ids */
+#define        KERN_JOB_CONTROL        19      /* int: is job control available */
+#define        KERN_SAVED_IDS          20      /* int: saved set-user/group-ID */
+#define        KERN_BOOTTIME           21      /* struct: time kernel was booted */
+#define KERN_NISDOMAINNAME     22      /* string: YP domain name */
+#define KERN_UPDATEINTERVAL    23      /* int: update process sleep time */
+#define KERN_OSRELDATE         24      /* int: OS release date */
+#define KERN_NTP_PLL           25      /* node: NTP PLL control */
+#define        KERN_BOOTFILE           26      /* string: name of booted kernel */
+#define        KERN_MAXFILESPERPROC    27      /* int: max open files per proc */
+#define        KERN_MAXPROCPERUID      28      /* int: max processes per uid */
+#define KERN_DUMPDEV           29      /* dev_t: device to dump on */
+#define        KERN_IPC                30      /* node: anything related to IPC */
+#define        KERN_DUMMY              31      /* unused */
+#define        KERN_PS_STRINGS         32      /* int: address of PS_STRINGS */
+#define        KERN_USRSTACK           33      /* int: address of USRSTACK */
+#define        KERN_LOGSIGEXIT         34      /* int: do we log sigexit procs? */
+#define KERN_MAXID             35      /* number of valid kern ids */
+
+#define CTL_KERN_NAMES { \
+       { 0, 0 }, \
+       { "ostype", CTLTYPE_STRING }, \
+       { "osrelease", CTLTYPE_STRING }, \
+       { "osrevision", CTLTYPE_INT }, \
+       { "version", CTLTYPE_STRING }, \
+       { "maxvnodes", CTLTYPE_INT }, \
+       { "maxproc", CTLTYPE_INT }, \
+       { "maxfiles", CTLTYPE_INT }, \
+       { "argmax", CTLTYPE_INT }, \
+       { "securelevel", CTLTYPE_INT }, \
+       { "hostname", CTLTYPE_STRING }, \
+       { "hostid", CTLTYPE_UINT }, \
+       { "clockrate", CTLTYPE_STRUCT }, \
+       { "vnode", CTLTYPE_STRUCT }, \
+       { "proc", CTLTYPE_STRUCT }, \
+       { "file", CTLTYPE_STRUCT }, \
+       { "profiling", CTLTYPE_NODE }, \
+       { "posix1version", CTLTYPE_INT }, \
+       { "ngroups", CTLTYPE_INT }, \
+       { "job_control", CTLTYPE_INT }, \
+       { "saved_ids", CTLTYPE_INT }, \
+       { "boottime", CTLTYPE_STRUCT }, \
+       { "nisdomainname", CTLTYPE_STRING }, \
+       { "update", CTLTYPE_INT }, \
+       { "osreldate", CTLTYPE_INT }, \
+       { "ntp_pll", CTLTYPE_NODE }, \
+       { "bootfile", CTLTYPE_STRING }, \
+       { "maxfilesperproc", CTLTYPE_INT }, \
+       { "maxprocperuid", CTLTYPE_INT }, \
+       { "dumpdev", CTLTYPE_STRUCT }, /* we lie; don't print as int */ \
+       { "ipc", CTLTYPE_NODE }, \
+       { "dummy", CTLTYPE_INT }, \
+       { "ps_strings", CTLTYPE_INT }, \
+       { "usrstack", CTLTYPE_INT }, \
+       { "logsigexit", CTLTYPE_INT }, \
+}
+
+/*
+ * CTL_VFS identifiers
+ */
+#define CTL_VFS_NAMES { \
+       { "vfsconf", CTLTYPE_STRUCT }, \
+}
+
+/*
+ * KERN_PROC subtypes
+ */
+#define KERN_PROC_ALL          0       /* everything */
+#define        KERN_PROC_PID           1       /* by process id */
+#define        KERN_PROC_PGRP          2       /* by process group id */
+#define        KERN_PROC_SESSION       3       /* by session of pid */
+#define        KERN_PROC_TTY           4       /* by controlling tty */
+#define        KERN_PROC_UID           5       /* by effective uid */
+#define        KERN_PROC_RUID          6       /* by real uid */
+#define        KERN_PROC_ARGS          7       /* get/set arguments/proctitle */
+
+/*
+ * KERN_IPC identifiers
+ */
+#define KIPC_MAXSOCKBUF                1       /* int: max size of a socket buffer */
+#define        KIPC_SOCKBUF_WASTE      2       /* int: wastage factor in sockbuf */
+#define        KIPC_SOMAXCONN          3       /* int: max length of connection q */
+#define        KIPC_MAX_LINKHDR        4       /* int: max length of link header */
+#define        KIPC_MAX_PROTOHDR       5       /* int: max length of network header */
+#define        KIPC_MAX_HDR            6       /* int: max total length of headers */
+#define        KIPC_MAX_DATALEN        7       /* int: max length of data? */
+#define        KIPC_MBSTAT             8       /* struct: mbuf usage statistics */
+#define        KIPC_NMBCLUSTERS        9       /* int: maximum mbuf clusters */
+
+/*
+ * CTL_HW identifiers
+ */
+#define        HW_MACHINE       1              /* string: machine class */
+#define        HW_MODEL         2              /* string: specific machine model */
+#define        HW_NCPU          3              /* int: number of cpus */
+#define        HW_BYTEORDER     4              /* int: machine byte order */
+#define        HW_PHYSMEM       5              /* int: total memory */
+#define        HW_USERMEM       6              /* int: non-kernel memory */
+#define        HW_PAGESIZE      7              /* int: software page size */
+#define        HW_DISKNAMES     8              /* strings: disk drive names */
+#define        HW_DISKSTATS     9              /* struct: diskstats[] */
+#define HW_FLOATINGPT  10              /* int: has HW floating point? */
+#define HW_MACHINE_ARCH        11              /* string: machine architecture */
+#define        HW_MAXID        12              /* number of valid hw ids */
+
+#define CTL_HW_NAMES { \
+       { 0, 0 }, \
+       { "machine", CTLTYPE_STRING }, \
+       { "model", CTLTYPE_STRING }, \
+       { "ncpu", CTLTYPE_INT }, \
+       { "byteorder", CTLTYPE_INT }, \
+       { "physmem", CTLTYPE_UINT }, \
+       { "usermem", CTLTYPE_UINT }, \
+       { "pagesize", CTLTYPE_INT }, \
+       { "disknames", CTLTYPE_STRUCT }, \
+       { "diskstats", CTLTYPE_STRUCT }, \
+       { "floatingpoint", CTLTYPE_INT }, \
+}
+
+/*
+ * CTL_USER definitions
+ */
+#define        USER_CS_PATH             1      /* string: _CS_PATH */
+#define        USER_BC_BASE_MAX         2      /* int: BC_BASE_MAX */
+#define        USER_BC_DIM_MAX          3      /* int: BC_DIM_MAX */
+#define        USER_BC_SCALE_MAX        4      /* int: BC_SCALE_MAX */
+#define        USER_BC_STRING_MAX       5      /* int: BC_STRING_MAX */
+#define        USER_COLL_WEIGHTS_MAX    6      /* int: COLL_WEIGHTS_MAX */
+#define        USER_EXPR_NEST_MAX       7      /* int: EXPR_NEST_MAX */
+#define        USER_LINE_MAX            8      /* int: LINE_MAX */
+#define        USER_RE_DUP_MAX          9      /* int: RE_DUP_MAX */
+#define        USER_POSIX2_VERSION     10      /* int: POSIX2_VERSION */
+#define        USER_POSIX2_C_BIND      11      /* int: POSIX2_C_BIND */
+#define        USER_POSIX2_C_DEV       12      /* int: POSIX2_C_DEV */
+#define        USER_POSIX2_CHAR_TERM   13      /* int: POSIX2_CHAR_TERM */
+#define        USER_POSIX2_FORT_DEV    14      /* int: POSIX2_FORT_DEV */
+#define        USER_POSIX2_FORT_RUN    15      /* int: POSIX2_FORT_RUN */
+#define        USER_POSIX2_LOCALEDEF   16      /* int: POSIX2_LOCALEDEF */
+#define        USER_POSIX2_SW_DEV      17      /* int: POSIX2_SW_DEV */
+#define        USER_POSIX2_UPE         18      /* int: POSIX2_UPE */
+#define        USER_STREAM_MAX         19      /* int: POSIX2_STREAM_MAX */
+#define        USER_TZNAME_MAX         20      /* int: POSIX2_TZNAME_MAX */
+#define        USER_MAXID              21      /* number of valid user ids */
+
+#define        CTL_USER_NAMES { \
+       { 0, 0 }, \
+       { "cs_path", CTLTYPE_STRING }, \
+       { "bc_base_max", CTLTYPE_INT }, \
+       { "bc_dim_max", CTLTYPE_INT }, \
+       { "bc_scale_max", CTLTYPE_INT }, \
+       { "bc_string_max", CTLTYPE_INT }, \
+       { "coll_weights_max", CTLTYPE_INT }, \
+       { "expr_nest_max", CTLTYPE_INT }, \
+       { "line_max", CTLTYPE_INT }, \
+       { "re_dup_max", CTLTYPE_INT }, \
+       { "posix2_version", CTLTYPE_INT }, \
+       { "posix2_c_bind", CTLTYPE_INT }, \
+       { "posix2_c_dev", CTLTYPE_INT }, \
+       { "posix2_char_term", CTLTYPE_INT }, \
+       { "posix2_fort_dev", CTLTYPE_INT }, \
+       { "posix2_fort_run", CTLTYPE_INT }, \
+       { "posix2_localedef", CTLTYPE_INT }, \
+       { "posix2_sw_dev", CTLTYPE_INT }, \
+       { "posix2_upe", CTLTYPE_INT }, \
+       { "stream_max", CTLTYPE_INT }, \
+       { "tzname_max", CTLTYPE_INT }, \
+}
+
+#define CTL_P1003_1B_ASYNCHRONOUS_IO           1       /* boolean */
+#define CTL_P1003_1B_MAPPED_FILES              2       /* boolean */
+#define CTL_P1003_1B_MEMLOCK                   3       /* boolean */
+#define CTL_P1003_1B_MEMLOCK_RANGE             4       /* boolean */
+#define CTL_P1003_1B_MEMORY_PROTECTION         5       /* boolean */
+#define CTL_P1003_1B_MESSAGE_PASSING           6       /* boolean */
+#define CTL_P1003_1B_PRIORITIZED_IO            7       /* boolean */
+#define CTL_P1003_1B_PRIORITY_SCHEDULING       8       /* boolean */
+#define CTL_P1003_1B_REALTIME_SIGNALS          9       /* boolean */
+#define CTL_P1003_1B_SEMAPHORES                        10      /* boolean */
+#define CTL_P1003_1B_FSYNC                     11      /* boolean */
+#define CTL_P1003_1B_SHARED_MEMORY_OBJECTS     12      /* boolean */
+#define CTL_P1003_1B_SYNCHRONIZED_IO           13      /* boolean */
+#define CTL_P1003_1B_TIMERS                    14      /* boolean */
+#define CTL_P1003_1B_AIO_LISTIO_MAX            15      /* int */
+#define CTL_P1003_1B_AIO_MAX                   16      /* int */
+#define CTL_P1003_1B_AIO_PRIO_DELTA_MAX                17      /* int */
+#define CTL_P1003_1B_DELAYTIMER_MAX            18      /* int */
+#define CTL_P1003_1B_MQ_OPEN_MAX               19      /* int */
+#define CTL_P1003_1B_PAGESIZE                  20      /* int */
+#define CTL_P1003_1B_RTSIG_MAX                 21      /* int */
+#define CTL_P1003_1B_SEM_NSEMS_MAX             22      /* int */
+#define CTL_P1003_1B_SEM_VALUE_MAX             23      /* int */
+#define CTL_P1003_1B_SIGQUEUE_MAX              24      /* int */
+#define CTL_P1003_1B_TIMER_MAX                 25      /* int */
+
+#define CTL_P1003_1B_MAXID             26
+
+#define        CTL_P1003_1B_NAMES { \
+       { 0, 0 }, \
+       { "asynchronous_io", CTLTYPE_INT }, \
+       { "mapped_files", CTLTYPE_INT }, \
+       { "memlock", CTLTYPE_INT }, \
+       { "memlock_range", CTLTYPE_INT }, \
+       { "memory_protection", CTLTYPE_INT }, \
+       { "message_passing", CTLTYPE_INT }, \
+       { "prioritized_io", CTLTYPE_INT }, \
+       { "priority_scheduling", CTLTYPE_INT }, \
+       { "realtime_signals", CTLTYPE_INT }, \
+       { "semaphores", CTLTYPE_INT }, \
+       { "fsync", CTLTYPE_INT }, \
+       { "shared_memory_objects", CTLTYPE_INT }, \
+       { "synchronized_io", CTLTYPE_INT }, \
+       { "timers", CTLTYPE_INT }, \
+       { "aio_listio_max", CTLTYPE_INT }, \
+       { "aio_max", CTLTYPE_INT }, \
+       { "aio_prio_delta_max", CTLTYPE_INT }, \
+       { "delaytimer_max", CTLTYPE_INT }, \
+       { "mq_open_max", CTLTYPE_INT }, \
+       { "pagesize", CTLTYPE_INT }, \
+       { "rtsig_max", CTLTYPE_INT }, \
+       { "nsems_max", CTLTYPE_INT }, \
+       { "sem_value_max", CTLTYPE_INT }, \
+       { "sigqueue_max", CTLTYPE_INT }, \
+       { "timer_max", CTLTYPE_INT }, \
+}
+
+#endif
+__EOF__
+
+cat <<__EOF__ > nestedvm/socket.h
+#ifndef __NESTEDVM_SOCKETS_H
+#define __NESTEDVM_SOCKETS_H
+
+#include <sys/types.h>
+
+static unsigned short htons(int x) { return x; }
+static unsigned long htonl(int x) { return x; }
+static unsigned short ntohs(int x) { return x; }
+static unsigned long ntohl(int x) { return x; }
+
+#define AF_INET 2
+#define PF_INET AF_INET
+
+#define SOCK_STREAM 1
+#define SOCK_DGRAM 2
+
+#define HOST_NOT_FOUND  1
+#define TRY_AGAIN       2
+#define NO_RECOVERY     3
+#define NO_DATA         4
+
+#define SOL_SOCKET 0xffff
+
+#define SO_REUSEADDR 0x0004
+#define SO_KEEPALIVE 0x0008 
+
+#define SHUT_RD 0
+#define SHUT_WR 1
+#define SHUT_RDWR 2
+
+#define INADDR_ANY 0
+
+typedef unsigned long in_addr_t;
+typedef int socklen_t;
+
+struct in_addr {
+       in_addr_t s_addr;
+};
+
+struct sockaddr {
+    u_char sa_len;
+    u_char sa_family;
+    char sa_data[6];
+};
+
+struct sockaddr_in {
+       u_char  sin_len;
+       u_char  sin_family;
+       u_short sin_port;
+       struct  in_addr sin_addr;
+};
+
+struct  servent {
+    char    *s_name;        /* official name of service */
+    char    **s_aliases;    /* alias list */
+    int     s_port;         /* port service resides at */
+    char    *s_proto;       /* protocol to use */
+};
+
+struct servent *getservbyname(const char *name, const char *proto);
+
+struct  hostent {
+    char    *h_name;        /* official name of host */
+    char    **h_aliases;    /* alias list */
+    int     h_addrtype;     /* host address type */
+    int     h_length;       /* length of address */
+    char    **h_addr_list;  /* list of addresses from name server */
+};
+#define h_addr  h_addr_list[0]  /* address, for backward compatibility */
+
+struct hostent *gethostbyname(const char *name);
+
+int socket(int domain, int type, int proto);
+int bind(int s, const struct sockaddr *addr, socklen_t addrlen);
+int listen(int s, int backlog);
+int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
+int shutdown(int s, int how);
+int connect(int s, const struct sockaddr *name, socklen_t namelen);
+char *inet_ntoa(struct in_addr in);
+
+int getsockopt(int s, int level, int name, void *val, socklen_t *len);
+int setsockopt(int s, int level, int name, const void *val, socklen_t len);
+
+extern int h_errno;
+
+void herror(const char *);
+
+#endif
+__EOF__
diff --git a/upstream/patches/newlib-nomemcpy.patch b/upstream/patches/newlib-nomemcpy.patch
new file mode 100644 (file)
index 0000000..df4800b
--- /dev/null
@@ -0,0 +1,22 @@
+--- newlib/libc/string/Makefile.in.orig        2004-05-20 21:29:17.000000000 -0400
++++ newlib/libc/string/Makefile.in     2004-05-20 21:29:17.000000000 -0400
+@@ -225,7 +225,7 @@
+ LIBS = @LIBS@
+ @USE_LIBTOOL_FALSE@lib_a_OBJECTS =  bcopy.$(OBJEXT) bzero.$(OBJEXT) \
+ @USE_LIBTOOL_FALSE@index.$(OBJEXT) memchr.$(OBJEXT) memcmp.$(OBJEXT) \
+-@USE_LIBTOOL_FALSE@memcpy.$(OBJEXT) memmove.$(OBJEXT) memset.$(OBJEXT) \
++@USE_LIBTOOL_FALSE@memmove.$(OBJEXT) \
+ @USE_LIBTOOL_FALSE@rindex.$(OBJEXT) strcasecmp.$(OBJEXT) \
+ @USE_LIBTOOL_FALSE@strcat.$(OBJEXT) strchr.$(OBJEXT) strcmp.$(OBJEXT) \
+ @USE_LIBTOOL_FALSE@strcoll.$(OBJEXT) strcpy.$(OBJEXT) strcspn.$(OBJEXT) \
+--- newlib/libc/machine/mips/Makefile.in~      2004-05-20 21:44:40.000000000 -0400
++++ newlib/libc/machine/mips/Makefile.in       2004-05-20 21:44:40.000000000 -0400
+@@ -103,7 +103,7 @@
+ CPPFLAGS = @CPPFLAGS@
+ LIBS = @LIBS@
+ lib_a_LIBADD = 
+-lib_a_OBJECTS =  setjmp.o strlen.o strcmp.o strncpy.o memset.o memcpy.o
++lib_a_OBJECTS =  setjmp.o strlen.o strcmp.o strncpy.o
+ CFLAGS = @CFLAGS@
+ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)