2016-08-19 22:25:12 +02:00
|
|
|
From 9d9f97ca5d1ceba66677bf406c9b31027dc1f22e Mon Sep 17 00:00:00 2001
|
|
|
|
From: Waldemar Brodkorb <wbx@openadk.org>
|
|
|
|
Date: Fri, 19 Aug 2016 13:54:46 +0200
|
|
|
|
Subject: [PATCH] libgcc: fix DWARF compilation with FDPIC targets
|
|
|
|
|
|
|
|
The build of unwind-dw2-fde-dip.c currently fails for FDPIC targets with
|
|
|
|
the following error:
|
|
|
|
|
|
|
|
libgcc/unwind-dw2-fde-dip.c:167:31: error: storage size of 'load_base' isn't known
|
|
|
|
struct elf32_fdpic_loadaddr load_base;
|
|
|
|
|
|
|
|
This patch addresses that by defining load_base with the appropriate
|
|
|
|
type on FDPIC targets. It has been tested on FRV and Blackfin.
|
|
|
|
|
|
|
|
Fixes PR gcc/68468.
|
|
|
|
|
|
|
|
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
|
|
|
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
|
|
---
|
|
|
|
libgcc/unwind-dw2-fde-dip.c | 8 ++++++--
|
2016-09-06 03:12:10 +02:00
|
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
2016-08-19 22:25:12 +02:00
|
|
|
|
|
|
|
diff --git a/libgcc/unwind-dw2-fde-dip.c b/libgcc/unwind-dw2-fde-dip.c
|
|
|
|
index f7a1c3f..801bce8 100644
|
|
|
|
--- a/libgcc/unwind-dw2-fde-dip.c
|
|
|
|
+++ b/libgcc/unwind-dw2-fde-dip.c
|
|
|
|
@@ -124,7 +124,11 @@ static struct frame_hdr_cache_element
|
|
|
|
{
|
|
|
|
_Unwind_Ptr pc_low;
|
|
|
|
_Unwind_Ptr pc_high;
|
|
|
|
+#if defined __FRV_FDPIC__ || defined __BFIN_FDPIC__
|
|
|
|
+ struct elf32_fdpic_loadaddr load_base;
|
|
|
|
+#else
|
|
|
|
_Unwind_Ptr load_base;
|
|
|
|
+#endif
|
|
|
|
const ElfW(Phdr) *p_eh_frame_hdr;
|
|
|
|
const ElfW(Phdr) *p_dynamic;
|
|
|
|
struct frame_hdr_cache_element *link;
|
|
|
|
@@ -163,7 +167,7 @@ _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr)
|
|
|
|
struct unw_eh_callback_data *data = (struct unw_eh_callback_data *) ptr;
|
|
|
|
const ElfW(Phdr) *phdr, *p_eh_frame_hdr, *p_dynamic;
|
|
|
|
long n, match;
|
|
|
|
-#ifdef __FRV_FDPIC__
|
|
|
|
+#if defined __FRV_FDPIC__ || defined __BFIN_FDPIC__
|
|
|
|
struct elf32_fdpic_loadaddr load_base;
|
|
|
|
#else
|
|
|
|
_Unwind_Ptr load_base;
|
|
|
|
@@ -347,7 +351,7 @@ _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
-# elif defined __FRV_FDPIC__ && defined __linux__
|
|
|
|
+# elif (defined __FRV_FDPIC__ || defined __BFIN_FDPIC__) && defined __linux__
|
|
|
|
data->dbase = load_base.got_value;
|
|
|
|
# else
|
|
|
|
# error What is DW_EH_PE_datarel base on this platform?
|
|
|
|
--
|
|
|
|
2.7.4
|
|
|
|
|