From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11240 invoked by alias); 10 Feb 2014 19:49:50 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 11230 invoked by uid 89); 10 Feb 2014 19:49:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: etr-usa.com Received: from etr-usa.com (HELO etr-usa.com) (130.94.180.135) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 10 Feb 2014 19:49:48 +0000 Received: (qmail 39283 invoked by uid 13447); 10 Feb 2014 19:49:44 -0000 Received: from unknown (HELO [172.20.0.42]) ([68.35.121.157]) (envelope-sender ) by 130.94.180.135 (qmail-ldap-1.03) with SMTP for ; 10 Feb 2014 19:49:44 -0000 Message-ID: <52F92D58.9030408@etr-usa.com> Date: Mon, 10 Feb 2014 22:05:00 -0000 From: Warren Young User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Cygwin-L Subject: Re: get rid of getpwent? (Was: cygwin-1.7.28 getpwent header declaration changes ?) References: <52F339CA.5070305@gmail.com> <20140206090117.GD2821@calimero.vinschen.de> <52F361C5.3000807@gmail.com> <20140206141321.GI2821@calimero.vinschen.de> <52F40208.5030901@etr-usa.com> <20140207094917.GN2821@calimero.vinschen.de> <52F4E540.2010606@tiscali.co.uk> <52F51D19.6080807@etr-usa.com> <31347914-BB4F-4039-984B-731B6C72F903@etr-usa.com> <52F7AEC5.5090205@tiscali.co.uk> <8B7B5FE0-7413-4358-BA8A-E0B6E0B17653@etr-usa.com> <52F8B50E.7040307@lysator.liu.se> In-Reply-To: <52F8B50E.7040307@lysator.liu.se> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2014-02/txt/msg00221.txt.bz2 On 2/10/2014 04:16, Peter Rosin wrote: > On 2014-02-10 10:02, Warren Young wrote: >> >> there *has* to be a better way than strings(1) to extract an EXE's list of DLL imports. > > objdump -x /bin/foo.exe Thank you! -x turns on 6 other flags, the only one of which that really matters here is -p. The output is complex enough that I decided to write a better parser than a grep call. Here's my new checkfile script: #!/usr/bin/perl -w my ($exe, $symbol) = @ARGV; my $in_cygdll = 0; die "usage: $0 exename symbol\n" unless length($symbol); open my $dump, '-|', "objdump -p '$exe'" or die "Can't dump $exe: $!\n"; while (<$dump>) { if (m/DLL Name: cygwin1.dll/) { $in_cygdll = 1; } elsif (m/DLL Name: /) { last; # Last cygwin1.dll symbol found; on to another DLL } elsif ($in_cygdll) { my @parts = split; if (@parts == 3 and $parts[2] eq $symbol) { print "$exe\n"; last; } } } Run it like before, except that it takes the import name to search for as a second parameter now: $ find /bin -name \*.exe -exec ./checkfile {} getpwent \; I don't have my "almost everything" Cygwin install here to run it against, so unless someone beats me to it, I won't be posting results for many hours at least. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple