On Sat, 13 Feb 2010 at 14:08:07 -0800, Steve Langasek wrote: > FWIW, it was an unintended consequence of the wording of the policy change > that static libs and .so symlinks are permitted in the multiarch dirs at > this point
As Goswin pointed out in an earlier thread, in the general case (libraries
that load plugins) much smaller patches to upstream code tend to be involved
in changing ${libdir}, as I did here, rather than trying to move the runtime
library, plugins, etc. independently.
I've started a proof-of-concept patch for Mesa (which has DRI drivers as
plugins) as an example of a library that loads plugins, and I see you've done
some work on a multiarch branch for pam.
(Would you mind if I filed a wishlist bug on pam referencing your branch,
by the way? I nearly started reimplementing it before I realised you'd
got there first...)
> We don't really want extra -L options passed to the build for every library
> that's installed to the multiarch lib dir.
A portable pkg-config file will always have these -L options (because they'd
be needed if the library was in a non-standard location), and rely on
pkg-config to filter them out. You're right that pkg-config will need patching
to do this for the multiarch directories too.
However, that doesn't seem to be fatal:
> Has anyone verified that these extra -L options don't cause libtool to add
> wrong rpaths to resulting binaries?
I hadn't, but it appears to be OK both with and without libtool. I'll verify
this by preparing a multiarch patch for something that has non-trivial reverse
dependencies.
> Has anyone checked that gdb will succeed in finding debug symbols via the
> multiarch paths? (I guess gdb handles these generically by prepending
> /usr/lib/debug to the real object path, but probably should be
> double-checked anyway)
Seems to work fine, here's a gdb session:
> s...@reptile% gdb --args /usr/bin/gfsplit hello.c
> ...
> Reading symbols from /usr/bin/gfsplit...Reading symbols from
> /usr/lib/debug/usr/bin/gfsplit...done.
> (no debugging symbols found)...done.
> (gdb) break gfshare_ctx_init_enc
> Breakpoint 1 at 0x8048af0
> (gdb) run
> Starting program: /usr/bin/gfsplit hello.c
>
> Breakpoint 1, gfshare_ctx_init_enc (sharenrs=0x804b008 "\266\037\210\315)",
> sharecount=5, threshold=3 '\003', size=29) at src/libgfshare.c:107
The warning about (no debugging symbols found) concerns me a bit, but
the stack frame that's in the library does seem to have full debug
information, and when I rename
/usr/lib/debug/usr/lib/i486-linux-gnu/libgfshare.so.1.0.3 (only) out of the
way and try again, I get a backtrace with no line number or argument
information. So, gdb must have been finding the debug symbols, and the message
is hopefully only cosmetic.
Thanks for the feedback,
Simon
signature.asc
Description: Digital signature

