of a shared library. */
/* This variable is supplied by the main program. */
+#ifndef XCOFF_TEST
extern int mainvar;
+#endif
/* This variable is defined in the shared library, and overridden by
the main program. */
+#ifndef XCOFF_TEST
int overriddenvar = -1;
+#endif
/* This variable is defined in the shared library. */
int shlibvar1 = 3;
/* These functions return the values of the above variables as seen in
the shared library. */
+#ifndef XCOFF_TEST
int
shlib_mainvar ()
{
return mainvar;
}
+#endif
+#ifndef XCOFF_TEST
int
shlib_overriddenvar ()
{
return overriddenvar;
}
+#endif
int
shlib_shlibvar1 ()
return shlib_shlibcalled ();
}
+#ifndef XCOFF_TEST
+/* This function calls a function defined in this object in the shared
+ library. The main program will override the called function. */
+
+extern int shlib_overriddencall2 ();
+
+int
+shlib_shlibcall2 ()
+{
+ return shlib_overriddencall2 ();
+}
+#endif
+
/* This function calls a function defined by the main program. */
+#ifndef XCOFF_TEST
extern int main_called ();
int
{
return main_called ();
}
+#endif
/* This function is passed a function pointer to shlib_mainvar. It
confirms that the pointer compares equally. */
shlib_checkfunptr1 (p)
int (*p) ();
{
- return p == shlib_mainvar;
+ return p == shlib_shlibvar1;
}
/* This function is passed a function pointer to main_called. It
confirms that the pointer compares equally. */
+#ifndef XCOFF_TEST
int
shlib_checkfunptr2 (p)
int (*p) ();
{
return p == main_called;
}
+#endif
/* This function returns a pointer to shlib_mainvar. */
int
(*shlib_getfunptr1 ()) ()
{
- return shlib_mainvar;
+ return shlib_shlibvar1;
}
/* This function returns a pointer to main_called. */
+#ifndef XCOFF_TEST
int
(*shlib_getfunptr2 ()) ()
{
return main_called;
}
+#endif
/* This function makes sure that constant data and local functions
work. */