r147958 - in /trunk/libstdc++-v3: ChangeLog Mak...

Joseph S. Myers joseph@codesourcery.com
Fri May 29 20:05:00 GMT 2009


On Fri, 29 May 2009, Tom Tromey wrote:

> Joseph> - that is, an absolute, unrelocated path containing the
> Joseph> configured prefix.  If the toolchain has been moved from the
> Joseph> configured prefix (and for this I think you can assume GCC and
> Joseph> GDB are moved together)
> 
> FWIW I don't think this assumption is warranted.

It's not ideal, but given multilib arrangements it can work in some cases 
where relocating relative to the object file won't.

> * It now computes the new module path relative to the objfile.  This
>   is better, in that moving the whole tree should work.  However, it
>   assumes that datadir is always available as $libdir/../share.
>   I'm not sure whether that is ok.

There are two problems:

* You can't assume it's $libdir/../share.  For one thing, $libdir may be a 
deeply nested subdirectory when this libstdc++ build directory was 
configured for a non-default multilib; for another, configure options may 
change the relation bewteen the paths further.  The aim should be to look 
at the relation between the two configured paths (libdir and datadir in 
this case) and apply the same relation to the path you are determining at 
runtime, without presuming the relation is "../share".

* Shared libraries are naturally copied from one place to another, with 
the -gdb.py file copied along with them.  In particular, for a cross 
compiler to a GNU/Linux target they would be copied to the /usr/lib 
directory in a sysroot directory that is the image of the target's root 
filesystem and may be referenced with --sysroot in compilation commands, 
"set sysroot" in GDB, etc.; in this case, do you want to require all the 
share/ files (which may only be of use to a cross-debugger, not on the 
target) to be copied there as well?  This is a case where relocating based 
on where GDB is installed may work better than relocating based on the 
library path.

You might reasonably say it's only GCC's job to handle the libraries in 
the relative arrangements in which GCC installs them and that when they 
are copied to a sysroot the -gdb.py file should have its relative paths 
adjusted accordingly depending on where the copier puts the other Python 
files.  But you do at least need to ensure if you do this that the paths 
are correct for the files where GCC installs them, whatever the relation 
between libdir and datadir for the multilib being installed.

-- 
Joseph S. Myers
joseph@codesourcery.com



More information about the Libstdc++ mailing list