From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id B66261381F3 for ; Mon, 24 Dec 2012 10:59:50 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 7AF1321C0A3; Mon, 24 Dec 2012 10:59:13 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 653C821C0A0 for ; Mon, 24 Dec 2012 10:59:12 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 4819433D9EE for ; Mon, 24 Dec 2012 10:59:11 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 856C8E544B for ; Mon, 24 Dec 2012 10:59:08 +0000 (UTC) From: "Anthony G. Basile" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Anthony G. Basile" Message-ID: <1356346677.29dfc26f50121eca6e8aa8ed0d0ad5364f47d68d.blueness@gentoo> Subject: [gentoo-commits] proj/elfix:elfix-0.7.x commit in: misc/ X-VCS-Repository: proj/elfix X-VCS-Files: misc/alt-revdep-pax X-VCS-Directories: misc/ X-VCS-Committer: blueness X-VCS-Committer-Name: Anthony G. Basile X-VCS-Revision: 29dfc26f50121eca6e8aa8ed0d0ad5364f47d68d X-VCS-Branch: elfix-0.7.x Date: Mon, 24 Dec 2012 10:59:08 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 1231c8ed-b504-42fc-b482-2f11a7b67b88 X-Archives-Hash: f4da18303f7bc89b2e92d4d7554537b4 commit: 29dfc26f50121eca6e8aa8ed0d0ad5364f47d68d Author: Anthony G. Basile gentoo org> AuthorDate: Sun Dec 23 03:47:31 2012 +0000 Commit: Anthony G. Basile gentoo org> CommitDate: Mon Dec 24 10:57:57 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=29dfc26f misc/alt-revdep-pax: add print forward linkings per elf object (-b) --- misc/alt-revdep-pax | 52 ++++++++++++++++++++++++++++++-------------------- 1 files changed, 31 insertions(+), 21 deletions(-) diff --git a/misc/alt-revdep-pax b/misc/alt-revdep-pax index 6fb88fa..4ea90d4 100755 --- a/misc/alt-revdep-pax +++ b/misc/alt-revdep-pax @@ -365,28 +365,35 @@ def migrate_flags(importer, exporter_str_flags, exporter_bin_flags): pax.setbinflags(importer, result_bin_flags) -def run_binary(binary, verbose, mark, allyes): - if not os.path.exists(binary): - print('%s\tNo such OBJECT' % binary) +def run_elf(elf, verbose, mark, allyes): + + if not os.path.exists(elf): + print('%s\tNo such OBJECT' % elf) return - ( linkings, mappings ) = get_ldd_linkings(binary) - ( binary_str_flags, binary_bin_flags ) = pax.getflags(binary) - print('%s (%s)\n' % ( binary, binary_str_flags )) + + try: + (elf_str_flags, elf_bin_flags) = pax.getflags(elf) + print('%s (%s)\n' % (elf, elf_str_flags)) + except pax.PaxError: + print('%s: No PAX flags found\n' % elf) + return + + (object_linkings, soname2library) = get_object_linkings() mismatched_libraries = [] - for soname in linkings: + for soname in object_linkings[elf]: try: - library = mappings[soname] + library = soname2library[soname] ( library_str_flags, library_bin_flags ) = pax.getflags(library) if verbose: print('\t%s\t%s ( %s )' % ( soname, library, library_str_flags )) - if binary_str_flags != library_str_flags: + if elf_str_flags != library_str_flags: mismatched_libraries.append(library) if not verbose: print('\t%s\t%s ( %s )' % ( soname, library, library_str_flags )) except pax.PaxError: - print('file for soname %s not found' % soname) + print('%s: file for soname not found' % soname) if len(mismatched_libraries) == 0: if not verbose: @@ -394,7 +401,7 @@ def run_binary(binary, verbose, mark, allyes): else: print('\n'), if mark: - print('\tWill mark libraries with %s\n' % binary_str_flags) + print('\tWill mark libraries with %s\n' % elf_str_flags) for library in mismatched_libraries: do_marking = False while True: @@ -413,12 +420,15 @@ def run_binary(binary, verbose, mark, allyes): if do_marking: try: - migrate_flags(library, binary_str_flags, binary_bin_flags) + migrate_flags(library, elf_str_flags, elf_bin_flags) + except pax.PaxError: + print('\n\tCould not set PAX flags on %s, text maybe busy' % library) + + try: + ( library_str_flags, library_bin_flags ) = pax.getflags(library) + print('\n\t\t%s ( %s )\n' % ( library, library_str_flags )) except pax.PaxError: - print("\n\tCould not set pax flags on %s, file is probably busy" % library) - print("\tShut down all processes that use it and try again") - ( library_str_flags, library_bin_flags ) = pax.getflags(library) - print('\n\t\t%s ( %s )\n' % ( library, library_str_flags )) + print('\n\t\t%s: Could not read PAX flags') def invert_so2library_mappings( so2library_mappings ): @@ -555,8 +565,8 @@ def main(): do_forward = False do_reverse = False - binary = None - soname = None + elf = None + soname = None library = None verbose = False @@ -577,7 +587,7 @@ def main(): do_reverse = True opt_count += 1 elif o == '-b': - binary = a + elf = a opt_count += 1 elif o == '-s': soname = a @@ -605,8 +615,8 @@ def main(): run_forward(verbose) elif do_reverse: run_reverse(verbose, executable_only) - elif binary != None: - run_binary(binary, verbose, mark, allyes) + elif elf != None: + run_elf(elf, verbose, mark, allyes) elif soname != None: run_soname(soname, verbose, True, mark, allyes, executable_only) elif library != None: