diff options
author | Anthony G. Basile <blueness@gentoo.org> | 2014-05-27 20:07:43 -0400 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2014-05-27 20:07:56 -0400 |
commit | c86a02ad95c04a839ec79841d728b8ac83896dc7 (patch) | |
tree | dadb83c740a168f66f6ab4630774cd23899fc5e9 | |
parent | misc/ldd: correct logic for ldpaths() (diff) | |
download | elfix-c86a02ad95c04a839ec79841d728b8ac83896dc7.tar.gz elfix-c86a02ad95c04a839ec79841d728b8ac83896dc7.tar.bz2 elfix-c86a02ad95c04a839ec79841d728b8ac83896dc7.zip |
misc/ldd: 'soname => paths' at depth = 1 only
-rwxr-xr-x | misc/ldd/ldd.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/misc/ldd/ldd.py b/misc/ldd/ldd.py index c1bcc19..34d6642 100755 --- a/misc/ldd/ldd.py +++ b/misc/ldd/ldd.py @@ -77,12 +77,21 @@ def ldpaths(ld_so_conf='/etc/ld.so.conf'): def dynamic_dt_needed_paths( dt_needed, eclass, paths): + dt_needed_paths = {} for n in dt_needed: for p in paths: lib = p + os.sep + n if os.path.exists(lib): - print('%s' % lib) - return + with open(lib, 'rb') as file: + try: + readlib = ReadElf(file) + if eclass == readlib.elf_class(): + dt_needed_paths[n] = lib + except ELFError as ex: + sys.stderr.write('ELF error: %s\n' % ex) + sys.exit(1) + + return dt_needed_paths SCRIPT_DESCRIPTION = 'Print shared library dependencies' VERSION_STRING = '%%prog: based on pyelftools %s' % __version__ @@ -112,11 +121,10 @@ def main(): if len(args) > 1: sys.stdout.write('%s : \n' % f) eclass = readelf.elf_class() - #sys.stdout.write('\t%s\n' % eclass) dt_needed = readelf.dynamic_dt_needed() dt_needed_paths = dynamic_dt_needed_paths( dt_needed, eclass, paths) - for n in dt_needed: - sys.stdout.write('\t%s\n' % n ) + for n, lib in dt_needed_paths.items(): + sys.stdout.write('\t%s => %s\n' % (n, lib)) except ELFError as ex: sys.stderr.write('ELF error: %s\n' % ex) sys.exit(1) |