summaryrefslogtreecommitdiff
path: root/elf/ldd.bash.in
diff options
context:
space:
mode:
Diffstat (limited to 'elf/ldd.bash.in')
-rw-r--r--elf/ldd.bash.in12
1 files changed, 7 insertions, 5 deletions
diff --git a/elf/ldd.bash.in b/elf/ldd.bash.in
index f400924217..c91886a1e6 100644
--- a/elf/ldd.bash.in
+++ b/elf/ldd.bash.in
@@ -74,6 +74,7 @@ For bug reporting instructions, please see:
;;
-u | --u | --un | --unu | --unus | --unuse | --unused)
unused=yes
+ bind_now=yes
shift
;;
--v | --ve | --ver)
@@ -153,7 +154,11 @@ warning: you do not have execution permission for" "\`$file'" >&2
fi
case $ret in
0)
- eval $add_env '"$file"' || result=1
+ # If the program exits with exit code 5, it means the process has been
+ # invoked with __libc_enable_secure. Fall back to running it through
+ # the dynamic linker.
+ ( eval $add_env '"$file"'; ret=$?; [ $ret != 5 ] && exit $ret;
+ eval $add_env \${RTLD} '"$file"'; ) || result=1
;;
1)
# This can be a non-ELF binary or no binary at all.
@@ -163,10 +168,7 @@ warning: you do not have execution permission for" "\`$file'" >&2
}
;;
2)
- # The following use of cat is needed to make ldd work in SELinux
- # environments where the executed program might not have permissions
- # to write to the console/tty.
- eval $add_env \${RTLD} '"$file"' | cat || result=1
+ eval $add_env \${RTLD} '"$file"' || result=1
;;
*)
echo 'ldd:' ${RTLD} $"exited with unknown exit code" "($ret)" >&2