[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.