aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/0002-implement-arm-eabi-mem-functions.patch
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2015-09-11 09:41:44 +0300
committerTimo Teräs <timo.teras@iki.fi>2015-09-11 09:41:44 +0300
commit963b00043c4d3fa933ed0c3c5d909ac3bb5d0421 (patch)
tree79a27e7456e94f5d92abb1118420850c886df1d8 /main/musl/0002-implement-arm-eabi-mem-functions.patch
parent333a16d94df1eddca2b81ea51868a91128505509 (diff)
downloadaports-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.patch83
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
+