diff options
| author | Kurt Bodiker <kurt.bodiker@braintrust-us.com> | 2018-05-01 10:05:30 -0400 |
|---|---|---|
| committer | Bruce Ashfield <bruce.ashfield@windriver.com> | 2018-05-01 23:17:29 -0400 |
| commit | b9f265377c8a673c6a5bd4f4bab0ac41a075bfde (patch) | |
| tree | 298398362636d78380554032c54b5e32005f9367 | |
| parent | e5cfb60540c88c92a56bea3417d54c6d9f9b5a98 (diff) | |
| download | meta-virtualization-b9f265377c8a673c6a5bd4f4bab0ac41a075bfde.tar.gz | |
xen: Newlib recipe and patches for Xen stubdoms
Newlib provides a fast, C library optimized for embedded systems. In the
case of Xen stubdomains, we are using MiniOS. This Newlib recipe creates
static libraries that are cross-compiled against MiniOS, Xen, and LWIP
headers and subsequently used during the cross-compilation and linking
of PolarSSL, the stubdom specific GMP, TPM Emulator, and the Xen vTPM
and vTPM Manager stubdomains. The current Xen source code is hardcoded
to fetch a specific version of this package. The patch files originate
from the Xen/stubdom source tree. This recipe provides the flexibility
to change version or modify the patches.
Signed-off-by: Kurt Bodiker <kurt.bodiker@braintrust-us.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
| -rw-r--r-- | recipes-extended/xen/files/newlib-chk.patch | 155 | ||||
| -rw-r--r-- | recipes-extended/xen/files/newlib-stdint-size_max-fix-from-1.17.0.patch | 16 | ||||
| -rw-r--r-- | recipes-extended/xen/files/newlib.patch | 727 | ||||
| -rw-r--r-- | recipes-extended/xen/newlib.inc | 64 | ||||
| -rw-r--r-- | recipes-extended/xen/newlib_1.16.0.bb | 21 |
5 files changed, 983 insertions, 0 deletions
diff --git a/recipes-extended/xen/files/newlib-chk.patch b/recipes-extended/xen/files/newlib-chk.patch new file mode 100644 index 00000000..a5d01495 --- /dev/null +++ b/recipes-extended/xen/files/newlib-chk.patch | |||
| @@ -0,0 +1,155 @@ | |||
| 1 | --- a/newlib/libc/stdio/fprintf_chk.c 1969-12-31 19:00:00.000000000 -0500 | ||
| 2 | +++ b/newlib/libc/stdio/fprintf_chk.c 2009-02-26 19:02:53.000000000 -0500 | ||
| 3 | @@ -0,0 +1,21 @@ | ||
| 4 | +#include <stdarg.h> | ||
| 5 | +#include <stdio.h> | ||
| 6 | + | ||
| 7 | +/* | ||
| 8 | + * Stub implementation of __fprintf_chk adapted from glibc 2.7. This | ||
| 9 | + * doesn't actually implement any buffer overflow protection. It just makes | ||
| 10 | + * the linker happy :) | ||
| 11 | +*/ | ||
| 12 | +int | ||
| 13 | +__fprintf_chk (FILE *fp, int flag, const char *format, ...) | ||
| 14 | +{ | ||
| 15 | + va_list ap; | ||
| 16 | + int done; | ||
| 17 | + | ||
| 18 | + va_start (ap, format); | ||
| 19 | + done = vfprintf (fp, format, ap); | ||
| 20 | + va_end (ap); | ||
| 21 | + | ||
| 22 | + return done; | ||
| 23 | +} | ||
| 24 | + | ||
| 25 | --- a/newlib/libc/stdio/Makefile.am 2007-08-02 16:23:06.000000000 -0400 | ||
| 26 | +++ b/newlib/libc/stdio/Makefile.am 2009-02-26 18:14:53.000000000 -0500 | ||
| 27 | @@ -20,6 +20,7 @@ | ||
| 28 | flags.c \ | ||
| 29 | fopen.c \ | ||
| 30 | fprintf.c \ | ||
| 31 | + fprintf_chk.c \ | ||
| 32 | fputc.c \ | ||
| 33 | fputs.c \ | ||
| 34 | fread.c \ | ||
| 35 | @@ -65,6 +66,7 @@ | ||
| 36 | sniprintf.c \ | ||
| 37 | snprintf.c \ | ||
| 38 | sprintf.c \ | ||
| 39 | + sprintf_chk.c \ | ||
| 40 | sscanf.c \ | ||
| 41 | stdio.c \ | ||
| 42 | tmpfile.c \ | ||
| 43 | --- a/newlib/libc/stdio/Makefile.in 2007-12-19 17:36:38.000000000 -0500 | ||
| 44 | +++ b/newlib/libc/stdio/Makefile.in 2009-02-26 18:43:52.000000000 -0500 | ||
| 45 | @@ -63,7 +63,8 @@ | ||
| 46 | lib_a-fgets.$(OBJEXT) lib_a-fileno.$(OBJEXT) \ | ||
| 47 | lib_a-findfp.$(OBJEXT) lib_a-fiprintf.$(OBJEXT) \ | ||
| 48 | lib_a-flags.$(OBJEXT) lib_a-fopen.$(OBJEXT) \ | ||
| 49 | - lib_a-fprintf.$(OBJEXT) lib_a-fputc.$(OBJEXT) \ | ||
| 50 | + lib_a-fprintf.$(OBJEXT) lib_a-fprintf_chk.$(OBJEXT) \ | ||
| 51 | + lib_a-fputc.$(OBJEXT) \ | ||
| 52 | lib_a-fputs.$(OBJEXT) lib_a-fread.$(OBJEXT) \ | ||
| 53 | lib_a-freopen.$(OBJEXT) lib_a-fscanf.$(OBJEXT) \ | ||
| 54 | lib_a-fiscanf.$(OBJEXT) lib_a-fseek.$(OBJEXT) \ | ||
| 55 | @@ -86,6 +87,7 @@ | ||
| 56 | lib_a-setvbuf.$(OBJEXT) lib_a-siprintf.$(OBJEXT) \ | ||
| 57 | lib_a-siscanf.$(OBJEXT) lib_a-sniprintf.$(OBJEXT) \ | ||
| 58 | lib_a-snprintf.$(OBJEXT) lib_a-sprintf.$(OBJEXT) \ | ||
| 59 | + lib_a-sprintf_chk.$(OBJEXT) \ | ||
| 60 | lib_a-sscanf.$(OBJEXT) lib_a-stdio.$(OBJEXT) \ | ||
| 61 | lib_a-tmpfile.$(OBJEXT) lib_a-tmpnam.$(OBJEXT) \ | ||
| 62 | lib_a-ungetc.$(OBJEXT) lib_a-vdiprintf.$(OBJEXT) \ | ||
| 63 | @@ -122,15 +124,15 @@ | ||
| 64 | LTLIBRARIES = $(noinst_LTLIBRARIES) | ||
| 65 | am__objects_4 = clearerr.lo fclose.lo fdopen.lo feof.lo ferror.lo \ | ||
| 66 | fflush.lo fgetc.lo fgetpos.lo fgets.lo fileno.lo findfp.lo \ | ||
| 67 | - fiprintf.lo flags.lo fopen.lo fprintf.lo fputc.lo fputs.lo \ | ||
| 68 | - fread.lo freopen.lo fscanf.lo fiscanf.lo fseek.lo fsetpos.lo \ | ||
| 69 | + fiprintf.lo flags.lo fopen.lo fprintf.lo fprintf_chk.lo fputc.lo \ | ||
| 70 | + fputs.lo fread.lo freopen.lo fscanf.lo fiscanf.lo fseek.lo fsetpos.lo \ | ||
| 71 | ftell.lo fvwrite.lo fwalk.lo fwrite.lo getc.lo getchar.lo \ | ||
| 72 | getc_u.lo getchar_u.lo getdelim.lo getline.lo gets.lo \ | ||
| 73 | iprintf.lo iscanf.lo makebuf.lo perror.lo printf.lo putc.lo \ | ||
| 74 | putchar.lo putc_u.lo putchar_u.lo puts.lo refill.lo remove.lo \ | ||
| 75 | rename.lo rewind.lo rget.lo scanf.lo sccl.lo setbuf.lo \ | ||
| 76 | setbuffer.lo setlinebuf.lo setvbuf.lo siprintf.lo siscanf.lo \ | ||
| 77 | - sniprintf.lo snprintf.lo sprintf.lo sscanf.lo stdio.lo \ | ||
| 78 | + sniprintf.lo snprintf.lo sprintf.lo sprintf_chk.lo sscanf.lo stdio.lo \ | ||
| 79 | tmpfile.lo tmpnam.lo ungetc.lo vdiprintf.lo vdprintf.lo \ | ||
| 80 | viprintf.lo viscanf.lo vprintf.lo vscanf.lo vsiprintf.lo \ | ||
| 81 | vsiscanf.lo vsnprintf.lo vsniprintf.lo vsprintf.lo vsscanf.lo \ | ||
| 82 | @@ -344,6 +346,7 @@ | ||
| 83 | flags.c \ | ||
| 84 | fopen.c \ | ||
| 85 | fprintf.c \ | ||
| 86 | + fprintf_chk.c \ | ||
| 87 | fputc.c \ | ||
| 88 | fputs.c \ | ||
| 89 | fread.c \ | ||
| 90 | @@ -389,6 +392,7 @@ | ||
| 91 | sniprintf.c \ | ||
| 92 | snprintf.c \ | ||
| 93 | sprintf.c \ | ||
| 94 | + sprintf_chk.c \ | ||
| 95 | sscanf.c \ | ||
| 96 | stdio.c \ | ||
| 97 | tmpfile.c \ | ||
| 98 | @@ -508,6 +512,7 @@ | ||
| 99 | siprintf.def \ | ||
| 100 | siscanf.def \ | ||
| 101 | sprintf.def \ | ||
| 102 | + sprintf_chk.def \ | ||
| 103 | sscanf.def \ | ||
| 104 | tmpfile.def \ | ||
| 105 | tmpnam.def \ | ||
| 106 | @@ -678,6 +683,12 @@ | ||
| 107 | lib_a-fprintf.obj: fprintf.c | ||
| 108 | $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fprintf.obj `if test -f 'fprintf.c'; then $(CYGPATH_W) 'fprintf.c'; else $(CYGPATH_W) '$(srcdir)/fprintf.c'; fi` | ||
| 109 | |||
| 110 | +lib_a-fprintf_chk.o: fprintf_chk.c | ||
| 111 | + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fprintf_chk.o `test -f 'fprintf_chk.c' || echo '$(srcdir)/'`fprintf_chk.c | ||
| 112 | + | ||
| 113 | +lib_a-fprintf_chk.obj: fprintf_chk.c | ||
| 114 | + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fprintf_chk.obj `if test -f 'fprintf_chk.c'; then $(CYGPATH_W) 'fprintf_chk.c'; else $(CYGPATH_W) '$(srcdir)/fprintf_chk.c'; fi` | ||
| 115 | + | ||
| 116 | lib_a-fputc.o: fputc.c | ||
| 117 | $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fputc.o `test -f 'fputc.c' || echo '$(srcdir)/'`fputc.c | ||
| 118 | |||
| 119 | @@ -948,6 +959,12 @@ | ||
| 120 | lib_a-sprintf.obj: sprintf.c | ||
| 121 | $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sprintf.obj `if test -f 'sprintf.c'; then $(CYGPATH_W) 'sprintf.c'; else $(CYGPATH_W) '$(srcdir)/sprintf.c'; fi` | ||
| 122 | |||
| 123 | +lib_a-sprintf_chk.o: sprintf_chk.c | ||
| 124 | + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sprintf_chk.o `test -f 'sprintf_chk.c' || echo '$(srcdir)/'`sprintf_chk.c | ||
| 125 | + | ||
| 126 | +lib_a-sprintf_chk.obj: sprintf_chk.c | ||
| 127 | + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sprintf_chk.obj `if test -f 'sprintf_chk.c'; then $(CYGPATH_W) 'sprintf_chk.c'; else $(CYGPATH_W) '$(srcdir)/sprintf_chk.c'; fi` | ||
| 128 | + | ||
| 129 | lib_a-sscanf.o: sscanf.c | ||
| 130 | $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sscanf.o `test -f 'sscanf.c' || echo '$(srcdir)/'`sscanf.c | ||
| 131 | |||
| 132 | --- a/newlib/libc/stdio/sprintf_chk.c 1969-12-31 19:00:00.000000000 -0500 | ||
| 133 | +++ b/newlib/libc/stdio/sprintf_chk.c 2009-02-26 19:02:26.000000000 -0500 | ||
| 134 | @@ -0,0 +1,21 @@ | ||
| 135 | +#include <stdarg.h> | ||
| 136 | +#include <stdio.h> | ||
| 137 | + | ||
| 138 | +/* | ||
| 139 | + * Stub implementation of __sprintf_chk adapted from glibc 2.7. This | ||
| 140 | + * doesn't actually implement any buffer overflow protection. It just makes | ||
| 141 | + * the linker happy :) | ||
| 142 | +*/ | ||
| 143 | +int | ||
| 144 | +__sprintf_chk (char *s, int flags, size_t slen, const char *format, ...) | ||
| 145 | +{ | ||
| 146 | + va_list arg; | ||
| 147 | + int done; | ||
| 148 | + | ||
| 149 | + va_start (arg, format); | ||
| 150 | + done = vsprintf (s, format, arg); | ||
| 151 | + va_end (arg); | ||
| 152 | + | ||
| 153 | + return done; | ||
| 154 | +} | ||
| 155 | + | ||
diff --git a/recipes-extended/xen/files/newlib-stdint-size_max-fix-from-1.17.0.patch b/recipes-extended/xen/files/newlib-stdint-size_max-fix-from-1.17.0.patch new file mode 100644 index 00000000..3610d646 --- /dev/null +++ b/recipes-extended/xen/files/newlib-stdint-size_max-fix-from-1.17.0.patch | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | --- a/newlib/libc/include/stdint.h.orig 2006-08-17 00:39:43.000000000 +0300 | ||
| 2 | +++ b/newlib/libc/include/stdint.h 2009-08-25 17:33:23.000000000 +0300 | ||
| 3 | @@ -348,8 +348,11 @@ | ||
| 4 | #endif | ||
| 5 | |||
| 6 | /* This must match size_t in stddef.h, currently long unsigned int */ | ||
| 7 | -#define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L) | ||
| 8 | -#define SIZE_MAX __STDINT_EXP(LONG_MAX) | ||
| 9 | +#ifdef __SIZE_MAX__ | ||
| 10 | +#define SIZE_MAX __SIZE_MAX__ | ||
| 11 | +#else | ||
| 12 | +#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1) | ||
| 13 | +#endif | ||
| 14 | |||
| 15 | /* This must match sig_atomic_t in <signal.h> (currently int) */ | ||
| 16 | #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1) | ||
diff --git a/recipes-extended/xen/files/newlib.patch b/recipes-extended/xen/files/newlib.patch new file mode 100644 index 00000000..dbf409a2 --- /dev/null +++ b/recipes-extended/xen/files/newlib.patch | |||
| @@ -0,0 +1,727 @@ | |||
| 1 | There is a mix between longs and long longs. | ||
| 2 | |||
| 3 | Index: newlib/libc/include/inttypes.h | ||
| 4 | =================================================================== | ||
| 5 | RCS file: /cvs/src/src/newlib/libc/include/inttypes.h,v | ||
| 6 | retrieving revision 1.3 | ||
| 7 | diff -u -p -r1.3 inttypes.h | ||
| 8 | --- a/newlib/libc/include/inttypes.h 16 Dec 2005 19:03:12 -0000 1.3 | ||
| 9 | +++ b/newlib/libc/include/inttypes.h 8 Nov 2007 16:32:44 -0000 | ||
| 10 | @@ -163,12 +163,12 @@ | ||
| 11 | |||
| 12 | |||
| 13 | /* 64-bit types */ | ||
| 14 | -#if __have_longlong64 | ||
| 15 | -#define __PRI64(x) __STRINGIFY(ll##x) | ||
| 16 | -#define __SCN64(x) __STRINGIFY(ll##x) | ||
| 17 | -#elif __have_long64 | ||
| 18 | +#if __have_long64 | ||
| 19 | #define __PRI64(x) __STRINGIFY(l##x) | ||
| 20 | #define __SCN64(x) __STRINGIFY(l##x) | ||
| 21 | +#elif __have_longlong64 | ||
| 22 | +#define __PRI64(x) __STRINGIFY(ll##x) | ||
| 23 | +#define __SCN64(x) __STRINGIFY(ll##x) | ||
| 24 | #else | ||
| 25 | #define __PRI64(x) __STRINGIFY(x) | ||
| 26 | #define __SCN64(x) __STRINGIFY(x) | ||
| 27 | @@ -217,12 +217,12 @@ | ||
| 28 | #endif | ||
| 29 | |||
| 30 | /* max-bit types */ | ||
| 31 | -#if __have_longlong64 | ||
| 32 | -#define __PRIMAX(x) __STRINGIFY(ll##x) | ||
| 33 | -#define __SCNMAX(x) __STRINGIFY(ll##x) | ||
| 34 | -#elif __have_long64 | ||
| 35 | +#if __have_long64 | ||
| 36 | #define __PRIMAX(x) __STRINGIFY(l##x) | ||
| 37 | #define __SCNMAX(x) __STRINGIFY(l##x) | ||
| 38 | +#elif __have_longlong64 | ||
| 39 | +#define __PRIMAX(x) __STRINGIFY(ll##x) | ||
| 40 | +#define __SCNMAX(x) __STRINGIFY(ll##x) | ||
| 41 | #else | ||
| 42 | #define __PRIMAX(x) __STRINGIFY(x) | ||
| 43 | #define __SCNMAX(x) __STRINGIFY(x) | ||
| 44 | @@ -242,12 +242,12 @@ | ||
| 45 | #define SCNxMAX __SCNMAX(x) | ||
| 46 | |||
| 47 | /* ptr types */ | ||
| 48 | -#if __have_longlong64 | ||
| 49 | -#define __PRIPTR(x) __STRINGIFY(ll##x) | ||
| 50 | -#define __SCNPTR(x) __STRINGIFY(ll##x) | ||
| 51 | -#elif __have_long64 | ||
| 52 | +#if __have_long64 | ||
| 53 | #define __PRIPTR(x) __STRINGIFY(l##x) | ||
| 54 | #define __SCNPTR(x) __STRINGIFY(l##x) | ||
| 55 | +#elif __have_longlong64 | ||
| 56 | +#define __PRIPTR(x) __STRINGIFY(ll##x) | ||
| 57 | +#define __SCNPTR(x) __STRINGIFY(ll##x) | ||
| 58 | #else | ||
| 59 | #define __PRIPTR(x) __STRINGIFY(x) | ||
| 60 | #define __SCNPTR(x) __STRINGIFY(x) | ||
| 61 | |||
| 62 | We don't want u?int32_t to be long as our code assume in a lot of places to be | ||
| 63 | int. | ||
| 64 | |||
| 65 | Index: newlib/libc/include/stdint.h | ||
| 66 | =================================================================== | ||
| 67 | RCS file: /cvs/src/src/newlib/libc/include/stdint.h,v | ||
| 68 | retrieving revision 1.10 | ||
| 69 | diff -u -p -r1.10 stdint.h | ||
| 70 | --- a/newlib/libc/include/stdint.h 16 Aug 2006 21:39:43 -0000 1.10 | ||
| 71 | +++ b/newlib/libc/include/stdint.h 12 Feb 2008 13:07:52 -0000 | ||
| 72 | @@ -38,7 +38,7 @@ extern "C" { | ||
| 73 | #if __STDINT_EXP(LONG_MAX) > 0x7fffffff | ||
| 74 | #define __have_long64 1 | ||
| 75 | #elif __STDINT_EXP(LONG_MAX) == 0x7fffffff && !defined(__SPU__) | ||
| 76 | -#define __have_long32 1 | ||
| 77 | +/* #define __have_long32 1 */ | ||
| 78 | #endif | ||
| 79 | |||
| 80 | #if __STDINT_EXP(SCHAR_MAX) == 0x7f | ||
| 81 | |||
| 82 | Define the basic ia64 jump buffer | ||
| 83 | |||
| 84 | Index: newlib/libc/include/sys/config.h | ||
| 85 | =================================================================== | ||
| 86 | RCS file: /cvs/src/src/newlib/libc/include/sys/config.h,v | ||
| 87 | retrieving revision 1.47 | ||
| 88 | diff -u -p -r1.47 config.h | ||
| 89 | --- a/newlib/libc/include/sys/config.h 15 Mar 2007 21:32:12 -0000 1.47 | ||
| 90 | +++ b/newlib/libc/include/sys/config.h 8 Nov 2007 16:32:44 -0000 | ||
| 91 | @@ -71,6 +71,10 @@ | ||
| 92 | #endif | ||
| 93 | #endif | ||
| 94 | |||
| 95 | +#ifndef __DYNAMIC_REENT__ | ||
| 96 | +#define __DYNAMIC_REENT__ | ||
| 97 | +#endif | ||
| 98 | + | ||
| 99 | #ifdef __mn10200__ | ||
| 100 | #define __SMALL_BITFIELDS | ||
| 101 | #endif | ||
| 102 | |||
| 103 | Dynamic pointer to our reentrancy zone | ||
| 104 | |||
| 105 | Index: newlib/libc/reent/getreent.c | ||
| 106 | =================================================================== | ||
| 107 | RCS file: /cvs/src/src/newlib/libc/reent/getreent.c,v | ||
| 108 | retrieving revision 1.2 | ||
| 109 | diff -u -p -r1.2 getreent.c | ||
| 110 | --- a/newlib/libc/reent/getreent.c 7 Sep 2007 00:45:55 -0000 1.2 | ||
| 111 | +++ b/newlib/libc/reent/getreent.c 8 Nov 2007 16:32:44 -0000 | ||
| 112 | @@ -3,12 +3,20 @@ | ||
| 113 | #include <_ansi.h> | ||
| 114 | #include <reent.h> | ||
| 115 | |||
| 116 | +#define weak_alias(name, aliasname) \ | ||
| 117 | + extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); | ||
| 118 | + | ||
| 119 | #ifdef __getreent | ||
| 120 | #undef __getreent | ||
| 121 | #endif | ||
| 122 | +#ifdef __libc_getreent | ||
| 123 | +#undef __libc_getreent | ||
| 124 | +#endif | ||
| 125 | |||
| 126 | struct _reent * | ||
| 127 | -_DEFUN_VOID(__getreent) | ||
| 128 | +__libc_getreent (void) | ||
| 129 | { | ||
| 130 | return _impure_ptr; | ||
| 131 | } | ||
| 132 | +weak_alias(__libc_getreent,__getreent) | ||
| 133 | + | ||
| 134 | |||
| 135 | We can't provide a red zone in mini-os. | ||
| 136 | |||
| 137 | Index: newlib/libc/machine/x86_64/memcpy.S | ||
| 138 | =================================================================== | ||
| 139 | RCS file: /cvs/src/src/newlib/libc/machine/x86_64/memcpy.S,v | ||
| 140 | retrieving revision 1.1 | ||
| 141 | diff -u -p -r1.1 memcpy.S | ||
| 142 | --- a/newlib/libc/machine/x86_64/memcpy.S 28 Aug 2007 21:56:49 -0000 1.1 | ||
| 143 | +++ b/newlib/libc/machine/x86_64/memcpy.S 8 Nov 2007 16:32:44 -0000 | ||
| 144 | @@ -30,10 +30,18 @@ quadword_aligned: | ||
| 145 | cmpq $256, rdx | ||
| 146 | jb quadword_copy | ||
| 147 | |||
| 148 | +#if 1 | ||
| 149 | + subq $32, rsp | ||
| 150 | + movq rax, 24 (rsp) | ||
| 151 | + movq r12, 16 (rsp) | ||
| 152 | + movq r13, 8 (rsp) | ||
| 153 | + movq r14, 0 (rsp) | ||
| 154 | +#else | ||
| 155 | movq rax, -8 (rsp) | ||
| 156 | movq r12, -16 (rsp) | ||
| 157 | movq r13, -24 (rsp) | ||
| 158 | movq r14, -32 (rsp) | ||
| 159 | +#endif | ||
| 160 | |||
| 161 | movq rdx, rcx /* Copy 128 bytes at a time with minimum cache polution */ | ||
| 162 | shrq $7, rcx | ||
| 163 | @@ -89,10 +97,18 @@ loop: | ||
| 164 | movq rdx, rcx | ||
| 165 | andq $127, rcx | ||
| 166 | rep movsb | ||
| 167 | +#if 1 | ||
| 168 | + movq 24 (rsp), rax | ||
| 169 | + movq 16 (rsp), r12 | ||
| 170 | + movq 8 (rsp), r13 | ||
| 171 | + movq 0 (rsp), r14 | ||
| 172 | + addq $32, rsp | ||
| 173 | +#else | ||
| 174 | movq -8 (rsp), rax | ||
| 175 | movq -16 (rsp), r12 | ||
| 176 | movq -24 (rsp), r13 | ||
| 177 | movq -32 (rsp), r14 | ||
| 178 | +#endif | ||
| 179 | ret | ||
| 180 | |||
| 181 | |||
| 182 | --- a/newlib/libc/machine/x86_64/x86_64mach.h.orig 2008-07-11 14:57:23.062269000 +0100 | ||
| 183 | +++ b/newlib/libc/machine/x86_64/x86_64mach.h 2008-07-11 14:58:01.262503000 +0100 | ||
| 184 | @@ -22,81 +22,81 @@ | ||
| 185 | |||
| 186 | #define REG(x) CONCAT1(__REG_PREFIX__, x) | ||
| 187 | |||
| 188 | -#define rax REG(rax) | ||
| 189 | -#define rbx REG(rbx) | ||
| 190 | -#define rcx REG(rcx) | ||
| 191 | -#define rdx REG(rdx) | ||
| 192 | -#define rsi REG(rsi) | ||
| 193 | -#define rdi REG(rdi) | ||
| 194 | -#define rbp REG(rbp) | ||
| 195 | -#define rsp REG(rsp) | ||
| 196 | - | ||
| 197 | -#define r8 REG(r8) | ||
| 198 | -#define r9 REG(r9) | ||
| 199 | -#define r10 REG(r10) | ||
| 200 | -#define r11 REG(r11) | ||
| 201 | -#define r12 REG(r12) | ||
| 202 | -#define r13 REG(r13) | ||
| 203 | -#define r14 REG(r14) | ||
| 204 | -#define r15 REG(r15) | ||
| 205 | - | ||
| 206 | -#define eax REG(eax) | ||
| 207 | -#define ebx REG(ebx) | ||
| 208 | -#define ecx REG(ecx) | ||
| 209 | -#define edx REG(edx) | ||
| 210 | -#define esi REG(esi) | ||
| 211 | -#define edi REG(edi) | ||
| 212 | -#define ebp REG(ebp) | ||
| 213 | -#define esp REG(esp) | ||
| 214 | - | ||
| 215 | -#define st0 REG(st) | ||
| 216 | -#define st1 REG(st(1)) | ||
| 217 | -#define st2 REG(st(2)) | ||
| 218 | -#define st3 REG(st(3)) | ||
| 219 | -#define st4 REG(st(4)) | ||
| 220 | -#define st5 REG(st(5)) | ||
| 221 | -#define st6 REG(st(6)) | ||
| 222 | -#define st7 REG(st(7)) | ||
| 223 | - | ||
| 224 | -#define ax REG(ax) | ||
| 225 | -#define bx REG(bx) | ||
| 226 | -#define cx REG(cx) | ||
| 227 | -#define dx REG(dx) | ||
| 228 | - | ||
| 229 | -#define ah REG(ah) | ||
| 230 | -#define bh REG(bh) | ||
| 231 | -#define ch REG(ch) | ||
| 232 | -#define dh REG(dh) | ||
| 233 | - | ||
| 234 | -#define al REG(al) | ||
| 235 | -#define bl REG(bl) | ||
| 236 | -#define cl REG(cl) | ||
| 237 | -#define dl REG(dl) | ||
| 238 | - | ||
| 239 | -#define sil REG(sil) | ||
| 240 | - | ||
| 241 | -#define mm1 REG(mm1) | ||
| 242 | -#define mm2 REG(mm2) | ||
| 243 | -#define mm3 REG(mm3) | ||
| 244 | -#define mm4 REG(mm4) | ||
| 245 | -#define mm5 REG(mm5) | ||
| 246 | -#define mm6 REG(mm6) | ||
| 247 | -#define mm7 REG(mm7) | ||
| 248 | - | ||
| 249 | -#define xmm0 REG(xmm0) | ||
| 250 | -#define xmm1 REG(xmm1) | ||
| 251 | -#define xmm2 REG(xmm2) | ||
| 252 | -#define xmm3 REG(xmm3) | ||
| 253 | -#define xmm4 REG(xmm4) | ||
| 254 | -#define xmm5 REG(xmm5) | ||
| 255 | -#define xmm6 REG(xmm6) | ||
| 256 | -#define xmm7 REG(xmm7) | ||
| 257 | - | ||
| 258 | -#define cr0 REG(cr0) | ||
| 259 | -#define cr1 REG(cr1) | ||
| 260 | -#define cr2 REG(cr2) | ||
| 261 | -#define cr3 REG(cr3) | ||
| 262 | -#define cr4 REG(cr4) | ||
| 263 | +#define rax %rax | ||
| 264 | +#define rbx %rbx | ||
| 265 | +#define rcx %rcx | ||
| 266 | +#define rdx %rdx | ||
| 267 | +#define rsi %rsi | ||
| 268 | +#define rdi %rdi | ||
| 269 | +#define rbp %rbp | ||
| 270 | +#define rsp %rsp | ||
| 271 | + | ||
| 272 | +#define r8 %r8 | ||
| 273 | +#define r9 %r9 | ||
| 274 | +#define r10 %r10 | ||
| 275 | +#define r11 %r11 | ||
| 276 | +#define r12 %r12 | ||
| 277 | +#define r13 %r13 | ||
| 278 | +#define r14 %r14 | ||
| 279 | +#define r15 %r15 | ||
| 280 | + | ||
| 281 | +#define eax %eax | ||
| 282 | +#define ebx %ebx | ||
| 283 | +#define ecx %ecx | ||
| 284 | +#define edx %edx | ||
| 285 | +#define esi %esi | ||
| 286 | +#define edi %edi | ||
| 287 | +#define ebp %ebp | ||
| 288 | +#define esp %esp | ||
| 289 | + | ||
| 290 | +#define st0 %st | ||
| 291 | +#define st1 %st(1) | ||
| 292 | +#define st2 %st(2) | ||
| 293 | +#define st3 %st(3) | ||
| 294 | +#define st4 %st(4) | ||
| 295 | +#define st5 %st(5) | ||
| 296 | +#define st6 %st(6) | ||
| 297 | +#define st7 %st(7) | ||
| 298 | + | ||
| 299 | +#define ax %ax | ||
| 300 | +#define bx %bx | ||
| 301 | +#define cx %cx | ||
| 302 | +#define dx %dx | ||
| 303 | + | ||
| 304 | +#define ah %ah | ||
| 305 | +#define bh %bh | ||
| 306 | +#define ch %ch | ||
| 307 | +#define dh %dh | ||
| 308 | + | ||
| 309 | +#define al %al | ||
| 310 | +#define bl %bl | ||
| 311 | +#define cl %cl | ||
| 312 | +#define dl %dl | ||
| 313 | + | ||
| 314 | +#define sil %sil | ||
| 315 | + | ||
| 316 | +#define mm1 %mm1 | ||
| 317 | +#define mm2 %mm2 | ||
| 318 | +#define mm3 %mm3 | ||
| 319 | +#define mm4 %mm4 | ||
| 320 | +#define mm5 %mm5 | ||
| 321 | +#define mm6 %mm6 | ||
| 322 | +#define mm7 %mm7 | ||
| 323 | + | ||
| 324 | +#define xmm0 %xmm0 | ||
| 325 | +#define xmm1 %xmm1 | ||
| 326 | +#define xmm2 %xmm2 | ||
| 327 | +#define xmm3 %xmm3 | ||
| 328 | +#define xmm4 %xmm4 | ||
| 329 | +#define xmm5 %xmm5 | ||
| 330 | +#define xmm6 %xmm6 | ||
| 331 | +#define xmm7 %xmm7 | ||
| 332 | + | ||
| 333 | +#define cr0 %cr0 | ||
| 334 | +#define cr1 %cr1 | ||
| 335 | +#define cr2 %cr2 | ||
| 336 | +#define cr3 %cr3 | ||
| 337 | +#define cr4 %cr4 | ||
| 338 | |||
| 339 | #ifdef _I386MACH_NEED_SOTYPE_FUNCTION | ||
| 340 | #define SOTYPE_FUNCTION(sym) .type SYM(sym),@function | ||
| 341 | --- a/newlib/libc/machine/x86_64/memcpy.S.orig 2008-07-11 15:12:27.494693000 +0100 | ||
| 342 | +++ b/newlib/libc/machine/x86_64/memcpy.S 2008-07-11 15:12:29.448706000 +0100 | ||
| 343 | @@ -60,14 +60,14 @@ | ||
| 344 | movq 48 (rsi), r13 | ||
| 345 | movq 56 (rsi), r14 | ||
| 346 | |||
| 347 | - movntiq rax, (rdi) | ||
| 348 | - movntiq r8 , 8 (rdi) | ||
| 349 | - movntiq r9 , 16 (rdi) | ||
| 350 | - movntiq r10, 24 (rdi) | ||
| 351 | - movntiq r11, 32 (rdi) | ||
| 352 | - movntiq r12, 40 (rdi) | ||
| 353 | - movntiq r13, 48 (rdi) | ||
| 354 | - movntiq r14, 56 (rdi) | ||
| 355 | + movnti rax, (rdi) | ||
| 356 | + movnti r8 , 8 (rdi) | ||
| 357 | + movnti r9 , 16 (rdi) | ||
| 358 | + movnti r10, 24 (rdi) | ||
| 359 | + movnti r11, 32 (rdi) | ||
| 360 | + movnti r12, 40 (rdi) | ||
| 361 | + movnti r13, 48 (rdi) | ||
| 362 | + movnti r14, 56 (rdi) | ||
| 363 | |||
| 364 | movq 64 (rsi), rax | ||
| 365 | movq 72 (rsi), r8 | ||
| 366 | @@ -78,14 +78,14 @@ | ||
| 367 | movq 112 (rsi), r13 | ||
| 368 | movq 120 (rsi), r14 | ||
| 369 | |||
| 370 | - movntiq rax, 64 (rdi) | ||
| 371 | - movntiq r8 , 72 (rdi) | ||
| 372 | - movntiq r9 , 80 (rdi) | ||
| 373 | - movntiq r10, 88 (rdi) | ||
| 374 | - movntiq r11, 96 (rdi) | ||
| 375 | - movntiq r12, 104 (rdi) | ||
| 376 | - movntiq r13, 112 (rdi) | ||
| 377 | - movntiq r14, 120 (rdi) | ||
| 378 | + movnti rax, 64 (rdi) | ||
| 379 | + movnti r8 , 72 (rdi) | ||
| 380 | + movnti r9 , 80 (rdi) | ||
| 381 | + movnti r10, 88 (rdi) | ||
| 382 | + movnti r11, 96 (rdi) | ||
| 383 | + movnti r12, 104 (rdi) | ||
| 384 | + movnti r13, 112 (rdi) | ||
| 385 | + movnti r14, 120 (rdi) | ||
| 386 | |||
| 387 | leaq 128 (rsi), rsi | ||
| 388 | leaq 128 (rdi), rdi | ||
| 389 | --- a/newlib/libc/machine/i386/i386mach.h 2000-08-28 18:50:06.000000000 +0100 | ||
| 390 | +++ b/newlib/libc/machine/i386/i386mach.h 2008-07-11 15:17:13.874409000 +0100 | ||
| 391 | @@ -27,46 +27,46 @@ | ||
| 392 | |||
| 393 | #define REG(x) CONCAT1(__REG_PREFIX__, x) | ||
| 394 | |||
| 395 | -#define eax REG(eax) | ||
| 396 | -#define ebx REG(ebx) | ||
| 397 | -#define ecx REG(ecx) | ||
| 398 | -#define edx REG(edx) | ||
| 399 | -#define esi REG(esi) | ||
| 400 | -#define edi REG(edi) | ||
| 401 | -#define ebp REG(ebp) | ||
| 402 | -#define esp REG(esp) | ||
| 403 | - | ||
| 404 | -#define st0 REG(st) | ||
| 405 | -#define st1 REG(st(1)) | ||
| 406 | -#define st2 REG(st(2)) | ||
| 407 | -#define st3 REG(st(3)) | ||
| 408 | -#define st4 REG(st(4)) | ||
| 409 | -#define st5 REG(st(5)) | ||
| 410 | -#define st6 REG(st(6)) | ||
| 411 | -#define st7 REG(st(7)) | ||
| 412 | - | ||
| 413 | -#define ax REG(ax) | ||
| 414 | -#define bx REG(bx) | ||
| 415 | -#define cx REG(cx) | ||
| 416 | -#define dx REG(dx) | ||
| 417 | - | ||
| 418 | -#define ah REG(ah) | ||
| 419 | -#define bh REG(bh) | ||
| 420 | -#define ch REG(ch) | ||
| 421 | -#define dh REG(dh) | ||
| 422 | - | ||
| 423 | -#define al REG(al) | ||
| 424 | -#define bl REG(bl) | ||
| 425 | -#define cl REG(cl) | ||
| 426 | -#define dl REG(dl) | ||
| 427 | - | ||
| 428 | -#define mm1 REG(mm1) | ||
| 429 | -#define mm2 REG(mm2) | ||
| 430 | -#define mm3 REG(mm3) | ||
| 431 | -#define mm4 REG(mm4) | ||
| 432 | -#define mm5 REG(mm5) | ||
| 433 | -#define mm6 REG(mm6) | ||
| 434 | -#define mm7 REG(mm7) | ||
| 435 | +#define eax %eax | ||
| 436 | +#define ebx %ebx | ||
| 437 | +#define ecx %ecx | ||
| 438 | +#define edx %edx | ||
| 439 | +#define esi %esi | ||
| 440 | +#define edi %edi | ||
| 441 | +#define ebp %ebp | ||
| 442 | +#define esp %esp | ||
| 443 | + | ||
| 444 | +#define st0 %st | ||
| 445 | +#define st1 %st(1) | ||
| 446 | +#define st2 %st(2) | ||
| 447 | +#define st3 %st(3) | ||
| 448 | +#define st4 %st(4) | ||
| 449 | +#define st5 %st(5) | ||
| 450 | +#define st6 %st(6) | ||
| 451 | +#define st7 %st(7) | ||
| 452 | + | ||
| 453 | +#define ax %ax | ||
| 454 | +#define bx %bx | ||
| 455 | +#define cx %cx | ||
| 456 | +#define dx %dx | ||
| 457 | + | ||
| 458 | +#define ah %ah | ||
| 459 | +#define bh %bh | ||
| 460 | +#define ch %ch | ||
| 461 | +#define dh %dh | ||
| 462 | + | ||
| 463 | +#define al %al | ||
| 464 | +#define bl %bl | ||
| 465 | +#define cl %cl | ||
| 466 | +#define dl %dl | ||
| 467 | + | ||
| 468 | +#define mm1 %mm1 | ||
| 469 | +#define mm2 %mm2 | ||
| 470 | +#define mm3 %mm3 | ||
| 471 | +#define mm4 %mm4 | ||
| 472 | +#define mm5 %mm5 | ||
| 473 | +#define mm6 %mm6 | ||
| 474 | +#define mm7 %mm7 | ||
| 475 | |||
| 476 | #ifdef _I386MACH_NEED_SOTYPE_FUNCTION | ||
| 477 | #define SOTYPE_FUNCTION(sym) .type SYM(sym),@function | ||
| 478 | --- a/newlib/libc/machine/x86_64/memset.S 2007-08-28 22:56:49.000000000 +0100 | ||
| 479 | +++ b/newlib/libc/machine/x86_64/memset.S 2008-07-11 15:16:59.098320000 +0100 | ||
| 480 | @@ -40,22 +40,22 @@ | ||
| 481 | |||
| 482 | .p2align 4 | ||
| 483 | loop: | ||
| 484 | - movntiq rax, (rdi) | ||
| 485 | - movntiq rax, 8 (rdi) | ||
| 486 | - movntiq rax, 16 (rdi) | ||
| 487 | - movntiq rax, 24 (rdi) | ||
| 488 | - movntiq rax, 32 (rdi) | ||
| 489 | - movntiq rax, 40 (rdi) | ||
| 490 | - movntiq rax, 48 (rdi) | ||
| 491 | - movntiq rax, 56 (rdi) | ||
| 492 | - movntiq rax, 64 (rdi) | ||
| 493 | - movntiq rax, 72 (rdi) | ||
| 494 | - movntiq rax, 80 (rdi) | ||
| 495 | - movntiq rax, 88 (rdi) | ||
| 496 | - movntiq rax, 96 (rdi) | ||
| 497 | - movntiq rax, 104 (rdi) | ||
| 498 | - movntiq rax, 112 (rdi) | ||
| 499 | - movntiq rax, 120 (rdi) | ||
| 500 | + movnti rax, (rdi) | ||
| 501 | + movnti rax, 8 (rdi) | ||
| 502 | + movnti rax, 16 (rdi) | ||
| 503 | + movnti rax, 24 (rdi) | ||
| 504 | + movnti rax, 32 (rdi) | ||
| 505 | + movnti rax, 40 (rdi) | ||
| 506 | + movnti rax, 48 (rdi) | ||
| 507 | + movnti rax, 56 (rdi) | ||
| 508 | + movnti rax, 64 (rdi) | ||
| 509 | + movnti rax, 72 (rdi) | ||
| 510 | + movnti rax, 80 (rdi) | ||
| 511 | + movnti rax, 88 (rdi) | ||
| 512 | + movnti rax, 96 (rdi) | ||
| 513 | + movnti rax, 104 (rdi) | ||
| 514 | + movnti rax, 112 (rdi) | ||
| 515 | + movnti rax, 120 (rdi) | ||
| 516 | |||
| 517 | leaq 128 (rdi), rdi | ||
| 518 | |||
| 519 | --- a/newlib/libm/machine/i386/i386mach.h.orig 2008-07-11 15:30:37.367227000 +0100 | ||
| 520 | +++ b/newlib/libm/machine/i386/i386mach.h 2008-07-11 15:30:55.232337000 +0100 | ||
| 521 | @@ -27,46 +27,46 @@ | ||
| 522 | |||
| 523 | #define REG(x) CONCAT1(__REG_PREFIX__, x) | ||
| 524 | |||
| 525 | -#define eax REG(eax) | ||
| 526 | -#define ebx REG(ebx) | ||
| 527 | -#define ecx REG(ecx) | ||
| 528 | -#define edx REG(edx) | ||
| 529 | -#define esi REG(esi) | ||
| 530 | -#define edi REG(edi) | ||
| 531 | -#define ebp REG(ebp) | ||
| 532 | -#define esp REG(esp) | ||
| 533 | - | ||
| 534 | -#define st0 REG(st) | ||
| 535 | -#define st1 REG(st(1)) | ||
| 536 | -#define st2 REG(st(2)) | ||
| 537 | -#define st3 REG(st(3)) | ||
| 538 | -#define st4 REG(st(4)) | ||
| 539 | -#define st5 REG(st(5)) | ||
| 540 | -#define st6 REG(st(6)) | ||
| 541 | -#define st7 REG(st(7)) | ||
| 542 | - | ||
| 543 | -#define ax REG(ax) | ||
| 544 | -#define bx REG(bx) | ||
| 545 | -#define cx REG(cx) | ||
| 546 | -#define dx REG(dx) | ||
| 547 | - | ||
| 548 | -#define ah REG(ah) | ||
| 549 | -#define bh REG(bh) | ||
| 550 | -#define ch REG(ch) | ||
| 551 | -#define dh REG(dh) | ||
| 552 | - | ||
| 553 | -#define al REG(al) | ||
| 554 | -#define bl REG(bl) | ||
| 555 | -#define cl REG(cl) | ||
| 556 | -#define dl REG(dl) | ||
| 557 | - | ||
| 558 | -#define mm1 REG(mm1) | ||
| 559 | -#define mm2 REG(mm2) | ||
| 560 | -#define mm3 REG(mm3) | ||
| 561 | -#define mm4 REG(mm4) | ||
| 562 | -#define mm5 REG(mm5) | ||
| 563 | -#define mm6 REG(mm6) | ||
| 564 | -#define mm7 REG(mm7) | ||
| 565 | +#define eax %eax | ||
| 566 | +#define ebx %ebx | ||
| 567 | +#define ecx %ecx | ||
| 568 | +#define edx %edx | ||
| 569 | +#define esi %esi | ||
| 570 | +#define edi %edi | ||
| 571 | +#define ebp %ebp | ||
| 572 | +#define esp %esp | ||
| 573 | + | ||
| 574 | +#define st0 %st | ||
| 575 | +#define st1 %st(1) | ||
| 576 | +#define st2 %st(2) | ||
| 577 | +#define st3 %st(3) | ||
| 578 | +#define st4 %st(4) | ||
| 579 | +#define st5 %st(5) | ||
| 580 | +#define st6 %st(6) | ||
| 581 | +#define st7 %st(7) | ||
| 582 | + | ||
| 583 | +#define ax %ax | ||
| 584 | +#define bx %bx | ||
| 585 | +#define cx %cx | ||
| 586 | +#define dx %dx | ||
| 587 | + | ||
| 588 | +#define ah %ah | ||
| 589 | +#define bh %bh | ||
| 590 | +#define ch %ch | ||
| 591 | +#define dh %dh | ||
| 592 | + | ||
| 593 | +#define al %al | ||
| 594 | +#define bl %bl | ||
| 595 | +#define cl %cl | ||
| 596 | +#define dl %dl | ||
| 597 | + | ||
| 598 | +#define mm1 %mm1 | ||
| 599 | +#define mm2 %mm2 | ||
| 600 | +#define mm3 %mm3 | ||
| 601 | +#define mm4 %mm4 | ||
| 602 | +#define mm5 %mm5 | ||
| 603 | +#define mm6 %mm6 | ||
| 604 | +#define mm7 %mm7 | ||
| 605 | |||
| 606 | #ifdef _I386MACH_NEED_SOTYPE_FUNCTION | ||
| 607 | #define SOTYPE_FUNCTION(sym) .type SYM(sym),@function | ||
| 608 | |||
| 609 | |||
| 610 | We want to have a 64bit offsets libc even on 32bit platforms. | ||
| 611 | |||
| 612 | --- ./newlib/configure.host.orig 2008-08-07 16:01:17.801946000 +0100 | ||
| 613 | +++ ./newlib/configure.host 2008-08-07 16:01:34.181064000 +0100 | ||
| 614 | @@ -317,6 +317,8 @@ | ||
| 615 | oext=lo | ||
| 616 | lpfx= | ||
| 617 | aext=la ;; | ||
| 618 | + i[34567]86-xen-elf) | ||
| 619 | + stdio64_dir=stdio64 ;; | ||
| 620 | *) ;; #shared library not supported for ${host} | ||
| 621 | esac | ||
| 622 | |||
| 623 | --- a/newlib/libc/include/sys/_types.h.orig 2008-08-07 15:22:44.925008000 +0100 | ||
| 624 | +++ b/newlib/libc/include/sys/_types.h 2008-08-07 15:22:50.824044000 +0100 | ||
| 625 | @@ -13,8 +13,12 @@ | ||
| 626 | #include <sys/lock.h> | ||
| 627 | |||
| 628 | #ifndef __off_t_defined | ||
| 629 | +#ifdef __MINIOS__ | ||
| 630 | +typedef long long _off_t; | ||
| 631 | +#else | ||
| 632 | typedef long _off_t; | ||
| 633 | #endif | ||
| 634 | +#endif | ||
| 635 | |||
| 636 | #if defined(__rtems__) | ||
| 637 | /* device numbers are 32-bit major and and 32-bit minor */ | ||
| 638 | --- ./newlib/libc/include/sys/config.h.orig 2008-08-07 14:43:25.915866000 +0100 | ||
| 639 | +++ ./newlib/libc/include/sys/config.h 2008-08-07 14:44:13.508154000 +0100 | ||
| 640 | @@ -69,6 +69,10 @@ | ||
| 641 | /* we use some glibc header files so turn on glibc large file feature */ | ||
| 642 | #define _LARGEFILE64_SOURCE 1 | ||
| 643 | #endif | ||
| 644 | +#ifdef __MINIOS__ | ||
| 645 | +#define __LARGE64_FILES 1 | ||
| 646 | +#define _LARGEFILE64_SOURCE 1 | ||
| 647 | +#endif | ||
| 648 | #endif | ||
| 649 | |||
| 650 | #ifndef __DYNAMIC_REENT__ | ||
| 651 | --- ./newlib/libc/include/sys/_default_fcntl.h.orig 2008-08-07 15:08:22.377836000 +0100 | ||
| 652 | +++ ./newlib/libc/include/sys/_default_fcntl.h 2008-08-07 15:08:31.651890000 +0100 | ||
| 653 | @@ -170,7 +170,11 @@ | ||
| 654 | /* Provide _<systemcall> prototypes for functions provided by some versions | ||
| 655 | of newlib. */ | ||
| 656 | #ifdef _COMPILING_NEWLIB | ||
| 657 | -extern int _open _PARAMS ((const char *, int, ...)); | ||
| 658 | +extern int _open _PARAMS ((const char *, int, ...)) | ||
| 659 | +#ifdef __MINIOS__ | ||
| 660 | + asm("open64") | ||
| 661 | +#endif | ||
| 662 | + ; | ||
| 663 | extern int _fcntl _PARAMS ((int, int, ...)); | ||
| 664 | #ifdef __LARGE64_FILES | ||
| 665 | extern int _open64 _PARAMS ((const char *, int, ...)); | ||
| 666 | --- ./newlib/libc/include/sys/unistd.h.orig 2008-08-07 15:09:36.449280000 +0100 | ||
| 667 | +++ ./newlib/libc/include/sys/unistd.h 2008-08-07 15:09:51.210370000 +0100 | ||
| 668 | @@ -101,7 +101,11 @@ | ||
| 669 | int _EXFUN(link, (const char *__path1, const char *__path2 )); | ||
| 670 | int _EXFUN(nice, (int __nice_value )); | ||
| 671 | #if !defined(__INSIDE_CYGWIN__) | ||
| 672 | -off_t _EXFUN(lseek, (int __fildes, off_t __offset, int __whence )); | ||
| 673 | +off_t _EXFUN(lseek, (int __fildes, off_t __offset, int __whence )) | ||
| 674 | +#ifdef __MINIOS__ | ||
| 675 | + asm("lseek64") | ||
| 676 | +#endif | ||
| 677 | + ; | ||
| 678 | #endif | ||
| 679 | #if defined(__SPU__) | ||
| 680 | #define F_ULOCK 0 | ||
| 681 | --- ./newlib/libc/include/sys/stat.h.orig 2008-08-07 16:08:50.495116000 +0100 | ||
| 682 | +++ ./newlib/libc/include/sys/stat.h 2008-08-07 16:10:21.799753000 +0100 | ||
| 683 | @@ -49,6 +49,9 @@ | ||
| 684 | long st_spare4[2]; | ||
| 685 | #endif | ||
| 686 | }; | ||
| 687 | +#ifdef __MINIOS__ | ||
| 688 | +#define stat64 stat | ||
| 689 | +#endif | ||
| 690 | #endif | ||
| 691 | |||
| 692 | #define _IFMT 0170000 /* type of file */ | ||
| 693 | @@ -132,7 +135,11 @@ | ||
| 694 | /* Provide prototypes for most of the _<systemcall> names that are | ||
| 695 | provided in newlib for some compilers. */ | ||
| 696 | #ifdef _COMPILING_NEWLIB | ||
| 697 | -int _EXFUN(_fstat,( int __fd, struct stat *__sbuf )); | ||
| 698 | +int _EXFUN(_fstat,( int __fd, struct stat *__sbuf )) | ||
| 699 | +#ifdef __MINIOS__ | ||
| 700 | + asm("fstat64") | ||
| 701 | +#endif | ||
| 702 | + ; | ||
| 703 | int _EXFUN(_stat,( const char *__path, struct stat *__sbuf )); | ||
| 704 | #ifdef __LARGE64_FILES | ||
| 705 | struct stat64; | ||
| 706 | --- ./newlib/libc/include/_syslist.h.orig 2008-08-07 16:24:19.122605000 +0100 | ||
| 707 | +++ ./newlib/libc/include/_syslist.h 2008-08-07 16:24:21.548628000 +0100 | ||
| 708 | @@ -14,6 +14,7 @@ | ||
| 709 | #define _kill kill | ||
| 710 | #define _link link | ||
| 711 | #define _lseek lseek | ||
| 712 | +#define _lseek64 lseek64 | ||
| 713 | #define _open open | ||
| 714 | #define _read read | ||
| 715 | #define _sbrk sbrk | ||
| 716 | --- a/newlib/libc/include/reent.h.orig 2008-08-07 16:28:49.846502000 +0100 | ||
| 717 | +++ b/newlib/libc/include/reent.h 2008-08-07 16:29:02.096586000 +0100 | ||
| 718 | @@ -87,6 +87,9 @@ | ||
| 719 | #if defined(__CYGWIN__) && defined(_COMPILING_NEWLIB) | ||
| 720 | #define stat64 __stat64 | ||
| 721 | #endif | ||
| 722 | +#if defined(__MINIOS__) | ||
| 723 | +#define stat64 stat | ||
| 724 | +#endif | ||
| 725 | |||
| 726 | struct stat64; | ||
| 727 | |||
diff --git a/recipes-extended/xen/newlib.inc b/recipes-extended/xen/newlib.inc new file mode 100644 index 00000000..1fdbd0aa --- /dev/null +++ b/recipes-extended/xen/newlib.inc | |||
| @@ -0,0 +1,64 @@ | |||
| 1 | # Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com> | ||
| 2 | # Released under the MIT license (see COPYING.MIT for the terms) | ||
| 3 | |||
| 4 | require stubdom.inc | ||
| 5 | |||
| 6 | CPPFLAGS_INCLUDE_DIR = "-isystem `${HOST_PREFIX}gcc -print-file-name=include`" | ||
| 7 | STUBDOM_CFLAGS += "-D_I386MACH_ALLOW_HW_INTERRUPTS" | ||
| 8 | |||
| 9 | export ac_cv_path_CC_FOR_TARGET="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT} ${STUBDOM_CPPFLAGS} ${STUBDOM_CFLAGS}" | ||
| 10 | export CC_FOR_TARGET="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT} ${STUBDOM_CPPFLAGS} ${STUBDOM_CFLAGS}" | ||
| 11 | |||
| 12 | export ac_cv_path_CXX_FOR_TARGET="${HOST_PREFIX}g++ --sysroot=${RECIPE_SYSROOT}" | ||
| 13 | export CXX_FOR_TARGET="${HOST_PREFIX}g++ --sysroot=${RECIPE_SYSROOT}" | ||
| 14 | |||
| 15 | export ac_cv_path_CPP_FOR_TARGET="${HOST_PREFIX}gcc -E --sysroot=${RECIPE_SYSROOT}" | ||
| 16 | export CPP_FOR_TARGET="${HOST_PREFIX}gcc -E --sysroot=${RECIPE_SYSROOT}" | ||
| 17 | |||
| 18 | export ac_cv_path_LD_FOR_TARGET="${HOST_PREFIX}ld --sysroot=${RECIPE_SYSROOT}" | ||
| 19 | export LD_FOR_TARGET="${HOST_PREFIX}ld --sysroot=${RECIPE_SYSROOT}" | ||
| 20 | |||
| 21 | export ac_cv_path_AS_FOR_TARGET="${HOST_PREFIX}as" | ||
| 22 | export AS_FOR_TARGET="${HOST_PREFIX}as" | ||
| 23 | |||
| 24 | export ac_cv_path_AR_FOR_TARGET="${HOST_PREFIX}ar" | ||
| 25 | export AR_FOR_TARGET="${HOST_PREFIX}ar" | ||
| 26 | |||
| 27 | export ac_cv_path_NM_FOR_TARGET="${HOST_PREFIX}nm" | ||
| 28 | export NM_FOR_TARGET="${HOST_PREFIX}nm" | ||
| 29 | |||
| 30 | export ac_cv_path_RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib" | ||
| 31 | export RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib" | ||
| 32 | |||
| 33 | export ac_cv_path_OBJDUMP_FOR_TARGET="${HOST_PREFIX}objdump" | ||
| 34 | export OBJDUMP_FOR_TARGET="${HOST_PREFIX}objdump" | ||
| 35 | |||
| 36 | export ac_cv_path_OBJCOPY_FOR_TARGET="${HOST_PREFIX}objcopy" | ||
| 37 | export OBJCOPY_FOR_TARGET="${HOST_PREFIX}objcopy" | ||
| 38 | |||
| 39 | export ac_cv_path_STRIP_FOR_TARGET="${HOST_PREFIX}strip" | ||
| 40 | export STRIP_FOR_TARGET="${HOST_PREFIX}strip" | ||
| 41 | |||
| 42 | export ac_cv_path_STRINGS_FOR_TARGET="${HOST_PREFIX}strings" | ||
| 43 | export STRINGS_FOR_TARGET="${HOST_PREFIX}strings" | ||
| 44 | |||
| 45 | export ac_cv_path_READELF_FOR_TARGET="${HOST_PREFIX}readelf" | ||
| 46 | export READELF_FOR_TARGET="${HOST_PREFIX}readelf" | ||
| 47 | |||
| 48 | do_configure() { | ||
| 49 | ${S}/configure --verbose --prefix=${prefix} --target=${GNU_TARGET_ARCH}-xen-elf --enable-newlib-io-long-long --disable-multilib | ||
| 50 | find ${S} -type f | xargs perl -i.bak -pe 's/\b_(tzname|daylight|timezone)\b/$1/g' | ||
| 51 | } | ||
| 52 | |||
| 53 | do_compile() { | ||
| 54 | ${MAKE} | ||
| 55 | } | ||
| 56 | |||
| 57 | do_install() { | ||
| 58 | ${MAKE} DESTDIR=${D} install | ||
| 59 | rm -rf ${D}/cross-root-${GNU_TARGET_ARCH}/share | ||
| 60 | rm -rf ${D}/cross-root-${GNU_TARGET_ARCH}/info | ||
| 61 | install -m 644 `${HOST_PREFIX}gcc -print-file-name=include`/stdarg.h -t ${D}/${includedir} | ||
| 62 | install -m 644 `${HOST_PREFIX}gcc -print-file-name=include`/stddef.h -t ${D}/${includedir} | ||
| 63 | install -m 644 `${HOST_PREFIX}gcc -print-file-name=include`/stdbool.h -t ${D}/${includedir} | ||
| 64 | } | ||
diff --git a/recipes-extended/xen/newlib_1.16.0.bb b/recipes-extended/xen/newlib_1.16.0.bb new file mode 100644 index 00000000..60672bea --- /dev/null +++ b/recipes-extended/xen/newlib_1.16.0.bb | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | # Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com> | ||
| 2 | # Released under the MIT license (see COPYING.MIT for the terms) | ||
| 3 | |||
| 4 | DESCRIPTION = "Newlib is a C library intended for use on embedded systems." | ||
| 5 | HOMEPAGE = "http://sourceware.org/newlib" | ||
| 6 | LICENSE = "GPLv2 & LGPLv3 & GPLv3 & LGPLv2" | ||
| 7 | LIC_FILES_CHKSUM = "file://COPYING.NEWLIB;md5=950f50b290e8fcf7a2d3fff61775de9b" | ||
| 8 | |||
| 9 | # this is the hash of version tag 1_16_0 | ||
| 10 | SRCREV_newlib = "07b4b67a88f386ce4716a14e0ff2c2bce992b985" | ||
| 11 | SRC_URI = "\ | ||
| 12 | git://sourceware.org/git/newlib-cygwin.git;protocol=git;nobranch=1;destsuffix=newlib;name=newlib \ | ||
| 13 | file://newlib.patch \ | ||
| 14 | file://newlib-chk.patch \ | ||
| 15 | file://newlib-stdint-size_max-fix-from-1.17.0.patch \ | ||
| 16 | " | ||
| 17 | |||
| 18 | S="${WORKDIR}/newlib" | ||
| 19 | B="${WORKDIR}/build" | ||
| 20 | |||
| 21 | require newlib.inc | ||
