From 6271b461b4fe460d87bc37e63b71eb6672882b5c Mon Sep 17 00:00:00 2001 From: Thatchapon Unprasert Date: Sun, 3 Apr 2022 16:38:09 +0700 Subject: [PATCH 1/3] Fixed substitute not finding dyld symbols correctly on simulator --- lib/darwin/find-syms.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/darwin/find-syms.c b/lib/darwin/find-syms.c index 4227d4a..03dd7c5 100644 --- a/lib/darwin/find-syms.c +++ b/lib/darwin/find-syms.c @@ -383,15 +383,23 @@ ok2: ; static void inspect_dyld() { const struct dyld_all_image_infos *aii = dyld_get_all_image_infos(); +#if TARGET_OS_SIMULATOR + const void *dyld_hdr; + if (strstr(_dyld_get_image_name(0), "dyld_sim")) { + dyld_hdr = _dyld_get_image_header(0); + } +#else const void *dyld_hdr = aii->dyldImageLoadAddress; +#endif const void *libdyld_hdr = NULL; intptr_t libdyld_slide = 0; for(uint32_t i = 0; i < _dyld_image_count(); i++) { const char *im_name = _dyld_get_image_name(i); - if (strcmp(im_name, "/usr/lib/system/libdyld.dylib") == 0){ + if (strstr(im_name, "/usr/lib/system/libdyld.dylib")) { libdyld_hdr = _dyld_get_image_header(i); libdyld_slide = _dyld_get_image_vmaddr_slide(i); + break; } } From 8fec7befb93d1df5b62dc6e686405ad18ed14f00 Mon Sep 17 00:00:00 2001 From: Thatchapon Unprasert Date: Sun, 3 Apr 2022 17:36:49 +0700 Subject: [PATCH 2/3] Fixed for iOS 15 --- lib/darwin/find-syms.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/darwin/find-syms.c b/lib/darwin/find-syms.c index 03dd7c5..9c0e077 100644 --- a/lib/darwin/find-syms.c +++ b/lib/darwin/find-syms.c @@ -383,14 +383,10 @@ ok2: ; static void inspect_dyld() { const struct dyld_all_image_infos *aii = dyld_get_all_image_infos(); -#if TARGET_OS_SIMULATOR - const void *dyld_hdr; + const void *dyld_hdr = aii->dyldImageLoadAddress; if (strstr(_dyld_get_image_name(0), "dyld_sim")) { dyld_hdr = _dyld_get_image_header(0); } -#else - const void *dyld_hdr = aii->dyldImageLoadAddress; -#endif const void *libdyld_hdr = NULL; intptr_t libdyld_slide = 0; From aa6433d101562871fa3a35b532b87eb5bca0f2d5 Mon Sep 17 00:00:00 2001 From: Thatchapon Unprasert Date: Sun, 3 Apr 2022 17:38:56 +0700 Subject: [PATCH 3/3] Wrapped for sim only --- lib/darwin/find-syms.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/darwin/find-syms.c b/lib/darwin/find-syms.c index 9c0e077..516ed26 100644 --- a/lib/darwin/find-syms.c +++ b/lib/darwin/find-syms.c @@ -384,9 +384,11 @@ ok2: ; static void inspect_dyld() { const struct dyld_all_image_infos *aii = dyld_get_all_image_infos(); const void *dyld_hdr = aii->dyldImageLoadAddress; +#if TARGET_OS_SIMULATOR if (strstr(_dyld_get_image_name(0), "dyld_sim")) { dyld_hdr = _dyld_get_image_header(0); } +#endif const void *libdyld_hdr = NULL; intptr_t libdyld_slide = 0;