MonoTouch may use a shared libmono with AOT-compiled assemblies,
and the AOT-compiled assemblies need to access internal symbols
from libmono. The monotouch runtime also uses a few internal
API.
So the easiest way to fix both these cases is to make everything
public for MonoTouch. The libmono used will always be in sync
with the AOT-compiled code, so ABI-breakage is not a concern.
#endif /* _MSC_VER */
-#if !defined(_MSC_VER) && !defined(PLATFORM_SOLARIS) && !defined(_WIN32) && !defined(__CYGWIN__) && HAVE_VISIBILITY_HIDDEN
+#if !defined(_MSC_VER) && !defined(PLATFORM_SOLARIS) && !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MONOTOUCH) && HAVE_VISIBILITY_HIDDEN
#define MONO_INTERNAL __attribute__ ((visibility ("hidden")))
#if MONO_LLVM_LOADED
#define MONO_LLVM_INTERNAL