diff options
Diffstat (limited to 'main/musl/0008-add-some-ARM-EABI-specific-exception-handling-infras.patch')
-rw-r--r-- | main/musl/0008-add-some-ARM-EABI-specific-exception-handling-infras.patch | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/main/musl/0008-add-some-ARM-EABI-specific-exception-handling-infras.patch b/main/musl/0008-add-some-ARM-EABI-specific-exception-handling-infras.patch deleted file mode 100644 index 85557f2f6d..0000000000 --- a/main/musl/0008-add-some-ARM-EABI-specific-exception-handling-infras.patch +++ /dev/null @@ -1,66 +0,0 @@ -From f39afb9ffb34b747bfc1ec9d77b239c0c32a754d Mon Sep 17 00:00:00 2001 -From: Rich Felker <dalias@aerifal.cx> -Date: Wed, 10 Jul 2013 16:11:01 -0400 -Subject: [PATCH 08/10] add some ARM EABI-specific exception handling - infrastructure -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -patch by Timo Teräs ---- - arch/arm/src/find_exidx.c | 42 ++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 42 insertions(+) - create mode 100644 arch/arm/src/find_exidx.c - -diff --git a/arch/arm/src/find_exidx.c b/arch/arm/src/find_exidx.c -new file mode 100644 -index 0000000..77c4472 ---- /dev/null -+++ b/arch/arm/src/find_exidx.c -@@ -0,0 +1,42 @@ -+#define _GNU_SOURCE -+#include <link.h> -+#include <stdint.h> -+ -+struct find_exidx_data { -+ uintptr_t pc, exidx_start; -+ int exidx_len; -+}; -+ -+static int find_exidx(struct dl_phdr_info *info, size_t size, void *ptr) -+{ -+ struct find_exidx_data *data = ptr; -+ const ElfW(Phdr) *phdr = info->dlpi_phdr; -+ uintptr_t addr, exidx_start = 0; -+ int i, match = 0, exidx_len = 0; -+ -+ for (i = info->dlpi_phnum; i > 0; i--, phdr++) { -+ addr = info->dlpi_addr + phdr->p_vaddr; -+ switch (phdr->p_type) { -+ case PT_LOAD: -+ match |= data->pc >= addr && data->pc < addr + phdr->p_memsz; -+ break; -+ case PT_ARM_EXIDX: -+ exidx_start = addr; -+ exidx_len = phdr->p_memsz; -+ break; -+ } -+ } -+ data->exidx_start = exidx_start; -+ data->exidx_len = exidx_len; -+ return match; -+} -+ -+uintptr_t __gnu_Unwind_Find_exidx(uintptr_t pc, int *pcount) -+{ -+ struct find_exidx_data data; -+ data.pc = pc; -+ if (dl_iterate_phdr(find_exidx, &data) <= 0) -+ return 0; -+ *pcount = data.exidx_len / 8; -+ return data.exidx_start; -+} --- -1.8.3.2 - |