BUILD: make dladdr1 depend on glibc version and not __USE_GNU
authorWilly Tarreau <w@1wt.eu>
Tue, 10 Mar 2020 06:51:48 +0000 (07:51 +0100)
committerWilliam Lallemand <wlallemand@haproxy.org>
Fri, 12 Jun 2020 12:43:09 +0000 (14:43 +0200)
Technically speaking the call was implemented in glibc 2.3 so we must
rely on this and not on __USE_GNU which is an internal define of glibc
to track use of GNU_SOURCE.

(cherry picked from commit 62af9c83f9ed2b25e0061798e29e3cccfce5fbdc)
Signed-off-by: William Lallemand <wlallemand@haproxy.org>

src/standard.c

index 7e219e9..1291461 100644 (file)
@@ -4350,7 +4350,7 @@ void debug_hexdump(FILE *out, const char *pfx, const char *buf,
 static int dladdr_and_size(const void *addr, Dl_info *dli, size_t *size)
 {
        int ret;
-#ifdef __USE_GNU // most detailed one
+#if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) // most detailed one
        const ElfW(Sym) *sym;
 
        ret = dladdr1(addr, dli, (void **)&sym, RTLD_DL_SYMENT);