Linux-flashplugin7 & rtld - RFC
Norikatsu Shigemura
nork at FreeBSD.org
Mon Jun 26 10:56:12 UTC 2006
On Thu, 22 Jun 2006 23:04:16 -0400
Alexander Kabaev <kabaev at gmail.com> wrote:
> On Thu, 22 Jun 2006 12:49:59 -0400 (EDT)
> Daniel Eischen <deischen at freebsd.org> wrote:
> > On Fri, 23 Jun 2006, Norikatsu Shigemura wrote:
> > > On Wed, 21 Jun 2006 12:39:09 -0400 (EDT)
> <SKIP>
> > > spamming? junk symbols? Humm... I don't think so, but it
> > > is POLICY that I think. Althought I'm working, I want to
> > > merge 'Userland COMPAT_LINUX technology' to FreeBSD source
> > > tree. I hope that you do consent. So I hope to discuss
> > > @GLIBC_2.* symbols:-).
> > No, I would still oppose that. I think separate libraries
> > are the way to go.
deischen: Sorry, I didn't read 'separate libraries'.
> ... and I will support Daniel's objection if it will come to that.
> Sorry, but Linux symbols in FreeBSD native libraries amount to only one
> thing - pollution and nothing else.
Humm.. Even if GLIBC version information in Version.def,
should I say that it was polluted or not....
===============================================================================
Case of current LPW approch:
If You use following setting:
/etc/libmap.conf -----------------------------------------------
[/usr/X11R6/lib/linux-flashplugin7/libflashplayer.so]
libpthread.so.0 ??????????????
libdl.so.2 ??????????????
libz.so.1 libz.so.3
libm.so.6 ??????????????
libc.so.6 ??????????????
/etc/libmap.conf -----------------------------------------------
(*) ?????????????? is nork-flash7.so or deischen-flash7.so or
libc.so.7/libm.so.4/libpthread.so.2.
You can get following result:
| wrapper | wrapper/glibc w/o | wrapper/glibc w/ | none
---------------+-----------+---------------------+------------------+-----
libc | NG | NG | may be NG | ng
libc/glibc-ver | ng | may be NG | may be NG | ng
libc/glibc | ok | may be OK | may be OK | OK
NOTE #1 -----------------------------------------------------------------
libc: src/lib/libc without SYMVER_ENABLED
libc/glibc-ver: src/lib/libc with SYMVER_ENABLED + GLIBC Versions.def
libc/glibc: src/lib/libc with SYMVER_ENABLED
+ GLIBC Versions.def + GLIBC Functions
NOTE #2 -----------------------------------------------------------------
wrapper: nork's LPW
wrapper/glibc w/o: (deischen's LPW)++.
I saw deischen's LPW, and I think that deischen's
approch almost works.
wrapper/glibc w/: (deischen's LPW)++ with libc/libm/libptread
NOTE #3 --------------------------------------------------------------------
OK: I confirmed that this is good works.
ok: I considered that this is good works.
may be OK: I didn't confirmed, but I think that this is good works.
may be NG: I didn't confirmed, but I think that this is not works.
ng: I considered that this is not works.
NG: I confirmed that this is not works.
-------------------------------------------------------------------------
ERROR PATTERN #1:
LoadPlugin: failed to initialize shared library /usr/X11R6/lib/linux-flashplugin7/libflashplayer.so [/lib/libc.so.7: version GLIBC_2.1 required by /usr/X11R6/lib/linux-flashplugin7/libflashplayer.so not found]
ERROR PATTERN #2:
LoadPlugin: failed to initialize shared library /usr/X11R6/lib/linux-flashplugin7/libflashplayer.so [/usr/X11R6/lib/linux-flashplugin7/libflashplayer.so: Undefined symbol "open"]
===============================================================================
Case of current LPW + [firefox-bin] approch:
If You use following setting:
/etc/libmap.conf -----------------------------------------------
[firefox-bin]
libc.so.7 ??????????????
libm.so.4 ??????????????
libpthread.so.2 ??????????????
[/usr/X11R6/lib/linux-flashplugin7/libflashplayer.so]
libpthread.so.0 ??????????????
libdl.so.2 ??????????????
libz.so.1 libz.so.3
libm.so.6 ??????????????
libc.so.6 ??????????????
/etc/libmap.conf -----------------------------------------------
(*) ?????????????? is nork-flash7.so or deischen-flash7.so or
libc.so.7/libm.so.4/libpthread.so.2.
You can get following result:
| wrapper | wrapper/glibc w/o | wrapper/glibc w/ | none
---------------+-----------+---------------------+------------------+-----
libc | NG | NG | may be NG | ng
libc/glibc-ver | ng | may be OK | may be OK | ng
libc/glibc | ok | may be OK | may be OK | OK
ERROR PATTERN #1: nothing
===============================================================================
* Can we separate library to use Linux-flash7?
Yes, we need following conditions (1 or more):
1. Following error should be banished.
[/lib/libc.so.7: version GLIBC_2.1 required by /usr/X11R6/lib/linux-flashplugin7/libflashplayer.so not found]
1-a. To banish, I think that following code should be fixed at
check_object_provided_version in src/libexec/rtld-elf/rtld.c.
if (vd == NULL) {
_rtld_error("%s: version %s required by %s not defined",
depobj->path, vername, refobj->path);
return (-1);
}
I tried to remove 'return (-1);', but I don't know side-effects.
1-b. Add GLIBC Version.def to libc/libm/libpthread.
2. firefox doesn't use libc/libm/libpthread. But wrapper has
libc/libm/libpthread all codes.
/etc/libmap.conf -----------------------------------------------
[firefox-bin]
libc.so.7 wrapper.so
libm.so.4 wrapper.so
libpthread.so.2 wrapper.so
/etc/libmap.conf -----------------------------------------------
So I think that glibc functions are integrated to libc/m/pthread.
But above issue will be fixed, I may think that separate libraries
are good way.
More information about the freebsd-current
mailing list