From: Baruch Siach Date: Fri, 24 Jul 2020 04:59:20 +0000 (+0300) Subject: package/haproxy: fix static only build X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=63360d1493f4b9f751a74dd2894dc0a57f2e327f;p=buildroot.git package/haproxy: fix static only build Add a patch to avoid dlfcn.h use when the toolchain is static only. Fixes: http://autobuild.buildroot.net/results/98caf66e8a7f72ee24e4d39f3aab541f82310369/ http://autobuild.buildroot.net/results/3024eb48a026b1a91e39f7d996be3d7f50314762/ http://autobuild.buildroot.net/results/e6bbf1469926bde9057f270940d1455e0f758e0e/ Cc: Fabrice Fontaine Signed-off-by: Baruch Siach Signed-off-by: Peter Korsgaard --- diff --git a/package/haproxy/0001-BUG-MEDIUM-tools-fix-build-with-static-only-toolchai.patch b/package/haproxy/0001-BUG-MEDIUM-tools-fix-build-with-static-only-toolchai.patch new file mode 100644 index 0000000000..7ae7a6cbfd --- /dev/null +++ b/package/haproxy/0001-BUG-MEDIUM-tools-fix-build-with-static-only-toolchai.patch @@ -0,0 +1,84 @@ +From 311df83437c4d578e35e5faca30c10da28c30323 Mon Sep 17 00:00:00 2001 +Message-Id: <311df83437c4d578e35e5faca30c10da28c30323.1595566447.git.baruch@tkos.co.il> +From: Baruch Siach +Date: Fri, 24 Jul 2020 07:44:59 +0300 +Subject: [PATCH] BUG/MEDIUM: tools: fix build with static only toolchains + +uClibc toolchains built with no dynamic library support don't provide +the dlfcn.h header. That leads to build failure: + + CC src/tools.o +src/tools.c:15:10: fatal error: dlfcn.h: No such file or directory + #include + ^~~~~~~~~ +Enable dladdr only when USE_DL is defined. + +Signed-off-by: Baruch Siach +--- +Upstream status: +https://www.mail-archive.com/haproxy@formilux.org/msg37986.html + + src/tools.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/tools.c b/src/tools.c +index 1c664852ad73..0bd80f846d05 100644 +--- a/src/tools.c ++++ b/src/tools.c +@@ -10,7 +10,7 @@ + * + */ + +-#ifdef __ELF__ ++#if defined(__ELF__) && defined(USE_DL) + #define _GNU_SOURCE + #include + #include +@@ -4410,7 +4410,7 @@ const char *get_exec_path() + return ret; + } + +-#ifdef __ELF__ ++#if defined(__ELF__) && defined(USE_DL) + /* calls dladdr() or dladdr1() on and . If dladdr1 is available, + * also returns the symbol size in , otherwise returns 0 there. + */ +@@ -4444,7 +4444,7 @@ static int dladdr_and_size(const void *addr, Dl_info *dli, size_t *size) + * The file name (lib or executable) is limited to what lies between the last + * '/' and the first following '.'. An optional prefix is prepended before + * the output if not null. The file is not dumped when it's the same as the one +- * that contains the "main" symbol, or when __ELF__ is not set. ++ * that contains the "main" symbol, or when __ELF__ && USE_DL are not set. + * + * The symbol's base address is returned, or NULL when unresolved, in order to + * allow the caller to match it against known ones. +@@ -4472,7 +4472,7 @@ const void *resolve_sym_name(struct buffer *buf, const char *pfx, void *addr) + #endif + }; + +-#ifdef __ELF__ ++#if defined(__ELF__) && defined(USE_DL) + Dl_info dli, dli_main; + size_t size; + const char *fname, *p; +@@ -4489,7 +4489,7 @@ const void *resolve_sym_name(struct buffer *buf, const char *pfx, void *addr) + } + } + +-#ifdef __ELF__ ++#if defined(__ELF__) && defined(USE_DL) + /* Now let's try to be smarter */ + if (!dladdr_and_size(addr, &dli, &size)) + goto unknown; +@@ -4529,7 +4529,7 @@ const void *resolve_sym_name(struct buffer *buf, const char *pfx, void *addr) + chunk_appendf(buf, "+%#lx", (long)(addr - dli.dli_fbase)); + return NULL; + } +-#endif /* __ELF__ */ ++#endif /* __ELF__ && USE_DL */ + unknown: + /* unresolved symbol from the main file, report relative offset to main */ + if ((void*)addr < (void*)main) +-- +2.27.0 +