[XM] Dynamically look up NSExtensionMain to unbreak pre-10.10 XM apps (#154)

* [XM] Dynamically look up NSExtensionMain to unbreak pre-10.10 XM apps

- So having a simple reference to NSExtensionMain is enough for /usr/lib/libextension.dylib to get added as a reference to libxammac.dylib
- If you have a reference to /usr/lib/libextension.dylib then any XM app (including our tests) bomb out on startup. This is suboptimal.
- So dlopen/dysm our way to victory.

* Fix spacing
This commit is contained in:
Chris Hamons 2016-06-08 18:19:16 -04:00 коммит произвёл Rolf Bjarne Kvinge
Родитель 9c01fe6c9d
Коммит b7a797b068
1 изменённых файлов: 13 добавлений и 1 удалений

Просмотреть файл

@ -581,7 +581,19 @@ int xamarin_main (int argc, char **argv, bool is_extension)
*ptr = NULL;
if (is_extension) {
rv = NSExtensionMain (new_argc, new_argv);
void * libExtensionHandle = dlopen ("/usr/lib/libextension.dylib", RTLD_LAZY);
if (libExtensionHandle == nil)
exit_with_message ("Unable to load libextension.dylib", data.basename, false);
typedef int (*extension_main)(int argc, char * argv[]);
extension_main extensionMain = (extension_main) dlsym (libExtensionHandle, "NSExtensionMain");
if (extensionMain == nil)
exit_with_message ("Unable to load NSExtensionMain", data.basename, false);
rv = (*extensionMain) (new_argc, new_argv);
dlclose (libExtensionHandle);
} else {
rv = mono_main (new_argc, new_argv);
}