diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/julia.scm | 18 | ||||
-rw-r--r-- | gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch | 40 |
3 files changed, 52 insertions, 7 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 8b9597bfe1..a2a8c4a9e5 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1388,6 +1388,7 @@ dist_patch_DATA = \ %D%/packages/patches/libtirpc-hurd.patch \ %D%/packages/patches/libtommath-fix-linkage.patch \ %D%/packages/patches/libtool-skip-tests2.patch \ + %D%/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch \ %D%/packages/patches/libusb-0.1-disable-tests.patch \ %D%/packages/patches/libusb-for-axoloti.patch \ %D%/packages/patches/libutils-add-includes.patch \ diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index 83aa8b1099..17f4a9a169 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -71,13 +71,17 @@ (base32 "1y0l08k6ak1mqbfj6accf9s5686kljwgsl4vcqpxzk5n74wpm6a3")) (patches - (list - (julia-patch "libunwind-prefer-extbl" - "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1") - (julia-patch "libunwind-static-arm" - "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq") - (julia-patch "libunwind-cfa-rsp" - "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z"))))) + (append + ;; Fix linker issue for i686-linux because GCC10 changed default + ;; (see '-fno-common' option). + (search-patches "libunwind-julia-fix-GCC10-fno-common.patch") + (list + (julia-patch "libunwind-prefer-extbl" + "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1") + (julia-patch "libunwind-static-arm" + "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq") + (julia-patch "libunwind-cfa-rsp" + "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z")))))) (home-page "https://github.com/JuliaLang/tree/master/deps/"))) (define (julia-patch-url version name) 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 0000000000..8ef4b111e4 --- /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; + } + |