[meta-zephyr][PATCH 5/5] newlib: instead of carry locally use from oe-core


Naveen Saini
 

Drop local newlib recipe and use it from oe-core

TODO: enable arc support
Signed-off-by: Naveen Saini <naveen.kumar.saini@...>
---
conf/distro/zephyr.conf | 3 +
.../newlib/newlib/assert-fiprintf.patch | 23 -
.../newlib/gettimeofday-header-fix.patch | 20 -
.../newlib/newlib/iamcu-commit-5d3ad3b.patch | 399 ------------------
...{newlib_2.%.bbappend => newlib_%.bbappend} | 1 -
recipes-core/newlib/newlib_2.%.bb | 83 ----
6 files changed, 3 insertions(+), 526 deletions(-)
delete mode 100644 recipes-core/newlib/newlib/assert-fiprintf.patch
delete mode 100644 recipes-core/newlib/newlib/gettimeofday-header-fix.patch
delete mode 100644 recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch
rename recipes-core/newlib/{newlib_2.%.bbappend => newlib_%.bbappend} (95%)
delete mode 100644 recipes-core/newlib/newlib_2.%.bb

diff --git a/conf/distro/zephyr.conf b/conf/distro/zephyr.conf
index 673152f..44448af 100644
--- a/conf/distro/zephyr.conf
+++ b/conf/distro/zephyr.conf
@@ -11,6 +11,9 @@ TCLIBCAPPEND = ""
TEST_TARGET = "QemuTargetZephyr"
TEST_SUITES = "zephyr"

+PREFERRED_PROVIDER_virtual/libc = "newlib"
+PREFERRED_PROVIDER_virtual/libiconv = "newlib"
+
TOOLCHAIN_TARGET_TASK += " newlib"
INHERIT += "siteinfo-zephyr"

