Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Dec 1998 08:50:13 -0800 (PST)
From:      John Polstra <jdp@polstra.com>
To:        aa8vb@pagesz.net
Cc:        current@FreeBSD.ORG
Subject:   Re: "ldconfig" strangeness on 3.0-RELEASE
Message-ID:  <199812041650.IAA02119@vashon.polstra.com>
In-Reply-To: <19981129102800.A1657@pagesz.net>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <19981129102800.A1657@pagesz.net>,
Randall Hopper  <aa8vb@pagesz.net> wrote:
> Two things I notice that are rather strange.  Are these bugs?
> 1) You can completely re-initialize the LD path for ELF, but not for AOUT.
>    An example to illustrate:
...
>    It seems that ldconfig won't let you remove /usr/lib/aout.  Why?

They dynamic linkers always search in the standard directory
(/usr/lib/aout for a.out, /usr/lib for ELF) as a last resort, no
matter what the ldconfig hints file says.  I suppose the a.out
ldconfig adds /usr/lib/aout automatically to make that search go
faster.  It also makes "ldconfig -r" tell the whole story about
where shared libraries will be found.

Probably the ELF ldconfig should do the same thing.  It wouldn't help
efficiency-wise for ELF.  But it would make the "ldconfig -r" listing
reflect reality better.

> 2) In /etc/rc.conf, we have:
> 
>         $ldconfig_paths & $ldconfig_paths_aout
> 
>    but we also have:
> 
>         /etc/ld.so.conf & /etc/ld-elf.so.conf
> 
>    (as documented in the ldconfig(8) man page) as places to store LD paths.  

The man page is wrong.  We don't have any such files as ld.so.conf,
as far as I know.  Richard Kuhns has been revising the man page, so
hopefully it will become more accurate soon.

> 3) Why aren't these two directories in the default $ldconfig_paths_aout (AOUT)
>    in /etc/rc.conf?  AFAIK, they're all AOUT:
> 
>    /usr/lib/aout /usr/lib/compat

/usr/lib/aout is added automatically by /etc/rc.  Regarding
/usr/lib/compat: it is _not_ a.out on an ELF system.  On an ELF
system, a.out compat libraries are in /usr/lib/compat/aout.

Also, your rc.conf file may be out of date.  The current version in
/usr/src/etc says:

ldconfig_paths="/usr/lib/compat /usr/X11R6/lib /usr/local/lib"
ldconfig_paths_aout="/usr/lib/compat/aout /usr/X11R6/lib/aout /usr/local/lib/aout"

> 
> 4) Why is this directory in the default $ldconfig_paths (ELF)?  It's all AOUT:
> 
>    /usr/lib/compat 

No, it's all ELF on an ELF system.  At least, it's supposed to be.
Didn't "make move-aout-libs" move the a.out libraries down into
/usr/lib/compat/aout when you ran it?

John
-- 
  John Polstra                                               jdp@polstra.com
  John D. Polstra & Co., Inc.                        Seattle, Washington USA
  "Nobody ever went broke underestimating the taste of the American public."
                                                            -- H. L. Mencken

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199812041650.IAA02119>