The attached patches fix compilation issues with mini-gmp, add a gitlab
build rule, and prevent the symbols defined in gmp-glue.h from being
exported into nettle's ABI.

The latter was to avoid abidiff differences to hogweed's ABI when built
with different gmp versions. For that I renamed the gmp-glue _nettle_*
symbols to _inettle_*.

regards,
Nikos
From 14878f9e463ecd5b8c86cfb644e56174c175d04d Mon Sep 17 00:00:00 2001
From: Nikos Mavrogiannopoulos <[email protected]>
Date: Thu, 10 Mar 2016 16:45:35 +0100
Subject: [PATCH 1/3] gmp-glue: don't export internal symbols used by gmp-glue

---
 gmp-glue.h             | 40 ++++++++++++++++++++--------------------
 testsuite/Makefile.in  |  4 ++--
 testsuite/symbols-test |  2 +-
 3 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/gmp-glue.h b/gmp-glue.h
index 7713757..8cf2962 100644
--- a/gmp-glue.h
+++ b/gmp-glue.h
@@ -49,35 +49,35 @@
 
 /* Name mangling. */
 #if !GMP_HAVE_mpz_limbs_read
-#define mpz_limbs_read _nettle_mpz_limbs_read
-#define mpz_limbs_write _nettle_mpz_limbs_write
-#define mpz_limbs_modify _nettle_mpz_limbs_modify
-#define mpz_limbs_finish _nettle_mpz_limbs_finish
-#define mpz_roinit_n _nettle_mpz_roinit_n
+#define mpz_limbs_read _inettle_mpz_limbs_read
+#define mpz_limbs_write _inettle_mpz_limbs_write
+#define mpz_limbs_modify _inettle_mpz_limbs_modify
+#define mpz_limbs_finish _inettle_mpz_limbs_finish
+#define mpz_roinit_n _inettle_mpz_roinit_n
 #endif
 
 #if !GMP_HAVE_mpn_copyd
-#define mpn_copyd _nettle_mpn_copyd
-#define mpn_copyi _nettle_mpn_copyi
-#define mpn_zero  _nettle_mpn_zero
+#define mpn_copyd _inettle_mpn_copyd
+#define mpn_copyi _inettle_mpn_copyi
+#define mpn_zero  _inettle_mpn_zero
 #endif
 
 #ifndef mpn_sqr
 #define mpn_sqr(rp, ap, n) mpn_mul_n((rp), (ap), (ap), (n))
 #endif
 
-#define cnd_swap _nettle_cnd_swap
-#define mpz_limbs_cmp _nettle_mpz_limbs_cmp
-#define mpz_limbs_read_n _nettle_mpz_limbs_read_n
-#define mpz_limbs_copy _nettle_mpz_limbs_copy
-#define mpz_set_n _nettle_mpz_set_n
-#define mpn_set_base256 _nettle_mpn_set_base256
-#define mpn_set_base256_le _nettle_mpn_set_base256_le
-#define mpn_get_base256_le _nettle_mpn_get_base256_le
-#define gmp_alloc_limbs _nettle_gmp_alloc_limbs
-#define gmp_free_limbs _nettle_gmp_free_limbs
-#define gmp_free _nettle_gmp_free
-#define gmp_alloc _nettle_gmp_alloc
+#define cnd_swap _inettle_cnd_swap
+#define mpz_limbs_cmp _inettle_mpz_limbs_cmp
+#define mpz_limbs_read_n _inettle_mpz_limbs_read_n
+#define mpz_limbs_copy _inettle_mpz_limbs_copy
+#define mpz_set_n _inettle_mpz_set_n
+#define mpn_set_base256 _inettle_mpn_set_base256
+#define mpn_set_base256_le _inettle_mpn_set_base256_le
+#define mpn_get_base256_le _inettle_mpn_get_base256_le
+#define gmp_alloc_limbs _inettle_gmp_alloc_limbs
+#define gmp_free_limbs _inettle_gmp_free_limbs
+#define gmp_free _inettle_gmp_free
+#define gmp_alloc _inettle_gmp_alloc
 
 #define TMP_GMP_DECL(name, type) type *name;	\
   size_t tmp_##name##_size
diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in
index 02c18fc..aa84141 100644
--- a/testsuite/Makefile.in
+++ b/testsuite/Makefile.in
@@ -63,7 +63,7 @@ EXTRA_TARGETS = $(EXTRA_SOURCES:.c=$(EXEEXT))
 
 
 # Includes all C source files, regardless of configuration
-SOURCES = $(TS_SOURCES) $(EXTRA_SOURCES) testutils.c dlopen-test.c
+SOURCES = $(TS_SOURCES) $(EXTRA_SOURCES) testutils.c dlopen-test.c ../gmp-glue.c
 
 DISTFILES = $(SOURCES) $(CXX_SOURCES) Makefile.in .test-rules.make \
 	    $(TS_SH) setup-env teardown-env \
@@ -84,7 +84,7 @@ all: $(EXTRA_TARGETS)
 # explicit rule for each and every executable.
 
 LIB_HOGWEED = @IF_HOGWEED@ -lhogweed
-TEST_OBJS = testutils.$(OBJEXT) ../nettle-internal.$(OBJEXT) \
+TEST_OBJS = testutils.$(OBJEXT) ../gmp-glue.$(OBJEXT) ../nettle-internal.$(OBJEXT) \
 	    $(LIB_HOGWEED) -lnettle $(LIBS)
 
 ../nettle-internal.$(OBJEXT):
diff --git a/testsuite/symbols-test b/testsuite/symbols-test
index 051d3d2..2aaac33 100755
--- a/testsuite/symbols-test
+++ b/testsuite/symbols-test
@@ -27,7 +27,7 @@ if [ -s test1.out ] ; then
 fi
 
 if [ -s ../libhogweed.a ] ; then
-    PATTERN='\.?_?_?nettle_|get_pc_thunk'
+    PATTERN='\.?_?_?nettle_|_inettle_|get_pc_thunk'
     if grep '^#define.*NETTLE_USE_MINI_GMP.*1$' ../version.h >/dev/null ; then
 	PATTERN="$PATTERN|_?(mp_|mpz_|mpn_)"
     fi
-- 
2.5.0

From f13aae72cba67bb8bc7462b88d79a7e29ca2d6bb Mon Sep 17 00:00:00 2001
From: Nikos Mavrogiannopoulos <[email protected]>
Date: Thu, 10 Mar 2016 17:44:08 +0100
Subject: [PATCH 2/3] configure: export mp_ symbols when compiling with
 mini-gmp

This addresses build issue when compiling with --enable-mini-gmp
and the symbol script being used.
---
 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 3d804db..029a15c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -91,7 +91,7 @@ AC_ARG_ENABLE(mini-gmp,
 
 if test "x$enable_mini_gmp" = xyes ; then
   NETTLE_USE_MINI_GMP=1
-  HOGWEED_EXTRA_SYMBOLS="mpz_*;gmp_*;mpn_*;"
+  HOGWEED_EXTRA_SYMBOLS="mpz_*;gmp_*;mpn_*;mp_*;"
 else
   NETTLE_USE_MINI_GMP=0
   HOGWEED_EXTRA_SYMBOLS=""
-- 
2.5.0

From 97731353e81dba097c533a1b5be285508efc3384 Mon Sep 17 00:00:00 2001
From: Nikos Mavrogiannopoulos <[email protected]>
Date: Thu, 10 Mar 2016 17:45:07 +0100
Subject: [PATCH 3/3] .gitlab-ci.yml: enhance with mini-gmp builds

---
 .gitlab-ci.yml | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8d44cbb..eafe0d6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,6 +17,14 @@ Build and Check (x86):
   - x86
   except:
   - tags
+Build and Check with mini-gmp:
+  script:
+  - ./.bootstrap &&
+    ./configure --disable-documentation --enable-mini-gmp && make -j4 &&
+    make check -j4
+  tags:
+  except:
+  - tags
 Build and Check with ubsan:
   script:
   - ./.bootstrap && 
-- 
2.5.0

_______________________________________________
nettle-bugs mailing list
[email protected]
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs

Reply via email to