aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/0002-implement-arm-eabi-mem-functions.patch
diff options
context:
space:
mode:
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
+