Date: Fri, 08 Feb 2002 17:51:26 +0200 From: Maxim Sobolev <sobomax@FreeBSD.org> To: Ruslan Ermilov <ru@FreeBSD.org> Cc: Terry Lambert <tlambert2@mindspring.com>, Jason Evans <jasone@canonware.com>, jdp@FreeBSD.org, deischen@FreeBSD.org, jasone@FreeBSD.org, hackers@FreeBSD.org, jlemon@FreeBSD.org Subject: Re: Linking libc before libc_r into application causes weird problems Message-ID: <3C63F3FE.D4E73334@FreeBSD.org> References: <1013147180.73417.2.camel@notebook> <20020207234233.D23162@canonware.com> <3C639A8C.6D100326@FreeBSD.org> <3C63A62D.3E4A4FC4@mindspring.com> <3C63AD02.79BA5AF5@FreeBSD.org> <20020208164132.D78163@sunbay.com> <3C63E5D1.1E423698@FreeBSD.org> <3C63E961.45706408@mindspring.com> <20020208172503.H78163@sunbay.com>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
Ruslan Ermilov wrote:
>
> On Fri, Feb 08, 2002 at 07:06:09AM -0800, Terry Lambert wrote:
> > Maxim Sobolev wrote:
> > > No, I meant ld(1). The problem here is that in the case when libc is
> > > recorded before libc_r in dynamic dependencies list the resulting
> > > executable may not work correctly (see my testcase).
> >
> > Patient: "Doctor, it hurts when I record libc before libc_r
> > in the dynamic dependencies list!"
> >
> > Doctor: [expected response]
> >
> > 8-).
> >
> > Seriously, the "Evolution" build process is seriously
> > broken; it works on Linux because Linux has a simple
> > threads implementation, rather than an efficient one.
> >
> Doctor's Assistant: "No library should ever have an explicit
> dependency on libc".
But no library has it here! libc comes out of blue just before libc_r
- see attached script. Perhaps I'm missing something, but I can't
figure out where it comes from, could you?
-Maxim
[-- Attachment #2 --]
Script started on Fri Feb 8 17:41:11 2002
root@notebook# gmake
Making all in glade
gmake[1]: Вход в каталог `/tmp/portbuild/usr/ports/mail/evolution/work/evolution-1.0.2/shell/glade'
gmake[1]: Цель `all' не требует выполнения команд.
gmake[1]: Выход из каталог `/tmp/portbuild/usr/ports/mail/evolution/work/evolution-1.0.2/shell/glade'
Making all in importer
gmake[1]: Вход в каталог `/tmp/portbuild/usr/ports/mail/evolution/work/evolution-1.0.2/shell/importer'
gmake[1]: Цель `all' не требует выполнения команд.
gmake[1]: Выход из каталог `/tmp/portbuild/usr/ports/mail/evolution/work/evolution-1.0.2/shell/importer'
gmake[1]: Вход в каталог `/tmp/portbuild/usr/ports/mail/evolution/work/evolution-1.0.2/shell'
/bin/sh ../libtool --mode=link cc -pipe -O -mpreferred-stack-boundary=2 -march=pentium -I/usr/X11R6/include -Wall -Wunused -L/usr/X11R6/lib -o evolution e-activity-handler.o e-component-registry.o e-corba-shortcuts.o e-corba-storage-registry.o e-corba-storage.o e-folder-type-registry.o e-folder.o e-gray-bar.o e-local-folder.o e-local-storage.o e-setup.o e-shell-about-box.o e-shell-folder-commands.o e-shell-folder-creation-dialog.o e-shell-folder-selection-dialog.o e-shell-folder-title-bar.o e-shell-importer.o e-shell-offline-handler.o e-shell-startup-wizard.o e-shell-user-creatable-items-handler.o e-shell-utils.o e-shell-view-menu.o e-shell-view.o e-shell.o e-shortcuts-view-model.o e-shortcuts-view.o e-shortcuts.o e-splash.o e-storage-set-view.o e-storage-set.o e-storage.o e-summary-storage.o e-task-bar.o e-task-widget.o e-uri-schema-registry.o evolution-storage-set-view.o evolution-storage-set-view-factory.o main.o libeshell.la importer/libevolution-importer.la ../widgets/e-timezone-dialog/libetimezonedialog.a ../widgets/misc/libemiscwidgets.a ../e-util/libeutil.la ../libical/src/libical/libical-evolution.la -Wl,-E -L/usr/X11R6/lib -L/usr/local/lib -lgal -lgnomeprint -lfreetype -lglade-gnome -lglade -lxml -lXpm -ljpeg -lgnomeui -lart_lgpl -lgdk_imlib -ltiff -lungif -lpng -lz -lSM -lICE -lgnome -lgnomesupport -lesd -laudiofile -lgdk_pixbuf -lgtk12 -lgdk12 -lgmodule12 -lglib12 -lintl -lXext -lX11 -lm -lgnomecanvaspixbuf -lgiconv -lc_r -L/usr/local/lib -lgthread12 -lglib12 -lc_r -Wl,-E -L/usr/X11R6/lib -L/usr/local/lib -lgnomeprint -lXpm -ljpeg -lgnomeui -lgdk_imlib -ltiff -lungif -lpng -lSM -lICE -lgnome -lgnomesupport -lesd -laudiofile -lgdk_pixbuf -lgtk12 -lgdk12 -lgmodule12 -lglib12 -lintl -lXext -lX11 -lart_lgpl -lm -lxml -lz -lfreetype -Wl,-E -L/usr/X11R6/lib -L/usr/local/lib -lgtkhtml -lgal -lgnomeprint -lfreetype -lglade-gnome -lglade -lxml -lXpm -ljpeg -lgnomeui -lart_lgpl -lgdk_imlib -ltiff -lungif -lpng -lz -lSM -lICE -lgnome -lgnomesupport -lesd -laudiofile -lgdk_pixbuf -lgnomecanvaspixbuf -lgiconv -lgconf-gtk-1 -lgconf-1 -loaf -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lwrap -lgtk12 -lgdk12 -lgmodule12 -lglib12 -lintl -lXext -lX11 -lm -Wl,-E -L/usr/X11R6/lib -L/usr/local/lib -lbonobo_conf -lbonobo -loaf -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lwrap -lbonobox -lXpm -ljpeg -lgnomeui -lart_lgpl -lgdk_imlib -ltiff -lungif -lpng -lSM -lICE -lgdk_pixbuf -lgtk12 -lgdk12 -lgmodule12 -lXext -lX11 -lxml -lz -lgnome -lgnomesupport -lintl -lesd -laudiofile -lm -lglib12 -Wl,-E -L/usr/X11R6/lib -L/usr/local/lib -lbonobo -loaf -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lwrap -lbonobox -lbonobo-print -lgnomeprint -lfreetype -lglade-gnome -lglade -lxml -lgdk_pixbuf -lgnomecanvaspixbuf -lXpm -ljpeg -lgnomeui -lart_lgpl -lgdk_imlib -ltiff -lungif -lpng -lz -lSM -lICE -lgtk12 -lgdk12 -lgmodule12 -lXext -lX11 -lgnome -lgnomesupport -lintl -lesd -laudiofile -lm -lglib12 -lc_r -L/usr/local/lib
cc -pipe -O -mpreferred-stack-boundary=2 -march=pentium -I/usr/X11R6/include -Wall -Wunused -o .libs/evolution e-activity-handler.o e-component-registry.o e-corba-shortcuts.o e-corba-storage-registry.o e-corba-storage.o e-folder-type-registry.o e-folder.o e-gray-bar.o e-local-folder.o e-local-storage.o e-setup.o e-shell-about-box.o e-shell-folder-commands.o e-shell-folder-creation-dialog.o e-shell-folder-selection-dialog.o e-shell-folder-title-bar.o e-shell-importer.o e-shell-offline-handler.o e-shell-startup-wizard.o e-shell-user-creatable-items-handler.o e-shell-utils.o e-shell-view-menu.o e-shell-view.o e-shell.o e-shortcuts-view-model.o e-shortcuts-view.o e-shortcuts.o e-splash.o e-storage-set-view.o e-storage-set.o e-storage.o e-summary-storage.o e-task-bar.o e-task-widget.o e-uri-schema-registry.o evolution-storage-set-view.o evolution-storage-set-view-factory.o main.o -Wl,-E -Wl,-E -Wl,-E -Wl,-E -Wl,-E -L/usr/X11R6/lib ./.libs/libeshell.so -L/usr/local/lib importer/.libs/libevolution-importer.so ../widgets/e-timezone-dialog/libetimezonedialog.a ../widgets/misc/libemiscwidgets.a ../e-util/.libs/libeutil.al ../libical/src/libical/.libs/libical-evolution.so -lgthread12 -lgtkhtml -lgal -lgiconv -lgconf-gtk-1 -lgconf-1 -lbonobo_conf -lbonobo -loaf -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lwrap -lbonobox -lbonobo-print -lgnomeprint -lfreetype -lglade-gnome -lglade -lxml -lgdk_pixbuf -lgnomecanvaspixbuf -lXpm -ljpeg -lgnomeui -lart_lgpl -lgdk_imlib -ltiff -lungif -lpng -lz -lSM -lICE -lgtk12 -lgdk12 -lgmodule12 -lXext -lX11 -lgnome -lgnomesupport -lintl -lesd -laudiofile -lm -lglib12 -Wl,--rpath -Wl,/usr/X11R6/lib
importer/.libs/libevolution-importer.so: warning: mktemp() possibly used unsafely; consider using mkstemp()
creating evolution
gmake[1]: Выход из каталог `/tmp/portbuild/usr/ports/mail/evolution/work/evolution-1.0.2/shell'
root@notebook# ldd .libs/evolution
.libs/evolution:
libeshell.so.0 => /usr/X11R6/lib/libeshell.so.0 (0x280ab000)
libevolution-importer.so.0 => /usr/X11R6/lib/libevolution-importer.so.0 (0x280e0000)
libical-evolution.so.0 => /usr/X11R6/lib/libical-evolution.so.0 (0x280fd000)
libgthread12.so.3 => /usr/local/lib/libgthread12.so.3 (0x2814e000)
libgtkhtml.so.21 => /usr/X11R6/lib/libgtkhtml.so.21 (0x28151000)
libgal.so.19 => /usr/X11R6/lib/libgal.so.19 (0x281c5000)
libgiconv.so.2 => /usr/local/lib/libgiconv.so.2 (0x282ab000)
libgconf-gtk-1.so.1 => /usr/X11R6/lib/libgconf-gtk-1.so.1 (0x28380000)
libgconf-1.so.1 => /usr/X11R6/lib/libgconf-1.so.1 (0x28386000)
libbonobo_conf.so.0 => /usr/X11R6/lib/libbonobo_conf.so.0 (0x283bd000)
libbonobo.so.2 => /usr/X11R6/lib/libbonobo.so.2 (0x283df000)
liboaf.so.0 => /usr/X11R6/lib/liboaf.so.0 (0x2843b000)
libORBitCosNaming.so.2 => /usr/local/lib/libORBitCosNaming.so.2 (0x28453000)
libORBit.so.2 => /usr/local/lib/libORBit.so.2 (0x2845b000)
libIIOP.so.2 => /usr/local/lib/libIIOP.so.2 (0x284a3000)
libORBitutil.so.2 => /usr/local/lib/libORBitutil.so.2 (0x284ab000)
libwrap.so.3 => /usr/lib/libwrap.so.3 (0x284ad000)
libbonobox.so.2 => /usr/X11R6/lib/libbonobox.so.2 (0x284b4000)
libbonobo-print.so.2 => /usr/X11R6/lib/libbonobo-print.so.2 (0x28509000)
libgnomeprint.so.16 => /usr/X11R6/lib/libgnomeprint.so.16 (0x2850d000)
libfreetype.so.8 => /usr/X11R6/lib/libfreetype.so.8 (0x28966000)
libglade-gnome.so.4 => /usr/X11R6/lib/libglade-gnome.so.4 (0x2899f000)
libglade.so.4 => /usr/X11R6/lib/libglade.so.4 (0x289ad000)
libxml.so.5 => /usr/local/lib/libxml.so.5 (0x289c3000)
libgdk_pixbuf.so.2 => /usr/X11R6/lib/libgdk_pixbuf.so.2 (0x28a31000)
libgnomecanvaspixbuf.so.1 => /usr/X11R6/lib/libgnomecanvaspixbuf.so.1 (0x28a45000)
libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x28a49000)
libjpeg.so.9 => /usr/local/lib/libjpeg.so.9 (0x28a56000)
libgnomeui.so.5 => /usr/X11R6/lib/libgnomeui.so.5 (0x28a73000)
libart_lgpl.so.5 => /usr/X11R6/lib/libart_lgpl.so.5 (0x28b39000)
libgdk_imlib.so.5 => /usr/X11R6/lib/libgdk_imlib.so.5 (0x28b46000)
libtiff.so.4 => /usr/local/lib/libtiff.so.4 (0x28b6f000)
libungif.so.5 => /usr/local/lib/libungif.so.5 (0x28bb2000)
libpng.so.5 => /usr/local/lib/libpng.so.5 (0x28bba000)
libz.so.2 => /usr/lib/libz.so.2 (0x28bdb000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x28be8000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x28bf1000)
libgtk12.so.2 => /usr/X11R6/lib/libgtk12.so.2 (0x28c06000)
libgdk12.so.2 => /usr/X11R6/lib/libgdk12.so.2 (0x28d24000)
libgmodule12.so.3 => /usr/local/lib/libgmodule12.so.3 (0x28d55000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x28d58000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x28d65000)
libgnome.so.5 => /usr/X11R6/lib/libgnome.so.5 (0x28e1e000)
libgnomesupport.so.5 => /usr/X11R6/lib/libgnomesupport.so.5 (0x28e34000)
libintl.so.1 => /usr/local/lib/libintl.so.1 (0x28e3b000)
libesd.so.2 => /usr/local/lib/libesd.so.2 (0x28e40000)
libaudiofile.so.0 => /usr/local/lib/libaudiofile.so.0 (0x28e47000)
libm.so.2 => /usr/lib/libm.so.2 (0x28e67000)
libglib12.so.3 => /usr/local/lib/libglib12.so.3 (0x28e8b000)
libc.so.5 => /usr/lib/libc.so.5 (0x28eac000)
libc_r.so.5 => /usr/lib/libc_r.so.5 (0x28f5d000)
libpopt.so.0 => /usr/local/lib/libpopt.so.0 (0x28f7b000)
libXThrStub.so.6 => /usr/X11R6/lib/libXThrStub.so.6 (0x28f81000)
root@notebook# ldd .libs/evolution | awk '{print $3}'
/usr/X11R6/lib/libeshell.so.0
/usr/X11R6/lib/libevolution-importer.so.0
/usr/X11R6/lib/libical-evolution.so.0
/usr/local/lib/libgthread12.so.3
/usr/X11R6/lib/libgtkhtml.so.21
/usr/X11R6/lib/libgal.so.19
/usr/local/lib/libgiconv.so.2
/usr/X11R6/lib/libgconf-gtk-1.so.1
/usr/X11R6/lib/libgconf-1.so.1
/usr/X11R6/lib/libbonobo_conf.so.0
/usr/X11R6/lib/libbonobo.so.2
/usr/X11R6/lib/liboaf.so.0
/usr/local/lib/libORBitCosNaming.so.2
/usr/local/lib/libORBit.so.2
/usr/local/lib/libIIOP.so.2
/usr/local/lib/libORBitutil.so.2
/usr/lib/libwrap.so.3
/usr/X11R6/lib/libbonobox.so.2
/usr/X11R6/lib/libbonobo-print.so.2
/usr/X11R6/lib/libgnomeprint.so.16
/usr/X11R6/lib/libfreetype.so.8
/usr/X11R6/lib/libglade-gnome.so.4
/usr/X11R6/lib/libglade.so.4
/usr/local/lib/libxml.so.5
/usr/X11R6/lib/libgdk_pixbuf.so.2
/usr/X11R6/lib/libgnomecanvaspixbuf.so.1
/usr/X11R6/lib/libXpm.so.4
/usr/local/lib/libjpeg.so.9
/usr/X11R6/lib/libgnomeui.so.5
/usr/X11R6/lib/libart_lgpl.so.5
/usr/X11R6/lib/libgdk_imlib.so.5
/usr/local/lib/libtiff.so.4
/usr/local/lib/libungif.so.5
/usr/local/lib/libpng.so.5
/usr/lib/libz.so.2
/usr/X11R6/lib/libSM.so.6
/usr/X11R6/lib/libICE.so.6
/usr/X11R6/lib/libgtk12.so.2
/usr/X11R6/lib/libgdk12.so.2
/usr/local/lib/libgmodule12.so.3
/usr/X11R6/lib/libXext.so.6
/usr/X11R6/lib/libX11.so.6
/usr/X11R6/lib/libgnome.so.5
/usr/X11R6/lib/libgnomesupport.so.5
/usr/local/lib/libintl.so.1
/usr/local/lib/libesd.so.2
/usr/local/lib/libaudiofile.so.0
/usr/lib/libm.so.2
/usr/local/lib/libglib12.so.3
/usr/lib/libc.so.5
/usr/lib/libc_r.so.5
/usr/local/lib/libpopt.so.0
/usr/X11R6/lib/libXThrStub.so.6
root@notebook# ldd .libs/evolution | awk '{print $3}' | grep -v /usr/lib/libc.so | xargs ldd | grep libc.so
root@notebook# exit
Script done on Fri Feb 8 17:43:04 2002
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3C63F3FE.D4E73334>
