summaryrefslogtreecommitdiff
path: root/toolchain/gcc/patches/6.2.0/fix-dwarf-fdpic.patch
blob: 315b40668974ca9e78451275432f4a7ca16a021a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Fix DWARF compilation for FDPIC targets

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>

diff -Nur gcc-6.1.0.orig/libgcc/unwind-dw2-fde-dip.c gcc-6.1.0/libgcc/unwind-dw2-fde-dip.c
--- gcc-6.1.0.orig/libgcc/unwind-dw2-fde-dip.c	2016-01-04 15:30:50.000000000 +0100
+++ gcc-6.1.0/libgcc/unwind-dw2-fde-dip.c	2016-08-05 02:17:40.424195128 +0200
@@ -124,7 +124,11 @@
 {
   _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 @@
   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 @@
 	    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?