From bdedee5a0f156d05eb62c704e702bfd1c506dc5d Mon Sep 17 00:00:00 2001 From: Boyan Karatotev Date: Thu, 9 Feb 2023 15:55:34 +0000 Subject: [PATCH] fix(deps): add missing aeabi_memset.S This file provides __aeabi_memclr8 builtin which the Ubuntu 22.04 version of clang 14 needs to compile. Add it to prevent this oddity from failing the build. Signed-off-by: Boyan Karatotev Change-Id: Id67aa0abba4a27c51b3ed6bb1be84b4e803b44bf --- lib/compiler-rt/builtins/arm/aeabi_memset.S | 49 +++++++++++++++++++++ lib/compiler-rt/compiler-rt.mk | 1 + 2 files changed, 50 insertions(+) create mode 100644 lib/compiler-rt/builtins/arm/aeabi_memset.S diff --git a/lib/compiler-rt/builtins/arm/aeabi_memset.S b/lib/compiler-rt/builtins/arm/aeabi_memset.S new file mode 100644 index 000000000..2aa8ec0c4 --- /dev/null +++ b/lib/compiler-rt/builtins/arm/aeabi_memset.S @@ -0,0 +1,49 @@ +//===-- aeabi_memset.S - EABI memset implementation -----------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "../assembly.h" + +// void __aeabi_memset(void *dest, size_t n, int c) { memset(dest, c, n); } +// void __aeabi_memclr(void *dest, size_t n) { __aeabi_memset(dest, n, 0); } + + .syntax unified + .p2align 2 +DEFINE_COMPILERRT_FUNCTION(__aeabi_memset) + mov r3, r1 + mov r1, r2 + mov r2, r3 +#ifdef USE_THUMB_1 + push {r7, lr} + bl memset + pop {r7, pc} +#else + b memset +#endif +END_COMPILERRT_FUNCTION(__aeabi_memset) + +DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memset4, __aeabi_memset) +DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memset8, __aeabi_memset) + + .p2align 2 +DEFINE_COMPILERRT_FUNCTION(__aeabi_memclr) + mov r2, r1 + movs r1, #0 +#ifdef USE_THUMB_1 + push {r7, lr} + bl memset + pop {r7, pc} +#else + b memset +#endif +END_COMPILERRT_FUNCTION(__aeabi_memclr) + +DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr4, __aeabi_memclr) +DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr8, __aeabi_memclr) + +NO_EXEC_STACK_DIRECTIVE + diff --git a/lib/compiler-rt/compiler-rt.mk b/lib/compiler-rt/compiler-rt.mk index 2338908f3..b41c4d037 100644 --- a/lib/compiler-rt/compiler-rt.mk +++ b/lib/compiler-rt/compiler-rt.mk @@ -35,6 +35,7 @@ ifeq (${ARCH},aarch32) COMPILER_RT_SRCS += lib/compiler-rt/builtins/arm/aeabi_ldivmod.S \ lib/compiler-rt/builtins/arm/aeabi_uldivmod.S \ lib/compiler-rt/builtins/arm/aeabi_memcpy.S \ + lib/compiler-rt/builtins/arm/aeabi_memset.S \ lib/compiler-rt/builtins/ctzdi2.c \ lib/compiler-rt/builtins/divdi3.c \ lib/compiler-rt/builtins/divmoddi4.c \ -- 2.39.5