diff --git a/contrib/guix/libexec/prelude.bash b/contrib/guix/libexec/prelude.bash index 63b3bb877..112887762 100644 --- a/contrib/guix/libexec/prelude.bash +++ b/contrib/guix/libexec/prelude.bash @@ -68,7 +68,7 @@ fi time-machine() { # shellcheck disable=SC2086 guix time-machine --url=https://github.com/monero-project/guix.git \ - --commit=53396a22afc04536ddf75d8f82ad2eafa5082725 \ + --commit=9d09b0cf841fb657a1aec12e9bab68e00c2b493c \ --cores="$JOBS" \ --keep-failed \ --fallback \ diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index 301459c4d..18da9b12d 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -193,7 +193,8 @@ chain for " target " development.")) "0azpb9cvnbv25zg8019rqz48h8i2257ngyjg566dlnp74ivrs9vq")) (patches (search-our-patches "glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch" "glibc-2.27-guix-prefix.patch" - "glibc-2.27-no-librt.patch")))) + "glibc-2.27-no-librt.patch" + "glibc-2.27-riscv64-fix-incorrect-jal-with-HIDDEN_JUMPTARGET.patch")))) (arguments (substitute-keyword-arguments (package-arguments glibc) ((#:configure-flags flags) diff --git a/contrib/guix/patches/glibc-2.27-riscv64-fix-incorrect-jal-with-HIDDEN_JUMPTARGET.patch b/contrib/guix/patches/glibc-2.27-riscv64-fix-incorrect-jal-with-HIDDEN_JUMPTARGET.patch new file mode 100644 index 000000000..a8dde070e --- /dev/null +++ b/contrib/guix/patches/glibc-2.27-riscv64-fix-incorrect-jal-with-HIDDEN_JUMPTARGET.patch @@ -0,0 +1,41 @@ +Backported from: https://sourceware.org/git/?p=glibc.git;a=commit;h=68389203832ab39dd0dbaabbc4059e7fff51c29b +Context: https://sourceware.org/bugzilla/show_bug.cgi?id=28509 + +Resolves a build failure with glibc 2.27 + binutils >=2.40. +Patch can be removed if we update glibc to >= 2.35. + +diff --git a/sysdeps/riscv/setjmp.S b/sysdeps/riscv/setjmp.S +index cfbd276fc3..e2f8088a6e 100644 +--- a/sysdeps/riscv/setjmp.S ++++ b/sysdeps/riscv/setjmp.S +@@ -21,7 +21,7 @@ + + ENTRY (_setjmp) + li a1, 0 +- j __sigsetjmp ++ j HIDDEN_JUMPTARGET (__sigsetjmp) + END (_setjmp) + ENTRY (setjmp) + li a1, 1 +diff --git a/sysdeps/unix/sysv/linux/riscv/setcontext.S b/sysdeps/unix/sysv/linux/riscv/setcontext.S +index 9f1c7b41fd..a0d9575a08 100644 +--- a/sysdeps/unix/sysv/linux/riscv/setcontext.S ++++ b/sysdeps/unix/sysv/linux/riscv/setcontext.S +@@ -95,6 +95,7 @@ LEAF (__setcontext) + 99: j __syscall_error + + PSEUDO_END (__setcontext) ++libc_hidden_def (__setcontext) + weak_alias (__setcontext, setcontext) + + LEAF (__start_context) +@@ -108,7 +109,7 @@ LEAF (__start_context) + /* Invoke subsequent context if present, else exit(0). */ + mv a0, s2 + beqz s2, 1f +- jal __setcontext +-1: j exit ++ jal HIDDEN_JUMPTARGET (__setcontext) ++1: j HIDDEN_JUMPTARGET (exit) + + PSEUDO_END (__start_context)