Re: Linux-flashplugin7 & rtld - RFC

From: Norikatsu Shigemura <nork_at_FreeBSD.org>
Date: Sun, 25 Jun 2006 19:14:05 +0900
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
> > > 	_at_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.
Received on Mon Jun 26 2006 - 08:56:12 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:57 UTC