diff options
author | zimoun <zimon.toutoune@gmail.com> | 2021-12-01 16:53:47 +0100 |
---|---|---|
committer | Efraim Flashner <efraim@flashner.co.il> | 2021-12-04 19:33:30 +0200 |
commit | 9112bed60891f25c275f5da1f6f4195701919c0d (patch) | |
tree | a9285cb87ed3e843e1da4f8b6030f75631730ae9 /gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch | |
parent | cc491eab7ebd2de29fbb6fc31df75521afebc41b (diff) |
gnu: libunwind-julia: Fix build on i686-linux.
* gnu/packages/julia.scm (libunwind)[origin]<patches>: Add patch.
* gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch: New file.
* gnu/local/mk (dist_patch_DATA): Register it.
Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
Diffstat (limited to 'gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch')
-rw-r--r-- | gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch b/gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch new file mode 100644 index 00000000000..8ef4b111e4b --- /dev/null +++ b/gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch @@ -0,0 +1,40 @@ +Fix compilation with -fno-common. + +Borrowed from upstream 29e17d8d2ccbca07c423e3089a6d5ae8a1c9cb6e. +Author: Yichao Yu <yyc1992@gmail.com> +AuthorDate: Tue Mar 31 00:43:32 2020 -0400 +Commit: Dave Watson <dade.watson@gmail.com> +CommitDate: Tue Mar 31 08:06:29 2020 -0700 + +diff --git a/src/x86/Ginit.c b/src/x86/Ginit.c +index f6b8dc2..9550efa 100644 +--- a/src/x86/Ginit.c ++++ b/src/x86/Ginit.c +@@ -54,13 +54,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -71,7 +64,12 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + |