From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 44004 invoked by alias); 9 Jul 2019 16:40: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 43965 invoked by uid 89); 9 Jul 2019 16:40:47 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=Lavrentiev, NLM, ncbi, NCBI X-HELO: smtp-out-so.shaw.ca Received: from smtp-out-so.shaw.ca (HELO smtp-out-so.shaw.ca) (64.59.136.138) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 09 Jul 2019 16:40:45 +0000 Received: from [192.168.1.114] ([24.64.172.44]) by shaw.ca with ESMTP id ktAYhWbofIhW9ktAZhAD4u; Tue, 09 Jul 2019 10:40:44 -0600 Reply-To: Brian.Inglis@SystematicSw.ab.ca Subject: Re: Question about the ldd output To: cygwin@cygwin.com References: From: Brian Inglis Openpgp: preference=signencrypt Message-ID: Date: Tue, 09 Jul 2019 16:40:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2019-07/txt/msg00066.txt.bz2 On 2019-07-08 12:00, Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin wrote: > Well, I don't think there's anything special that Cygwin does to load executables, because these are essentially Windows processes, so they are loaded by Windows, first and foremost. > > But it gets even weirder. Below are two _consecutive!_ runs of ldd on the very same executable. Why the output differs so drastically (including the unknown dlls all of a sudden)? > > 1. > ntdll.dll => /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffc339d0000) > KERNEL32.DLL => /cygdrive/c/WINDOWS/System32/KERNEL32.DLL (0x7ffc31a00000) > KERNELBASE.dll => /cygdrive/c/WINDOWS/System32/KERNELBASE.dll (0x7ffc30090000) > cygbz2-1.dll => /usr/bin/cygbz2-1.dll (0x3f6a40000) > cygcom_err-2.dll => /usr/bin/cygcom_err-2.dll (0x3ef750000) > cyggssapi_krb5-2.dll => /usr/bin/cyggssapi_krb5-2.dll (0x3eceb0000) > cygiconv-2.dll => /usr/bin/cygiconv-2.dll (0x3ec980000) > cygpcre-1.dll => /usr/bin/cygpcre-1.dll (0x3eb1a0000) > cyggcc_s-seh-1.dll => /usr/bin/cyggcc_s-seh-1.dll (0x3ee3a0000) > cygstdc++-6.dll => /usr/bin/cygstdc++-6.dll (0x3ea280000) > cygz.dll => /cygdrive/u/2.4.0/release/Cygwin-64/bin/cygz.dll (0x3aba30000) > cygk5crypto-3.dll => /usr/bin/cygk5crypto-3.dll (0x3ec300000) > cygwin1.dll => /cygdrive/u/2.4.0/release/Cygwin-64/bin/cygwin1.dll (0x180040000) > ??? => ??? (0xe80000) > ??? => ??? (0x1440000) > ??? => ??? (0xe80000) > cygkrb5-3.dll => /usr/bin/cygkrb5-3.dll (0x3ec170000) > cygkrb5support-0.dll => /usr/bin/cygkrb5support-0.dll (0x3ec150000) > cygintl-8.dll => /usr/bin/cygintl-8.dll (0x3ec8d0000) > > 2. > ntdll.dll => /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffc339d0000) > KERNEL32.DLL => /cygdrive/c/WINDOWS/System32/KERNEL32.DLL (0x7ffc31a00000) > KERNELBASE.dll => /cygdrive/c/WINDOWS/System32/KERNELBASE.dll (0x7ffc30090000) > cygbz2-1.dll => /usr/bin/cygbz2-1.dll (0x3f6a40000) > cygcom_err-2.dll => /usr/bin/cygcom_err-2.dll (0x3ef750000) > cyggssapi_krb5-2.dll => /usr/bin/cyggssapi_krb5-2.dll (0x3eceb0000) > cygiconv-2.dll => /usr/bin/cygiconv-2.dll (0x3ec980000) > cygpcre-1.dll => /usr/bin/cygpcre-1.dll (0x3eb1a0000) > cygwin1.dll => /cygdrive/u/2.4.0/release/Cygwin-64/bin/cygwin1.dll (0x180040000) > cyggcc_s-seh-1.dll => /usr/bin/cyggcc_s-seh-1.dll (0x3ee3a0000) > cygstdc++-6.dll => /usr/bin/cygstdc++-6.dll (0x3ea280000) > cygk5crypto-3.dll => /usr/bin/cygk5crypto-3.dll (0x3ec300000) > cygkrb5-3.dll => /usr/bin/cygkrb5-3.dll (0x3ec170000) > cygz.dll => /cygdrive/u/2.4.0/release/Cygwin-64/bin/cygz.dll (0x3aba30000) > cygkrb5support-0.dll => /usr/bin/cygkrb5support-0.dll (0x3ec150000) > cygintl-8.dll => /usr/bin/cygintl-8.dll (0x3ec8d0000) Libraries may be loaded asynchronously as they are accessed, and ldd just dumps the dll import table once the subprocess is ready to run. Perhaps these are import entries that ldd should detect and skip or annotate in some more useful way. -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised. -- 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