Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <42D857E2.6020609@familiehaase.de> Date: Sat, 16 Jul 2005 02:42:10 +0200 From: "Gerrit P. Haase" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: enable-auto-image-base with libtool not working? Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Hi all, I try to integrate --enable-auto-image-base with the Gnome packages. However I have some problems with the auto-image-base flag. E.g. the libtool generated link command for the shared atk library: ccache gcc -shared .libs/atkaction.o .libs/atkcomponent.o \ .libs/atkdocument.o .libs/atkeditabletext.o \ .libs/atkgobjectaccessible.o .libs/atkhyperlink.o \ .libs/atkhypertext.o .libs/atkimage.o .libs/atknoopobject.o \ .libs/atknoopobjectfactory.o .libs/atkobject.o \ .libs/atkobjectfactory.o .libs/atkregistry.o .libs/atkrelation.o \ .libs/atkrelationset.o .libs/atkselection.o .libs/atkstate.o \ .libs/atkstateset.o .libs/atkstreamablecontent.o .libs/atktable.o \ .libs/atktext.o .libs/atkutil.o .libs/atkvalue.o \ .libs/atk-enum-types.o /usr/lib/libgobject-2.0.dll.a -L/usr/lib \ /usr/lib/libgmodule-2.0.dll.a /usr/lib/libglib-2.0.dll.a \ /usr/lib/libintl.dll.a /usr/lib/libiconv.dll.a -Wl,-s \ -Wl,--enable-auto-image-base -o .libs/cygatk-1.0-0.dll \ -Wl,--image-base=0x10000000 \ -Wl,--out-implib,.libs/libatk-1.0.dll.a I defined -W-,--enable-auto-image-base during configure. The flag is passed through to the linker, but libtool defines its own image-base command. I want that libtool doesn't override my defines, so in case the user specifies an image-base command libtool sshouldn't override it. Since ld --help says: --enable-auto-image-base Automatically choose image base for DLLs unless user specifies one for this DLL is no auto-image-base calculated but the libtool specified base is used. $ objdump -p atk-1.9.1/.build/atk/.libs/cygatk-1.0-0.dll | fgrep ImageBase ImageBase 10000000 What can I do to convince libtool not to override my definition? $ ./atk-1.9.1/.build/libtool --version ltmain.sh (GNU libtool) 1.5.18 (1.1220.2.246 2005/05/16 10:00:18) $ ld --version GNU ld version 2.16.91 20050610 Copyright 2005 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License. This program has absolutely no warranty. I modified libtool.m4 to issue auto-image base instead of a predefined base address (the default 10000000). *Now*, after applying the attached patch I got the desired link command: ccache gcc -shared .libs/testrelation.o \ ../atk/.libs/libatk-1.0.dll.a -L/usr/lib \ /usr/lib/libgobject-2.0.dll.a /usr/lib/libgmodule-2.0.dll.a \ /usr/lib/libglib-2.0.dll.a /usr/lib/libintl.dll.a \ /usr/lib/libiconv.dll.a -Wl,-s -o .libs/cygtestrelation.dll \ -Wl,--enable-auto-image-base \ -Wl,--out-implib,.libs/libtestrelation.dll.a *but* it doesn't work: $ for in in `find atk-1.9.1/ -name "*.dll"` ; do objdump -p $i | fgrep ImageBase ; done ImageBase 10000000 ImageBase 10000000 ImageBase 10000000 *or* am I doing s.th. wrong with testing for the real imagebase? I also did: $ ccache -c Cleaned cache $ ccache -C Cleared cache and repeated the build after making clean. The result is the same: $ for in in `find atk-1.9.1/ -name "*.dll"` ; do objdump -p $i | fgrep ImageBase ; done ImageBase 10000000 ImageBase 10000000 ImageBase 10000000 Though, building perl with the auto-image-base works ok: $ objdump -p /usr/bin/cygperl5_8.dll | fgrep ImageBase ImageBase 6d540000 PIBKAC? Clueless, Gerrit -- 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/