Questions on running check-abi

Phil Edwards phil@jaj.com
Thu Oct 31 14:50:00 GMT 2002


On Tue, Oct 29, 2002 at 04:11:17PM -0500, Phil Edwards wrote:
> On Sun, Oct 27, 2002 at 10:16:43AM +0100, Andreas Jaeger wrote:
> > but it seems this does not set up everything right since libgcc_s.so.1
> > is not found correctly:
> > $ make check-abi
> > ./abi_check: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
> > make: [check-abi] Error 127 (ignored)
> > 
> > (this is a system that has gcc 2.95 as default compiler and gcc 3.3
> > installed into /opt/gcc).
> 
> Yeah, problem.  We were finding the installed libstdc++.so earlier,
> so we introduced LD_RUN_PATH into the abi_check build rule, so that the
> freshly-built library was found.  Now we're finding the system-installed
> libgcc_s.so instead of the freshly-built one.  (I just ran ldd on my
> build tree.)  I'll fix this.

Or maybe not.  When I started to mess around with fixing this, I remembered
the problems with LD_RUN_PATH in the first place.  Here's the start of the
thread:

    http://gcc.gnu.org/ml/libstdc++/2002-09/msg00009.html

We still have to get multilibs into the picture.

Also, amusingly enough, we don't have a variable anywhere for the build-time
directory that holds libgcc_s.so.  The proper solution AFAICT is to call
testsuite/Makefile's CXX_fake with -print-libgcc-file-name, and run the
result through dirname.  Then add that path to the LD_RUN_PATH bit in
testsuite/Makefile.

Of course, we can't have that many level of backticks in a Makefile variable
without some really annoying syntax.  The POSIX shell's $(command) syntax
was introduced for this reason -- proper nesting -- but we have to cater
to systems where the /bin/sh suffers from rectal-cranial inversion.

And that still doesn't get multilibs into the picture.

In the absence of staging, we can use a hack like the 'testsuite_flags
--rpath' patch that I posted as an example in the thread above.  Or we can
have configure write a small script in our build directory called 'cxx_fake'
that does all this, including passing all the -B and -include parameters,
and that we can pretend is a working compiler.



Phil

-- 
I would therefore like to posit that computing's central challenge, viz. "How
not to make a mess of it," has /not/ been met.
                                                 - Edsger Dijkstra, 1930-2002



More information about the Libstdc++ mailing list