3.3.2. LD_DEBUG
Another useful environment variable in the GNU C loader is LD_DEBUG. This triggers the dl* functions so that they give quite verbose information on what they are doing. For example:
export LD_DEBUG=files
command_to_run
displays the processing of files and libraries when handling libraries, telling you what dependencies are detected and which SOs are loaded in what order. Setting LD_DEBUG to ``bindings'' displays information about symbol binding, setting it to ``libs'' displays the library search paths, and setting ti to ``versions'' displays the version depdendencies.
Setting LD_DEBUG to ``help'' and then trying to run a program will list the possible options. Again, LD_DEBUG isn't intended for normal use, but it can be handy when debugging and testing.
EXAMPLE:
export LD_DEBUG=files,libs
eips "me"
Code:
22056:
22056: file=/usr/lib/libenvload.so [0]; needed by eips [0]
22056: file=/usr/lib/libenvload.so [0]; generating link map
22056: dynamic: 0x40029710 base: 0x40021000 size: 0x0000883c
22056: entry: 0x400214f0 phdr: 0x40021034 phnum: 5
22056:
22056:
22056: file=libm.so.6 [0]; needed by eips [0]
22056: find library=libm.so.6 [0]; searching
22056: search path=/mnt/us/extensions/system/lib/armv7l/tls/v7l/neon/vfp:/mnt/us/extensions/system/lib/armv7l/tls/v7l/neon:/mnt/us/extensions/system/lib/armv7l/tls/v7l/vfp:/mnt/us/extensions/system/lib/armv7l/tls/v7l:/mnt/us/extensions/system/lib/armv7l/tls/neon/vfp:/mnt/us/extensions/system/lib/armv7l/tls/neon:/mnt/us/extensions/system/lib/armv7l/tls/vfp:/mnt/us/extensions/system/lib/armv7l/tls:/mnt/us/extensions/system/lib/armv7l/v7l/neon/vfp:/mnt/us/extensions/system/lib/armv7l/v7l/neon:/mnt/us/extensions/system/lib/armv7l/v7l/vfp:/mnt/us/extensions/system/lib/armv7l/v7l:/mnt/us/extensions/system/lib/armv7l/neon/vfp:/mnt/us/extensions/system/lib/armv7l/neon:/mnt/us/extensions/system/lib/armv7l/vfp:/mnt/us/extensions/system/lib/armv7l:/mnt/us/extensions/system/lib/armv6l/tls/v7l/neon/vfp:/mnt/us/extensions/system/lib/armv6l/tls/v7l/neon:/mnt/us/extensions/system/lib/armv6l/tls/v7l/vfp:/mnt/us/extensions/system/lib/armv6l/tls/v7l:/mnt/us/extensions/system/lib/armv6l/tls/neon/vfp:/mnt/us/extensions/system/lib/armv6l/tls/neon:/mnt/us/extensions/system/lib/armv6l/tls/vfp:/mnt/us/extensions/system/lib/armv6l/tls:/mnt/us/extensions/system/lib/armv6l/v7l/neon/vfp:/mnt/us/extensions/system/lib/armv6l/v7l/neon:/mnt/us/extensions/system/lib/armv6l/v7l/vfp:/mnt/us/extensions/system/lib/armv6l/v7l:/mnt/us/extensions/system/lib/armv6l/neon/vfp:/mnt/us/extensions/system/lib/armv6l/neon:/mnt/us/extensions/system/lib/armv6l/vfp:/mnt/us/extensions/system/lib/armv6l (LD_LIBRARY_PATH)
22056: trying file=/mnt/us/extensions/system/lib/armv7l/tls/v7l/neon/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/tls/v7l/neon/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/tls/v7l/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/tls/v7l/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/tls/neon/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/tls/neon/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/tls/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/tls/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/v7l/neon/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/v7l/neon/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/v7l/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/v7l/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/neon/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/neon/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv7l/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/tls/v7l/neon/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/tls/v7l/neon/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/tls/v7l/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/tls/v7l/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/tls/neon/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/tls/neon/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/tls/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/tls/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/v7l/neon/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/v7l/neon/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/v7l/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/v7l/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/neon/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/neon/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/vfp/libm.so.6
22056: trying file=/mnt/us/extensions/system/lib/armv6l/libm.so.6
22056: search path=/usr/lib/tls/v7l/neon/vfp:/usr/lib/tls/v7l/neon:/usr/lib/tls/v7l/vfp:/usr/lib/tls/v7l:/usr/lib/tls/neon/vfp:/usr/lib/tls/neon:/usr/lib/tls/vfp:/usr/lib/tls:/usr/lib/v7l/neon/vfp:/usr/lib/v7l/neon:/usr/lib/v7l/vfp:/usr/lib/v7l:/usr/lib/neon/vfp:/usr/lib/neon:/usr/lib/vfp:/usr/lib:/lib/tls/v7l/neon/vfp:/lib/tls/v7l/neon:/lib/tls/v7l/vfp:/lib/tls/v7l:/lib/tls/neon/vfp:/lib/tls/neon:/lib/tls/vfp:/lib/tls:/lib/v7l/neon/vfp:/lib/v7l/neon:/lib/v7l/vfp:/lib/v7l:/lib/neon/vfp:/lib/neon:/lib/vfp:/lib (system search path)
22056: trying file=/usr/lib/tls/v7l/neon/vfp/libm.so.6
22056: trying file=/usr/lib/tls/v7l/neon/libm.so.6
22056: trying file=/usr/lib/tls/v7l/vfp/libm.so.6
22056: trying file=/usr/lib/tls/v7l/libm.so.6
22056: trying file=/usr/lib/tls/neon/vfp/libm.so.6
22056: trying file=/usr/lib/tls/neon/libm.so.6
22056: trying file=/usr/lib/tls/vfp/libm.so.6
22056: trying file=/usr/lib/tls/libm.so.6
22056: trying file=/usr/lib/v7l/neon/vfp/libm.so.6
22056: trying file=/usr/lib/v7l/neon/libm.so.6
22056: trying file=/usr/lib/v7l/vfp/libm.so.6
22056: trying file=/usr/lib/v7l/libm.so.6
22056: trying file=/usr/lib/neon/vfp/libm.so.6
22056: trying file=/usr/lib/neon/libm.so.6
22056: trying file=/usr/lib/vfp/libm.so.6
22056: trying file=/usr/lib/libm.so.6
22056: trying file=/lib/tls/v7l/neon/vfp/libm.so.6
22056: trying file=/lib/tls/v7l/neon/libm.so.6
22056: trying file=/lib/tls/v7l/vfp/libm.so.6
22056: trying file=/lib/tls/v7l/libm.so.6
22056: trying file=/lib/tls/neon/vfp/libm.so.6
22056: trying file=/lib/tls/neon/libm.so.6
22056: trying file=/lib/tls/vfp/libm.so.6
22056: trying file=/lib/tls/libm.so.6
22056: trying file=/lib/v7l/neon/vfp/libm.so.6
22056: trying file=/lib/v7l/neon/libm.so.6
22056: trying file=/lib/v7l/vfp/libm.so.6
22056: trying file=/lib/v7l/libm.so.6
22056: trying file=/lib/neon/vfp/libm.so.6
22056: trying file=/lib/neon/libm.so.6
22056: trying file=/lib/vfp/libm.so.6
22056: trying file=/lib/libm.so.6
22056:
22056: file=libm.so.6 [0]; generating link map
22056: dynamic: 0x40096ef8 base: 0x4002a000 size: 0x0006d0a8
22056: entry: 0x4002d200 phdr: 0x4002a034 phnum: 8
22056:
22056:
22056: file=libc.so.6 [0]; needed by eips [0]
22056: find library=libc.so.6 [0]; searching
22056: search path=/mnt/us/extensions/system/lib/armv7l (LD_LIBRARY_PATH)
22056: trying file=/mnt/us/extensions/system/lib/armv7l/libc.so.6
22056: search path=/usr/lib:/lib (system search path)
22056: trying file=/usr/lib/libc.so.6
22056: trying file=/lib/libc.so.6
22056:
22056: file=libc.so.6 [0]; generating link map
22056: dynamic: 0x4018ef08 base: 0x40098000 size: 0x000fa51c
22056: entry: 0x400ad6c1 phdr: 0x40098034 phnum: 10
22056:
22056:
22056: calling init: /lib/libc.so.6
22056:
22056:
22056: calling init: /lib/libm.so.6
22056:
22056:
22056: calling init: /usr/lib/libenvload.so
22056:
22056:
22056: initialize program: eips
22056:
22056:
22056: transferring control: eips
22056:
22056:
22056: calling fini: eips [0]
22056:
22056:
22056: calling fini: /usr/lib/libenvload.so [0]
22056:
22056:
22056: calling fini: /lib/libm.so.6 [0]
22056:
22056:
22056: calling fini: /lib/libc.so.6 [0]
22056:
(TO STOP:)
[root@kindle root]#
unset LD_DEBUG
[root@kindle root]#
eips "me"