[vlc-devel] [PATCH] contrib: gcrypt: Fix relocation truncated errors

Hugo Beauzée-Luyssen hugo at beauzee.fr
Thu Aug 25 18:23:33 CEST 2016


This fixed our 64bits builds.
Sending this as a patch since my asm & gcrypt experience usually involves
mistakes and a lot of pain.
---
 contrib/src/gcrypt/64bits-relocation.patch | 20 ++++++++++++++++++++
 contrib/src/gcrypt/rules.mak               |  3 +++
 2 files changed, 23 insertions(+)
 create mode 100644 contrib/src/gcrypt/64bits-relocation.patch

diff --git a/contrib/src/gcrypt/64bits-relocation.patch b/contrib/src/gcrypt/64bits-relocation.patch
new file mode 100644
index 0000000..4d995a0
--- /dev/null
+++ b/contrib/src/gcrypt/64bits-relocation.patch
@@ -0,0 +1,20 @@
+--- libgcrypt/cipher/rijndael.c.orig	2016-08-25 17:54:33.755153207 +0200
++++ libgcrypt/cipher/rijndael.c	2016-08-25 17:54:36.655151003 +0200
+@@ -744,7 +744,7 @@
+   const void *key = ctx->keyschenc;
+   uintptr_t rounds = ctx->rounds;
+   uintptr_t ret;
+-  asm volatile ("movq %[encT], %%r8\n\t"
++  asm volatile ("movabs %[encT], %%r8\n\t"
+                 "callq *%[ret]\n\t"
+                 : [ret] "=a" (ret),
+                   "+D" (key),
+@@ -1127,7 +1127,7 @@
+   const void *key = ctx->keyschdec;
+   uintptr_t rounds = ctx->rounds;
+   uintptr_t ret;
+-  asm volatile ("movq %[dectabs], %%r8\n\t"
++  asm volatile ("movabs %[dectabs], %%r8\n\t"
+                 "callq *%[ret]\n\t"
+                 : [ret] "=a" (ret),
+                   "+D" (key),
diff --git a/contrib/src/gcrypt/rules.mak b/contrib/src/gcrypt/rules.mak
index 23ec964..5239cb2 100644
--- a/contrib/src/gcrypt/rules.mak
+++ b/contrib/src/gcrypt/rules.mak
@@ -15,6 +15,9 @@ libgcrypt: libgcrypt-$(GCRYPT_VERSION).tar.bz2 .sum-gcrypt
 ifdef HAVE_WINSTORE
 	$(APPLY) $(SRC)/gcrypt/winrt.patch
 endif
+ifdef HAVE_WIN64
+	$(APPLY) $(SRC)/gcrypt/64bits-relocation.patch
+endif
 	$(MOVE)
 
 DEPS_gcrypt = gpg-error
-- 
2.9.3



More information about the vlc-devel mailing list