Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 19 Jan 1999 23:47:25 +0000 (23:47 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 19 Jan 1999 23:47:25 +0000 (23:47 +0000)
* elf/restest1.c: New file.  Symbol resolution test.
* elf/testobj1_1.c: New file.  Module used in this test.
* elf/Makefile: Add rules for restest1 generation and execution.

ChangeLog
elf/Makefile
elf/restest1.c [new file with mode: 0644]
elf/testobj1_1.c [new file with mode: 0644]

index 7310c4d..a471fd6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 1999-01-19  Ulrich Drepper  <drepper@cygnus.com>
 
+       * elf/restest1.c: New file.  Symbol resolution test.
+       * elf/testobj1_1.c: New file.  Module used in this test.
+       * elf/Makefile: Add rules for restest1 generation and execution.
+
        * elf/dl-object.c (_dl_new_object): l_local_scope really gets
        assigned the local scope.
 
index a43014a..f6da5c4 100644 (file)
@@ -75,7 +75,7 @@ others                += ldconfig
 install-rootsbin += ldconfig
 endif
 
-tests = loadtest
+tests = loadtest restest1
 
 include ../Rules
 
@@ -214,10 +214,12 @@ $(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS)  \
          $(no-whole-archive) $(LDLIBS-$(@F:%.so=%).so)
 endef
 
-modules-names = testobj1 testobj2 testobj3
+modules-names = testobj1 testobj2 testobj3 testobj1_1
 test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
 generated += $(test-modules)
 
+$(objpfx)testobj1_1.so: $(objpfx)testobj1.so
+LDLIBS-testobj1_1.so = $(objpfx)testobj1.so
 $(objpfx)testobj2.so: $(objpfx)testobj1.so
 LDLIBS-testobj2.so = $(objpfx)testobj1.so
 
@@ -228,6 +230,11 @@ $(objpfx)loadtest: $(objpfx)libdl.so
 LDFLAGS-loadtest = -rdynamic
 
 $(objpfx)loadtest.out: $(test-modules)
+
+$(objpfx)restest1: $(objpfx)libdl.so
+LDFLAGS-restest1 = -rdynamic $(objpfx)testobj1.so $(objpfx)testobj1_1.so
+
+$(objpfx)restest1.out: $(test-modules)
 \f
 # muwahaha
 
diff --git a/elf/restest1.c b/elf/restest1.c
new file mode 100644 (file)
index 0000000..e4eca55
--- /dev/null
@@ -0,0 +1,48 @@
+#include <dlfcn.h>
+#include <error.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+  void *h1;
+  int (*fp1) (int);
+  void *h2;
+  int (*fp2) (int);
+  int res1;
+  int res2;
+
+  h1 = dlopen ("testobj1.so", RTLD_LAZY);
+  if (h1 == NULL)
+    error (EXIT_FAILURE, 0, "while loading `%s': %s", "testobj1.so",
+          dlerror ());
+
+  h2 = dlopen ("testobj1_1.so", RTLD_LAZY);
+  if (h1 == NULL)
+    error (EXIT_FAILURE, 0, "while loading `%s': %s", "testobj1_1.so",
+          dlerror ());
+
+  fp1 = dlsym (h1, "obj1func1");
+  if (fp1 == NULL)
+    error (EXIT_FAILURE, 0, "getting `obj1func1' in `%s': %s",
+          "testobj1.so", dlerror ());
+
+  fp2 = dlsym (h2, "obj1func1");
+  if (fp2 == NULL)
+    error (EXIT_FAILURE, 0, "getting `obj1func1' in `%s': %s",
+          "testobj1_1.so", dlerror ());
+
+  res1 = fp1 (10);
+  res2 = fp2 (10);
+  printf ("fp1(10) = %d\nfp2(10) = %d\n", res1, res2);
+
+  return res1 != 42 || res2 != 72;
+}
+
+
+int
+foo (int a)
+{
+  return a + 10;
+}
diff --git a/elf/testobj1_1.c b/elf/testobj1_1.c
new file mode 100644 (file)
index 0000000..c0f2aa4
--- /dev/null
@@ -0,0 +1,5 @@
+int
+obj1func1 (int a)
+{
+  return 42 + obj1func2 (a);
+}