From owner-FreeBSD-tech-jp@jp.freebsd.org  Sat Oct  3 01:03:33 1998
Received: (from daemon@localhost)
	by jaz.jp.freebsd.org (8.9.1+3.1W/8.7.3) id BAA00437;
	Sat, 3 Oct 1998 01:03:33 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from dolphin.be.to (root@www.be.to [202.222.190.3])
	by jaz.jp.freebsd.org (8.9.1+3.1W/8.7.3) with ESMTP id BAA00431
	for <FreeBSD-tech-jp@jp.freebsd.org>; Sat, 3 Oct 1998 01:03:29 +0900 (JST)
	(envelope-from okazaki@be.to)
Received: from pc10 (mbra0121.ppp.infoweb.or.jp [202.219.229.85])
	by dolphin.be.to (8.8.8/BETO.1.6-1998092623000000) with SMTP id BAA08454
	for <FreeBSD-tech-jp@jp.freebsd.org>; Sat, 3 Oct 1998 01:03:19 +0900
Message-Id: <199810021603.BAA08454@dolphin.be.to>
Date: Sat, 03 Oct 1998 01:02:02 +0900
From: OKAZAKI Tetsurou <okazaki@be.to>
To: FreeBSD-tech-jp@jp.freebsd.org
In-Reply-To: <19981002190635P.shiozaki@ased.mt.nec.co.jp>
References: <19981002184424Y.kana@saijo.mke.mei.co.jp> <19981002190635P.shiozaki@ased.mt.nec.co.jp>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
X-Mailer: Becky! ver 1.24.16
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: bulk
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+980914
X-Sequence: FreeBSD-tech-jp 1751
Subject: [FreeBSD-tech-jp 1751] Re: What's ELF
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org

$B2,:j!w@iMU$G$9!#(B

On Fri, 02 Oct 1998 19:06:35 +0900 (JST)
Takuya SHIOZAKI <AoiMoe@isoternet.org> wrote:

> From: Masanori Kanaoka <kana@saijo.mke.mei.co.jp>
> Subject: [FreeBSD-users-jp 33491] Re: What's ELF
> Date: Fri, 02 Oct 1998 18:44:24 +0900
> Message-ID: <19981002184424Y.kana@saijo.mke.mei.co.jp>
> 
> > dlopen $B$r(B key word $B$K!"(B/usr/src/lib $B$N2<$rC5$7$F$_$k$H!"(B
> > /usr/src/lib/libc/gen/dlfcn.c
> >     $Id: dlfcn.c,v 1.2 1998/03/07 19:57:05 jdp Exp $

1998/03/07 $B$H$$$&$N$O>/$78E$/$"$j$^$;$s$+(B? $B;d$N5$$N$;$$$G$7$g$&$+(B(^^;

> From: Masanori Kanaoka <kana@saijo.mke.mei.co.jp>
> Subject: [FreeBSD-users-jp 33489] Re: What's ELF
> Date: Fri, 02 Oct 1998 17:53:16 +0900
> Message-ID: <19981002175316E.kana@saijo.mke.mei.co.jp>
> 
> > $B0J2<$N$h$&$J(B bar.c $B$G:FEY3NG'$7$^$7$?!#(B
> > bar.c
> > ---------
> > #include <stdio.h>
> > #include <dlfcn.h>
> > 
> > int
> > main(void)
> > {
> >         void    *h = dlopen("./foo.so",RTLD_NOW);
> > 
> >         printf("foo = %d\n", dlsym(h, "foo") != NULL);
> >         printf("%s\n",dlerror());
> > 
> >         printf("_foo = %d\n", dlsym(h, "_foo") != NULL);
> >         printf("%s\n",dlerror());
> > 
> >         return 0;
> > }
> > ---------
> > $ monster: {213} ./bar
> > $ foo = 1                   <---- $B$J$s$8$c!$$3$j$c!*!)(B
> > $ (null)
> > $ _foo = 0
> > $ Undefined symbol "_foo"
> > $B7k2L$O!">e5-$HF1$8$K$J$j$^$7$?!#(B
> 
> $B;d$NAGKQ$J5?Ld!'(B
>   1. $B$J$s$G(B -1 $B$8$c$J$/$F(B 1 $B$J$N!)(B

$B>r7o<0$N7k2L$NFbItI=8=$,(B gcc $B$G$O(B(1byte $B$GI=8=$5$l$F$$$F(B?) $B??$,(B 1 $B$G(B
$B56$,(B 0 $B$GI=8=$5$l$F$$$k!"$K(B1$BI<!#(B(g++ $B$G$O$=$&$G$7$?!#(BC$B$H$7$F$OJQ(B?)
$B$=$l$K(B dlerror() $B$N=PNO$,(B (null) $B$C$F$3$H$OD>A0$K(B error $B$,(B
$B5/$3$C$F$$$J$$$H$$$&$3$H$G$9$+$i!#(B

>   2. $B$J$s$G(B foo $B$H(B _foo $B$GCM$,0c$&$N!)(B

ELF$B$G$O!"(BC$B$N<1JL;R(B foo $B$N30It%7%s%\%k$O(B foo  $B$K$J$j$^$9$h$M!#(B
a.out$B$G$O(B $B!7(B       foo       $B!7(B      $B$O(B _foo $B$G$9!#(B
$B$@$+$i(BELF$B$J6&M-(B{$B%*%V%8%'%/%H(B|$B%i%$%V%i%j(B}$B$KBP$7$F(B
dlsym(h, "foo") $B$,@.8y$7$F(B dlsym(h, "_foo")$B$,<:GT$9$k$N$O(B
$B@5$7$$F0:n$+$J!"$H;W$$$^$9!#(BSTABLE$B4D6-$GN>J}$,@.8y$9$k$N$O(B

>From: John Polstra <jdp@polstra.com>
Cc: ports@FreeBSD.ORG
Subject: Re: SOCKS port inspires question..
Message-Id: <199809231507.IAA14603@austin.polstra.com>
> > It seems to make a difference for symbol lookup in dlsym.
> 
> I'd recommend getting rid of the leading "_" unconditionally.  The
> a.out dynamic linker was fixed a long time (long enough) ago to do the
> right thing if the leading underscore is missing.  So getting rid of
> it unconditionally will work for either object format.

$B$@$+$i$@$=$&$G$9!#(B($B$$$D$N4V$K(B...) $B$"$H!"(B

On Fri, 02 Oct 1998 17:53:16 +0900
Masanori Kanaoka <kana@saijo.mke.mei.co.jp> wrote:
> $	void *h = dlopen("foo.so", RTLD_NOW);
> $$B$H$9$k$H!$$I$A$i$b(B Undefined symbol $B$K$J$j$^$9!%(B
> 
> $B$3$A$i$b!"F1$87k2L$G$9!#(B
> 
> [current]% ./bar
> foo = 0
> Undefined symbol "foo"
> _foo = 0
> Undefined symbol "_foo"

$B$3$l$O(B dlopen("foo.so", RTLD_NOW) $B$,<:GT$7$F$$$k$N$@$H;W$$$^$9!#(B
$B$?$V$s(B h $B$,(B NULL $B$K$J$C$F$$$^$9!#$=$l$G$=$N8e$N(B dlsym(h, ...) $B$N(B
$B8F$S=P$7$,$3$H$4$H$/<:GT$7$F$k$N$G$O(B? 
$B!t$=$l$K$7$F$O%(%i!<%a%C%;!<%8$,JQ$J5$$b$7$^$9$,!#(B

dlopen() $B$KEO$9Bh(B1$B%Q%i%a!<%?$O!"J8;zNsCf$K(B '/' $B$,0l$D$G$bB8:_$9$k(B
$B>l9g$H$=$&$G$J$$>l9g$H$G0UL#$,JQ$o$j$^$9!#(B

'/' $B$,$"$k>l9g(B($BNc(B: "./foo.so", "/usr/libz.so")
    $B$3$NJ8;zNs$r%Q%9L>$@$H$7$F$=$N%Q%9$rD>@\(B open $B$9$k!#(B

'/' $B$,$J$$>l9g(B($BNc(B: "foo.so")
    $B$3$NJ8;zNs$r%U%!%$%kL>$H$_$J$7$F!"0J2<$N=g$G8!:w$9$k!#(B
    1) $B$=$N(Bdlopen()$B$r8F$s$G$$$k%P%$%J%j(B(*1)$B$KEPO?$5$l$?%Q%9$N%j%9%H(B
       *1 $B<B9T%U%!%$%k$+$i(B dlopen() $B$7$?>l9g$O<B9T%U%!%$%k(B
          $B6&M-(B($B%*%V%8%'%/%H(B|$B%i%$%V%i%j(B)$B$+$i$N>l9g$O$=$N%U%!%$%k(B
    2) $B4D6-JQ?t(B LD_LIBRARY_PATH $B$K@_Dj$5$l$?%Q%9$N%j%9%H(B
    3) /usr/lib
    setuid, setgid $B$J<B9T%U%!%$%k$N>l9g!"(B2) $B$O>J$+$l$^$9!#(B

$B!t(BELF$B;EMM=q%I%i%U%H"-$+$i$N<u$1Gd$j$G$7$?(B(^^;

System V Application Binary Interface - DRAFT
   http://www.sco.com/developer/gabi/contents.html
SCO Developer's Place
   http://www.sco.com/products/layered/develop/devspecs/




$B2,:j(B  $BE/O/(B

