From fbde87863d157edf17a3d246c005b4e7a9565318 Mon Sep 17 00:00:00 2001 From: Peter Wemm Date: Sat, 28 Dec 1996 17:10:52 +0000 Subject: [PATCH] When linking with no rtld support, provide stub dl*() functions that just return errors. This removes the need for awful hacks like that in our build of libtcl which would get link errors when linked static. John Polstra once mentioned that this was on his "todo" list. Note that one can use: cc -Wl,-Bstatic -o foo foo.o and get an executable that has it's libraries statically linked, but has a fully functional runtime linker so the executable can call dlopen() and have it work. (I've tested this) --- lib/csu/i386/crt0.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/lib/csu/i386/crt0.c b/lib/csu/i386/crt0.c index a14a4081c9a5..6ff4f0b242a4 100644 --- a/lib/csu/i386/crt0.c +++ b/lib/csu/i386/crt0.c @@ -27,11 +27,13 @@ * (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: crt0.c,v 1.24 1996/10/01 00:54:48 peter Exp $ + * $Id: crt0.c,v 1.25 1996/10/06 03:19:26 steve Exp $ */ #include + #include +#include #ifdef DYNAMIC #include @@ -382,8 +384,48 @@ _getenv(name) asm(" movl $-1,%eax"); asm(" ret"); +#else /* DYNAMIC */ + +/* + * DL stubs for static linking case (just return error) + */ + +void * +dlopen(name, mode) +char *name; +int mode; +{ + return NULL; +} + +int +dlclose(fd) +void *fd; +{ + return -1; +} + +void * +dlsym(fd, name) +void *fd; +char *name; +{ + return NULL; +} + + +char * +dlerror() +{ + return "Service unavailable"; +} #endif /* DYNAMIC */ + +/* + * Support routines + */ + #ifdef MCRT0 asm (" .text"); asm ("_eprol:");