summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mdk-stage1/dietlibc/binshstr.h6
-rw-r--r--mdk-stage1/dietlibc/dietdns.h4
-rw-r--r--mdk-stage1/dietlibc/dieticonv.h12
-rw-r--r--mdk-stage1/dietlibc/dietlibm.h5
-rw-r--r--mdk-stage1/dietlibc/dietuglyweaks.h24
-rw-r--r--mdk-stage1/dietlibc/dyn_start.c40
-rw-r--r--mdk-stage1/dietlibc/dyn_stop.c23
-rw-r--r--mdk-stage1/dietlibc/linuxnet.h19
-rw-r--r--mdk-stage1/dietlibc/parselib.h23
9 files changed, 156 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/binshstr.h b/mdk-stage1/dietlibc/binshstr.h
new file mode 100644
index 000000000..f1bf789fe
--- /dev/null
+++ b/mdk-stage1/dietlibc/binshstr.h
@@ -0,0 +1,6 @@
+
+extern const char __binsh [8];
+
+#define __sh (__binsh + 5 )
+
+/* end of binshstr.h */
diff --git a/mdk-stage1/dietlibc/dietdns.h b/mdk-stage1/dietlibc/dietdns.h
new file mode 100644
index 000000000..c4c1c5f72
--- /dev/null
+++ b/mdk-stage1/dietlibc/dietdns.h
@@ -0,0 +1,4 @@
+
+int __dns_gethostbyx_r(const char* name, struct hostent* result,
+ char *buf, size_t buflen,
+ struct hostent **RESULT, int *h_errnop, int lookfor);
diff --git a/mdk-stage1/dietlibc/dieticonv.h b/mdk-stage1/dietlibc/dieticonv.h
new file mode 100644
index 000000000..540ef2f6f
--- /dev/null
+++ b/mdk-stage1/dietlibc/dieticonv.h
@@ -0,0 +1,12 @@
+enum charset {
+ INVALID=0,
+ ISO_8859_1,
+ UTF_8,
+ UCS_2,
+ UCS_4
+};
+
+#define ic_from(x) (((x) )&0xffff)
+#define ic_to(x) (((x)>>16)&0xffff)
+
+#include <iconv.h>
diff --git a/mdk-stage1/dietlibc/dietlibm.h b/mdk-stage1/dietlibc/dietlibm.h
new file mode 100644
index 000000000..fe735e40d
--- /dev/null
+++ b/mdk-stage1/dietlibc/dietlibm.h
@@ -0,0 +1,5 @@
+#include <sys/types.h>
+
+double __poly(double x, size_t n, const double* c);
+double exp2(double x);
+double log2(double x);
diff --git a/mdk-stage1/dietlibc/dietuglyweaks.h b/mdk-stage1/dietlibc/dietuglyweaks.h
new file mode 100644
index 000000000..4b2aa231a
--- /dev/null
+++ b/mdk-stage1/dietlibc/dietuglyweaks.h
@@ -0,0 +1,24 @@
+#ifndef __DIET_UGLY_WEAKS__
+#define __DIET_UGLY_WEAKS__
+
+/* if you change something here ... KNOW what you're doing !
+ * it'll effect ALL platforms ! */
+
+.weak __thread_doexit
+__thread_doexit:
+.weak __fflush_stdin
+__fflush_stdin:
+.weak __fflush_stdout
+__fflush_stdout:
+.weak __fflush_stderr
+__fflush_stderr:
+.weak flockfile
+flockfile:
+.weak funlockfile
+funlockfile:
+.weak __nop
+__nop:
+.global __you_tried_to_link_a_dietlibc_object_against_glibc
+__you_tried_to_link_a_dietlibc_object_against_glibc:
+
+#endif
diff --git a/mdk-stage1/dietlibc/dyn_start.c b/mdk-stage1/dietlibc/dyn_start.c
new file mode 100644
index 000000000..391797e12
--- /dev/null
+++ b/mdk-stage1/dietlibc/dyn_start.c
@@ -0,0 +1,40 @@
+#include "dietfeatures.h"
+
+#ifdef WANT_DYNAMIC
+#include <stdlib.h>
+
+typedef void(*structor)(void);
+
+__attribute__((section(".ctors")))
+static structor __CTOR_LIST__[1]={((structor)-1)};
+
+__attribute__((section(".dtors")))
+static structor __DTOR_LIST__[1]={((structor)-1)};
+
+static void __do_global_dtors_aux(void)
+{
+ structor *df=__CTOR_LIST__; /* ugly trick to prevent warning */
+ for (df=((__DTOR_LIST__)+1);(*df) != (structor)0; df++) (*df)();
+}
+
+void _fini(void) __attribute__((section(".fini")));
+__attribute__((section(".fini"))) void _fini(void)
+{
+ __do_global_dtors_aux();
+}
+
+#ifndef __DYN_LIB_SHARED
+/* pre main, post _start */
+int _dyn_start(int argc, char **argv, char **envp, structor dl_init);
+int _dyn_start(int argc, char **argv, char **envp, structor dl_init)
+{
+ static __attribute__((section(".init"))) void _init(void);
+ int main(int argc, char **argv, char **envp);
+
+ if (dl_init) atexit(dl_init);
+ _init();
+ atexit(_fini);
+ return main(argc, argv, envp);
+}
+#endif
+#endif
diff --git a/mdk-stage1/dietlibc/dyn_stop.c b/mdk-stage1/dietlibc/dyn_stop.c
new file mode 100644
index 000000000..7213a8089
--- /dev/null
+++ b/mdk-stage1/dietlibc/dyn_stop.c
@@ -0,0 +1,23 @@
+#include "dietfeatures.h"
+
+#ifdef WANT_DYNAMIC
+typedef void(*structor)(void);
+
+__attribute__((section(".ctors")))
+static structor __CTOR_END__[1]={((structor)0)};
+
+__attribute__((section(".dtors")))
+static structor __DTOR_END__[1]={((structor)0)};
+
+static void __do_global_ctors_aux(void)
+{
+ structor *cf=__DTOR_END__; /* ugly trick to prevent warning */
+ for(cf=((__CTOR_END__)-1); (*cf) != (structor)-1; cf--) (*cf)();
+}
+
+void _init() __attribute__((section(".init")));
+__attribute__((section(".init"))) void _init()
+{
+ __do_global_ctors_aux();
+}
+#endif
diff --git a/mdk-stage1/dietlibc/linuxnet.h b/mdk-stage1/dietlibc/linuxnet.h
new file mode 100644
index 000000000..8e2204701
--- /dev/null
+++ b/mdk-stage1/dietlibc/linuxnet.h
@@ -0,0 +1,19 @@
+
+#define SYS_SOCKET 1 /* sys_socket(2) */
+#define SYS_BIND 2 /* sys_bind(2) */
+#define SYS_CONNECT 3 /* sys_connect(2) */
+#define SYS_LISTEN 4 /* sys_listen(2) */
+#define SYS_ACCEPT 5 /* sys_accept(2) */
+#define SYS_GETSOCKNAME 6 /* sys_getsockname(2) */
+#define SYS_GETPEERNAME 7 /* sys_getpeername(2) */
+#define SYS_SOCKETPAIR 8 /* sys_socketpair(2) */
+#define SYS_SEND 9 /* sys_send(2) */
+#define SYS_RECV 10 /* sys_recv(2) */
+#define SYS_SENDTO 11 /* sys_sendto(2) */
+#define SYS_RECVFROM 12 /* sys_recvfrom(2) */
+#define SYS_SHUTDOWN 13 /* sys_shutdown(2) */
+#define SYS_SETSOCKOPT 14 /* sys_setsockopt(2) */
+#define SYS_GETSOCKOPT 15 /* sys_getsockopt(2) */
+#define SYS_SENDMSG 16 /* sys_sendmsg(2) */
+#define SYS_RECVMSG 17 /* sys_recvmsg(2) */
+
diff --git a/mdk-stage1/dietlibc/parselib.h b/mdk-stage1/dietlibc/parselib.h
new file mode 100644
index 000000000..831d9da2b
--- /dev/null
+++ b/mdk-stage1/dietlibc/parselib.h
@@ -0,0 +1,23 @@
+/* parse lib: parse mmapped text with \n terminated lines */
+
+/* a memory buffer. */
+struct state {
+ const unsigned char* buffirst;/* pointer to the buffer */
+ size_t buflen; /* length of the buffer */
+ size_t cur; /* already parsed bytes */
+};
+
+/* open and mmap file, fill in struct state */
+void __prepare_parse(const char* filename,struct state* s);
+/* unmap file */
+void __end_parse(struct state* s);
+
+/* return the length of the matching string, 0 on error */
+/* match while pred returns nonzero */
+size_t __parse(struct state* s,int (*pred)(int ch));
+
+size_t __parse_ws(struct state* s); /* skip ' ' or '\t', break at '\n' or '#' */
+size_t __parse_nws(struct state* s); /* skip non-whitespace, break at '\n' or '#' */
+size_t __parse_1(struct state* s,char c); /* skip to c */
+
+size_t scan_ulong(const char* s,unsigned long* l);