ede1b9790bfd141abe441372dc1c2918fabf163f
[kopensolaris-gnu/glibc.git] / elf / ldd.sh.in
1 #! /bin/sh
2
3 # This is the `ldd' command, which lists what shared libraries are
4 # used by given dynamically-linked executables.  It works by invoking the
5 # run-time dynamic linker as a command and giving it the special `--list'
6 # switch.
7
8 RTLD=@RTLD@
9
10 case $# in
11 0)
12   echo >&2 "Usage: $0 FILE..."
13   exit 1 ;;
14 1)
15   # We don't list the file name when there is only one.
16   case "$1" in
17   /*) file="$1" ;;
18   *) file="./$1" ;;
19   esac
20   if test ! -f "$file"; then
21     echo "$file: no such file"
22   elif ${RTLD} --verify "$file"; then
23     LD_TRACE_LOADED_OBJECTS=1 exec ${RTLD} "$file" && exit 1
24   else
25     echo '      not a dynamic executable'
26   fi
27   exit ;;
28 *)
29   set -e        # Bail out immediately if ${RTLD} loses on any argument.
30   for file; do
31     echo "${file}:"
32     case "$file" in
33     /*) file="$file" ;;
34     *) file="./$file" ;;
35     esac
36     if test ! -f "$file"; then
37       echo "$file: no such file"
38     elif ${RTLD} --verify "$file"; then
39       LD_TRACE_LOADED_OBJECTS=1 ${RTLD} "$file"
40     else
41       echo '    not a dynamic executable'
42     fi
43   done
44 esac
45
46 exit 0