PATCH: Add a dlsym test in circular dependency test

H. J. Lu hjl@lucon.org
Mon Jul 1 09:08:00 GMT 2002


This adds a dlsym test in circular dependency test.


H.J.
-------------- next part --------------
2002-07-01  H.J. Lu  <hjl@gnu.org>

	* elf/circleload1.c (load_dso): Call "circlemod1" and check
	return value.

	* elf/circlemod1.c (circlemod1): Return int.
	* elf/circlemod2.c (circlemod2); Likewise.
	* elf/circlemod2a.c (circlemod2): Likewise.
	* elf/circlemod3.c (circlemod3.c): Likewise.
	(circlemod3a): A new function.

--- elf/circleload1.c.dlsym	Sun Jun 30 00:14:39 2002
+++ elf/circleload1.c	Mon Jul  1 09:00:58 2002
@@ -102,6 +102,25 @@ load_dso (const char **loading, int unde
 	  printf ("ERRORS: dlopen shouldn't work for RTLD_NOW\n");
 	}
 
+      if (!undef)
+	{
+	  int (*func) (void);
+
+	  func = dlsym (obj, "circlemod1");
+	  if (func == NULL)
+	    {
+	      ++errors;
+	      printf ("ERRORS: cannot get address of \"circlemod1\": %s\n",
+		      dlerror ());
+	    }
+
+	  if (func () != 3)
+	    {
+	      ++errors;
+	      printf ("ERRORS: function \"circlemod1\" returned wrong result\n");
+	    }
+	}
+
       loaded[0] = loading [0];
       loaded[1] = loading [1];
       loaded[2] = loading [2];
--- elf/circlemod1.c.dlsym	Sun Jun 30 00:14:58 2002
+++ elf/circlemod1.c	Mon Jul  1 08:55:20 2002
@@ -1,7 +1,7 @@
-extern void circlemod2 (void);
+extern int circlemod2 (void);
 
-void
+int
 circlemod1 (void)
 {
-  circlemod2 ();
+  return circlemod2 ();
 }
--- elf/circlemod2.c.dlsym	Sun Jun 30 00:14:58 2002
+++ elf/circlemod2.c	Mon Jul  1 08:55:46 2002
@@ -1,9 +1,9 @@
 extern void circlemod2_undefined (void);
-extern void circlemod3 (void);
+extern int circlemod3 (void);
 
-void
+int
 circlemod2 (void)
 {
   circlemod2_undefined ();
-  circlemod3 ();
+  return circlemod3 ();
 }
--- elf/circlemod2a.c.dlsym	Sun Jun 30 00:14:58 2002
+++ elf/circlemod2a.c	Mon Jul  1 08:56:02 2002
@@ -1,7 +1,7 @@
-extern void circlemod3 (void);
+extern int circlemod3 (void);
 
-void
+int
 circlemod2 (void)
 {
-  circlemod3 ();
+  return circlemod3 ();
 }
--- elf/circlemod3.c.dlsym	Sun Jun 30 00:14:58 2002
+++ elf/circlemod3.c	Mon Jul  1 08:58:29 2002
@@ -1,9 +1,14 @@
-extern void circlemod1 (void);
-extern void circlemod2 (void);
+extern int circlemod1 (void);
+extern int circlemod2 (void);
 
-void
+int
 circlemod3 (void)
 {
-  circlemod1 ();
-  circlemod2 ();
+  return 3;
+}
+
+int
+circlemod3a (void)
+{
+  return circlemod1 () + circlemod2 ();
 }


More information about the Libc-alpha mailing list