[mingw-libgcrypt] Made the win64 asm code work properly
Erik van Pienbroek
epienbro at fedoraproject.org
Wed Jan 2 22:21:32 UTC 2013
commit 5d42fe85a365517731ce210130febffcd40f0bcd
Author: Erik van Pienbroek <epienbro at fedoraproject.org>
Date: Wed Jan 2 23:21:23 2013 +0100
Made the win64 asm code work properly
libgcrypt-use-correct-asm-code-for-win64.patch | 81 ++++++++++++++++++++++++
mingw-libgcrypt.spec | 10 +++-
2 files changed, 90 insertions(+), 1 deletions(-)
---
diff --git a/libgcrypt-use-correct-asm-code-for-win64.patch b/libgcrypt-use-correct-asm-code-for-win64.patch
new file mode 100644
index 0000000..8227ac6
--- /dev/null
+++ b/libgcrypt-use-correct-asm-code-for-win64.patch
@@ -0,0 +1,81 @@
+--- mpi/mpi-internal.h.orig 2013-01-02 12:04:49.634772462 +0100
++++ mpi/mpi-internal.h 2013-01-02 12:11:41.222744150 +0100
+@@ -168,6 +168,12 @@
+ } while (0)
+
+
++#ifdef _WIN64
++#define ATTR_ABI __attribute__ ((sysv_abi))
++#else
++#define ATTR_ABI
++#endif
++
+ /*-- mpiutil.c --*/
+ #define mpi_alloc_limb_space(n,f) _gcry_mpi_alloc_limb_space((n),(f))
+ mpi_ptr_t _gcry_mpi_alloc_limb_space( unsigned nlimbs, int sec );
+@@ -186,7 +192,7 @@
+ mpi_limb_t _gcry_mpih_add_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
+ mpi_size_t s1_size, mpi_limb_t s2_limb );
+ mpi_limb_t _gcry_mpih_add_n( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
+- mpi_ptr_t s2_ptr, mpi_size_t size);
++ mpi_ptr_t s2_ptr, mpi_size_t size) ATTR_ABI;
+ mpi_limb_t _gcry_mpih_add(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size,
+ mpi_ptr_t s2_ptr, mpi_size_t s2_size);
+
+@@ -194,7 +200,7 @@
+ mpi_limb_t _gcry_mpih_sub_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
+ mpi_size_t s1_size, mpi_limb_t s2_limb );
+ mpi_limb_t _gcry_mpih_sub_n( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
+- mpi_ptr_t s2_ptr, mpi_size_t size);
++ mpi_ptr_t s2_ptr, mpi_size_t size) ATTR_ABI;
+ mpi_limb_t _gcry_mpih_sub(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size,
+ mpi_ptr_t s2_ptr, mpi_size_t s2_size);
+
+@@ -216,9 +222,9 @@
+ void _gcry_mpih_release_karatsuba_ctx( struct karatsuba_ctx *ctx );
+
+ mpi_limb_t _gcry_mpih_addmul_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
+- mpi_size_t s1_size, mpi_limb_t s2_limb);
++ mpi_size_t s1_size, mpi_limb_t s2_limb) ATTR_ABI;
+ mpi_limb_t _gcry_mpih_submul_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
+- mpi_size_t s1_size, mpi_limb_t s2_limb);
++ mpi_size_t s1_size, mpi_limb_t s2_limb) ATTR_ABI;
+ void _gcry_mpih_mul_n( mpi_ptr_t prodp, mpi_ptr_t up, mpi_ptr_t vp,
+ mpi_size_t size);
+ mpi_limb_t _gcry_mpih_mul( mpi_ptr_t prodp, mpi_ptr_t up, mpi_size_t usize,
+@@ -235,7 +241,7 @@
+
+ /*-- mpih-mul_1.c (or xxx/cpu/ *.S) --*/
+ mpi_limb_t _gcry_mpih_mul_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
+- mpi_size_t s1_size, mpi_limb_t s2_limb);
++ mpi_size_t s1_size, mpi_limb_t s2_limb) ATTR_ABI;
+
+ /*-- mpih-div.c --*/
+ mpi_limb_t _gcry_mpih_mod_1(mpi_ptr_t dividend_ptr, mpi_size_t dividend_size,
+@@ -249,9 +255,9 @@
+
+ /*-- mpih-shift.c --*/
+ mpi_limb_t _gcry_mpih_lshift( mpi_ptr_t wp, mpi_ptr_t up, mpi_size_t usize,
+- unsigned cnt);
++ unsigned cnt) ATTR_ABI;
+ mpi_limb_t _gcry_mpih_rshift( mpi_ptr_t wp, mpi_ptr_t up, mpi_size_t usize,
+- unsigned cnt);
++ unsigned cnt) ATTR_ABI;
+
+
+ /* Define stuff for longlong.h. */
+--- mpi/generic/mpi-asm-defs.h.orig 2013-01-02 15:07:53.540464492 +0100
++++ mpi/generic/mpi-asm-defs.h 2013-01-02 15:08:16.720633878 +0100
+@@ -1,8 +1,11 @@
+ /* This file defines some basic constants for the MPI machinery. We
+ * need to define the types on a per-CPU basis, so it is done with
+ * this file here. */
++#ifdef _WIN64
++#define BYTES_PER_MPI_LIMB (SIZEOF_UNSIGNED_LONG_LONG)
++#else
+ #define BYTES_PER_MPI_LIMB (SIZEOF_UNSIGNED_LONG)
+-
++#endif
+
+
+
diff --git a/mingw-libgcrypt.spec b/mingw-libgcrypt.spec
index f25ec94..fb2aa16 100644
--- a/mingw-libgcrypt.spec
+++ b/mingw-libgcrypt.spec
@@ -4,7 +4,7 @@
Name: mingw-libgcrypt
Version: 1.5.0
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: MinGW Windows gcrypt encryption library
License: LGPLv2+ and GPLv2+
@@ -28,6 +28,10 @@ Patch0: libgcrypt-mingw64-use-correct-datatype-for-GetProcessWorkingSet.
# libgcrypt-use-correct-def-file.patch
Patch2: libgcrypt-use-correct-def-file.patch
+# The ASM code is written for the generic x86_64 target.
+# For Win64 some minor changes are needed
+Patch3: libgcrypt-use-correct-asm-code-for-win64.patch
+
BuildArch: noarch
BuildRequires: mingw32-filesystem >= 95
@@ -97,6 +101,7 @@ Static library for mingw64-libgcrypt development.
%{SOURCE3}
%patch0 -p0 -b .win64
%patch2 -p0 -b .def
+%patch3 -p0 -b .asm64
%build
@@ -163,6 +168,9 @@ rm $RPM_BUILD_ROOT%{mingw64_libdir}/libgcrypt.la
%changelog
+* Wed Jan 2 2013 Erik van Pienbroek <epienbro at fedoraproject.org> - 1.5.0-6
+- Made the win64 asm code work properly
+
* Sun Oct 20 2012 Yaakov Selkowitz <yselkowitz at users.sourceforge.net> - 1.5.0-5
- Add static libraries
- Fix compile of assembly code for mingw64
More information about the scm-commits
mailing list