aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/utils/nftables/patches/205-build-add-without-libgmp-switch-to-disable-use-of-sh.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/utils/nftables/patches/205-build-add-without-libgmp-switch-to-disable-use-of-sh.patch')
-rw-r--r--package/network/utils/nftables/patches/205-build-add-without-libgmp-switch-to-disable-use-of-sh.patch186
1 files changed, 0 insertions, 186 deletions
diff --git a/package/network/utils/nftables/patches/205-build-add-without-libgmp-switch-to-disable-use-of-sh.patch b/package/network/utils/nftables/patches/205-build-add-without-libgmp-switch-to-disable-use-of-sh.patch
deleted file mode 100644
index 195c2daaad..0000000000
--- a/package/network/utils/nftables/patches/205-build-add-without-libgmp-switch-to-disable-use-of-sh.patch
+++ /dev/null
@@ -1,186 +0,0 @@
-From d73f1b630848fb7d90f51938e3c75a42ad947c26 Mon Sep 17 00:00:00 2001
-From: Steven Barth <cyrus@openwrt.org>
-Date: Mon, 15 Dec 2014 14:26:34 +0100
-Subject: [PATCH 5/5] build: add --without-libgmp switch to disable use of
- shared libgmp
-
-This disables linking the >400 KB big libgmp and replace it with
-the builtin mini-gmp which only increases size by ~30KB.
-
-Signed-off-by: Steven Barth <cyrus@openwrt.org>
----
- configure.ac | 17 +++++++++++++---
- include/expression.h | 2 +-
- include/gmputil.h | 10 +++++++++
- include/utils.h | 4 ++--
- src/Makefile.am | 4 ++++
- src/gmputil.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++--
- 6 files changed, 86 insertions(+), 8 deletions(-)
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -73,8 +73,18 @@ AM_CONDITIONAL([BUILD_PDF], [test "$DBLA
- PKG_CHECK_MODULES([LIBMNL], [libmnl >= 1.0.3])
- PKG_CHECK_MODULES([LIBNFTNL], [libnftnl >= 1.0.2])
-
--AC_CHECK_LIB([gmp], [__gmpz_init], ,
-- AC_MSG_ERROR([No suitable version of libgmp found]))
-+AC_ARG_WITH([libgmp], [AS_HELP_STRING([--without-libgmp],
-+ [Disable libgmp support (use builtin mini-gmp)])], [],
-+ [with_libgmp=yes])
-+AS_IF([test "x$with_libgmp" != xno], [
-+AC_CHECK_LIB([gmp],[__gmpz_init], , AC_MSG_ERROR([No suitable version of libgmp found]))
-+])
-+AM_CONDITIONAL([BUILD_MINIGMP], [test "x$with_libgmp" == xno])
-+
-+
-+AS_IF([test "x$with_libgmp" != xyes -a "x$CONFIG_DEBUG" = xy], [
-+AC_MSG_ERROR([--without-libgmp MUST be used with --disable-debug])
-+])
-
- AC_ARG_WITH([cli], [AS_HELP_STRING([--without-cli],
- [disable interactive CLI (libreadline support)])],
-@@ -130,4 +140,5 @@ AC_OUTPUT
- echo "
- nft configuration:
- cli support: ${with_cli}
-- enable debugging: ${with_debug}"
-+ enable debugging: ${with_debug}
-+ use shared libgmp: ${with_libgmp}"
---- a/include/expression.h
-+++ b/include/expression.h
-@@ -2,7 +2,7 @@
- #define NFTABLES_EXPRESSION_H
-
- #include <stdbool.h>
--#include <gmp.h>
-+#include <gmputil.h>
- #include <linux/netfilter/nf_tables.h>
-
- #include <nftables.h>
---- a/include/gmputil.h
-+++ b/include/gmputil.h
-@@ -1,7 +1,17 @@
- #ifndef NFTABLES_GMPUTIL_H
- #define NFTABLES_GMPUTIL_H
-
-+#include <config.h>
-+
-+#ifdef HAVE_LIBGMP
- #include <gmp.h>
-+#else
-+#include <mini-gmp.h>
-+/* mini-gmp doesn't come with gmp_printf, so we use our own minimal variant */
-+extern int mpz_printf(const char *format, const mpz_t value);
-+#define gmp_printf mpz_printf
-+#endif
-+
- #include <asm/byteorder.h>
-
- enum mpz_word_order {
---- a/include/utils.h
-+++ b/include/utils.h
-@@ -9,14 +9,14 @@
- #include <unistd.h>
- #include <assert.h>
- #include <list.h>
--#include <gmp.h>
-+#include <gmputil.h>
-
- #define BITS_PER_BYTE 8
-
- #ifdef DEBUG
- #define pr_debug(fmt, arg...) gmp_printf(fmt, ##arg)
- #else
--#define pr_debug(fmt, arg...) ({ if (false) gmp_printf(fmt, ##arg); 0; })
-+#define pr_debug(fmt, arg...) ({ if (false) {}; 0; })
- #endif
-
- #define __fmtstring(x, y) __attribute__((format(printf, x, y)))
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -51,4 +51,8 @@ if BUILD_CLI
- nft_SOURCES += cli.c
- endif
-
-+if BUILD_MINIGMP
-+nft_SOURCES += mini-gmp.c
-+endif
-+
- nft_LDADD = ${LIBMNL_LIBS} ${LIBNFTNL_LIBS}
---- a/src/gmputil.c
-+++ b/src/gmputil.c
-@@ -14,11 +14,9 @@
- #include <stdio.h>
- #include <unistd.h>
- #include <string.h>
--#include <gmp.h>
-
- #include <nftables.h>
- #include <datatype.h>
--#include <gmputil.h>
- #include <utils.h>
-
- void mpz_bitmask(mpz_t rop, unsigned int width)
-@@ -148,6 +146,61 @@ void mpz_switch_byteorder(mpz_t rop, uns
- mpz_import_data(rop, data, BYTEORDER_HOST_ENDIAN, len);
- }
-
-+#ifndef HAVE_LIBGMP
-+/* mini-gmp doesn't have a gmp_printf so we use our own minimal
-+ * variant here which is able to format a single mpz_t */
-+int mpz_printf(const char *f, const mpz_t value)
-+{
-+ int n = 0;
-+ while (*f) {
-+ if (*f != '%') {
-+ if (fputc(*f, stdout) != *f)
-+ return -1;
-+
-+ ++n;
-+ } else {
-+ unsigned long prec = 0;
-+ int base;
-+ size_t len;
-+ char *str;
-+ bool ok;
-+
-+ if (*++f == '.')
-+ prec = strtoul(++f, (char**)&f, 10);
-+
-+ if (*f++ != 'Z')
-+ return -1;
-+
-+ if (*f == 'u')
-+ base = 10;
-+ else if (*f == 'x')
-+ base = 16;
-+ else
-+ return -1;
-+
-+ len = mpz_sizeinbase(value, base);
-+ while (prec-- > len) {
-+ if (fputc('0', stdout) != '0')
-+ return -1;
-+
-+ ++n;
-+ }
-+
-+ str = mpz_get_str(NULL, base, value);
-+ ok = str && fwrite(str, 1, len, stdout) == len;
-+ free(str);
-+
-+ if (!ok)
-+ return -1;
-+
-+ n += len;
-+ }
-+ ++f;
-+ }
-+ return n;
-+}
-+#endif
-+
- static void *gmp_xrealloc(void *ptr, size_t old_size, size_t new_size)
- {
- return xrealloc(ptr, new_size);