| 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 ++++++-- |
| 1 file changed, 6 insertions(+), 2 deletions(-) |
| |
| 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 |
| |