X-Recipient: archive-cygwin@delorie.com
X-Spam-Check-By: sourceware.org
Date: Sat, 22 Mar 2008 22:08:59 -0400
From: Christopher Faylor <cgf-use-the-mailinglist-please@cygwin.com>
To: cygwin@cygwin.com
Subject: Re: Usage of LD_PRELOAD
Message-ID: <20080323020858.GA31503@ednor.casa.cgf.cx>
Reply-To: cygwin@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
References: <loom.20080305T083145-971@post.gmane.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <loom.20080305T083145-971@post.gmane.org>
User-Agent: Mutt/1.5.16 (2007-06-09)
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
Precedence: bulk
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie.com@cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com

On Wed, Mar 05, 2008 at 08:47:13AM +0000, Matthieu CASTET wrote:
>Hi,
>
>I am trying to use LD_PRELOAD on cygwin, but I don't manage to make work.
>I suppose I do something wrong when creating my library.
>
>What I do is :
>
>$ cat << EOF > /tmp/toto1.c 
>#include <sys/stat.h>
>int chmod(const char *path, mode_t mode)
>{
>  printf("123\n");
>  return -1;
>}
>EOF
>
>$ module=toto1 gcc -shared -o /tmp/cyg${module}.dll    
>-Wl,--out-implib=lib${module}.dll.a     -Wl,--export-all-symbols    
>-Wl,--enable-auto-import -Wl,--whole-archive /tmp/toto1.c -Wl,--no-whole-archive
>
>$ export LD_PRELOAD=/tmp/cygtoto1.dll
>
>$ chmod a+w /tmp/toto1.c <-- chmod isn't redirected here (but the 
>library is loaded).
>
>
>Any idea why it doesn't work ?

Sorry for the delay. I had to research this to refresh my memory.

Cygwin requires that you hook the symbol using something like the following:

cygwin_internal (CW_HOOK, symname, sym);

Where "symname" is the name of the symbol and sym is the address of the
hook function.

cgf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

