/* This variable is defined in the shared library, and overridden by
the main program. */
#ifndef XCOFF_TEST
+#ifdef SHARED
+/* SHARED is defined if we are compiling with -fpic/-fPIC. */
int overriddenvar = -1;
+#else
+/* Without -fpic, newer versions of gcc assume that we are not
+ compiling for a shared library, and thus that overriddenvar is
+ local. */
+extern int overriddenvar;
+#endif
#endif
/* This variable is defined in the shared library. */
return shlib_overriddencall2 ();
}
+#ifdef SHARED
int
shlib_overriddencall2 ()
{
return 7;
}
#endif
+#endif
/* This function calls a function defined by the main program. */
#endif
#ifdef HIDDEN_NORMAL_TEST
-asm (".hidden visibility_normal");
+__asm__ (".hidden visibility_normal");
int
visibility_normal ()
#endif
#ifdef HIDDEN_NORMAL_TEST
-asm (".hidden visibility_var_normal");
+__asm__ (".hidden visibility_var_normal");
int visibility_var_normal = 2;
#endif
}
#if defined (HIDDEN_TEST) || defined (HIDDEN_UNDEF_TEST)
-asm (".hidden visibility");
-asm (".hidden visibility_var");
+__asm__ (".hidden visibility");
+__asm__ (".hidden visibility_var");
#else
#if defined (PROTECTED_TEST) || defined (PROTECTED_UNDEF_TEST) || defined (PROTECTED_WEAK_TEST)
-asm (".protected visibility");
-asm (".protected visibility_var");
+__asm__ (".protected visibility");
+__asm__ (".protected visibility_var");
#endif
#endif
#ifdef HIDDEN_NORMAL_TEST
int shlib_visibility_com;
-asm (".hidden shlib_visibility_com");
+__asm__ (".hidden shlib_visibility_com");
int
shlib_visibility_checkcom ()
{
return 1;
}
+#elif defined (HIDDEN_WEAK_TEST)
+#pragma weak shlib_visibility_undef_var_weak
+extern int shlib_visibility_undef_var_weak;
+__asm__ (".hidden shlib_visibility_undef_var_weak");
+
+#pragma weak shlib_visibility_undef_func_weak
+extern int shlib_visibility_undef_func_weak ();
+__asm__ (".hidden shlib_visibility_undef_func_weak");
+
+#pragma weak shlib_visibility_var_weak
+extern int shlib_visibility_var_weak;
+__asm__ (".hidden shlib_visibility_var_weak");
+
+#pragma weak shlib_visibility_func_weak
+extern int shlib_visibility_func_weak ();
+__asm__ (".hidden shlib_visibility_func_weak");
+
+int
+shlib_visibility_checkcom ()
+{
+ return 1;
+}
+
+int
+shlib_visibility_checkweak ()
+{
+ return &shlib_visibility_undef_var_weak == NULL
+ && &shlib_visibility_undef_func_weak == NULL
+ && &shlib_visibility_func_weak == NULL
+ && &shlib_visibility_var_weak == NULL;
+}
#else
int
shlib_visibility_checkcom ()
#endif
#ifdef PROTECTED_TEST
+#ifdef SHARED
int shared_data = 100;
+#else
+extern int shared_data;
+#endif
int *
shared_data_p ()