|
[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 |