From owner-freebsd-current@FreeBSD.ORG Mon Jun 26 10:56:12 2006 Return-Path: X-Original-To: current@FreeBSD.org Delivered-To: freebsd-current@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 25A2716A408; Mon, 26 Jun 2006 10:56:12 +0000 (UTC) (envelope-from nork@FreeBSD.org) Received: from sakura.ninth-nine.com (sakura.ninth-nine.com [219.127.74.120]) by mx1.FreeBSD.org (Postfix) with ESMTP id 28547444A3; Mon, 26 Jun 2006 10:22:58 +0000 (GMT) (envelope-from nork@FreeBSD.org) Received: from mail.ninth-nine.com (melfina.ninth-nine.com [192.168.36.6]) (authenticated bits=0) by sakura.ninth-nine.com (8.13.6/8.13.6/NinthNine) with ESMTP id k5PAEBGa017721 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 25 Jun 2006 19:14:12 +0900 (JST) (envelope-from nork@FreeBSD.org) Date: Sun, 25 Jun 2006 19:14:05 +0900 From: Norikatsu Shigemura To: deischen@FreeBSD.org, Alexander Kabaev Message-Id: <20060625191405.d0e78240.nork@FreeBSD.org> In-Reply-To: <20060622230416.3907a848@kan.dnsalias.net> References: <44986777.6070601@FreeBSD.org> <20060621061437.GA53019@fit.vutbr.cz> <2265.211.18.249.19.1150871779.squirrel@mail.ninth-nine.com> <20060621121114.h6udocel5wsgg8sg@netchild.homeip.net> <2692.219.127.74.121.1150885501.squirrel@mail.ninth-nine.com> <20060621155053.d6lseiz8z4ow8wo8@netchild.homeip.net> <20060623013106.d4397e26.nork@FreeBSD.org> <20060622230416.3907a848@kan.dnsalias.net> X-Mailer: Sylpheed version 2.2.6 (GTK+ 2.8.19; i386-portbld-freebsd6.1) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (sakura.ninth-nine.com [219.127.74.121]); Sun, 25 Jun 2006 19:14:14 +0900 (JST) Cc: Alexander@Leidinger.net, nork@FreeBSD.org, current@FreeBSD.org Subject: Re: Linux-flashplugin7 & rtld - RFC X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 10:56:12 -0000 On Thu, 22 Jun 2006 23:04:16 -0400 Alexander Kabaev wrote: > On Thu, 22 Jun 2006 12:49:59 -0400 (EDT) > Daniel Eischen wrote: > > On Fri, 23 Jun 2006, Norikatsu Shigemura wrote: > > > On Wed, 21 Jun 2006 12:39:09 -0400 (EDT) > > > > 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.