guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Perhaps we can (and should) just detect dangerous linkages...


From: Rob Browning
Subject: Re: Perhaps we can (and should) just detect dangerous linkages...
Date: Sun, 13 Oct 2002 14:58:37 -0500
User-agent: Gnus/5.090006 (Oort Gnus v0.06) Emacs/21.2 (i386-pc-linux-gnu)

Neil Jerram <address@hidden> writes:

>>>>>> "Rob" == Rob Browning <address@hidden> writes:
>
>     Rob> some-app-2 was linked against libuses-base-foo2 which was linked
>     Rob> against libbase2 and libuses-base-bar which was linked against
>     Rob> libbase1.  So when some-app-2 calls libuses_base_foo_init and that in
>     Rob> turn calls libbase_require_version(LIBBASE_MAJOR_VERSION), the check
>     Rob> fails because at runtime foo is calling the libbase_require_version
>     Rob> from libbase1, but passing it the compile-time embedded value for
>     Rob> LIBBASE_MAJOR_VERSION from the libbase2 it was compiled against.
>
> When an app like this is run, does the system load and use both
> libbase1 and libbase2, or does it load both but only use one, or what?

Well with my proposed checks, the app would just crater.  Without the
checks, see my earlier message(s) for more details, but the summary is
that athough I suspect it depends heavily on the OS (and probably even
on whether or not you're using libtool), on a current Debian/GNU/Linux
system using libtool, if you do nothing, some-app-2 can end up linked
indirectly against both libbase.1 and libbase.2, and at runtime, *all*
libbase symbols in the process image will resolve to one copy of
libbase, the other libbase will be completely shadowed.  Which one is
chosen appears to depend on the ordering of libuses-base-foo and
libuses-base-bar in the _LDADD line of some-app-2 -- whichever one is
first wins globally.

Presming that the ordering is such that libbase.2 dominates, I don't
actually know what happens if libbase.2 removes some symbols from the
libbase api.  Do the older libbase.1 versions of those symbols then
"show through"?  I suppose I could test, but I suspect the answer
would only mean something for the particular system I'm testing...

-- 
Rob Browning
rlb @defaultvalue.org, @linuxdevel.com, and @debian.org
Previously @cs.utexas.edu
GPG=1C58 8B2C FB5E 3F64 EA5C  64AE 78FE E5FE F0CB A0AD




reply via email to

[Prev in Thread] Current Thread [Next in Thread]