@@ -234,6 +234,7 @@ int elf_load_deps(const char *path, const char *map)
{
unsigned int dyn_offset, dyn_size;
unsigned int load_offset, load_vaddr;
+ unsigned int interp_offset;
if (elf_find_section(map, PT_LOAD, &load_offset, NULL, &load_vaddr)) {
ERROR("failed to load the .load section from %s\n", path);
@@ -245,6 +246,10 @@ int elf_load_deps(const char *path, const char *map)
return -1;
}
+ if (elf_find_section(map, PT_INTERP, &interp_offset, NULL, NULL) == 0) {
+ add_path_and_deps(map+interp_offset, 1, -1, 0);
+ }
+
int clazz = map[EI_CLASS];
if (clazz == ELFCLASS32)
this is needed by musl (openwrt DD) uClibc/glibc is working without this this partly fixes https://dev.openwrt.org/ticket/20785 we still don't handle DT_RPATH, DT_RUNPATH, nodeflib, ... see http://man7.org/linux/man-pages/man8/ld.so.8.html Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com> --- jail/elf.c | 5 +++++ 1 file changed, 5 insertions(+)