* Makefile.tpl: Clean $(BUILD_SUBDIR).
[deliverable/binutils-gdb.git] / ld / testsuite / ld-elfvsb / main.c
index 4a4131593514904befe95bdb7aa1945052638100..26542b8a1fcf3aeb5d12afcac1a37dbfd5cbbe02 100644 (file)
@@ -1,3 +1,20 @@
+#ifdef PROTECTED_CHECK
+#include <features.h>
+#include <stdio.h>
+
+int
+main (void)
+{
+#if defined (__GLIBC__) && (__GLIBC__ > 2 \
+                           || (__GLIBC__ == 2 \
+                               &&  __GLIBC_MINOR__ >= 2))
+  puts ("yes");
+#else
+  puts ("no");
+#endif
+  return 0;
+}
+#else
 /* This is the main program for the shared library test.  */
 
 #include <stdio.h>
@@ -18,10 +35,30 @@ extern int (*shlib_getfunptr1 ()) ();
 extern int (*shlib_getfunptr2 ()) ();
 extern int shlib_check ();
 extern int shlib_shlibcall2 ();
-extern int visibility ();
 extern int visibility_check ();
 extern int visibility_checkfunptr ();
 extern void *visibility_funptr ();
+extern int visibility_checkvar ();
+extern int visibility_checkvarptr ();
+extern int visibility_varval ();
+extern void *visibility_varptr ();
+
+#ifdef HIDDEN_WEAK_TEST
+#define WEAK_TEST
+#endif
+
+#ifdef PROTECTED_WEAK_TEST
+#define WEAK_TEST
+#endif
+
+#ifdef PROTECTED_UNDEF_TEST
+#define PROTECTED_TEST
+#endif
+
+#ifndef WEAK_TEST
+extern int visibility ();
+extern int visibility_var;
+#endif
 
 #if !defined (HIDDEN_TEST) && defined (PROTECTED_TEST)
 int
@@ -29,13 +66,44 @@ visibility ()
 {
   return 1;
 }
-#endif
 
 static int
 main_visibility_check ()
 {
+  return visibility_funptr () != visibility;
+}
+
+int visibility_var = 1;
+
+static int
+main_visibility_checkvar ()
+{
+  return visibility_varval () != visibility_var
+        && visibility_varptr () != &visibility_var;
+}
+#else
+static int
+main_visibility_check ()
+{
+#ifdef WEAK_TEST
+  return visibility_funptr () == NULL;
+#else
   return visibility_funptr () == visibility;
+#endif
+}
+
+static int
+main_visibility_checkvar ()
+{
+#ifdef WEAK_TEST
+  return visibility_varval () == 0
+        && visibility_varptr () == NULL;
+#else
+  return visibility_varval () == visibility_var
+        && visibility_varptr () == &visibility_var;
+#endif
 }
+#endif
 
 /* This function is called by the shared library.  */
 
@@ -100,5 +168,11 @@ main ()
   printf ("visibility_checkfunptr () == %d\n",
          visibility_checkfunptr ());
   printf ("main_visibility_check () == %d\n", main_visibility_check ());
+  printf ("visibility_checkvar () == %d\n", visibility_checkvar ());
+  printf ("visibility_checkvarptr () == %d\n",
+         visibility_checkvarptr ());
+  printf ("main_visibility_checkvar () == %d\n",
+         main_visibility_checkvar ());
   return 0;
 }
+#endif
This page took 0.024561 seconds and 4 git commands to generate.