From d8dc2b7c0289b12eeef4feff65e3c918111b0f55 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sun, 23 Nov 2014 16:17:57 -0500 Subject: [PATCH] adapt dynamic linker for new binutils versions that omit DT_RPATH the new DT_RUNPATH semantics for search order are always used, and since binutils had always set both DT_RPATH and DT_RUNPATH when the latter was used, processing only DT_RPATH worked fine. however, recent binutils has stopped generating DT_RPATH when DT_RUNPATH is used, which broke support for this feature completely. --- src/ldso/dynlink.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index 1de430c6..00af8865 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -645,6 +645,8 @@ static void decode_dyn(struct dso *p) p->hashtab = (void *)(p->base + dyn[DT_HASH]); if (dyn[0]&(1<rpath_orig = (void *)(p->strings + dyn[DT_RPATH]); + if (dyn[0]&(1<rpath_orig = (void *)(p->strings + dyn[DT_RUNPATH]); if (search_vec(p->dynv, dyn, DT_GNU_HASH)) p->ghashtab = (void *)(p->base + *dyn); if (search_vec(p->dynv, dyn, DT_VERSYM)) -- 2.25.1