Some newer libraries and programs use RUNPATH to specify the library
search path. These executables were being skipped by the rpath fixup
code because it was grepping the ELF header for RPATH only. A more
correct solution is to ask patchelf to report the rpath, as that tool
will properly report either RPATH or RUNPATH as appropriate.
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
if ! is_dynamic_elf "$path"; then
return
fi
- local new_rpath="`readelf -w -d "$path" | grep RPATH | \
+ local old_rpath="`$PATCHELF --print-rpath "$path"`"
+ local new_rpath="`echo "$old_rpath" | \
sed 's/.*\[\(.*\)\]/\1/g' | \
sed "s,\\\$ORIGIN,/$origin,g"`"
if test -n "$new_rpath"; then
+ print_debug "Converting RPATH '$old_rpath' -> '$new_rpath'"
$PATCHELF --set-rpath "$new_rpath" "$path"
fi
}