summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2011-10-13 00:36:09 -0400
committerAnthony G. Basile <blueness@gentoo.org>2011-10-13 00:36:09 -0400
commit0308fc3a8336b7f1374ef8bd4d24e37cd663d18c (patch)
tree13dd7cd6799151fef8c29250fd0bc7a8fac51dd7
parentscripts/revdep-pax: improve format of output (diff)
downloadelfix-0308fc3a8336b7f1374ef8bd4d24e37cd663d18c.tar.gz
elfix-0308fc3a8336b7f1374ef8bd4d24e37cd663d18c.tar.bz2
elfix-0308fc3a8336b7f1374ef8bd4d24e37cd663d18c.zip
scripts/revdep-pax: add search by full library path
-rwxr-xr-xscripts/revdep-pax32
1 files changed, 28 insertions, 4 deletions
diff --git a/scripts/revdep-pax b/scripts/revdep-pax
index dd359db..0fcb8e6 100755
--- a/scripts/revdep-pax
+++ b/scripts/revdep-pax
@@ -215,12 +215,14 @@ def run_usage():
def run_forward(verbose):
( forward_linkings, so2library_mappings ) = get_forward_linkings()
print_forward_linkings( forward_linkings, so2library_mappings, verbose)
+ print
def run_reverse(verbose):
( forward_linkings, so2library_mappings ) = get_forward_linkings()
reverse_linkings = invert_linkings( forward_linkings )
print_reverse_linkings( reverse_linkings, so2library_mappings, verbose )
+ print
def run_binary(binary, verbose):
@@ -253,9 +255,23 @@ def run_binary(binary, verbose):
print
-def run_soname(soname, verbose):
+def invert_so2library_mappings( so2library_mappings ):
+ library2soname_mappings = {}
+ for soname, library in so2library_mappings.iteritems():
+ library2soname_mappings[library] = soname
+ return library2soname_mappings
+
+
+def run_soname(name, verbose, use_soname):
( forward_linkings, so2library_mappings ) = get_forward_linkings()
reverse_linkings = invert_linkings( forward_linkings )
+
+ if use_soname:
+ soname = name
+ else:
+ library2soname_mappings = invert_so2library_mappings(so2library_mappings)
+ soname = library2soname_mappings[name]
+
linkings = reverse_linkings[soname]
library = so2library_mappings[soname]
@@ -284,9 +300,10 @@ def run_soname(soname, verbose):
print '\tMismatches'
print
+
def main():
try:
- opts, args = getopt.getopt(sys.argv[1:], 'hfrb:s:v')
+ opts, args = getopt.getopt(sys.argv[1:], 'hfrb:s:l:v')
except getopt.GetoptError, err:
print str(err) # will print something like 'option -a not recognized'
run_usage()
@@ -302,6 +319,7 @@ def main():
binary = None
soname = None
+ library = None
verbose = False
@@ -316,6 +334,8 @@ def main():
binary = a
elif o == '-s':
soname = a
+ elif o == '-l':
+ library = a
elif o == '-v':
verbose = True
else:
@@ -337,8 +357,12 @@ def main():
if binary != None:
run_binary(binary, verbose)
- if soname !=None:
- run_soname(soname, verbose)
+ if soname != None:
+ run_soname(soname, verbose, True)
+
+ if library != None:
+ library = os.path.realpath(library)
+ run_soname(library, verbose, False)
if __name__ == '__main__':
main()