[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 1/1] Add patch to have newlib running on ARM64
Hi Julien, The problem is the same one encountered by Justin, quoted "some fdt nodes are parsed incorrectly, especially for those compatible strings with "\0"". This seems to be a newlib bug when compiling for ARM64. Instead of using Justin's workaround that adds the -DPREFER_SIZE_OVER_SPEED flag, this patch attempts to solve it in a more robust way by using the machine specific source files, written and tested for ARM64. Without the patch, the output we see is: qemu-system-aarch64 -machine virt -cpu cortex-a53 -display none -serial stdio -m 32M -kernel ./build/helloworld_kvm-arm64 [ 0.000000] Info: [libkvmplat] setup.cFound device tree on: %p @ 51 : Found device tree on: 0x40000000 [ 0.000000] Info: [libkvmplat] pl011.clibkvmplat @ 119 : Serial initializing [ 0.000000] Info: [libkvmplat] pl011.clibkvmplat @ 139 : Found PL011 UART on: 0x9000000 [ 0.000000] Info: [libkvmplat] pl011.clibkvmplat @ 142 : PL011 UART initialized [ 0.000000] Info: [libkvmplat] setup.cFound device tree on: %p @ 213 : Entering from KVM (arm64)... [ 0.000000] Info: [libkvmplat] setup.cFound device tree on: %p @ 199 : No command line found [ 0.000000] Info: [libkvmplat] setup.cFound device tree on: %p @ 69 : No PSCI conduit found in DTB [ 0.000000] Info: [libkvmplat] setup.cFound device tree on: %p @ 93 : Support PSCI from PSCI-0.2 [ 0.000000] Warn: [libkvmplat] setup.cFound device tree on: %p @ 140 : Currently, we support only one memory bank! [ 0.000000] Info: [libkvmgicv2] gic-v2.c @ 423 : Probing GICv2... [ 0.000000] dbg: [libkvmofw] fdt.clibkvmofw @ 173 : reached root node [ 0.000000] dbg: [libkvmofw] fdt.clibkvmofw @ 173 : reached root node [ 0.000000] Info: [libkvmgicv2] gic-v2.c @ 442 : Found GICv2 on: Distributor : 0x8000000 - 0x7ffffff [ 0.000000] Info: [libkvmgicv2] gic-v2.c @ 446 : CPU interface: 0x1000000000000 - 0x100000800ffff [ 0.000000] Info: [libkvmgicv2] gic-v2.c @ 354 : GICv2 Max CPU interface:1 [ 0.000000] Info: [libkvmgicv2] gic-v2.c @ 360 : GICv2 Max interrupt lines:32 [ 0.000000] CRIT: [libkvmplat] traps.c SP : 0x%016lx ESR_EL1 : 0x%016lx ELR_EL1 : 0x%016lx LR (x30) : 0x%016lx PSTATE : 0x%016lx FAR_EL1 : 0x%016lx x%02d ~ x%02d: 0x%016lx 0x%016lx 0x%016lx 0x%016lx x28 ~ x29: 0x%016lx 0x%016lx Unikraft: EL%d invalid %s trap caught Unikraft: EL1 sync trap caught Synchronous Abort @ 67 : Unikraft: EL1 sync trap caught [ 0.000000] CRIT: [libkvmplat] traps.c SP : 0x%016lx ESR_EL1 : 0x%016lx ELR_EL1 : 0x%016lx LR (x30) : 0x%016lx PSTATE : 0x%016lx FAR_EL1 : 0x%016lx x%02d ~ x%02d: 0x%016lx 0x%016lx 0x%016lx 0x%016lx x28 ~ x29: 0x%016lx 0x%016lx Unikraft: EL%d invalid %s trap caught Unikraft: EL1 sync trap caught Synchronous Abort @ 39 : Unikraft: Dump registers: [ 0.000000] CRIT: [libkvmplat] traps.c SP : 0x%016lx ESR_EL1 : 0x%016lx ELR_EL1 : 0x%016lx LR (x30) : 0x%016lx PSTATE : 0x%016lx FAR_EL1 : 0x%016lx x%02d ~ x%02d: 0x%016lx 0x%016lx 0x%016lx 0x%016lx x28 ~ x29: 0x%016lx 0x%016lx Unikraft: EL%d invalid %s trap caught Unikraft: EL1 sync trap caught Synchronous Abort @ 40 : SP : 0x0000000040199e30 ESR_EL1 : 0x0000000096000044 ELR_EL1 : 0x0000000040104778 LR (x30) : 0x00000000401046b8 PSTATE : 0x00000000600003c5 FAR_EL1 : 0x0001000000000004 x00 ~ x03: 0x0000000008000000 0x0000000008000400 0x0000000000000001 0x0000000008000420 [ 0.000000] CRIT: [libkvmplat] traps.c SP : 0x%016lx ESR_EL1 : 0x%016lx ELR_EL1 : 0x%016lx LR (x30) : 0x%016lx PSTATE : 0x%016lx FAR_EL1 : 0x%016lx x%02d ~ x%02d: 0x%016lx 0x%016lx 0x%016lx 0x%016lx x28 ~ x29: 0x%016lx 0x%016lx Unikraft: EL%d invalid %s trap caught Unikraft: EL1 sync trap caught Synchronous Abort @ 50 : x04 ~ x07: 0x0001000000000000 0x0000000080808080 0x00000000000000ff 0xfffffffffefefeff [ 0.000000] CRIT: [libkvmplat] traps.c SP : 0x%016lx ESR_EL1 : 0x%016lx ELR_EL1 : 0x%016lx LR (x30) : 0x%016lx PSTATE : 0x%016lx FAR_EL1 : 0x%016lx x%02d ~ x%02d: 0x%016lx 0x%016lx 0x%016lx 0x%016lx x28 ~ x29: 0x%016lx 0x%016lx Unikraft: EL%d invalid %s trap caught Unikraft: EL1 sync trap caught Synchronous Abort @ 50 : x08 ~ x11: 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x00000000ffffffff [ 0.000000] CRIT: [libkvmplat] traps.c SP : 0x%016lx ESR_EL1 : 0x%016lx ELR_EL1 : 0x%016lx LR (x30) : 0x%016lx PSTATE : 0x%016lx FAR_EL1 : 0x%016lx x%02d ~ x%02d: 0x%016lx 0x%016lx 0x%016lx 0x%016lx x28 ~ x29: 0x%016lx 0x%016lx Unikraft: EL%d invalid %s trap caught Unikraft: EL1 sync trap caught Synchronous Abort @ 50 : x12 ~ x15: 0x00000000ffffffd8 0x0000000040199cb0 0x0000000000001680 0x0000000040199e6c [ 0.000000] CRIT: [libkvmplat] traps.c SP : 0x%016lx ESR_EL1 : 0x%016lx ELR_EL1 : 0x%016lx LR (x30) : 0x%016lx PSTATE : 0x%016lx FAR_EL1 : 0x%016lx x%02d ~ x%02d: 0x%016lx 0x%016lx 0x%016lx 0x%016lx x28 ~ x29: 0x%016lx 0x%016lx Unikraft: EL%d invalid %s trap caught Unikraft: EL1 sync trap caught Synchronous Abort @ 50 : x16 ~ x19: 0x000000004018a000 0x0000000040200000 0x0000000040000000 0x0000000000000020 [ 0.000000] CRIT: [libkvmplat] traps.c SP : 0x%016lx ESR_EL1 : 0x%016lx ELR_EL1 : 0x%016lx LR (x30) : 0x%016lx PSTATE : 0x%016lx FAR_EL1 : 0x%016lx x%02d ~ x%02d: 0x%016lx 0x%016lx 0x%016lx 0x%016lx x28 ~ x29: 0x%016lx 0x%016lx Unikraft: EL%d invalid %s trap caught Unikraft: EL1 sync trap caught Synchronous Abort @ 50 : x20 ~ x23: 0x0000000040180498 0x0000000040180000 0x0000000040176900 0x00000000401768f0 [ 0.000000] CRIT: [libkvmplat] traps.c SP : 0x%016lx ESR_EL1 : 0x%016lx ELR_EL1 : 0x%016lx LR (x30) : 0x%016lx PSTATE : 0x%016lx FAR_EL1 : 0x%016lx x%02d ~ x%02d: 0x%016lx 0x%016lx 0x%016lx 0x%016lx x28 ~ x29: 0x%016lx 0x%016lx Unikraft: EL%d invalid %s trap caught Unikraft: EL1 sync trap caught Synchronous Abort @ 50 : x24 ~ x27: 0x0000000000001680 0x0000000040000000 0x000000004017b010 0x0000000040185000 [ 0.000000] CRIT: [libkvmplat] traps.c SP : 0x%016lx ESR_EL1 : 0x%016lx ELR_EL1 : 0x%016lx LR (x30) : 0x%016lx PSTATE : 0x%016lx FAR_EL1 : 0x%016lx x%02d ~ x%02d: 0x%016lx 0x%016lx 0x%016lx 0x%016lx x28 ~ x29: 0x%016lx 0x%016lx Unikraft: EL%d invalid %s trap caught Unikraft: EL1 sync trap caught Synchronous Abort @ 53 : x28 ~ x29: 0x0000000000000000 0x0000000040199f50 [ 0.000000] Info: [libkvmplat] shutdown.c @ 35 : Unikraft halted [ 0.000000] CRIT: [libkvmplat] cpu_native.cCouldn't shutdown system, HALT! @ 79 : Couldn't shutdown system, HALT! With the patch this gets fix as shown here: qemu-system-aarch64 -machine virt -cpu cortex-a53 -display none -serial stdio -m 32M -kernel ./build/helloworld_kvm-arm64 [ 0.000000] Info: [libkvmplat] setup.c @ 51 : Found device tree on: 0x40000000 [ 0.000000] Info: [libkvmplat] pl011.c @ 119 : Serial initializing [ 0.000000] Info: [libkvmplat] pl011.c @ 139 : Found PL011 UART on: 0x9000000 [ 0.000000] Info: [libkvmplat] pl011.c @ 142 : PL011 UART initialized [ 0.000000] Info: [libkvmplat] setup.c @ 213 : Entering from KVM (arm64)... [ 0.000000] Info: [libkvmplat] setup.c @ 199 : No command line found [ 0.000000] Info: [libkvmplat] setup.c @ 89 : PSCI method: hvc [ 0.000000] Warn: [libkvmplat] setup.c @ 140 : Currently, we support only one memory bank! [ 0.000000] Info: [libkvmgicv2] gic-v2.c @ 423 : Probing GICv2... [ 0.000000] dbg: [libkvmofw] fdt.c @ 173 : reached root node [ 0.000000] dbg: [libkvmofw] fdt.c @ 173 : reached root node [ 0.000000] Info: [libkvmgicv2] gic-v2.c @ 442 : Found GICv2 on: Distributor : 0x8000000 - 0x800ffff [ 0.000000] Info: [libkvmgicv2] gic-v2.c @ 446 : CPU interface: 0x8010000 - 0x801ffff [ 0.000000] Info: [libkvmgicv2] gic-v2.c @ 354 : GICv2 Max CPU interface:1 [ 0.000000] Info: [libkvmgicv2] gic-v2.c @ 360 : GICv2 Max interrupt lines:32 [ 0.000000] Info: [libkvmplat] setup.c @ 228 : pagetable start: 0x40185000 [ 0.000000] Info: [libkvmplat] setup.c @ 230 : heap start: 0x4018a000 [ 0.000000] Info: [libkvmplat] setup.c @ 232 : stack top: 0x41ff0000 [ 0.000000] Info: [libkvmplat] setup.c @ 238 : Switch from bootstrap stack to stack @0x42000000 [ 0.000000] Info: [libukboot] boot.c @ 187 : Unikraft constructors table at 0x40170000 [ 0.000000] dbg: [libukboot] boot.c @ 189 : Call constructor 0x4010d670 [ 0.000000] dbg: [libukboot] boot.c @ 189 : Call constructor 0x40115e50 [ 0.000000] Info: [libukboot] boot.c @ 207 : Initialize memory allocator... [ 0.000000] dbg: [libukboot] boot.c @ 216 : Try memory region: 0x4018a000 - 0x41ff0000 (flags: 0x31)... [ 0.000000] Info: [libukallocbbuddy] bbuddy.c @ 470 : Initialize binary buddy allocator 4018a000 [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 4018d000 - 4018e000 (order 0) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 4018e000 - 40190000 (order 1) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 40190000 - 401a0000 (order 4) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 401a0000 - 401c0000 (order 5) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 401c0000 - 40200000 (order 6) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 40200000 - 40400000 (order 9) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 40400000 - 40800000 (order 10) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 40800000 - 41000000 (order 11) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 41000000 - 41800000 (order 11) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 41800000 - 41c00000 (order 10) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 41c00000 - 41e00000 (order 9) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 41e00000 - 41f00000 (order 8) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 41f00000 - 41f80000 (order 7) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 41f80000 - 41fc0000 (order 6) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 41fc0000 - 41fe0000 (order 5) [ 0.000000] dbg: [libukallocbbuddy] bbuddy.c @ 427 : 4018a000: Add allocate unit 41fe0000 - 41ff0000 (order 4) [ 0.000000] Info: [libukboot] boot.c @ 239 : Initialize IRQ subsystem... [ 0.000000] Info: [libukboot] boot.c @ 246 : Initialize platform time... [ 0.000000] Info: [libkvmplat] time.c @ 88 : No clock-frequency found, reading from register directly. [ 0.001444] Info: [libukschedcoop] schedcoop.c @ 232 : Initializing cooperative scheduler [ 0.001776] dbg: [libkvmplat] sw_ctx.c @ 133 : Allocating 32 bytes for sw ctx at 0x40190008 [ 0.001918] Info: [libuksched] thread.c @ 130 : Thread "Idle": pointer: 0x4018e058, stack: 0x41fe0000, tls: 0x4018f008 [ 0.002134] dbg: [libkvmplat] sw_ctx.c @ 133 : Allocating 32 bytes for sw ctx at 0x40193008 [ 0.002228] Info: [libuksched] thread.c @ 130 : Thread "main": pointer: 0x40191008, stack: 0x41fc0000, tls: 0x40192008 [ 0.002574] Info: [libukboot] boot.c @ 85 : Init Table @ 0x40170010 - 0x40170010 Welcome to _ __ _____ __ _____ (_) /__ _______ _/ _/ /_ / // / _ \/ / '_// __/ _ `/ _/ __/ \_,_/_//_/_/_/\_\/_/ \_,_/_/ \__/ Iapetus 0.3.1~f34ad91 [ 0.003952] Info: [libukboot] boot.c @ 114 : Pre-init table at 0x4017a0a0 - 0x4017a0a0 [ 0.004059] Info: [libukboot] boot.c @ 125 : Constructor table at 0x4017a0a0 - 0x4017a0a8 [ 0.004169] dbg: [libukboot] boot.c @ 130 : Call constructor (entry 0 (0x4017a0a0): 0x4015bb60())... [ 0.004296] Info: [libukboot] boot.c @ 135 : Calling main(1, ['helloworld']) Hello world! Arguments: "helloworld" [ 0.004510] Info: [libukboot] boot.c @ 144 : main returned 0, halting system Unikraft halted Thanks and best, Santiago On 19.12.19, 12:24, "Minios-devel on behalf of Julien Grall" <minios-devel-bounces@xxxxxxxxxxxxxxxxxxxx on behalf of julien@xxxxxxx> wrote: Hi, On 19/12/2019 11:20, Santiago Pagani wrote: > At the moment newlib can compile for ARM64, but it fails at runtime. > This patch changes some generic newlib files for the machine specific > newlib files for ARM64 when using ARM64. This commit does not explain what sort of problem is encountered and why using machine specific will solve it. Technically generic code should work for all the architectures but may not be efficient. So what is the exact problem here? Cheers, > > Signed-off-by: Santiago Pagani <santiagopagani@xxxxxxxxx> > --- > Makefile.uk | 37 ++++++++++++++++++++++++------------- > 1 file changed, 24 insertions(+), 13 deletions(-) > > diff --git a/Makefile.uk b/Makefile.uk > index 17d8d7a..8828ebb 100644 > --- a/Makefile.uk > +++ b/Makefile.uk > @@ -106,10 +106,12 @@ LIBNEWLIB_SUPPRESS_FLAGS-$(call gcc_version_ge,6,0) += -Wno-misleading-indentati > LIBNEWLIB_SUPPRESS_FLAGS-$(call gcc_version_ge,6,0) += -Wno-shift-negative-value > LIBNEWLIB_SUPPRESS_FLAGS-$(call gcc_version_ge,7,0) += -Wno-implicit-fallthrough > > -LIBNEWLIBC_CFLAGS-y += $(LIBNEWLIB_SUPPRESS_FLAGS-y) > -LIBNEWLIBM_CFLAGS-y += $(LIBNEWLIB_SUPPRESS_FLAGS-y) > -LIBNEWLIBC_CXXFLAGS-y += $(LIBNEWLIB_SUPPRESS_FLAGS-y) > -LIBNEWLIBM_CXXFLAGS-y += $(LIBNEWLIB_SUPPRESS_FLAGS-y) > +LIBNEWLIB_NO_BUILTINS += -D__NO_SYSCALLS__ -fno-builtin > + > +LIBNEWLIBC_CFLAGS-y += $(LIBNEWLIB_SUPPRESS_FLAGS-y) $(LIBNEWLIB_NO_BUILTINS) > +LIBNEWLIBM_CFLAGS-y += $(LIBNEWLIB_SUPPRESS_FLAGS-y) $(LIBNEWLIB_NO_BUILTINS) > +LIBNEWLIBC_CXXFLAGS-y += $(LIBNEWLIB_SUPPRESS_FLAGS-y) $(LIBNEWLIB_NO_BUILTINS) > +LIBNEWLIBM_CXXFLAGS-y += $(LIBNEWLIB_SUPPRESS_FLAGS-y) $(LIBNEWLIB_NO_BUILTINS) > > LIBNEWLIBGLUE_SUPPRESS_FLAGS-y += -Wno-unused-parameter > LIBNEWLIBGLUE_CFLAGS-y += $(LIBNEWLIBGLUE_SUPPRESS_FLAGS-y) > @@ -731,10 +733,13 @@ LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/memmem.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/rindex.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strcasecmp.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strcat.c > -LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strchr.c > -LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strcmp.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBNEWLIB_LIBC)/string/strchr.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBNEWLIB_LIBC)/machine/aarch64/strchr.S > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBNEWLIB_LIBC)/string/strcmp.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBNEWLIB_LIBC)/machine/aarch64/strcmp.S > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strcoll.c > -LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strcpy.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBNEWLIB_LIBC)/string/strcpy.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBNEWLIB_LIBC)/machine/aarch64/strcpy.S > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strcspn.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strdup.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strdup_r.c > @@ -742,17 +747,21 @@ LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strerror.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strerror_r.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strlcat.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strlcpy.c > -LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strlen.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBNEWLIB_LIBC)/string/strlen.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBNEWLIB_LIBC)/machine/aarch64/strlen.S > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strlwr.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strncasecmp.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strncasecmp_l.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strncat.c > -LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strncmp.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBNEWLIB_LIBC)/string/strncmp.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBNEWLIB_LIBC)/machine/aarch64/strncmp.S > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strncpy.c > -LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strnlen.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBNEWLIB_LIBC)/string/strnlen.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBNEWLIB_LIBC)/machine/aarch64/strnlen.S > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strnstr.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strpbrk.c > -LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strrchr.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBNEWLIB_LIBC)/string/strrchr.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBNEWLIB_LIBC)/machine/aarch64/strrchr.S > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strsep.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strsignal.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strspn.c > @@ -795,11 +804,13 @@ LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/xpg_strerror_r.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/bcmp.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/memccpy.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/mempcpy.c > -LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/stpcpy.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBNEWLIB_LIBC)/string/stpcpy.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBNEWLIB_LIBC)/machine/aarch64/stpcpy.S > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/stpncpy.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strndup.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strcasestr.c > -LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strchrnul.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBNEWLIB_LIBC)/string/strchrnul.c > +LIBNEWLIBC_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBNEWLIB_LIBC)/machine/aarch64/strchrnul.S > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/strndup_r.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/wcpcpy.c > LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/string/wcpncpy.c > -- Julien Grall _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |