summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/patches/illumos-libgo-lfstack.diff20
-rw-r--r--debian/rules.patch1
2 files changed, 21 insertions, 0 deletions
diff --git a/debian/patches/illumos-libgo-lfstack.diff b/debian/patches/illumos-libgo-lfstack.diff
new file mode 100644
index 0000000..e0fc2d4
--- /dev/null
+++ b/debian/patches/illumos-libgo-lfstack.diff
@@ -0,0 +1,20 @@
+Index: gcc-5/src/libgo/runtime/lfstack.goc
+===================================================================
+--- gcc-5.orig/src/libgo/runtime/lfstack.goc
++++ gcc-5/src/libgo/runtime/lfstack.goc
+@@ -29,7 +29,6 @@ static inline LFNode* lfUnpack(uint64 va
+ // So we use 17msb of pointers as ABA counter.
+ # define PTR_BITS 47
+ # endif
+-# endif
+ # define CNT_BITS (64 - PTR_BITS + 3)
+ static inline uint64 lfPack(LFNode *node, uintptr cnt) {
+ return ((uint64)(node)<<(64-PTR_BITS)) | (cnt&(((1<<CNT_BITS)-1)));
+@@ -37,6 +36,7 @@ static inline uint64 lfPack(LFNode *node
+ static inline LFNode* lfUnpack(uint64 val) {
+ return (LFNode*)((val >> CNT_BITS) << 3);
+ }
++# endif /* __sparc__ ... */
+ #else
+ static inline uint64 lfPack(LFNode *node, uintptr cnt) {
+ return ((uint64)(uintptr)(node)<<32) | cnt;
diff --git a/debian/rules.patch b/debian/rules.patch
index 50f6fa2..887d059 100644
--- a/debian/rules.patch
+++ b/debian/rules.patch
@@ -342,6 +342,7 @@ ifeq ($(DEB_TARGET_ARCH_OS), illumos)
debian_patches += illumos-boehm-gc
debian_patches += illumos-libgcc-regs
debian_patches += illumos-sysdep-unix.c
+ debian_patches += illumos-libgo-lfstack
endif
# don't remove, this is regularly overwritten, see PR sanitizer/63958.