+2000-03-16 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/Makefile: Add rules to compile and rune constload1 test.
+ * elf/constload1.c: New file.
+ * elf/constload2.c: New file.
+ * elf/constload3.c: New file.
+
2000-03-15 Ulrich Drepper <drepper@redhat.com>
* sysdeps/posix/open64.c: Make __open64 weak alias.
-# Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+# Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
endif
ifeq (yes,$(build-shared))
-tests = loadtest restest1 preloadtest loadfail multiload origtest resolvfail
+tests = loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
+ constload1
endif
modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
- testobj1_1 failobj
+ testobj1_1 failobj constload2 constload3
extra-objs += $(modules-names:=.os)
include ../Rules
else
$(objpfx)resolvfail: $(libdl)
endif
+
+$(objpfx)constload1: $(libdl)
+$(objpfx)constload1.out: $(objpfx)constload2.so $(objpfx)constload3.so
--- /dev/null
+#include <dlfcn.h>
+#include <errno.h>
+#include <error.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+ int (*foo) (void);
+ void *h;
+ int ret;
+
+ h = dlopen ("constload2.so", RTLD_LAZY | RTLD_GLOBAL);
+ if (h == NULL)
+ error (EXIT_FAILURE, errno, "cannot load module \"constload2.so\"");
+ foo = dlsym (h, "foo");
+ ret = foo ();
+ dlclose (h);
+ return ret;
+}
--- /dev/null
+#include <dlfcn.h>
+
+extern int bar (void);
+
+void *h;
+
+int
+foo (void)
+{
+ return 42 + bar ();
+}
+
+int
+baz (void)
+{
+ return -21;
+}
+
+void
+__attribute__ ((__constructor__))
+init (void)
+{
+ h = dlopen ("constload3.so", RTLD_GLOBAL | RTLD_LAZY);
+}