From: Rich Felker Date: Thu, 28 Jun 2018 16:07:51 +0000 (-0400) Subject: make dladdr consistently produce the first symbol in presence of aliases X-Git-Tag: v1.1.20~50 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f6870d6b4f32c99fdbf4367422820218b2f638bb;p=oweals%2Fmusl.git make dladdr consistently produce the first symbol in presence of aliases the early-exit condition for the symbol match loop on exact matches caused dladdr to produce the first match for an exact match, but the last match for an inexact match. in the interest of consistency, require a strictly-closer match to replace an already-found one. --- diff --git a/ldso/dynlink.c b/ldso/dynlink.c index d963aeab..a773b782 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -1978,7 +1978,7 @@ int dladdr(const void *addr_arg, Dl_info *info) && (1<<(sym->st_info&0xf) & OK_TYPES) && (1<<(sym->st_info>>4) & OK_BINDS)) { size_t symaddr = (size_t)laddr(p, sym->st_value); - if (symaddr > addr || symaddr < best) + if (symaddr > addr || symaddr <= best) continue; best = symaddr; bestsym = sym;