summaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authormycroft <mycroft@NetBSD.org>2000-10-29 13:11:38 +0000
committermycroft <mycroft@NetBSD.org>2000-10-29 13:11:38 +0000
commit9ee3432bb96f2edbb97c1811e4f4d86a6a8961bc (patch)
treed02078a6bf2b76af1745d124b20c0c0ef7353eea /libexec
parent90ac46632de7bb2900c58f37ff2f3e33c8e872ea (diff)
In dlopen(), use the main program's library search path, to match semantics of
other systems (and our ELF).
Diffstat (limited to 'libexec')
-rw-r--r--libexec/ld.aout_so/rtld.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/libexec/ld.aout_so/rtld.c b/libexec/ld.aout_so/rtld.c
index bb5f13fabfc..6119f2690a8 100644
--- a/libexec/ld.aout_so/rtld.c
+++ b/libexec/ld.aout_so/rtld.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rtld.c,v 1.76 2000/02/11 00:07:36 thorpej Exp $ */
+/* $NetBSD: rtld.c,v 1.77 2000/10/29 13:11:38 mycroft Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -358,6 +358,7 @@ rtld(version, crtp, dp)
(caddr_t)0, 0, crtp->crt_dp);
LM_PRIVATE(smp)->spd_refcount++;
LM_PRIVATE(smp)->spd_flags |= _RTLD_MAIN | _RTLD_GLOBAL;
+ main_map = smp;
smp = alloc_link_map(us, (struct sod *)0, (struct so_map *)0,
(caddr_t)crtp->crt_ba, 0, dp);
@@ -586,8 +587,6 @@ alloc_link_map(path, sodp, parent, addr, size, dp)
if (dp == NULL)
return (smp);
-/*XXX*/ if (addr == 0) main_map = smp;
-
#ifdef SUN_COMPAT
smpp->spd_offset =
(addr==0 && dp->d_version==LD_VERSION_SUN) ? PAGSIZ : 0;
@@ -1737,7 +1736,7 @@ __dlopen(name, mode)
build_sod(name, sodp);
- if ((smp = map_object(sodp, 0)) == NULL) {
+ if ((smp = map_object(sodp, main_map)) == NULL) {
#ifdef DEBUG
xprintf("%s: %s\n", name, strerror(errno));
#endif