diff --git a/recipes-core/newlib/newlib/assert-fiprintf.patch b/recipes-core/newlib/newlib/assert-fiprintf.patch
deleted file mode 100644
index dd83c1a..0000000
--- a/recipes-core/newlib/newlib/assert-fiprintf.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-
-Fix unresolved external "fiprintf".
-When newlib is configured with:
-
- --enable-newlib-nano-formatted-io
-
-"fiprintf" should be an alias of "fprintf". However the alias does
-not seem to work properly, as we encounter unresolved external
-error if we uses "assert" in code. So we patch the code directly.
-
-Signed-off-by: Juro Bystricky <juro.bystricky@...>
-
---- a/newlib/libc/stdlib/assert.c 2016-11-08 08:04:45.669248139 -0800
-+++ b/newlib/libc/stdlib/assert.c 2016-11-08 08:05:47.357554034 -0800
-@@ -56,7 +56,7 @@
- const char *func _AND
- const char *failedexpr)
- {
-- fiprintf(stderr,
-+ fprintf(stderr,
- "assertion \"%s\" failed: file \"%s\", line %d%s%s\n",
- failedexpr, file, line,
- func ? ", function: " : "", func ? func : "");
diff --git a/recipes-core/newlib/newlib/gettimeofday-header-fix.patch b/recipes-core/newlib/newlib/gettimeofday-header-fix.patch
deleted file mode 100644
index d1f9bf4..0000000
--- a/recipes-core/newlib/newlib/gettimeofday-header-fix.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-newlib-2.4.0 regression.
-Export the prototype of gettimeofday
-
-Signed-off-by: Juro Bystricky <juro.bystricky@...>
-
---- a/newlib/libc/include/sys/time.h 2016-03-29 14:33:42.000000000 -0700
-+++ b/newlib/libc/include/sys/time.h 2016-10-12 09:48:03.873642589 -0700
-@@ -429,9 +429,10 @@
- int _EXFUN(getitimer, (int __which, struct itimerval *__value));
- int _EXFUN(setitimer, (int __which, const struct itimerval *__restrict __value,
- struct itimerval *__restrict __ovalue));
-+#endif
-+
- int _EXFUN(gettimeofday, (struct timeval *__restrict __p,
- void *__restrict __tz));
--#endif
-
- #if __GNU_VISIBLE
- int _EXFUN(futimesat, (int, const char *, const struct timeval [2]));
diff --git a/recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch b/recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch
deleted file mode 100644
index f44aa07..0000000
--- a/recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch
+++ /dev/null
@@ -1,399 +0,0 @@
-From 5d3ad3b123b7c121d7a6eac27fb13016171e27bc Mon Sep 17 00:00:00 2001
-From: Igor Venevtsev <igor.venevtsev@...>
-Date: Thu, 31 Mar 2016 12:12:00 +0300
-Subject: Add Intel MCU target
-
-Intel MCU System V ABI are incompartible with i386 System V ABI:
- o Minimum instruction set is Intel Pentium ISA minus x87 instructions
- o No x87 or vector registers
- o First three args are passed in %eax, %edx and %ecx
- o Full specification available here:
- https://github.com/hjl-tools/x86-psABI/wiki/iamcu-psABI-0.7.pdf
-
-newlib/
- * configure.host: Add new ix86-*-elfiamcu target
-
-newlib/libc/include/
- * setjmp.h: Change _JBLEN for Intel MCU target
-
-newlib/libc/machine/i386/
- * memchr.S: (memchr) Target-specific size-optimized version
- * memcmp.S: (memcmp) Likewise
- * memcpy.S: (memcpy) Likewise
- * memmove.S: (memmove) Likewise
- * memset.S: (memset) Likewise
- * setjmp.S: (setjmp) Likewise
- * strchr.S: (strchr) Likewise
- * strlen.S: (strlen) Likewise
-
-newlib/libc/stdlib/
- * srtold.c: (__flt_rounds) Disable for Intel MCU
-
-diff --git a/newlib/configure.host b/newlib/configure.host
-index 8b0846e..bb163ec 100644
---- a/newlib/configure.host
-+++ b/newlib/configure.host
-@@ -696,6 +696,15 @@ case "${host}" in
- i[34567]86-*-netware*)
- newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DNO_EXEC -DABORT_PROVIDED -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DHAVE_FCNTL"
- ;;
-+ i[3-7]86-*-elfiamcu)
-+ newlib_cflags="${newlib_cflags} -Os -DPREFER_SIZE_OVER_SPEED -ffunction-sections -fomit-frame-pointer -DREENTRANT_SYSCALL_PROVIDED"
-+ if [ "${newlib_multithread}" = "no" ] ; then
-+ newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
-+ else
-+ syscall_dir=syscalls
-+ newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__"
-+ fi
-+ ;;
- iq2000*)
- syscall_dir=syscalls
- default_newlib_io_long_long="yes"
-diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h
-index c08e682..2b4dd8b 100644
---- a/newlib/libc/include/machine/setjmp.h
-+++ b/newlib/libc/include/machine/setjmp.h
-@@ -92,6 +92,9 @@ _BEGIN_STD_C
- # define _JBLEN (13 * 4)
- # elif defined(__unix__) || defined(__rtems__)
- # define _JBLEN 9
-+# elif defined(__iamcu__)
-+/* Intel MCU jmp_buf only covers callee-saved registers. */
-+# define _JBLEN 6
- # else
- # include "setjmp-dj.h"
- # endif
-diff --git a/newlib/libc/machine/i386/memchr.S b/newlib/libc/machine/i386/memchr.S
-index 7639685..d9b0bf2 100644
---- a/newlib/libc/machine/i386/memchr.S
-+++ b/newlib/libc/machine/i386/memchr.S
-@@ -14,13 +14,33 @@
- SOTYPE_FUNCTION(memchr)
-
- SYM (memchr):
-+#ifdef __iamcu__
-+ pushl edi
-+ movl eax,edi
-+ movl edx,eax
-+ xorl edx,edx
-+ testl ecx,ecx
-+ jz L20
-+
-+ repnz
-+ scasb
-+
-+ setnz dl
-+ decl edi
-+
-+ decl edx
-+ andl edi,edx
-+L20:
-+ movl edx,eax
-+
-+ popl edi
-+#else
- pushl ebp
- movl esp,ebp
- pushl edi
- movzbl 12(ebp),eax
- movl 16(ebp),ecx
- movl 8(ebp),edi
--
- xorl edx,edx
- testl ecx,ecx
- jz L20
-@@ -111,4 +131,5 @@ L20:
- leal -4(ebp),esp
- popl edi
- leave
-+#endif
- ret
-diff --git a/newlib/libc/machine/i386/memcmp.S b/newlib/libc/machine/i386/memcmp.S
-index 26b8ef1..4a01b82 100644
---- a/newlib/libc/machine/i386/memcmp.S
-+++ b/newlib/libc/machine/i386/memcmp.S
-@@ -15,6 +15,33 @@
-
- SYM (memcmp):
-
-+#ifdef __iamcu__
-+ pushl edi
-+ pushl esi
-+ movl eax,edi
-+ movl edx,esi
-+ cld
-+
-+/* check if length is zero in which case just return 0 */
-+
-+ xorl eax,eax
-+ testl ecx,ecx
-+ jz L4
-+
-+/* compare any unaligned bytes or remainder bytes */
-+ repz
-+ cmpsb
-+
-+/* set output to be < 0 if less than, 0 if equal, or > 0 if greater than */
-+ xorl edx,edx
-+ movb -1(esi),dl
-+ movb -1(edi),al
-+ subl edx,eax
-+
-+L4:
-+ popl esi
-+ popl edi
-+#else
- pushl ebp
- movl esp,ebp
- subl $16,esp
-@@ -73,4 +100,5 @@ L4:
- popl edi
- popl ebx
- leave
-+#endif
- ret
-diff --git a/newlib/libc/machine/i386/memcpy.S b/newlib/libc/machine/i386/memcpy.S
-index b53e2a1..a14aa2a 100644
---- a/newlib/libc/machine/i386/memcpy.S
-+++ b/newlib/libc/machine/i386/memcpy.S
-@@ -15,6 +15,17 @@
-
- SYM (memcpy):
-
-+#ifdef __iamcu__
-+ pushl esi
-+ pushl edi
-+ movl eax,edi
-+ movl edx,esi
-+
-+ rep movsb
-+
-+ popl edi
-+ popl esi
-+#else
- pushl ebp
- movl esp,ebp
- pushl esi
-@@ -71,4 +82,5 @@ SYM (memcpy):
- popl edi
- popl esi
- leave
-+#endif
- ret
-diff --git a/newlib/libc/machine/i386/memmove.S b/newlib/libc/machine/i386/memmove.S
-index 1ea2f6d..1026582 100644
---- a/newlib/libc/machine/i386/memmove.S
-+++ b/newlib/libc/machine/i386/memmove.S
-@@ -15,6 +15,32 @@
-
- SYM (memmove):
-
-+#ifdef __iamcu__
-+ pushl esi
-+ pushl edi
-+ movl eax,edi
-+ movl edx,esi
-+ cmp esi,edi
-+ ja .Lcopy_backward
-+ je .Lbwd_write_0bytes
-+
-+ rep movsb
-+
-+ popl edi
-+ popl esi
-+ ret
-+
-+.Lcopy_backward:
-+ lea -1(edi,ecx),edi
-+ lea -1(esi,ecx),esi
-+ std
-+ rep movsb
-+ cld
-+
-+.Lbwd_write_0bytes:
-+ popl edi
-+ popl esi
-+#else
- pushl ebp
- movl esp,ebp
- pushl esi
-@@ -143,4 +169,5 @@ SYM (memmove):
- popl edi
- popl esi
- leave
-+#endif
- ret
-diff --git a/newlib/libc/machine/i386/memset.S b/newlib/libc/machine/i386/memset.S
-index 6eb2cd6..83b2556 100644
---- a/newlib/libc/machine/i386/memset.S
-+++ b/newlib/libc/machine/i386/memset.S
-@@ -15,6 +15,15 @@
-
- SYM (memset):
-
-+#ifdef __iamcu__
-+ pushl edi
-+ movl eax,edi
-+ movzbl dl,eax
-+ mov edi,edx
-+ rep stosb
-+ mov edx,eax
-+ popl edi
-+#else
- pushl ebp
- movl esp,ebp
- pushl edi
-@@ -96,4 +105,5 @@ SYM (memset):
- leal -4(ebp),esp
- popl edi
- leave
-+#endif
- ret
-diff --git a/newlib/libc/machine/i386/setjmp.S b/newlib/libc/machine/i386/setjmp.S
-index fd746e4..45c689f 100644
---- a/newlib/libc/machine/i386/setjmp.S
-+++ b/newlib/libc/machine/i386/setjmp.S
-@@ -20,6 +20,10 @@
- ** jmp_buf:
- ** eax ebx ecx edx esi edi ebp esp eip
- ** 0 4 8 12 16 20 24 28 32
-+ **
-+ ** Intel MCU jmp_buf:
-+ ** ebx esi edi ebp esp eip
-+ ** 0 4 8 12 16 20
- */
-
- #include "i386mach.h"
-@@ -31,6 +35,23 @@
-
- SYM (setjmp):
-
-+#ifdef __iamcu__
-+ /* Store EIP. */
-+ movl 0(esp),ecx
-+ movl ecx,20(eax)
-+
-+ movl ebx,0 (eax)
-+ movl esi,4 (eax)
-+ movl edi,8 (eax)
-+ movl ebp,12(eax)
-+
-+ /* Skip return address, which will be pushed onto stack in
-+ longjmp, and store SP. */
-+ leal 4(esp),ecx
-+ movl ecx,16(eax)
-+
-+ xorl eax,eax
-+#else
- pushl ebp
- movl esp,ebp
-
-@@ -59,9 +80,28 @@ SYM (setjmp):
- popl edi
- movl $0,eax
- leave
-+#endif
- ret
-
- SYM (longjmp):
-+#ifdef __iamcu__
-+ /* Check retval. */
-+ testl edx,edx
-+ jne 0f
-+ incl edx
-+0:
-+ /* Restore stack first. */
-+ movl 16(eax),esp
-+
-+ /* Put return address on stack. */
-+ pushl 20(eax)
-+
-+ movl 0(eax),ebx
-+ movl 4(eax),esi
-+ movl 8(eax),edi
-+ movl 12(eax),ebp
-+ movl edx,eax
-+#else
- pushl ebp
- movl esp,ebp
-
-@@ -87,5 +127,6 @@ SYM (longjmp):
- movl 16(edi),esi
- movl 20(edi),edi
- __STI
-+#endif
-
- ret
-diff --git a/newlib/libc/machine/i386/strchr.S b/newlib/libc/machine/i386/strchr.S
-index 1d98b81..43ee0fb 100644
---- a/newlib/libc/machine/i386/strchr.S
-+++ b/newlib/libc/machine/i386/strchr.S
-@@ -15,6 +15,29 @@
-
- SYM (strchr):
-
-+#ifdef __iamcu__
-+ xorl ecx,ecx
-+ movb dl,cl
-+
-+/* loop while (*s && *s++ != c) */
-+ leal -1(eax),eax
-+L15:
-+ incl eax
-+ movb (eax),dl
-+ testb dl,dl
-+ je L14
-+ cmpb cl,dl
-+ jne L15
-+
-+L14:
-+/* if (*s == c) return address otherwise return NULL */
-+ cmpb cl,(eax)
-+ je L19
-+ xorl eax,eax
-+
-+L19:
-+ ret
-+#else
- pushl ebp
- movl esp,ebp
- pushl edi
-@@ -170,3 +193,5 @@ L27:
- jmp L9
-
- #endif /* !__OPTIMIZE_SIZE__ */
-+
-+#endif /* __iamcu__ */
-diff --git a/newlib/libc/machine/i386/strlen.S b/newlib/libc/machine/i386/strlen.S
-index 0e3cb64..373ea0f 100644
---- a/newlib/libc/machine/i386/strlen.S
-+++ b/newlib/libc/machine/i386/strlen.S
-@@ -18,9 +18,13 @@ SYM (strlen):
- pushl ebp
- movl esp,ebp
- pushl edi
-+#ifdef __iamcu__
-+ movl eax,edx
-+#else
- movl 8(ebp),edx
-+#endif
-
--#ifdef __OPTIMIZE_SIZE__
-+#if defined __OPTIMIZE_SIZE__ || defined __iamcu__
- cld
- movl edx,edi
- movl $4294967295,ecx
-diff --git a/newlib/libc/stdlib/strtold.c b/newlib/libc/stdlib/strtold.c
-index a6d415d..1128b74 100644
---- a/newlib/libc/stdlib/strtold.c
-+++ b/newlib/libc/stdlib/strtold.c
-@@ -35,7 +35,8 @@ POSSIBILITY OF SUCH DAMAGE.
-
- #ifdef _HAVE_LONG_DOUBLE
-
--#if defined (__x86_64__) || defined (__i386__)
-+/* Intel MCU has no x87 floating point unit */
-+#if (defined (__x86_64__) || defined (__i386__)) && !defined (__iamcu__)
- static const int map[] = {
- 1, /* round to nearest */
- 3, /* round to zero */
diff --git a/recipes-core/newlib/newlib_2.%.bbappend b/recipes-core/newlib/newlib_%.bbappend
similarity index 95%
rename from recipes-core/newlib/newlib_2.%.bbappend
rename to recipes-core/newlib/newlib_%.bbappend
index b4edea1..37ff961 100644
--- a/recipes-core/newlib/newlib_2.%.bbappend
+++ b/recipes-core/newlib/newlib_%.bbappend
@@ -14,7 +14,6 @@ LIC_FILES_CHKSUM_arc = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
#Tag arc-2016.03
SRCREV_arc = "e4da0f88abe8dd2a0b947bcf7cb8b3736ab94f33"
SRC_URI_arc = "git://github.com/foss-for-synopsys-dwc-arc-processors/newlib.git;branch=arc-2.3"
-SRC_URI_arc += "file://assert-fiprintf.patch"
S_arc = "${WORKDIR}/git"

# ERROR: QA Issue: Architecture did not match (195 to 93)
diff --git a/recipes-core/newlib/newlib_2.%.bb b/recipes-core/newlib/newlib_2.%.bb
deleted file mode 100644
index 77b5184..0000000
--- a/recipes-core/newlib/newlib_2.%.bb
+++ /dev/null
@@ -1,83 +0,0 @@
-HOMEPAGE = "https://sourceware.org/newlib/"
-SUMMARY = "C library for embedded systems"
-DESCRIPTION = "Newlib is a conglomeration of several library parts, all under free software licenses that make them easily usable on embedded products."
-
-PV = "2.4.0"
-
-LICENSE = "GPLv2 & LGPLv3 & GPLv3 & LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
- file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
- file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING.LIBGLOSS;md5=73f5c98779aea7dba4a6c94a74ab0ae2 \
- file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://COPYING.NEWLIB;md5=fced02ba02d66f274d4847d27e80af74 \
- file://newlib/libc/posix/COPYRIGHT;md5=103468ff1982be840fdf4ee9f8b51bbf \
- file://newlib/libc/sys/linux/linuxthreads/LICENSE;md5=73640207fbc79b198c7ffd4ad4d97aa0"
-
-SRC_URI = "ftp://sourceware.org/pub/newlib/newlib-${PV}.tar.gz"
-SRC_URI[md5sum] = "37c07a65c6effdb4822fb6f83067f37e"
-SRC_URI[sha256sum] = "545b3d235e350d2c61491df8b9f775b1b972f191380db8f52ec0b1c829c52706"
-SRC_URI += "file://gettimeofday-header-fix.patch"
-SRC_URI += "file://assert-fiprintf.patch"
-SRC_URI += "file://iamcu-commit-5d3ad3b.patch"
-
-S = "${WORKDIR}/newlib-${PV}"
-
-DEPENDS = "flex-native bison-native m4-native"
-DEPENDS_remove = "virtual/libc virtual/${TARGET_PREFIX}compilerlibs"
-PACKAGES = "${PN}"
-
-# This will determine the name of the folder with libc as well.
-NEWLIB_HOST = "${TARGET_SYS}"
-
-TUNE_CCARGS += " -nostdlib "
-
-CFLAGS += " -DMISSING_SYSCALL_NAMES "
-
-# Specify any options you want to pass to the configure script using EXTRA_OECONF:
-EXTRA_OECONF = " --enable-languages=c \
- --host=${NEWLIB_HOST} \
- --with-newlib --with-gnu-as --with-gnu-ld -v \
- --disable-newlib-supplied-syscalls \
- --disable-newlib-wide-orient \
- --disable-newlib-fseek-optimization \
- --enable-newlib-nano-formatted-io \
- --enable-newlib-nano-malloc \
- --disable-newlib-fvwrite-in-streamio \
- --disable-newlib-unbuf-stream-opt --enable-lite-exit \
- --enable-newlib-global-atexit \
- --disable-multilib \
-"
-
-do_configure () {
- # If we're being rebuilt due to a dependency change, we need to make sure
- # everything is clean before we configure and build -- if we haven't previously
- # built this will fail and be ignored.
- make distclean || :
- export CC_FOR_TARGET="${CC}"
- ${S}/configure ${EXTRA_OECONF}
-}
-
-do_install () {
- oe_runmake 'DESTDIR=${D}' install
-
- # Delete standards.info, configure.info
- rm -rf ${D}/usr/share/
- # Place the libraries where gcc can find them
- # usr/${NEWLIB_HOST}/lib -> usr/lib
- # usr/${NEWLIB_HOST}/include ->usr/include
-
- mv -v ${D}/usr/local/${NEWLIB_HOST}/lib* ${D}/usr/lib
- mv -v ${D}/usr/local/${NEWLIB_HOST}/include* ${D}/usr/include
- rm -rf ${D}/usr/local/${NEWLIB_HOST}
- rm -rf ${D}/usr/local
-}
-
-INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
-INHIBIT_PACKAGE_STRIP = "1"
-
-FILES_${PN} = "/usr/lib /usr/include"
-
-INSANE_SKIP_${PN} += " staticdev"
-INSANE_SKIP_${PN}-dev += " staticdev"
-
--
2.17.1

Join yocto@lists.yoctoproject.org to automatically receive all group messages.