Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Accept DT_SONAME anywhere in .dynamic
Ed Maste committed 8 years ago
commit bd1f05dd627ae3a69d3da4a5b4025a9d4c995054
parent d0084d1
1 file changed +6 -6
modified libpkg/pkg_elf.c
@@ -256,6 +256,7 @@ analyse_elf(struct pkg *pkg, const char *fpath)
	size_t dynidx;
	const char *myarch;
	const char *shlib;
+
	char *rpath = NULL;

	bool is_shlib = false;

@@ -398,13 +399,12 @@ analyse_elf(struct pkg *pkg, const char *fpath)
				pkg_addshlib_provided(pkg, shlib);
		}

-
		if (dyn->d_tag != DT_RPATH && dyn->d_tag != DT_RUNPATH)
-
			continue;
-
		
-
		shlib_list_from_rpath(elf_strptr(e, sh_link, dyn->d_un.d_val),
-
				      bsd_dirname(fpath));
-
		break;
+
		if ((dyn->d_tag == DT_RPATH || dyn->d_tag == DT_RUNPATH) &&
+
		    rpath == NULL)
+
			rpath = elf_strptr(e, sh_link, dyn->d_un.d_val);
	}
+
	if (rpath != NULL)
+
		shlib_list_from_rpath(rpath, bsd_dirname(fpath));

	/* Now find all of the NEEDED shared libraries. */