aboutsummaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authorJohn Polstra <jdp@FreeBSD.org>1998-09-16 02:54:08 +0000
committerJohn Polstra <jdp@FreeBSD.org>1998-09-16 02:54:08 +0000
commit29218d94d3881b0a950d89ee8c1bc7e88cf39e6b (patch)
tree21dbb880ab8cd24d18a1e133bb8372d8b3c4d336 /libexec
parent0ff27d31ea25e77983e359bc120dced5c68e5cfc (diff)
Notes
Diffstat (limited to 'libexec')
-rw-r--r--libexec/rtld-elf/rtld.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 4b1eb2ff1d42e..86ed413566fba 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -22,7 +22,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: rtld.c,v 1.8 1998/09/05 03:31:00 jdp Exp $
+ * $Id: rtld.c,v 1.9 1998/09/15 21:07:52 jdp Exp $
*/
/*
@@ -1240,11 +1240,21 @@ linkmap_add(Obj_Entry *obj)
return;
}
- for (prev = r_debug.r_map; prev->l_next != NULL; prev = prev->l_next)
+ /*
+ * Scan to the end of the list, but not past the entry for the
+ * dynamic linker, which we want to keep at the very end.
+ */
+ for (prev = r_debug.r_map;
+ prev->l_next != NULL && prev->l_next != &obj_rtld.linkmap;
+ prev = prev->l_next)
;
+
+ /* Link in the new entry. */
l->l_prev = prev;
+ l->l_next = prev->l_next;
+ if (l->l_next != NULL)
+ l->l_next->l_prev = l;
prev->l_next = l;
- l->l_next = NULL;
}
static void