Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Jun 2001 02:49:52 -0400 (EDT)
From:      Chris BeHanna <behanna@topperwein.dyndns.org>
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        jdp@polstra.com
Subject:   bin/28191: rtld-elf apparently ignores LD_LIBRARY_PATH
Message-ID:  <200106160649.f5G6nqP89676@topperwein.dyndns.org>

next in thread | raw e-mail | index | archive | help

>Number:         28191
>Category:       bin
>Synopsis:       rtld-elf ignores LD_LIBRARY_PATH
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jun 15 23:50:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Chris BeHanna
>Release:        FreeBSD 4.3-STABLE i386
>Organization:
>Environment:
System: FreeBSD topperwein.dyndns.org 4.3-STABLE FreeBSD 4.3-STABLE #0: Tue Jun 12 09:06:55 EDT 2001 root@topperwein.dyndns.org:/usr/obj/usr/src/sys/TOPPERWEIN i386

    CPU:  AMD Athlon, 1.333 GHz (AMD K-7)
    Affected file:  /usr/libexec/ld-elf.so.1
>Description:
    The XFree86 4.1.0_4 port fails on this box when attempting to
    build the Type 1 fonts.  In particular, this line fails:

LD_LIBRARY_PATH=../../../exports/lib XFT_CONFIG=../../../lib/Xft/XftConfig ../../../exports/bin/xftcache   .
/usr/libexec/ld-elf.so.1: ../../../exports/bin/xftcache: Undefined symbol "XftDirSave"

    where `pwd` is /usr/ports/x11/XFree86-4/work/xc/programs/xftcache.

    According to rtld(1), LD_LIBRARY_PATH should supercede the default
    search path except for setuid and setgid executables, of which
    xftcache is neither.

    I verified this problem by running the command by hand and by
    doing  "LD_LIBRARY_PATH=../../../exports/lib ldd xftcache".  The
    output pointed to the installed /usr/X11R6/lib/libXft.so instead of
    the one within the XFree86 build tree and, indeed the installed
    libXft.so doesn't have the symbol XftDirSave, but the one in the build
    tree does.

    Note that ldconfig -r reveals an entry for libXft.so that does
    indeed point to /usr/X11R6/lib/libXft.so.  That said, if I can't
    selectively override that by setting LD_LIBRARY_PATH on the command
    line, that's a big problem.

    From the comment from find_library(), I see that the executable's
    RPATH entry takes precedence over LD_LIBRARY_PATH.  If that's the
    case, then how can LD_LIBRARY_PATH be used to force an executable to
    bootstrap itself from a build tree?

>How-To-Repeat:
    Attempt to build XFree86 4.1.0_4 on an Athlon running 4.3-STABLE
    from the date indicated in uname -a, above.
>Fix:
    Change find_library() to look in LD_LIBRARY_PATH before RPATH for
    non-setuid, non-setgid executables:

--- rtld.c	Mon May 14 01:01:35 2001
+++ rtld.c.new	Sat Jun 16 02:45:03 2001
@@ -803,8 +803,8 @@
     dbg(" Searching for \"%s\"", name);
 
     if ((refobj != NULL &&
-      (pathname = search_library_path(name, refobj->rpath)) != NULL) ||
       (pathname = search_library_path(name, ld_library_path)) != NULL ||
+      (pathname = search_library_path(name, refobj->rpath)) != NULL) ||
       (pathname = search_library_path(name, gethints())) != NULL ||
       (pathname = search_library_path(name, STANDARD_LIBRARY_PATH)) != NULL)
 	return pathname;

If I completely misunderstand, please let me know, and I'll raise no
fuss about closing this PR.
>Release-Note:
>Audit-Trail:
>Unformatted:

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




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