[meta-virtualization] [PATCH 3/7] xen: Newlib recipe and patches for Xen stubdoms

Bruce Ashfield bruce.ashfield at gmail.com
Thu Mar 8 13:05:50 PST 2018


On Mon, Mar 5, 2018 at 10:35 AM, Kurt Bodiker
<kurt.bodiker at braintrust-us.com> wrote:
> From: kebodiker <kurt.bodiker at braintrust-us.com>
>
> 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 at braintrust-us.com>
> ---
>  recipes-extended/xen/files/newlib-chk.patch        | 155 +++++
>  .../newlib-stdint-size_max-fix-from-1.17.0.patch   |  16 +
>  recipes-extended/xen/files/newlib.patch            | 727 +++++++++++++++++++++
>  recipes-extended/xen/newlib.inc                    |  64 ++
>  recipes-extended/xen/newlib_1.16.0.bb              |  19 +
>  5 files changed, 981 insertions(+)
>  create mode 100644 recipes-extended/xen/files/newlib-chk.patch
>  create mode 100644 recipes-extended/xen/files/newlib-stdint-size_max-fix-from-1.17.0.patch
>  create mode 100644 recipes-extended/xen/files/newlib.patch
>  create mode 100644 recipes-extended/xen/newlib.inc
>  create mode 100644 recipes-extended/xen/newlib_1.16.0.bb
>
> diff --git a/recipes-extended/xen/files/newlib-chk.patch b/recipes-extended/xen/files/newlib-chk.patch
> new file mode 100644
> index 0000000..848dbd5
> --- /dev/null
> +++ b/recipes-extended/xen/files/newlib-chk.patch
> @@ -0,0 +1,155 @@
> +--- newlib/libc/stdio/fprintf_chk.c    1969-12-31 19:00:00.000000000 -0500
> ++++ newlib/libc/stdio/fprintf_chk.c    2009-02-26 19:02:53.000000000 -0500
> +@@ -0,0 +1,21 @@
> ++#include <stdarg.h>
> ++#include <stdio.h>
> ++
> ++/*
> ++ * Stub implementation of __fprintf_chk adapted from glibc 2.7.  This
> ++ * doesn't actually implement any buffer overflow protection.  It just makes
> ++ * the linker happy :)
> ++*/
> ++int
> ++__fprintf_chk (FILE *fp, int flag, const char *format, ...)
> ++{
> ++  va_list ap;
> ++  int done;
> ++
> ++  va_start (ap, format);
> ++  done = vfprintf (fp, format, ap);
> ++  va_end (ap);
> ++
> ++  return done;
> ++}
> ++
> +--- newlib/libc/stdio/Makefile.am      2007-08-02 16:23:06.000000000 -0400
> ++++ newlib/libc/stdio/Makefile.am      2009-02-26 18:14:53.000000000 -0500
> +@@ -20,6 +20,7 @@
> +       flags.c                 \
> +       fopen.c                 \
> +       fprintf.c                       \
> ++      fprintf_chk.c           \
> +       fputc.c                 \
> +       fputs.c                 \
> +       fread.c                 \
> +@@ -65,6 +66,7 @@
> +       sniprintf.c                     \
> +       snprintf.c                      \
> +       sprintf.c                       \
> ++      sprintf_chk.c                   \
> +       sscanf.c                        \
> +       stdio.c                 \
> +       tmpfile.c                       \
> +--- newlib/libc/stdio/Makefile.in      2007-12-19 17:36:38.000000000 -0500
> ++++ newlib/libc/stdio/Makefile.in      2009-02-26 18:43:52.000000000 -0500
> +@@ -63,7 +63,8 @@
> +       lib_a-fgets.$(OBJEXT) lib_a-fileno.$(OBJEXT) \
> +       lib_a-findfp.$(OBJEXT) lib_a-fiprintf.$(OBJEXT) \
> +       lib_a-flags.$(OBJEXT) lib_a-fopen.$(OBJEXT) \
> +-      lib_a-fprintf.$(OBJEXT) lib_a-fputc.$(OBJEXT) \
> ++      lib_a-fprintf.$(OBJEXT) lib_a-fprintf_chk.$(OBJEXT) \
> ++      lib_a-fputc.$(OBJEXT) \
> +       lib_a-fputs.$(OBJEXT) lib_a-fread.$(OBJEXT) \
> +       lib_a-freopen.$(OBJEXT) lib_a-fscanf.$(OBJEXT) \
> +       lib_a-fiscanf.$(OBJEXT) lib_a-fseek.$(OBJEXT) \
> +@@ -86,6 +87,7 @@
> +       lib_a-setvbuf.$(OBJEXT) lib_a-siprintf.$(OBJEXT) \
> +       lib_a-siscanf.$(OBJEXT) lib_a-sniprintf.$(OBJEXT) \
> +       lib_a-snprintf.$(OBJEXT) lib_a-sprintf.$(OBJEXT) \
> ++      lib_a-sprintf_chk.$(OBJEXT) \
> +       lib_a-sscanf.$(OBJEXT) lib_a-stdio.$(OBJEXT) \
> +       lib_a-tmpfile.$(OBJEXT) lib_a-tmpnam.$(OBJEXT) \
> +       lib_a-ungetc.$(OBJEXT) lib_a-vdiprintf.$(OBJEXT) \
> +@@ -122,15 +124,15 @@
> + LTLIBRARIES = $(noinst_LTLIBRARIES)
> + am__objects_4 = clearerr.lo fclose.lo fdopen.lo feof.lo ferror.lo \
> +       fflush.lo fgetc.lo fgetpos.lo fgets.lo fileno.lo findfp.lo \
> +-      fiprintf.lo flags.lo fopen.lo fprintf.lo fputc.lo fputs.lo \
> +-      fread.lo freopen.lo fscanf.lo fiscanf.lo fseek.lo fsetpos.lo \
> ++      fiprintf.lo flags.lo fopen.lo fprintf.lo fprintf_chk.lo fputc.lo \
> ++      fputs.lo fread.lo freopen.lo fscanf.lo fiscanf.lo fseek.lo fsetpos.lo \
> +       ftell.lo fvwrite.lo fwalk.lo fwrite.lo getc.lo getchar.lo \
> +       getc_u.lo getchar_u.lo getdelim.lo getline.lo gets.lo \
> +       iprintf.lo iscanf.lo makebuf.lo perror.lo printf.lo putc.lo \
> +       putchar.lo putc_u.lo putchar_u.lo puts.lo refill.lo remove.lo \
> +       rename.lo rewind.lo rget.lo scanf.lo sccl.lo setbuf.lo \
> +       setbuffer.lo setlinebuf.lo setvbuf.lo siprintf.lo siscanf.lo \
> +-      sniprintf.lo snprintf.lo sprintf.lo sscanf.lo stdio.lo \
> ++      sniprintf.lo snprintf.lo sprintf.lo sprintf_chk.lo sscanf.lo stdio.lo \
> +       tmpfile.lo tmpnam.lo ungetc.lo vdiprintf.lo vdprintf.lo \
> +       viprintf.lo viscanf.lo vprintf.lo vscanf.lo vsiprintf.lo \
> +       vsiscanf.lo vsnprintf.lo vsniprintf.lo vsprintf.lo vsscanf.lo \
> +@@ -344,6 +346,7 @@
> +       flags.c                 \
> +       fopen.c                 \
> +       fprintf.c                       \
> ++      fprintf_chk.c                   \
> +       fputc.c                 \
> +       fputs.c                 \
> +       fread.c                 \
> +@@ -389,6 +392,7 @@
> +       sniprintf.c                     \
> +       snprintf.c                      \
> +       sprintf.c                       \
> ++      sprintf_chk.c                   \
> +       sscanf.c                        \
> +       stdio.c                 \
> +       tmpfile.c                       \
> +@@ -508,6 +512,7 @@
> +       siprintf.def            \
> +       siscanf.def             \
> +       sprintf.def             \
> ++      sprintf_chk.def         \
> +       sscanf.def              \
> +       tmpfile.def             \
> +       tmpnam.def              \
> +@@ -678,6 +683,12 @@
> + lib_a-fprintf.obj: fprintf.c
> +       $(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`
> +
> ++lib_a-fprintf_chk.o: fprintf_chk.c
> ++      $(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
> ++
> ++lib_a-fprintf_chk.obj: fprintf_chk.c
> ++      $(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`
> ++
> + lib_a-fputc.o: fputc.c
> +       $(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
> +
> +@@ -948,6 +959,12 @@
> + lib_a-sprintf.obj: sprintf.c
> +       $(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`
> +
> ++lib_a-sprintf_chk.o: sprintf_chk.c
> ++      $(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
> ++
> ++lib_a-sprintf_chk.obj: sprintf_chk.c
> ++      $(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`
> ++
> + lib_a-sscanf.o: sscanf.c
> +       $(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
> +
> +--- newlib/libc/stdio/sprintf_chk.c    1969-12-31 19:00:00.000000000 -0500
> ++++ newlib/libc/stdio/sprintf_chk.c    2009-02-26 19:02:26.000000000 -0500
> +@@ -0,0 +1,21 @@
> ++#include <stdarg.h>
> ++#include <stdio.h>
> ++
> ++/*
> ++ * Stub implementation of __sprintf_chk adapted from glibc 2.7.  This
> ++ * doesn't actually implement any buffer overflow protection.  It just makes
> ++ * the linker happy :)
> ++*/
> ++int
> ++__sprintf_chk (char *s, int flags, size_t slen, const char *format, ...)
> ++{
> ++  va_list arg;
> ++  int done;
> ++
> ++  va_start (arg, format);
> ++  done = vsprintf (s, format, arg);
> ++  va_end (arg);
> ++
> ++  return done;
> ++}
> ++
> 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 0000000..1054a07
> --- /dev/null
> +++ b/recipes-extended/xen/files/newlib-stdint-size_max-fix-from-1.17.0.patch
> @@ -0,0 +1,16 @@
> +--- newlib-1.16.0/newlib/libc/include/stdint.h.orig    2006-08-17 00:39:43.000000000 +0300
> ++++ newlib-1.16.0/newlib/libc/include/stdint.h 2009-08-25 17:33:23.000000000 +0300
> +@@ -348,8 +348,11 @@
> + #endif
> +
> + /* This must match size_t in stddef.h, currently long unsigned int */
> +-#define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L)
> +-#define SIZE_MAX __STDINT_EXP(LONG_MAX)
> ++#ifdef __SIZE_MAX__
> ++#define SIZE_MAX __SIZE_MAX__
> ++#else
> ++#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1)
> ++#endif
> +
> + /* This must match sig_atomic_t in <signal.h> (currently int) */
> + #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 0000000..ee9b6f2
> --- /dev/null
> +++ b/recipes-extended/xen/files/newlib.patch
> @@ -0,0 +1,727 @@
> +There is a mix between longs and long longs.
> +
> +Index: newlib/libc/include/inttypes.h
> +===================================================================
> +RCS file: /cvs/src/src/newlib/libc/include/inttypes.h,v
> +retrieving revision 1.3
> +diff -u -p -r1.3 inttypes.h
> +--- newlib/libc/include/inttypes.h     16 Dec 2005 19:03:12 -0000      1.3
> ++++ newlib/libc/include/inttypes.h     8 Nov 2007 16:32:44 -0000
> +@@ -163,12 +163,12 @@
> +
> +
> + /* 64-bit types */
> +-#if __have_longlong64
> +-#define __PRI64(x) __STRINGIFY(ll##x)
> +-#define __SCN64(x) __STRINGIFY(ll##x)
> +-#elif __have_long64
> ++#if __have_long64
> + #define __PRI64(x) __STRINGIFY(l##x)
> + #define __SCN64(x) __STRINGIFY(l##x)
> ++#elif __have_longlong64
> ++#define __PRI64(x) __STRINGIFY(ll##x)
> ++#define __SCN64(x) __STRINGIFY(ll##x)
> + #else
> + #define __PRI64(x) __STRINGIFY(x)
> + #define __SCN64(x) __STRINGIFY(x)
> +@@ -217,12 +217,12 @@
> + #endif
> +
> + /* max-bit types */
> +-#if __have_longlong64
> +-#define __PRIMAX(x) __STRINGIFY(ll##x)
> +-#define __SCNMAX(x) __STRINGIFY(ll##x)
> +-#elif __have_long64
> ++#if __have_long64
> + #define __PRIMAX(x) __STRINGIFY(l##x)
> + #define __SCNMAX(x) __STRINGIFY(l##x)
> ++#elif __have_longlong64
> ++#define __PRIMAX(x) __STRINGIFY(ll##x)
> ++#define __SCNMAX(x) __STRINGIFY(ll##x)
> + #else
> + #define __PRIMAX(x) __STRINGIFY(x)
> + #define __SCNMAX(x) __STRINGIFY(x)
> +@@ -242,12 +242,12 @@
> + #define SCNxMAX               __SCNMAX(x)
> +
> + /* ptr types */
> +-#if __have_longlong64
> +-#define __PRIPTR(x) __STRINGIFY(ll##x)
> +-#define __SCNPTR(x) __STRINGIFY(ll##x)
> +-#elif __have_long64
> ++#if __have_long64
> + #define __PRIPTR(x) __STRINGIFY(l##x)
> + #define __SCNPTR(x) __STRINGIFY(l##x)
> ++#elif __have_longlong64
> ++#define __PRIPTR(x) __STRINGIFY(ll##x)
> ++#define __SCNPTR(x) __STRINGIFY(ll##x)
> + #else
> + #define __PRIPTR(x) __STRINGIFY(x)
> + #define __SCNPTR(x) __STRINGIFY(x)
> +
> +We don't want u?int32_t to be long as our code assume in a lot of places to be
> +int.
> +
> +Index: newlib/libc/include/stdint.h
> +===================================================================
> +RCS file: /cvs/src/src/newlib/libc/include/stdint.h,v
> +retrieving revision 1.10
> +diff -u -p -r1.10 stdint.h
> +--- newlib/libc/include/stdint.h       16 Aug 2006 21:39:43 -0000      1.10
> ++++ newlib/libc/include/stdint.h       12 Feb 2008 13:07:52 -0000
> +@@ -38,7 +38,7 @@ extern "C" {
> + #if __STDINT_EXP(LONG_MAX) > 0x7fffffff
> + #define __have_long64 1
> + #elif __STDINT_EXP(LONG_MAX) == 0x7fffffff && !defined(__SPU__)
> +-#define __have_long32 1
> ++/* #define __have_long32 1 */
> + #endif
> +
> + #if __STDINT_EXP(SCHAR_MAX) == 0x7f
> +
> +Define the basic ia64 jump buffer
> +
> +Index: newlib/libc/include/sys/config.h
> +===================================================================
> +RCS file: /cvs/src/src/newlib/libc/include/sys/config.h,v
> +retrieving revision 1.47
> +diff -u -p -r1.47 config.h
> +--- newlib/libc/include/sys/config.h   15 Mar 2007 21:32:12 -0000      1.47
> ++++ newlib/libc/include/sys/config.h   8 Nov 2007 16:32:44 -0000
> +@@ -71,6 +71,10 @@
> + #endif
> + #endif
> +
> ++#ifndef __DYNAMIC_REENT__
> ++#define __DYNAMIC_REENT__
> ++#endif
> ++
> + #ifdef __mn10200__
> + #define __SMALL_BITFIELDS
> + #endif
> +
> +Dynamic pointer to our reentrancy zone
> +
> +Index: newlib/libc/reent/getreent.c
> +===================================================================
> +RCS file: /cvs/src/src/newlib/libc/reent/getreent.c,v
> +retrieving revision 1.2
> +diff -u -p -r1.2 getreent.c
> +--- newlib/libc/reent/getreent.c       7 Sep 2007 00:45:55 -0000       1.2
> ++++ newlib/libc/reent/getreent.c       8 Nov 2007 16:32:44 -0000
> +@@ -3,12 +3,20 @@
> + #include <_ansi.h>
> + #include <reent.h>
> +
> ++#define weak_alias(name, aliasname) \
> ++  extern __typeof (name) aliasname __attribute__ ((weak, alias (#name)));
> ++
> + #ifdef __getreent
> + #undef __getreent
> + #endif
> ++#ifdef __libc_getreent
> ++#undef __libc_getreent
> ++#endif
> +
> + struct _reent *
> +-_DEFUN_VOID(__getreent)
> ++__libc_getreent (void)
> + {
> +   return _impure_ptr;
> + }
> ++weak_alias(__libc_getreent,__getreent)
> ++
> +
> +We can't provide a red zone in mini-os.
> +
> +Index: newlib/libc/machine/x86_64/memcpy.S
> +===================================================================
> +RCS file: /cvs/src/src/newlib/libc/machine/x86_64/memcpy.S,v
> +retrieving revision 1.1
> +diff -u -p -r1.1 memcpy.S
> +--- newlib/libc/machine/x86_64/memcpy.S        28 Aug 2007 21:56:49 -0000      1.1
> ++++ newlib/libc/machine/x86_64/memcpy.S        8 Nov 2007 16:32:44 -0000
> +@@ -30,10 +30,18 @@ quadword_aligned:
> +   cmpq    $256, rdx
> +   jb      quadword_copy
> +
> ++#if 1
> ++  subq    $32, rsp
> ++  movq    rax, 24 (rsp)
> ++  movq    r12, 16 (rsp)
> ++  movq    r13, 8  (rsp)
> ++  movq    r14, 0  (rsp)
> ++#else
> +   movq    rax, -8  (rsp)
> +   movq    r12, -16 (rsp)
> +   movq    r13, -24 (rsp)
> +   movq    r14, -32 (rsp)
> ++#endif
> +
> +   movq    rdx, rcx                /* Copy 128 bytes at a time with minimum cache polution */
> +   shrq    $7, rcx
> +@@ -89,10 +97,18 @@ loop:
> +   movq    rdx, rcx
> +   andq    $127, rcx
> +   rep     movsb
> ++#if 1
> ++  movq    24 (rsp), rax
> ++  movq    16 (rsp), r12
> ++  movq    8  (rsp), r13
> ++  movq    0  (rsp), r14
> ++  addq    $32, rsp
> ++#else
> +   movq    -8  (rsp), rax
> +   movq    -16 (rsp), r12
> +   movq    -24 (rsp), r13
> +   movq    -32 (rsp), r14
> ++#endif
> +   ret
> +
> +
> +--- newlib/libc/machine/x86_64/x86_64mach.h.orig       2008-07-11 14:57:23.062269000 +0100
> ++++ newlib/libc/machine/x86_64/x86_64mach.h    2008-07-11 14:58:01.262503000 +0100
> +@@ -22,81 +22,81 @@
> +
> + #define REG(x) CONCAT1(__REG_PREFIX__, x)
> +
> +-#define rax REG(rax)
> +-#define rbx REG(rbx)
> +-#define rcx REG(rcx)
> +-#define rdx REG(rdx)
> +-#define rsi REG(rsi)
> +-#define rdi REG(rdi)
> +-#define rbp REG(rbp)
> +-#define rsp REG(rsp)
> +-
> +-#define r8  REG(r8)
> +-#define r9  REG(r9)
> +-#define r10 REG(r10)
> +-#define r11 REG(r11)
> +-#define r12 REG(r12)
> +-#define r13 REG(r13)
> +-#define r14 REG(r14)
> +-#define r15 REG(r15)
> +-
> +-#define eax REG(eax)
> +-#define ebx REG(ebx)
> +-#define ecx REG(ecx)
> +-#define edx REG(edx)
> +-#define esi REG(esi)
> +-#define edi REG(edi)
> +-#define ebp REG(ebp)
> +-#define esp REG(esp)
> +-
> +-#define st0 REG(st)
> +-#define st1 REG(st(1))
> +-#define st2 REG(st(2))
> +-#define st3 REG(st(3))
> +-#define st4 REG(st(4))
> +-#define st5 REG(st(5))
> +-#define st6 REG(st(6))
> +-#define st7 REG(st(7))
> +-
> +-#define ax REG(ax)
> +-#define bx REG(bx)
> +-#define cx REG(cx)
> +-#define dx REG(dx)
> +-
> +-#define ah REG(ah)
> +-#define bh REG(bh)
> +-#define ch REG(ch)
> +-#define dh REG(dh)
> +-
> +-#define al REG(al)
> +-#define bl REG(bl)
> +-#define cl REG(cl)
> +-#define dl REG(dl)
> +-
> +-#define sil REG(sil)
> +-
> +-#define mm1 REG(mm1)
> +-#define mm2 REG(mm2)
> +-#define mm3 REG(mm3)
> +-#define mm4 REG(mm4)
> +-#define mm5 REG(mm5)
> +-#define mm6 REG(mm6)
> +-#define mm7 REG(mm7)
> +-
> +-#define xmm0 REG(xmm0)
> +-#define xmm1 REG(xmm1)
> +-#define xmm2 REG(xmm2)
> +-#define xmm3 REG(xmm3)
> +-#define xmm4 REG(xmm4)
> +-#define xmm5 REG(xmm5)
> +-#define xmm6 REG(xmm6)
> +-#define xmm7 REG(xmm7)
> +-
> +-#define cr0 REG(cr0)
> +-#define cr1 REG(cr1)
> +-#define cr2 REG(cr2)
> +-#define cr3 REG(cr3)
> +-#define cr4 REG(cr4)
> ++#define rax %rax
> ++#define rbx %rbx
> ++#define rcx %rcx
> ++#define rdx %rdx
> ++#define rsi %rsi
> ++#define rdi %rdi
> ++#define rbp %rbp
> ++#define rsp %rsp
> ++
> ++#define r8  %r8
> ++#define r9  %r9
> ++#define r10 %r10
> ++#define r11 %r11
> ++#define r12 %r12
> ++#define r13 %r13
> ++#define r14 %r14
> ++#define r15 %r15
> ++
> ++#define eax %eax
> ++#define ebx %ebx
> ++#define ecx %ecx
> ++#define edx %edx
> ++#define esi %esi
> ++#define edi %edi
> ++#define ebp %ebp
> ++#define esp %esp
> ++
> ++#define st0 %st
> ++#define st1 %st(1)
> ++#define st2 %st(2)
> ++#define st3 %st(3)
> ++#define st4 %st(4)
> ++#define st5 %st(5)
> ++#define st6 %st(6)
> ++#define st7 %st(7)
> ++
> ++#define ax %ax
> ++#define bx %bx
> ++#define cx %cx
> ++#define dx %dx
> ++
> ++#define ah %ah
> ++#define bh %bh
> ++#define ch %ch
> ++#define dh %dh
> ++
> ++#define al %al
> ++#define bl %bl
> ++#define cl %cl
> ++#define dl %dl
> ++
> ++#define sil %sil
> ++
> ++#define mm1 %mm1
> ++#define mm2 %mm2
> ++#define mm3 %mm3
> ++#define mm4 %mm4
> ++#define mm5 %mm5
> ++#define mm6 %mm6
> ++#define mm7 %mm7
> ++
> ++#define xmm0 %xmm0
> ++#define xmm1 %xmm1
> ++#define xmm2 %xmm2
> ++#define xmm3 %xmm3
> ++#define xmm4 %xmm4
> ++#define xmm5 %xmm5
> ++#define xmm6 %xmm6
> ++#define xmm7 %xmm7
> ++
> ++#define cr0 %cr0
> ++#define cr1 %cr1
> ++#define cr2 %cr2
> ++#define cr3 %cr3
> ++#define cr4 %cr4
> +
> + #ifdef _I386MACH_NEED_SOTYPE_FUNCTION
> + #define SOTYPE_FUNCTION(sym) .type SYM(sym), at function
> +--- newlib/libc/machine/x86_64/memcpy.S.orig   2008-07-11 15:12:27.494693000 +0100
> ++++ newlib/libc/machine/x86_64/memcpy.S        2008-07-11 15:12:29.448706000 +0100
> +@@ -60,14 +60,14 @@
> +   movq    48 (rsi), r13
> +   movq    56 (rsi), r14
> +
> +-  movntiq rax,    (rdi)
> +-  movntiq r8 ,  8 (rdi)
> +-  movntiq r9 , 16 (rdi)
> +-  movntiq r10, 24 (rdi)
> +-  movntiq r11, 32 (rdi)
> +-  movntiq r12, 40 (rdi)
> +-  movntiq r13, 48 (rdi)
> +-  movntiq r14, 56 (rdi)
> ++  movnti rax,    (rdi)
> ++  movnti r8 ,  8 (rdi)
> ++  movnti r9 , 16 (rdi)
> ++  movnti r10, 24 (rdi)
> ++  movnti r11, 32 (rdi)
> ++  movnti r12, 40 (rdi)
> ++  movnti r13, 48 (rdi)
> ++  movnti r14, 56 (rdi)
> +
> +   movq     64 (rsi), rax
> +   movq     72 (rsi), r8
> +@@ -78,14 +78,14 @@
> +   movq    112 (rsi), r13
> +   movq    120 (rsi), r14
> +
> +-  movntiq rax,  64 (rdi)
> +-  movntiq r8 ,  72 (rdi)
> +-  movntiq r9 ,  80 (rdi)
> +-  movntiq r10,  88 (rdi)
> +-  movntiq r11,  96 (rdi)
> +-  movntiq r12, 104 (rdi)
> +-  movntiq r13, 112 (rdi)
> +-  movntiq r14, 120 (rdi)
> ++  movnti rax,  64 (rdi)
> ++  movnti r8 ,  72 (rdi)
> ++  movnti r9 ,  80 (rdi)
> ++  movnti r10,  88 (rdi)
> ++  movnti r11,  96 (rdi)
> ++  movnti r12, 104 (rdi)
> ++  movnti r13, 112 (rdi)
> ++  movnti r14, 120 (rdi)
> +
> +   leaq    128 (rsi), rsi
> +   leaq    128 (rdi), rdi
> +--- newlib/libc/machine/i386/i386mach.h        2000-08-28 18:50:06.000000000 +0100
> ++++ newlib/libc/machine/i386/i386mach.h        2008-07-11 15:17:13.874409000 +0100
> +@@ -27,46 +27,46 @@
> +
> + #define REG(x) CONCAT1(__REG_PREFIX__, x)
> +
> +-#define eax REG(eax)
> +-#define ebx REG(ebx)
> +-#define ecx REG(ecx)
> +-#define edx REG(edx)
> +-#define esi REG(esi)
> +-#define edi REG(edi)
> +-#define ebp REG(ebp)
> +-#define esp REG(esp)
> +-
> +-#define st0 REG(st)
> +-#define st1 REG(st(1))
> +-#define st2 REG(st(2))
> +-#define st3 REG(st(3))
> +-#define st4 REG(st(4))
> +-#define st5 REG(st(5))
> +-#define st6 REG(st(6))
> +-#define st7 REG(st(7))
> +-
> +-#define ax REG(ax)
> +-#define bx REG(bx)
> +-#define cx REG(cx)
> +-#define dx REG(dx)
> +-
> +-#define ah REG(ah)
> +-#define bh REG(bh)
> +-#define ch REG(ch)
> +-#define dh REG(dh)
> +-
> +-#define al REG(al)
> +-#define bl REG(bl)
> +-#define cl REG(cl)
> +-#define dl REG(dl)
> +-
> +-#define mm1 REG(mm1)
> +-#define mm2 REG(mm2)
> +-#define mm3 REG(mm3)
> +-#define mm4 REG(mm4)
> +-#define mm5 REG(mm5)
> +-#define mm6 REG(mm6)
> +-#define mm7 REG(mm7)
> ++#define eax %eax
> ++#define ebx %ebx
> ++#define ecx %ecx
> ++#define edx %edx
> ++#define esi %esi
> ++#define edi %edi
> ++#define ebp %ebp
> ++#define esp %esp
> ++
> ++#define st0 %st
> ++#define st1 %st(1)
> ++#define st2 %st(2)
> ++#define st3 %st(3)
> ++#define st4 %st(4)
> ++#define st5 %st(5)
> ++#define st6 %st(6)
> ++#define st7 %st(7)
> ++
> ++#define ax %ax
> ++#define bx %bx
> ++#define cx %cx
> ++#define dx %dx
> ++
> ++#define ah %ah
> ++#define bh %bh
> ++#define ch %ch
> ++#define dh %dh
> ++
> ++#define al %al
> ++#define bl %bl
> ++#define cl %cl
> ++#define dl %dl
> ++
> ++#define mm1 %mm1
> ++#define mm2 %mm2
> ++#define mm3 %mm3
> ++#define mm4 %mm4
> ++#define mm5 %mm5
> ++#define mm6 %mm6
> ++#define mm7 %mm7
> +
> + #ifdef _I386MACH_NEED_SOTYPE_FUNCTION
> + #define SOTYPE_FUNCTION(sym) .type SYM(sym), at function
> +--- newlib/libc/machine/x86_64/memset.S        2007-08-28 22:56:49.000000000 +0100
> ++++ newlib/libc/machine/x86_64/memset.S        2008-07-11 15:16:59.098320000 +0100
> +@@ -40,22 +40,22 @@
> +
> +   .p2align 4
> + loop:
> +-  movntiq rax,     (rdi)
> +-  movntiq rax,   8 (rdi)
> +-  movntiq rax,  16 (rdi)
> +-  movntiq rax,  24 (rdi)
> +-  movntiq rax,  32 (rdi)
> +-  movntiq rax,  40 (rdi)
> +-  movntiq rax,  48 (rdi)
> +-  movntiq rax,  56 (rdi)
> +-  movntiq rax,  64 (rdi)
> +-  movntiq rax,  72 (rdi)
> +-  movntiq rax,  80 (rdi)
> +-  movntiq rax,  88 (rdi)
> +-  movntiq rax,  96 (rdi)
> +-  movntiq rax, 104 (rdi)
> +-  movntiq rax, 112 (rdi)
> +-  movntiq rax, 120 (rdi)
> ++  movnti rax,     (rdi)
> ++  movnti rax,   8 (rdi)
> ++  movnti rax,  16 (rdi)
> ++  movnti rax,  24 (rdi)
> ++  movnti rax,  32 (rdi)
> ++  movnti rax,  40 (rdi)
> ++  movnti rax,  48 (rdi)
> ++  movnti rax,  56 (rdi)
> ++  movnti rax,  64 (rdi)
> ++  movnti rax,  72 (rdi)
> ++  movnti rax,  80 (rdi)
> ++  movnti rax,  88 (rdi)
> ++  movnti rax,  96 (rdi)
> ++  movnti rax, 104 (rdi)
> ++  movnti rax, 112 (rdi)
> ++  movnti rax, 120 (rdi)
> +
> +   leaq    128 (rdi), rdi
> +
> +--- newlib/libm/machine/i386/i386mach.h.orig   2008-07-11 15:30:37.367227000 +0100
> ++++ newlib/libm/machine/i386/i386mach.h        2008-07-11 15:30:55.232337000 +0100
> +@@ -27,46 +27,46 @@
> +
> + #define REG(x) CONCAT1(__REG_PREFIX__, x)
> +
> +-#define eax REG(eax)
> +-#define ebx REG(ebx)
> +-#define ecx REG(ecx)
> +-#define edx REG(edx)
> +-#define esi REG(esi)
> +-#define edi REG(edi)
> +-#define ebp REG(ebp)
> +-#define esp REG(esp)
> +-
> +-#define st0 REG(st)
> +-#define st1 REG(st(1))
> +-#define st2 REG(st(2))
> +-#define st3 REG(st(3))
> +-#define st4 REG(st(4))
> +-#define st5 REG(st(5))
> +-#define st6 REG(st(6))
> +-#define st7 REG(st(7))
> +-
> +-#define ax REG(ax)
> +-#define bx REG(bx)
> +-#define cx REG(cx)
> +-#define dx REG(dx)
> +-
> +-#define ah REG(ah)
> +-#define bh REG(bh)
> +-#define ch REG(ch)
> +-#define dh REG(dh)
> +-
> +-#define al REG(al)
> +-#define bl REG(bl)
> +-#define cl REG(cl)
> +-#define dl REG(dl)
> +-
> +-#define mm1 REG(mm1)
> +-#define mm2 REG(mm2)
> +-#define mm3 REG(mm3)
> +-#define mm4 REG(mm4)
> +-#define mm5 REG(mm5)
> +-#define mm6 REG(mm6)
> +-#define mm7 REG(mm7)
> ++#define eax %eax
> ++#define ebx %ebx
> ++#define ecx %ecx
> ++#define edx %edx
> ++#define esi %esi
> ++#define edi %edi
> ++#define ebp %ebp
> ++#define esp %esp
> ++
> ++#define st0 %st
> ++#define st1 %st(1)
> ++#define st2 %st(2)
> ++#define st3 %st(3)
> ++#define st4 %st(4)
> ++#define st5 %st(5)
> ++#define st6 %st(6)
> ++#define st7 %st(7)
> ++
> ++#define ax %ax
> ++#define bx %bx
> ++#define cx %cx
> ++#define dx %dx
> ++
> ++#define ah %ah
> ++#define bh %bh
> ++#define ch %ch
> ++#define dh %dh
> ++
> ++#define al %al
> ++#define bl %bl
> ++#define cl %cl
> ++#define dl %dl
> ++
> ++#define mm1 %mm1
> ++#define mm2 %mm2
> ++#define mm3 %mm3
> ++#define mm4 %mm4
> ++#define mm5 %mm5
> ++#define mm6 %mm6
> ++#define mm7 %mm7
> +
> + #ifdef _I386MACH_NEED_SOTYPE_FUNCTION
> + #define SOTYPE_FUNCTION(sym) .type SYM(sym), at function
> +
> +
> +We want to have a 64bit offsets libc even on 32bit platforms.
> +
> +--- ./newlib/configure.host.orig       2008-08-07 16:01:17.801946000 +0100
> ++++ ./newlib/configure.host    2008-08-07 16:01:34.181064000 +0100
> +@@ -317,6 +317,8 @@
> +     oext=lo
> +     lpfx=
> +     aext=la ;;
> ++  i[34567]86-xen-elf)
> ++    stdio64_dir=stdio64 ;;
> +   *) ;; #shared library not supported for ${host}
> + esac
> +
> +--- newlib/libc/include/sys/_types.h.orig      2008-08-07 15:22:44.925008000 +0100
> ++++ newlib/libc/include/sys/_types.h   2008-08-07 15:22:50.824044000 +0100
> +@@ -13,8 +13,12 @@
> + #include <sys/lock.h>
> +
> + #ifndef __off_t_defined
> ++#ifdef __MINIOS__
> ++typedef long long _off_t;
> ++#else
> + typedef long _off_t;
> + #endif
> ++#endif
> +
> + #if defined(__rtems__)
> + /* device numbers are 32-bit major and and 32-bit minor */
> +--- ./newlib/libc/include/sys/config.h.orig    2008-08-07 14:43:25.915866000 +0100
> ++++ ./newlib/libc/include/sys/config.h 2008-08-07 14:44:13.508154000 +0100
> +@@ -69,6 +69,10 @@
> + /* we use some glibc header files so turn on glibc large file feature */
> + #define _LARGEFILE64_SOURCE 1
> + #endif
> ++#ifdef __MINIOS__
> ++#define __LARGE64_FILES 1
> ++#define _LARGEFILE64_SOURCE 1
> ++#endif
> + #endif
> +
> + #ifndef __DYNAMIC_REENT__
> +--- ./newlib/libc/include/sys/_default_fcntl.h.orig    2008-08-07 15:08:22.377836000 +0100
> ++++ ./newlib/libc/include/sys/_default_fcntl.h 2008-08-07 15:08:31.651890000 +0100
> +@@ -170,7 +170,11 @@
> + /* Provide _<systemcall> prototypes for functions provided by some versions
> +    of newlib.  */
> + #ifdef _COMPILING_NEWLIB
> +-extern int _open _PARAMS ((const char *, int, ...));
> ++extern int _open _PARAMS ((const char *, int, ...))
> ++#ifdef __MINIOS__
> ++    asm("open64")
> ++#endif
> ++    ;
> + extern int _fcntl _PARAMS ((int, int, ...));
> + #ifdef __LARGE64_FILES
> + extern int _open64 _PARAMS ((const char *, int, ...));
> +--- ./newlib/libc/include/sys/unistd.h.orig    2008-08-07 15:09:36.449280000 +0100
> ++++ ./newlib/libc/include/sys/unistd.h 2008-08-07 15:09:51.210370000 +0100
> +@@ -101,7 +101,11 @@
> + int     _EXFUN(link, (const char *__path1, const char *__path2 ));
> + int   _EXFUN(nice, (int __nice_value ));
> + #if !defined(__INSIDE_CYGWIN__)
> +-off_t   _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ));
> ++off_t   _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ))
> ++#ifdef __MINIOS__
> ++    asm("lseek64")
> ++#endif
> ++    ;
> + #endif
> + #if defined(__SPU__)
> + #define F_ULOCK       0
> +--- ./newlib/libc/include/sys/stat.h.orig      2008-08-07 16:08:50.495116000 +0100
> ++++ ./newlib/libc/include/sys/stat.h   2008-08-07 16:10:21.799753000 +0100
> +@@ -49,6 +49,9 @@
> +   long        st_spare4[2];
> + #endif
> + };
> ++#ifdef __MINIOS__
> ++#define stat64 stat
> ++#endif
> + #endif
> +
> + #define       _IFMT           0170000 /* type of file */
> +@@ -132,7 +135,11 @@
> + /* Provide prototypes for most of the _<systemcall> names that are
> +    provided in newlib for some compilers.  */
> + #ifdef _COMPILING_NEWLIB
> +-int   _EXFUN(_fstat,( int __fd, struct stat *__sbuf ));
> ++int   _EXFUN(_fstat,( int __fd, struct stat *__sbuf ))
> ++#ifdef __MINIOS__
> ++    asm("fstat64")
> ++#endif
> ++    ;
> + int   _EXFUN(_stat,( const char *__path, struct stat *__sbuf ));
> + #ifdef __LARGE64_FILES
> + struct stat64;
> +--- ./newlib/libc/include/_syslist.h.orig      2008-08-07 16:24:19.122605000 +0100
> ++++ ./newlib/libc/include/_syslist.h   2008-08-07 16:24:21.548628000 +0100
> +@@ -14,6 +14,7 @@
> + #define _kill kill
> + #define _link link
> + #define _lseek lseek
> ++#define _lseek64 lseek64
> + #define _open open
> + #define _read read
> + #define _sbrk sbrk
> +--- newlib/libc/include/reent.h.orig   2008-08-07 16:28:49.846502000 +0100
> ++++ newlib/libc/include/reent.h        2008-08-07 16:29:02.096586000 +0100
> +@@ -87,6 +87,9 @@
> + #if defined(__CYGWIN__) && defined(_COMPILING_NEWLIB)
> + #define stat64 __stat64
> + #endif
> ++#if defined(__MINIOS__)
> ++#define stat64 stat
> ++#endif
> +
> + struct stat64;
> +
> diff --git a/recipes-extended/xen/newlib.inc b/recipes-extended/xen/newlib.inc
> new file mode 100644
> index 0000000..32d79aa
> --- /dev/null
> +++ b/recipes-extended/xen/newlib.inc
> @@ -0,0 +1,64 @@
> +# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker at braintrust-us.com>
> +# Released under the MIT license (see COPYING.MIT for the terms)
> +
> +require stubdom.inc
> +
> +CPPFLAGS_INCLUDE_DIR = "-isystem `${HOST_PREFIX}gcc -print-file-name=include`"
> +STUBDOM_CFLAGS += "-D_I386MACH_ALLOW_HW_INTERRUPTS"
> +
> +export ac_cv_path_CC_FOR_TARGET="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT} ${STUBDOM_CPPFLAGS} ${STUBDOM_CFLAGS}"
> +export CC_FOR_TARGET="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT} ${STUBDOM_CPPFLAGS} ${STUBDOM_CFLAGS}"
> +
> +export ac_cv_path_CXX_FOR_TARGET="${HOST_PREFIX}g++ --sysroot=${RECIPE_SYSROOT}"
> +export CXX_FOR_TARGET="${HOST_PREFIX}g++ --sysroot=${RECIPE_SYSROOT}"
> +
> +export ac_cv_path_CPP_FOR_TARGET="${HOST_PREFIX}gcc -E --sysroot=${RECIPE_SYSROOT}"
> +export CPP_FOR_TARGET="${HOST_PREFIX}gcc -E --sysroot=${RECIPE_SYSROOT}"
> +
> +export ac_cv_path_LD_FOR_TARGET="${HOST_PREFIX}ld --sysroot=${RECIPE_SYSROOT}"
> +export LD_FOR_TARGET="${HOST_PREFIX}ld --sysroot=${RECIPE_SYSROOT}"
> +
> +export ac_cv_path_AS_FOR_TARGET="${HOST_PREFIX}as"
> +export AS_FOR_TARGET="${HOST_PREFIX}as"
> +
> +export ac_cv_path_AR_FOR_TARGET="${HOST_PREFIX}ar"
> +export AR_FOR_TARGET="${HOST_PREFIX}ar"
> +
> +export ac_cv_path_NM_FOR_TARGET="${HOST_PREFIX}nm"
> +export NM_FOR_TARGET="${HOST_PREFIX}nm"
> +
> +export ac_cv_path_RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib"
> +export RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib"
> +
> +export ac_cv_path_OBJDUMP_FOR_TARGET="${HOST_PREFIX}objdump"
> +export OBJDUMP_FOR_TARGET="${HOST_PREFIX}objdump"
> +
> +export ac_cv_path_OBJCOPY_FOR_TARGET="${HOST_PREFIX}objcopy"
> +export OBJCOPY_FOR_TARGET="${HOST_PREFIX}objcopy"
> +
> +export ac_cv_path_STRIP_FOR_TARGET="${HOST_PREFIX}strip"
> +export STRIP_FOR_TARGET="${HOST_PREFIX}strip"
> +
> +export ac_cv_path_STRINGS_FOR_TARGET="${HOST_PREFIX}strings"
> +export STRINGS_FOR_TARGET="${HOST_PREFIX}strings"
> +
> +export ac_cv_path_READELF_FOR_TARGET="${HOST_PREFIX}readelf"
> +export READELF_FOR_TARGET="${HOST_PREFIX}readelf"
> +
> +do_configure() {
> +    ${S}/configure --verbose --prefix=${prefix} --target=${GNU_TARGET_ARCH}-xen-elf --enable-newlib-io-long-long --disable-multilib
> +    find ${S} -type f | xargs perl -i.bak -pe 's/\b_(tzname|daylight|timezone)\b/$1/g'
> +}
> +
> +do_compile() {
> +    ${MAKE}
> +}
> +
> +do_install() {
> +    ${MAKE} DESTDIR=${D} install
> +    rm -rf ${D}/cross-root-${XEN_TARGET_ARCH}/share
> +    rm -rf ${D}/cross-root-${XEN_TARGET_ARCH}/info
> +    install -m 644 `${HOST_PREFIX}gcc -print-file-name=include`/stdarg.h -t ${D}/${includedir}
> +    install -m 644 `${HOST_PREFIX}gcc -print-file-name=include`/stddef.h -t ${D}/${includedir}
> +    install -m 644 `${HOST_PREFIX}gcc -print-file-name=include`/stdbool.h -t ${D}/${includedir}
> +}
> 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 0000000..ea80271
> --- /dev/null
> +++ b/recipes-extended/xen/newlib_1.16.0.bb
> @@ -0,0 +1,19 @@
> +# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker at braintrust-us.com>
> +# Released under the MIT license (see COPYING.MIT for the terms)
> +
> +DESCRIPTION = "Newlib is a C library intended for use on embedded systems."
> +HOMEPAGE = "http://sourceware.org/newlib"
> +LICENSE = "GPLv2 & LGPLv3 & GPLv3 & LGPLv2"
> +LIC_FILES_CHKSUM = "file://COPYING.NEWLIB;md5=950f50b290e8fcf7a2d3fff61775de9b"
> +

I see newlib in a few other oe layers, but nothing that looks to be
common. For my
own understanding (and when someone asks me about this), is there any
significant
difference in this newlib implementation/build than you'd find in
other newlib use cases ?

> +S="${WORKDIR}/newlib"
> +B="${WORKDIR}/build"
> +
> +SRC_URI += "\
> +    git://sourceware.org/git/newlib-cygwin.git;protocol=git;rev=newlib-${TRANSLATED_PV};destsuffix=newlib;nobranch=1;name=newlib \

Using tags for SRCREVs is generally frowned upon. Is that what this is
doing ? Even if you want to
use the convenience variable you created, it would still be better to
explicitly set SRCREV in the
recipes for easier maintenance and to make things more obvious.

> +    file://newlib.patch;striplevel=0 \
> +    file://newlib-chk.patch;striplevel=0 \

We really shouldn't be specifying striplevel on the patches.  Why
aren't the patches being
generated in a way that makes then consistent, and that can be applied
with the defaults ?

Bruce

> +    file://newlib-stdint-size_max-fix-from-1.17.0.patch;striplevel=1 \
> +"
> +
> +require newlib.inc
> --
> 2.14.2
>
>
> --
>
> *This email and all attachments are considered confidential and the
> proprietary information of BrainTrust Holdings.  Unauthorized disclosure is
> prohibited.  *
> --
> _______________________________________________
> meta-virtualization mailing list
> meta-virtualization at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-virtualization



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"


More information about the meta-virtualization mailing list