[PATCH] Link against standalone error library if available
Mark Wielaard
mark@klomp.org
Wed Jan 29 12:40:06 GMT 2025
Hi,
On Wed, Jan 29, 2025 at 07:57:37AM +0000, parona wrote:
> On Monday, January 27th, 2025 at 10:40 PM, Mark Wielaard <mark@klomp.org> wrote:
> > So maybe our configure check is wrong and it should just test whether
> > there is an error.h but also if you can link the result?
>
> Included patch that checks if the symbol is available before
> defining HAVE_ERROR_H. This would also work, and wouldn't add a new
> automagic dependency on musl.
I definitely like this patch. But when doing an autoreconf -f -v -i
(autoconf 2.27) I get:
autoheader: warning: missing template: HAVE_ERROR_H
autoheader: warning: Use AC_DEFINE([HAVE_ERROR_H], [], [Description])
autoreconf: error: /usr/bin/autoheader failed with exit status: 1
So I had to redefine it as:
AC_CHECK_HEADER([error.h], [AC_CHECK_FUNC([error], AC_DEFINE([HAVE_ERROR_H], [1], [Define if error.h is usable]))])
Which results in:
checking for error.h... yes
checking for error... yes
checking for err.h... yes
And the following definition in config.h
/* Define if error.h is usable */
#define HAVE_ERROR_H 1
If this also works for you I'll check it in as attached.
Thanks,
Mark
-------------- next part --------------
>From 1d1739f1664964252d6b5cde233805f6a14459bf Mon Sep 17 00:00:00 2001
From: Alfred Wingate <parona@protonmail.com>
Date: Wed, 29 Jan 2025 09:32:49 +0200
Subject: [PATCH] Declare HAVE_ERROR_H only if error symbol is available
Musl doesn't provide error.h. But there exists a standalone implementation
that installs /usr/include/error.h but requires explicit linkage. This
leads linkage errors later on due to the assumption that error
symbols are provided by the libc.
Bug: https://bugs.gentoo.org/948878
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32548
Signed-off-by: Alfred Wingate <parona@protonmail.com>
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 1da2a12c0a00..e57d39275591 100644
--- a/configure.ac
+++ b/configure.ac
@@ -477,7 +477,7 @@ AC_CHECK_FUNCS([process_vm_readv mremap])
AS_IF([test "x$ac_cv_func_mremap" = "xno"],
[AC_MSG_WARN([elf_update needs mremap to support ELF_C_RDWR_MMAP])])
-AC_CHECK_HEADERS([error.h])
+AC_CHECK_HEADER([error.h], [AC_CHECK_FUNC([error], AC_DEFINE([HAVE_ERROR_H], [1], [Define if error.h is usable]))])
AC_CHECK_HEADERS([err.h])
dnl for debuginfod concurrency heuristics
--
2.48.1
More information about the Elfutils-devel
mailing list