Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Nov 2002 21:30:31 -0500
From:      The Anarcat <anarcat@anarcat.ath.cx>
To:        libh@freebsd.org
Subject:   precisions on the linking problem
Message-ID:  <20021120023031.GA316@lenny.anarcat.ath.cx>

next in thread | raw e-mail | index | archive | help

--opJtzjQTFsWo+cga
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Ok.. I checked out things a bit more cold-headed tonight, and it seems
that one missing function isn't defined anywhere
(LanguageInterface::LanguageInterface). In contrast, Shared::onHeap()
is defined in Pointer.o

However, both show up in the link errors.

I discovered that the linking command for libhsysinstall is somewhat
wrong. Here it is in all its beauty^Whorror:

gcc31  -shared -Wl,-x  -o libhsysinstall.so.0 -Wl,-soname,libhsysinstall.so=
.0  `lorder PackageDescription.cd.So PackageStreamReference.cd.So Feature.S=
o Feature.cd.So PackageFile.So PackageFile.cd.So Database.So Database.cd.So=
 Package.So Package.cd.So PackageStreamSubpackage.cd.So PackageStreamFile.S=
o PackageStreamFile.cd.So PackageStreamStructure.cd.So PackageStreamStructu=
re.So PackageCreator.So PackageCreator.cd.So PackageStream.So PackageStream=
.cd.So Callback.So Callback.cd.So FeaturesProvided.So FeaturesProvided.cd.S=
o Exec.cd.So History.cd.So libhsysinstall_init.So /usr/home/anarcat/cvs-wor=
k/libh/lib/sysinstall/../../lib/tcl/TclLanguageInterface.So | tsort -q` -L/=
usr/local/lib -lstdc++ -lgcc -lm

The first thing that is immediatly obvious to me is that Pointer.So is
missing in there. I don't know why/how, but it is, and that is one
major problem. Putting it back in manually immediatly has the effect
of defining Shared::onHeap() properly in libhsysinstall.so.0:

000c77b2 T Shared::onHeap(void const*)
000c76c0 T Shared::isOnHeap(Shared const*)

and in libhsysinstall.a:

Pointer.o:
         U _GLOBAL_OFFSET_TABLE_
         U _Unwind_Resume
000000f2 T Shared::onHeap(void const*)
00000000 T Shared::isOnHeap(Shared const*)

And hurray! It links!!!

Now as to why, I'll let you in a little secret.

I just redid the experiment *without* modifying the command line, that
is:

1- building the libs straight from make(1)
2- cp(1) the files over

and it just works. Even though Shared::onHeap() and friends is *not*
defined in the library:

         U Shared::onHeap(void const*)
         U Shared::isOnHeap(Shared const*)

Go figure.

It's probably Alex that had it right all along. My setup was borked.

So many headaches for nothing. :(

I'll just resume my work, thanks for the assistance!

A.

--=20
=46rom the age of uniformity, from the age of solitude, from the age of
Big Brother, from the age of doublethink - greetings!

--opJtzjQTFsWo+cga
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (FreeBSD)

iD8DBQE92vPGttcWHAnWiGcRAkxAAJ4jdhxiHCrdOoyliV0nbDO7eEBfEACfdINA
UVp5xEFUS5hSzP8Cw2dI15g=
=PT2m
-----END PGP SIGNATURE-----

--opJtzjQTFsWo+cga--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-libh" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021120023031.GA316>