diff options
author | Timo Teräs <timo.teras@iki.fi> | 2015-09-11 09:41:44 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2015-09-11 09:41:44 +0300 |
commit | 963b00043c4d3fa933ed0c3c5d909ac3bb5d0421 (patch) | |
tree | 79a27e7456e94f5d92abb1118420850c886df1d8 /main/musl/0002-implement-arm-eabi-mem-functions.patch | |
parent | 333a16d94df1eddca2b81ea51868a91128505509 (diff) | |
download | aports-963b00043c4d3fa933ed0c3c5d909ac3bb5d0421.tar.bz2 aports-963b00043c4d3fa933ed0c3c5d909ac3bb5d0421.tar.xz |
main/musl: cherry-pick upstream fixes
make previous commits the upstream versions, and add few
additional fixes
Diffstat (limited to 'main/musl/0002-implement-arm-eabi-mem-functions.patch')
-rw-r--r-- | main/musl/0002-implement-arm-eabi-mem-functions.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/main/musl/0002-implement-arm-eabi-mem-functions.patch b/main/musl/0002-implement-arm-eabi-mem-functions.patch new file mode 100644 index 0000000000..a52c2b6211 --- /dev/null +++ b/main/musl/0002-implement-arm-eabi-mem-functions.patch @@ -0,0 +1,83 @@ +From d8be1bc0193f45d3900f8466f26d1411b7f919c3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> +Date: Sun, 30 Aug 2015 18:58:26 +0300 +Subject: [PATCH] implement arm eabi mem* functions + +these functions are part of the ARM EABI, meaning compilers may +generate references to them. known versions of gcc do not use them, +but llvm does. they are not provided by libgcc, and the de facto +standard seems to be that libc provides them. +--- + arch/arm/src/__aeabi_memclr.c | 9 +++++++++ + arch/arm/src/__aeabi_memcpy.c | 9 +++++++++ + arch/arm/src/__aeabi_memmove.c | 9 +++++++++ + arch/arm/src/__aeabi_memset.c | 9 +++++++++ + 4 files changed, 36 insertions(+) + create mode 100644 arch/arm/src/__aeabi_memclr.c + create mode 100644 arch/arm/src/__aeabi_memcpy.c + create mode 100644 arch/arm/src/__aeabi_memmove.c + create mode 100644 arch/arm/src/__aeabi_memset.c + +diff --git a/arch/arm/src/__aeabi_memclr.c b/arch/arm/src/__aeabi_memclr.c +new file mode 100644 +index 0000000..a25306d +--- /dev/null ++++ b/arch/arm/src/__aeabi_memclr.c +@@ -0,0 +1,9 @@ ++#include <string.h> ++#include "libc.h" ++ ++void __aeabi_memclr(void *dest, size_t n) ++{ ++ memset(dest, 0, n); ++} ++weak_alias(__aeabi_memclr, __aeabi_memclr4); ++weak_alias(__aeabi_memclr, __aeabi_memclr8); +diff --git a/arch/arm/src/__aeabi_memcpy.c b/arch/arm/src/__aeabi_memcpy.c +new file mode 100644 +index 0000000..4ae5c77 +--- /dev/null ++++ b/arch/arm/src/__aeabi_memcpy.c +@@ -0,0 +1,9 @@ ++#include <string.h> ++#include "libc.h" ++ ++void __aeabi_memcpy(void *restrict dest, const void *restrict src, size_t n) ++{ ++ memcpy(dest, src, n); ++} ++weak_alias(__aeabi_memcpy, __aeabi_memcpy4); ++weak_alias(__aeabi_memcpy, __aeabi_memcpy8); +diff --git a/arch/arm/src/__aeabi_memmove.c b/arch/arm/src/__aeabi_memmove.c +new file mode 100644 +index 0000000..951e7d3 +--- /dev/null ++++ b/arch/arm/src/__aeabi_memmove.c +@@ -0,0 +1,9 @@ ++#include <string.h> ++#include "libc.h" ++ ++void __aeabi_memmove(void *dest, const void *src, size_t n) ++{ ++ memmove(dest, src, n); ++} ++weak_alias(__aeabi_memmove, __aeabi_memmove4); ++weak_alias(__aeabi_memmove, __aeabi_memmove8); +diff --git a/arch/arm/src/__aeabi_memset.c b/arch/arm/src/__aeabi_memset.c +new file mode 100644 +index 0000000..8929975 +--- /dev/null ++++ b/arch/arm/src/__aeabi_memset.c +@@ -0,0 +1,9 @@ ++#include <string.h> ++#include "libc.h" ++ ++void __aeabi_memset(void *dest, size_t n, int c) ++{ ++ memset(dest, c, n); ++} ++weak_alias(__aeabi_memset, __aeabi_memset4); ++weak_alias(__aeabi_memset, __aeabi_memset8); +-- +2.5.1 + |