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.
This commit is contained in:
skrll 2010-01-15 07:07:11 +00:00
parent 07df6e2689
commit 418048d731
2 changed files with 19 additions and 3 deletions

View File

@ -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 @@ _rtld_relocate_objects(Obj_Entry *first, bool bind_now)
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)

View File

@ -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 @@ typedef struct Struct_Obj_Entry {
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