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
