Module Name:    src
Committed By:   skrll
Date:           Fri Jan 15 07:07:12 UTC 2010

Modified Files:
        src/libexec/ld.elf_so: reloc.c rtld.h

Log Message:
Put the dlopen,and friends entry points back.

They're needed by pre-2.0 binaries. Backward compatibiliity for these
was broken by another commit recently which I'll fix shortly.


To generate a diff of this commit:
cvs rdiff -u -r1.99 -r1.100 src/libexec/ld.elf_so/reloc.c
cvs rdiff -u -r1.85 -r1.86 src/libexec/ld.elf_so/rtld.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/libexec/ld.elf_so/reloc.c
diff -u src/libexec/ld.elf_so/reloc.c:1.99 src/libexec/ld.elf_so/reloc.c:1.100
--- src/libexec/ld.elf_so/reloc.c:1.99	Thu Jan 14 21:52:07 2010
+++ src/libexec/ld.elf_so/reloc.c	Fri Jan 15 07:07:11 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: reloc.c,v 1.99 2010/01/14 21:52:07 skrll Exp $	 */
+/*	$NetBSD: reloc.c,v 1.100 2010/01/15 07:07:11 skrll Exp $	 */
 
 /*
  * Copyright 1996 John D. Polstra.
@@ -39,7 +39,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: reloc.c,v 1.99 2010/01/14 21:52:07 skrll Exp $");
+__RCSID("$NetBSD: reloc.c,v 1.100 2010/01/15 07:07:11 skrll Exp $");
 #endif /* not lint */
 
 #include <err.h>
@@ -202,6 +202,14 @@
 		obj->magic = RTLD_MAGIC;
 		obj->version = RTLD_VERSION;
 
+		/* Fill in the dynamic linker entry points. */
+		obj->dlopen = dlopen;
+		obj->dlsym = dlsym;
+		obj->dlerror = dlerror;
+		obj->dlclose = dlclose;
+		obj->dladdr = dladdr;
+		obj->dlinfo = dlinfo;
+
 		dbg(("fixing up PLTGOT"));
 		/* Set the special PLTGOT entries. */
 		if (obj->pltgot != NULL)

Index: src/libexec/ld.elf_so/rtld.h
diff -u src/libexec/ld.elf_so/rtld.h:1.85 src/libexec/ld.elf_so/rtld.h:1.86
--- src/libexec/ld.elf_so/rtld.h:1.85	Thu Jan 14 21:52:07 2010
+++ src/libexec/ld.elf_so/rtld.h	Fri Jan 15 07:07:12 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtld.h,v 1.85 2010/01/14 21:52:07 skrll Exp $	 */
+/*	$NetBSD: rtld.h,v 1.86 2010/01/15 07:07:12 skrll Exp $	 */
 
 /*
  * Copyright 1996 John D. Polstra.
@@ -162,6 +162,14 @@
 	void            (*init)(void); 	/* Initialization function to call */
 	void            (*fini)(void);	/* Termination function to call */
 
+	/* Entry points for dlopen() and friends. */
+	void           *(*dlopen)(const char *, int);
+	void           *(*dlsym)(void *, const char *);
+	char           *(*dlerror)(void);
+	int             (*dlclose)(void *);
+	int             (*dladdr)(const void *, Dl_info *);
+	int		(*dlinfo)(void *, int, void *);
+
 	u_int32_t	mainprog:1,	/* True if this is the main program */
 	        	rtld:1,		/* True if this is the dynamic linker */
 			textrel:1,	/* True if there are relocations to

Reply via email to