Hello,

On 11.05.2017 12:26, Roger Qiu wrote:
> Hi Gcrypt devs,
> 
> I just tried compiling from source libgcrypt 1.7.5 (and I also tried earlier 
> versions).
> 
> It always comes to this:
> 
> ```
> 
> libtool: link: ranlib .libs/libgcrypt.alibtool: link: rm -fr 
> .libs/libgcrypt.laxlibtool: link: ( cd ".libs" && rm -f "libgcrypt.la" && ln 
> -s "../libgcrypt.la" "libgcrypt.la" )gcc -DHAVE_CONFIG_H -I. -I..    
> -I/usr/local/include -g -O2 -Wall -MT mpicalc-mpicalc.o -MD -MP -MF 
> .deps/mpicalc-mpicalc.Tpo -c -o mpicalc-mpicalc.o `test -f 'mpicalc.c' || 
> echo './'`mpicalc.cmv -f .deps/mpicalc-mpicalc.Tpo 
> .deps/mpicalc-mpicalc.Po/bin/sh ../libtool  --tag=CC   --mode=link gcc 
> -I/usr/local/include -g -O2 -Wall   -o mpicalc.exe mpicalc-mpicalc.o 
> libgcrypt.la  -L/usr/local/lib -lgpg-errorlibtool: link: gcc 
> -I/usr/local/include -g -O2 -Wall -o .libs/mpicalc.exe mpicalc-mpicalc.o  
> ./.libs/libgcrypt.a -L/usr/local/lib /usr/local/lib/libgpg-error.a 
> -lintl./.libs/libgcrypt.a(rijndael.o): In function 
> `do_encrypt':/cygdrive/c/Users/CMCDragonkai/.src/libgcrypt-1.7.5/cipher/rijndael.c:747:(.text+0x9f):
>  relocation truncated to fit: R_X86_64_32S against 
> `.rdata'./.libs/libgcrypt.a(rijndael.o): In
> function 
> `do_decrypt':/cygdrive/c/Users/CMCDragonkai/.src/libgcrypt-1.7.5/cipher/rijndael.c:1130:(.text+0x110):
>  relocation truncated to fit: R_X86_64_32S against 
> `.rdata'./.libs/libgcrypt.a(cast5-amd64.o):/cygdrive/c/Users/CMCDragonkai/.src/libgcrypt-1.7.5/cipher/cast5-amd64.S:201:(.text+0x9):
>  relocation truncated to fit: R_X86_64_32S against symbol `_gcry_cast5_s1to4' 
> defined in .rdata section in 
> ./.libs/libgcrypt.a(cast5.o)./.libs/libgcrypt.a(cast5-amd64.o):/cygdrive/c/Users/CMCDragonkai/.src/libgcrypt-1.7.5/cipher/cast5-amd64.S:241:(.text+0x429):
>  relocation truncated to fit: R_X86_64_32S against symbol `_gcry_cast5_s1to4' 
> defined in .rdata section in 
> ./.libs/libgcrypt.a(cast5.o)./.libs/libgcrypt.a(cast5-amd64.o):/cygdrive/c/Users/CMCDragonkai/.src/libgcrypt-1.7.5/cipher/cast5-amd64.S:376:(.text+0x844):
>  relocation truncated to fit: R_X86_64_32S against symbol `_gcry_cast5_s1to4' 
> defined in .rdata section in
> ./.libs/libgcrypt.a(cast5.o)./.libs/libgcrypt.a(cast5-amd64.o):/cygdrive/c/Users/CMCDragonkai/.src/libgcrypt-1.7.5/cipher/cast5-amd64.S:404:(.text+0x177c):
>  relocation truncated to fit: R_X86_64_32S against symbol `_gcry_cast5_s1to4' 
> defined in .rdata section in ./.libs/libgcrypt.a(cast5.o)collect2: error: ld 
> returned 1 exit statusmake[2]: *** [Makefile:712: mpicalc.exe] Error 
> 1make[2]: Leaving directory 
> '/cygdrive/c/Users/CMCDragonkai/.src/libgcrypt-1.7.5/src'make[1]: *** 
> [Makefile:477: all-recursive] Error 1make[1]: Leaving directory 
> '/cygdrive/c/Users/CMCDragonkai/.src/libgcrypt-1.7.5'make: *** [Makefile:408: 
> all] Error 2
> 
> ```
> 
> Please cc me as I am not subscribed to the mailing list.
> 
> All other dependencies of gnupg works on cygwin 64 bit, this is the only one 
> that fails, and thus prevents building gpg2 on Cygwin 64 bit.

Does attached patch solve the problem? Patch is made on top of libgcrypt 
development branch, but I think it should apply to 1.7.5 too.

-Jussi

Fix building on 64-bit cygwin

From: Jussi Kivilinna <jussi.kivili...@iki.fi>

* cipher/cast5-amd64.S [HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS]
(GET_EXTERN_POINTER): Load 64-bit address instead of 32-bit.
* cipher/rijndael.c (do_encrypt, do_decrypt)
[USE_AMD64_ASM && !HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS]: Load
table pointer through register instead of generic reference.
--

Signed-off-by: Jussi Kivilinna <jussi.kivili...@iki.fi>
---
 cipher/cast5-amd64.S |    2 +-
 cipher/rijndael.c    |    4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/cipher/cast5-amd64.S b/cipher/cast5-amd64.S
index a5f078e3..608fb64e 100644
--- a/cipher/cast5-amd64.S
+++ b/cipher/cast5-amd64.S
@@ -24,7 +24,7 @@
      defined(HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS)) && defined(USE_CAST5)
 
 #if defined(HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS) || !defined(__PIC__)
-#  define GET_EXTERN_POINTER(name, reg) leaq name, reg
+#  define GET_EXTERN_POINTER(name, reg) movabsq $name, reg
 #else
 #  define GET_EXTERN_POINTER(name, reg) movq name@GOTPCREL(%rip), reg
 #endif
diff --git a/cipher/rijndael.c b/cipher/rijndael.c
index 66ea0f3a..8637195a 100644
--- a/cipher/rijndael.c
+++ b/cipher/rijndael.c
@@ -752,7 +752,7 @@ do_encrypt (const RIJNDAEL_context *ctx,
                   "+d" (ax),
                   "+c" (rounds)
                 : "0" (_gcry_aes_amd64_encrypt_block),
-                  [encT] "g" (encT)
+                  [encT] "r" (encT)
                 : "cc", "memory", "r8", "r9", "r10", "r11");
   return ret;
 # endif /* HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS */
@@ -1135,7 +1135,7 @@ do_decrypt (const RIJNDAEL_context *ctx, unsigned char *bx,
                   "+d" (ax),
                   "+c" (rounds)
                 : "0" (_gcry_aes_amd64_decrypt_block),
-                  [dectabs] "g" (&dec_tables)
+                  [dectabs] "r" (&dec_tables)
                 : "cc", "memory", "r8", "r9", "r10", "r11");
   return ret;
 # endif /* HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS */

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Gnupg-users mailing list
Gnupg-users@gnupg.org
http://lists.gnupg.org/mailman/listinfo/gnupg-users

Reply via email to