#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <mach-o/dyld_priv.h>
bool gFoundLibrary = false;
const char* gLibraryName = NULL;
bool wasImageLoaded(const char* libraryName) {
gFoundLibrary = false;
gLibraryName = libraryName;
_dyld_register_for_image_loads([](const mach_header* mh, const char* path, bool unloadable) {
if ( strstr(path, gLibraryName) != NULL ) {
gFoundLibrary = true;
}
});
if (!gFoundLibrary)
printf("[FAIL] dyld-insert-library-double: expected insert to pass for '%s'\n", libraryName);
return gFoundLibrary;
}
int main()
{
printf("[BEGIN] dyld-insert-library-double\n");
if (!wasImageLoaded("libfoo.dylib") || !wasImageLoaded("libbar.dylib")) {
return 0;
}
printf("[PASS] dyld-insert-library-double\n");
return 0;
}