error if weak.
* elf/Makefile (default-rpath): New variable.
(CPPFLAGS): Append -DDEFAULT_RPATH=....
* elf/dl-load.c (_dl_map_object): Use DEFAULT_RPATH instead of
hard-coded "/lib:/usr/lib".
Wed Nov 15 19:22:07 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+ * elf/dl-lookup.c (_dl_lookup_symbol): Undefined symbol is no
+ error if weak.
+
+ * elf/Makefile (default-rpath): New variable.
+ (CPPFLAGS): Append -DDEFAULT_RPATH=....
+ * elf/dl-load.c (_dl_map_object): Use DEFAULT_RPATH instead of
+ hard-coded "/lib:/usr/lib".
+
* sysdeps/mach/hurd/dl-sysdep.c: Include _itoa.h from stdio-common
instead of stdio.
(_dl_sysdep_start): If passed user entry is zero and
include ../Rules
+# Choose the default search path for the dynamic linker based on
+# where we will install libraries.
+ifneq ($(libdir),$(slibdir))
+default-rpath = $(slibdir):$(libdir)
+else
+default-rpath = $(libdir)
+endif
+CPPFLAGS += -DDEFAULT_RPATH='"$(default-rpath)"'
+
+
# Link together the dynamic linker into a single relocatable object.
# We use this to produce both the ABI-compliant and Linux-compatible
# dynamic linker shared objects below.
if (fd == -1 && ! _dl_secure)
trypath (getenv ("LD_LIBRARY_PATH"));
if (fd == -1)
- trypath ("/lib:/usr/lib");
+ trypath (DEFAULT_RPATH);
}
else
{
#include <link.h>
#include <assert.h>
-/* Search loaded objects' symbol tables for a definition of
+/* Search loaded objects' symbol tables for a definition of
the symbol UNDEF_NAME. If NOSELF is nonzero, then *REF
cannot satisfy the reference itself; some different binding
must be found. */
}
}
- if (weak_value.s == NULL)
+ if (weak_value.s == NULL && ELF32_ST_BIND ((*ref)->st_info) != STB_WEAK)
{
const char msg[] = "undefined symbol: ";
char buf[sizeof msg + strlen (undef_name)];