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 */
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Gnupg-users mailing list Gnupg-users@gnupg.org http://lists.gnupg.org/mailman/listinfo/gnupg-users