Drop local newlib recipe and use it from oe-core TODO: enable arc support Signed-off-by: Naveen Saini <naveen.kumar.sa...@intel.com> --- 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.bystri...@intel.com> - ---- 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.bystri...@intel.com> - ---- 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.venevt...@gmail.com> -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
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#49001): https://lists.yoctoproject.org/g/yocto/message/49001 Mute This Topic: https://lists.yoctoproject.org/mt/72673835/21656 Group Owner: yocto+ow...@lists.yoctoproject.org Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-