-
-
Save niw/df6cd434f3431620a6986bea9114b8ba to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int _parse_macho_iterate_slices(int arg0, int arg1) { | |
r14 = arg1; | |
r15 = arg0; | |
rax = open(arg0, 0x100); | |
if (rax >= 0x0) { | |
r14 = _parse_macho_iterate_slices_fd(rax, r15, r14); | |
close(rax); | |
rax = r14; | |
} | |
else { | |
syslog$DARWIN_EXTSN(0x3, "Failed to open macho file at %s for reading: %s", r15, strerror(*(int32_t *)__error())); | |
rax = 0x0; | |
} | |
return rax; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int _parse_macho_iterate_slices_fd(int arg0, int arg1, int arg2) { | |
r14 = arg2; | |
r15 = arg1; | |
rbx = arg0; | |
*(int128_t *)(&var_E0 + 0x80) = intrinsic_movaps(*(int128_t *)(&var_E0 + 0x80), 0x0); | |
*(int128_t *)(&var_E0 + 0x70) = intrinsic_movaps(*(int128_t *)(&var_E0 + 0x70), 0x0); | |
*(int128_t *)(&var_E0 + 0x60) = intrinsic_movaps(*(int128_t *)(&var_E0 + 0x60), 0x0); | |
*(int128_t *)(&var_E0 + 0x50) = intrinsic_movaps(*(int128_t *)(&var_E0 + 0x50), 0x0); | |
*(int128_t *)(&var_E0 + 0x40) = intrinsic_movaps(*(int128_t *)(&var_E0 + 0x40), 0x0); | |
*(int128_t *)(&var_E0 + 0x30) = intrinsic_movaps(*(int128_t *)(&var_E0 + 0x30), 0x0); | |
*(int128_t *)(&var_E0 + 0x20) = intrinsic_movaps(*(int128_t *)(&var_E0 + 0x20), 0x0); | |
*(int128_t *)(&var_E0 + 0x10) = intrinsic_movaps(*(int128_t *)(&var_E0 + 0x10), 0x0); | |
var_E0 = intrinsic_movaps(var_E0, 0x0); | |
if (fstat$INODE64() == 0x0) goto loc_4176; | |
loc_414d: | |
rax = strerror(*(int32_t *)__error()); | |
goto loc_4160; | |
loc_4160: | |
rbx = 0x0; | |
syslog$DARWIN_EXTSN(0x3); | |
goto loc_4195; | |
loc_4195: | |
rax = rbx; | |
return rax; | |
loc_4176: | |
if (var_80 > 0x8) goto loc_41a9; | |
loc_417d: | |
rbx = 0x0; | |
syslog$DARWIN_EXTSN(0x3, "File at %s is not a valid mach-o (too small to contain a valid header)", r15); | |
goto loc_4195; | |
loc_41a9: | |
var_34 = 0x0; | |
*(int32_t *)__error() = 0x0; | |
rax = pread(rbx, &var_34, 0x4, 0x0); | |
if (rax != 0x4) goto loc_41f4; | |
loc_41cc: | |
if (0x0 > 0xcffaedfd) goto loc_420c; | |
loc_41d7: | |
if ((0x0 == 0xbebafeca) || (0x0 == 0xcafebabe)) goto loc_4257; | |
loc_41e7: | |
if (0x0 != 0xcefaedfe) { | |
rbx = 0x0; | |
syslog$DARWIN_EXTSN(0x3, "Unknown binary with magic 0x%08x at %s"); | |
} | |
else { | |
rax = __read_macho_header_and_load_commands(rbx, 0x0, var_80); | |
if (rax != 0x0) { | |
(*(r14 + 0x10))(r14, 0x0, rax); | |
free(rax); | |
rbx = 0x1; | |
} | |
else { | |
rbx = 0x0; | |
syslog$DARWIN_EXTSN(0x3, "Failed to read macho header and load commands in %s at %u", r15, 0x0); | |
} | |
} | |
goto loc_4195; | |
loc_4257: | |
*(int32_t *)__error() = 0x0; | |
rax = pread(rbx, &var_30, 0x8, 0x0); | |
if (rax != 0x8) goto loc_431d; | |
loc_427e: | |
if (var_30 == 0xbebafeca) { | |
swap_fat_header(&var_30, 0x1); | |
} | |
syslog$DARWIN_EXTSN(0x7, "Got fat header with magic 0x%08x and %u archs"); | |
rdx = var_2C; | |
if (rdx < 0x401) goto loc_435d; | |
loc_42c4: | |
r13 = 0x0; | |
syslog$DARWIN_EXTSN(0x3, "Number of fat archs %u exceeds the maximum %u"); | |
goto loc_4345; | |
loc_4345: | |
rbx = 0x0; | |
goto loc_4347; | |
loc_4347: | |
if (r13 != 0x0) { | |
free(r13); | |
} | |
goto loc_4195; | |
loc_435d: | |
rax = rdx * 0x4; | |
if (var_80 <= rax + rax * 0x4 + 0x8) goto loc_446c; | |
loc_4374: | |
r12 = rax + rax * 0x4; | |
rax = malloc(r12); | |
r13 = rax; | |
if (r12 != pread(rbx, rax, r12, 0x8)) goto loc_4487; | |
loc_439e: | |
var_40 = r13; | |
swap_fat_arch(r13, var_2C, 0x1); | |
if (var_2C == 0x0) goto loc_4461; | |
loc_43bc: | |
rsi = var_40; | |
r13 = 0x0; | |
r12 = 0x0; | |
goto loc_43c6; | |
loc_43c6: | |
var_48 = rsi; | |
syslog$DARWIN_EXTSN(0x7, "Evaluating fat slice with cputype %d; subtype %d; offset %u; size %u; align %u", *(int32_t *)rsi, *(int32_t *)(rsi + 0x4), *(int32_t *)(rsi + 0x8), *(int32_t *)(rsi + 0xc), *(int32_t *)(rsi + 0x10)); | |
rsi = *(int32_t *)(var_48 + 0x8); | |
rdx = var_80; | |
if (rdx <= rsi) goto loc_449f; | |
loc_4404: | |
var_50 = r13; | |
rax = __read_macho_header_and_load_commands(rbx, rsi, rdx); | |
if (rax == 0x0) goto loc_44ba; | |
loc_4418: | |
r13 = rax; | |
r12 = r12 & 0xff; | |
if ((*(r14 + 0x10))(r14, var_48, rax) == 0x0) { | |
r12 = 0x1; | |
} | |
free(r13); | |
rsi = var_48; | |
r13 = var_50; | |
if ((r12 & 0x1) != 0x0) goto loc_4461; | |
loc_444e: | |
r13 = r13 + 0x1; | |
rsi = rsi + 0x14; | |
if (r13 < var_2C) goto loc_43c6; | |
loc_4461: | |
rbx = 0x1; | |
r13 = var_40; | |
goto loc_4347; | |
loc_44ba: | |
syslog$DARWIN_EXTSN(0x3, "Failed to read macho header and load commands in %s at %u", r15, *(int32_t *)(var_48 + 0x8)); | |
goto loc_44d7; | |
loc_44d7: | |
r13 = var_40; | |
goto loc_4345; | |
loc_449f: | |
syslog$DARWIN_EXTSN(0x3, "Fat arch %u in %s specifies offset which is beyond the end of the file", r13, r15); | |
goto loc_44d7; | |
loc_4487: | |
rax = strerror(*(int32_t *)__error()); | |
goto loc_4333; | |
loc_4333: | |
syslog$DARWIN_EXTSN(0x3); | |
goto loc_4345; | |
loc_446c: | |
r13 = 0x0; | |
syslog$DARWIN_EXTSN(0x3, "File is not large enough to contain %u fat arch headers and their referenced slices."); | |
goto loc_4345; | |
loc_431d: | |
rax = strerror(*(int32_t *)__error()); | |
r13 = 0x0; | |
goto loc_4333; | |
loc_420c: | |
if ((0x1120532 >= 0x2) && (0x0 != 0xcffaedfe)) { | |
rbx = 0x0; | |
syslog$DARWIN_EXTSN(0x3, "Unknown binary with magic 0x%08x at %s"); | |
} | |
else { | |
rax = __read_macho_header_and_load_commands(rbx, 0x0, var_80); | |
if (rax != 0x0) { | |
(*(r14 + 0x10))(r14, 0x0, rax); | |
free(rax); | |
rbx = 0x1; | |
} | |
else { | |
rbx = 0x0; | |
syslog$DARWIN_EXTSN(0x3, "Failed to read macho header and load commands in %s at %u", r15, 0x0); | |
} | |
} | |
goto loc_4195; | |
loc_41f4: | |
rax = strerror(*(int32_t *)__error()); | |
goto loc_4160; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void _xcrun_main2(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) { | |
r9 = arg5; | |
r8 = arg4; | |
rdx = arg2; | |
rsi = arg1; | |
r12 = rdx; | |
r15 = rsi; | |
rbx = arg0; | |
var_858 = _util_get_bool_from_environment(); | |
var_831 = _util_get_bool_from_environment(); | |
rax = _xcinfocache_create(arg3); | |
if (rax == 0x0) goto loc_8c4d; | |
loc_7bcd: | |
r14 = rax; | |
var_840 = rax; | |
var_848 = rbx; | |
if (rbx == 0x0) goto loc_7bfd; | |
loc_7be3: | |
var_850 = 0x0; | |
r13 = rbx; | |
var_860 = 0x0; | |
goto loc_80e9; | |
loc_80e9: | |
rbx = _util_get_bool_from_environment(); | |
rax = _xcinfocache_is_xcode_utility(r13); | |
rax = _xcinfocache_open_cache(r14, rbx & 0xff, rax & 0xff, 0x1); | |
rbx = rax; | |
if (rax == 0x0) goto loc_8140; | |
loc_8118: | |
if (**___stack_chk_guard != **___stack_chk_guard) { | |
__stack_chk_fail(); | |
} | |
return; | |
loc_8140: | |
rdx = var_848 != 0x0 ? 0x1 : 0x0; | |
var_848 = r13; | |
_xcinfocache_resolve_sdkroot(r14, r13, rdx, 0x1, r8, r9); | |
if (*(int8_t *)(r14 + 0x38) == 0x0) goto loc_82c4; | |
loc_816a: | |
rdx = 0x1; | |
setenv("SDKROOT", *(var_840 + 0x30), rdx); | |
if (*(int8_t *)(var_840 + 0x39) == 0x0) goto loc_82c4; | |
loc_8190: | |
r13 = *r12; | |
if (r13 == 0x0) goto loc_8297; | |
loc_819d: | |
r14 = r12 + 0x8; | |
var_864 = 0x0; | |
rbx = 0x0; | |
goto loc_81ae; | |
loc_81ae: | |
rdx = 0x1; | |
if (_strstartswith(r13, "-isysroot") != 0x0) goto loc_82c4; | |
loc_81c5: | |
rdx = 0x1; | |
if (strcmp(r13, "-sdk") == 0x0) goto loc_82c4; | |
loc_81dc: | |
rdx = 0x1; | |
if (_strstartswith(r13, "-syslibroot") != 0x0) goto loc_82c4; | |
loc_81f3: | |
rdx = 0x1; | |
if (_strstartswith(r13, "-Wl,-syslibroot") != 0x0) goto loc_82c4; | |
loc_820a: | |
rdx = 0x1; | |
if (_strstartswith(r13, "--sysroot") != 0x0) goto loc_82c4; | |
loc_8221: | |
if (strstr(r13, "-nostdsysteminc") != 0x0) { | |
rbx = 0x1; | |
} | |
else { | |
if (strcmp(r13, "-nostdinc") == 0x0) { | |
rbx = 0x1; | |
} | |
} | |
if ((strcmp(r13, "-Z") == 0x0) || (strcmp(r13, "-Wl,-Z") == 0x0)) { | |
var_864 = 0x1; | |
} | |
r13 = *r14; | |
r14 = r14 + 0x8; | |
if (r13 != 0x0) goto loc_81ae; | |
loc_828a: | |
COND = (rbx & 0x1) == 0x0; | |
rbx = var_864; | |
if (COND) { | |
_append_env("CPATH", "/usr/local/include"); | |
} | |
goto loc_82ac; | |
loc_82ac: | |
rdx = 0x1; | |
if ((rbx & 0x1) == 0x0) { | |
rdx = 0x1; | |
_append_env("LIBRARY_PATH", "/usr/local/lib"); | |
} | |
goto loc_82c4; | |
loc_82c4: | |
rsi = var_850; | |
if (rsi == 0x0) goto loc_830d; | |
loc_82d0: | |
rbx = var_840; | |
r14 = rsi; | |
rax = _xcinfocache_lookup_sdk_property(rbx, rsi, rdx, 0x1, r8, r9); | |
if (rax == 0x0) goto loc_8371; | |
loc_82eb: | |
rdx = rax; | |
goto loc_8301; | |
loc_8301: | |
rbx = 0x0; | |
fprintf(**___stdoutp, "%s\n", rdx); | |
goto loc_8118; | |
loc_8371: | |
_error("unable to lookup item '%s' in SDK '%s'", r14, *(rbx + 0x30), 0x1, r8, r9, stack[-2200]); | |
rbx = 0x1; | |
goto loc_8118; | |
loc_830d: | |
r14 = var_840; | |
if ((var_860 & 0x1) != 0x0) goto loc_8390; | |
loc_831d: | |
rbx = var_848; | |
if (rbx == 0x0) goto loc_83e0; | |
loc_832d: | |
if (*(int8_t *)(r14 + 0x10) != 0x0) { | |
_xcinfocache_note_variables(r14); | |
rdx = getprogname(); | |
_note("xcrun via %s (%s)", var_848, rdx, 0x1, r8, r9, stack[-2200]); | |
rbx = var_848; | |
} | |
if (*(int8_t *)rbx != 0x2f) goto loc_840c; | |
loc_8369: | |
rcx = 0x1; | |
r14 = rbx; | |
goto loc_853e; | |
loc_853e: | |
rdi = strdup(r14); | |
if ((var_858 & 0x1) != 0x0) goto loc_86a1; | |
loc_8556: | |
rbx = &var_888; | |
*rbx = 0x0; | |
*(rbx + 0x8) = rbx; | |
*(rbx + 0x10) = 0x2000000000; | |
*(int32_t *)(rbx + 0x18) = 0xffffffffffffffff; | |
var_858 = rdi; | |
if (*_is_bni.once != 0xffffffffffffffff) { | |
dispatch_once(_is_bni.once, ^ {/* block implemented at ___is_bni_block_invoke */ } }); | |
} | |
if ((*(int8_t *)_is_bni.retval != 0x0) || (getenv("SYSTEM_VERSION_COMPAT") != 0x0)) goto loc_86bc; | |
loc_85b4: | |
var_830 = *__NSConcreteStackBlock; | |
*(&var_830 + 0x8) = 0x42000000; | |
*(&var_830 + 0x10) = ___util_has_valid_deployment_target_block_invoke; | |
*(&var_830 + 0x18) = ___block_descriptor_tmp.11; | |
*(&var_830 + 0x20) = rbx; | |
rax = _parse_macho_iterate_slices(var_858, &var_830); | |
if (rax == 0x0) goto loc_86bc; | |
loc_85fb: | |
rbx = *(int32_t *)(var_880 + 0x18); | |
if (rbx == 0xffffffff) goto loc_86bc; | |
loc_860e: | |
r14 = *__NSConcreteStackBlock; | |
dyld_image_header_containing_address(*_dyld_image_header_containing_address); | |
var_430 = r14; | |
if (*_host_version.once != 0xffffffffffffffff) { | |
dispatch_once(_host_version.once, &var_430); | |
} | |
rcx = ___block_descriptor_tmp.25; | |
r14 = *(int32_t *)_host_version.version; | |
_Block_object_dispose(&var_888, 0x8); | |
if (rbx <= r14) goto loc_86cd; | |
loc_867a: | |
_error("unable execute utility \"%s\" because it requires a newer version of macOS.", _path_escape_shell_copy(var_858), rdx, ___block_descriptor_tmp.25, r8, r9, stack[-2200]); | |
exit(0x46); | |
return; | |
loc_86cd: | |
r13 = r15 + 0x1; | |
r14 = malloc(sign_extend_64(r15) * 0x8 + 0x10); | |
*r14 = strdup(var_858); | |
if (sign_extend_64(r15) != 0x0) { | |
rax = r15; | |
rcx = 0x0; | |
do { | |
rdx = *(r12 + rcx * 0x8); | |
*(r14 + rcx * 0x8 + 0x8) = rdx; | |
rcx = rcx + 0x1; | |
} while (rax != rcx); | |
} | |
*(r14 + sign_extend_64(r13) * 0x8) = 0x0; | |
if ((var_831 & 0x1) == 0x0) { | |
rbx = var_858; | |
if (*(int8_t *)(var_840 + 0x10) != 0x0) { | |
fflush(**___stdoutp); | |
fflush(**___stderrp); | |
} | |
} | |
else { | |
rcx = var_840; | |
if (*(int8_t *)(rcx + 0x38) != 0x0) { | |
rbx = **___stderrp; | |
rdx = _path_escape_shell_copy(*(rcx + 0x30)); | |
fprintf(rbx, "env SDKROOT=%s ", rdx); | |
} | |
rdi = *r14; | |
r12 = **___stderrp; | |
if (rdi != 0x0) { | |
r13 = 0x0; | |
do { | |
rbx = " "; | |
if (r13 == 0x0) { | |
rbx = ""; | |
} | |
r15 = *___stderrp; | |
rax = _path_escape_shell_copy(rdi); | |
rdx = rbx; | |
rcx = rax; | |
fprintf(r12, "%s%s", rdx, rcx); | |
rdi = *(r14 + r13 * 0x8 + 0x8); | |
r13 = r13 + 0x1; | |
r12 = *r15; | |
} while (rdi != 0x0); | |
} | |
fputc(0xa, r12); | |
rbx = var_858; | |
fflush(**___stdoutp); | |
fflush(**___stderrp); | |
} | |
_xcinfocache_free(var_840); | |
execv(rbx, r14); | |
_syserror("can't exec '%s'", rbx, rdx, rcx, r8, r9, stack[-2200]); | |
wait(0x0); | |
rbx = 0x47; | |
goto loc_8118; | |
loc_86bc: | |
_Block_object_dispose(&var_888, 0x8); | |
goto loc_86cd; | |
loc_86a1: | |
puts(rdi); | |
fflush(**___stdoutp); | |
goto loc_86b5; | |
loc_86b5: | |
rbx = 0x0; | |
goto loc_8118; | |
loc_840c: | |
if (strchr(rbx, 0x2f) == 0x0) goto loc_8465; | |
loc_841e: | |
rax = getcwd(&var_430, 0x400); | |
if (rax == 0x0) goto loc_8532; | |
loc_8438: | |
rcx = 0x1; | |
_path_append(&var_430, var_848); | |
rdi = &var_430; | |
goto loc_8451; | |
loc_8451: | |
r14 = strdup(rdi); | |
goto loc_8535; | |
loc_8535: | |
if (r14 == 0x0) goto loc_8d89; | |
goto loc_853e; | |
loc_8d89: | |
rsi = var_848; | |
if (strncmp("svn", rsi, 0x3) == 0x0) { | |
_error("The subversion command line tools are no longer provided by Xcode.", rsi, 0x3, rcx, r8, r9, stack[-2200]); | |
} | |
else { | |
if (*_xcrun_unknown_utility_handler == 0x0) { | |
_error("unable to find utility \"%s\", not a developer tool or in PATH", _path_escape_shell_copy(var_848), 0x3, rcx, r8, r9, stack[-2200]); | |
} | |
else { | |
rbx = *_xcrun_unknown_utility_handler; | |
(*(rbx + 0x10))(rbx, _path_escape_shell_copy(var_848)); | |
} | |
} | |
exit(0x48); | |
return; | |
loc_8532: | |
rcx = 0x1; | |
r14 = 0x0; | |
goto loc_8535; | |
loc_8465: | |
r8 = *(r14 + 0x18); | |
rdx = *(r14 + 0x30); | |
rcx = *(r14 + 0x40); | |
r9 = *(r14 + 0x70); | |
r13 = _msprintf("%s|%s|%s|%s|%s", rbx, rdx, rcx, r8, r9, stack[-2200]); | |
if (*(int8_t *)(r14 + 0x10) != 0x0) { | |
_note("database key is: %s", r13, rdx, rcx, r8, r9, stack[-2200]); | |
} | |
rdi = *(r14 + 0x8); | |
rbx = r14; | |
if ((rdi == 0x0) || (*(int8_t *)(rbx + 0x12) != 0x0)) goto loc_84b7; | |
loc_887b: | |
rax = _diskstrmap_lookup(rdi, r13); | |
if (rax == 0x0) goto loc_84b7; | |
loc_888c: | |
r14 = rax; | |
if (*(int8_t *)(rbx + 0x10) != 0x0) { | |
_note("lookup resolved in '%s' : '%s'", **(rbx + 0x8), r14, rcx, r8, r9, stack[-2200]); | |
} | |
rdx = &var_830; | |
rax = _extract_toolchain_signature(r14, &var_430, rdx); | |
if (rax == 0x0) goto loc_8991; | |
loc_88cb: | |
rax = _diskstrmap_lookup(*(var_840 + 0x8), &var_830); | |
if (rax == 0x0) goto loc_88fe; | |
loc_88e7: | |
rax = strcmp(rax, &var_430); | |
if (rax == 0x0) goto loc_8991; | |
loc_88fe: | |
if (*(int8_t *)(var_840 + 0x10) != 0x0) { | |
_warning("cache result '%s' is in an out-of-date toolchain", r14, rdx, rcx, r8, r9, stack[-2200]); | |
} | |
rbx = var_840; | |
goto loc_84b7; | |
loc_84b7: | |
if (*(int8_t *)(rbx + 0x20) == 0x0) goto loc_8833; | |
loc_84c1: | |
rax = _cltools_search_for_utility(*(rbx + 0x18), var_848); | |
goto loc_84d1; | |
loc_84d1: | |
r14 = rax; | |
goto loc_84d4; | |
loc_84d4: | |
if (r14 == 0x0) goto loc_8d89; | |
loc_84dd: | |
rdi = *(var_840 + 0x8); | |
if (rdi != 0x0) { | |
_diskstrmap_insert(rdi, r13, r14, rcx, r8, r9); | |
rdx = &var_830; | |
rax = _extract_toolchain_signature(r14, &var_430, rdx); | |
if (rax != 0x0) { | |
rdx = &var_430; | |
rax = _diskstrmap_insert(*(var_840 + 0x8), &var_830, rdx, rcx, r8, r9); | |
} | |
} | |
goto loc_853e; | |
loc_8833: | |
r14 = var_848; | |
if (_xcinfocache_is_xcode_utility(r14) == 0x0) goto loc_8928; | |
loc_884a: | |
if (strcmp(r14, "xcodebuild") == 0x0) goto loc_89d4; | |
loc_8861: | |
rdx = r14; | |
rax = _msprintf("%s/usr/bin/%s", *(rbx + 0x18), rdx, rcx, r8, r9, stack[-2200]); | |
goto loc_84d1; | |
loc_89d4: | |
r14 = *(rbx + 0x28); | |
goto loc_84d4; | |
loc_8928: | |
rbx = *(rbx + 0x30); | |
var_850 = r13; | |
if (*(int8_t *)rbx == 0x2f) { | |
rax = realpath$DARWIN_EXTSN(rbx, 0x0); | |
r14 = rax; | |
if (rax != 0x0) { | |
rax = realpath$DARWIN_EXTSN(*(var_840 + 0x18), 0x0); | |
if (rax != 0x0) { | |
var_860 = rax; | |
if (_strstartswith(r14, rax) == 0x0) { | |
rbx = "macosx"; | |
} | |
} | |
else { | |
var_860 = 0x0; | |
_syserror("Failed to determine realpath of '%s'", *(var_840 + 0x18), rdx, rcx, r8, r9, stack[-2200]); | |
} | |
} | |
else { | |
_syserror("Failed to determine realpath of '%s'", rbx, rdx, rcx, r8, r9, stack[-2200]); | |
rax = realpath$DARWIN_EXTSN(*(var_840 + 0x18), 0x0); | |
if (rax != 0x0) { | |
var_860 = rax; | |
} | |
else { | |
var_860 = 0x0; | |
_syserror("Failed to determine realpath of '%s'", *(var_840 + 0x18), rdx, rcx, r8, r9, stack[-2200]); | |
} | |
} | |
free(r14); | |
free(var_860); | |
} | |
r13 = _path_escape_shell_copy(*(var_840 + 0x28)); | |
rbx = _path_escape_shell_copy(rbx); | |
rax = _path_escape_shell_copy(var_848); | |
rdx = rbx; | |
rcx = rax; | |
rbx = _msprintf("%s -sdk %s -find %s 2> /dev/null", r13, rdx, rcx, r8, r9, stack[-2200]); | |
if (*(int8_t *)(var_840 + 0x10) != 0x0) { | |
_note("looking up with '%s'", rbx, rdx, rcx, r8, r9, stack[-2200]); | |
} | |
r14 = rbx; | |
rax = popen(rbx, "r"); | |
if (rax == 0x0) goto loc_8d60; | |
loc_8abb: | |
r13 = fparseln(rax, 0x0, 0x0, 0x0, 0x0); | |
rax = pclose(rax); | |
if (rax != 0x0) goto loc_8d73; | |
loc_8ae2: | |
if ((r13 == 0x0) || (*(int8_t *)r13 == 0x0)) goto loc_8d3d; | |
loc_8af6: | |
if (*(int8_t *)(var_840 + 0x10) != 0x0) { | |
_note("lookup resolved with 'xcodebuild -find' to '%s'", _path_escape_shell_copy(r13), 0x0, 0x0, 0x0, r9, stack[-2200]); | |
} | |
r14 = _path_clean_copy(r13); | |
if (_is_path_xcrun_shim() == 0x0) goto loc_8b94; | |
loc_8b33: | |
rdx = 0x0; | |
rbx = var_848; | |
r13 = var_850; | |
if (*(int8_t *)(var_840 + 0x10) != 0x0) { | |
rdx = rbx; | |
_note("xcodebuild resolved path (%s) is an xcrun sim, falling back on internal implementaion to locate '%s'.", r14, rdx, 0x0, 0x0, r9, stack[-2200]); | |
} | |
r8 = 0x0; | |
rcx = 0x0; | |
rax = _cltools_search_for_utility(*(var_840 + 0x18), rbx); | |
r14 = rax; | |
if (rax != 0x0) goto loc_84dd; | |
loc_8b81: | |
rdi = "Failed to locate '%s'."; | |
rsi = var_848; | |
goto loc_8d57; | |
loc_8d57: | |
r8 = 0x0; | |
rcx = 0x0; | |
_error(rdi, rsi, rdx, rcx, r8, r9, stack[-2200]); | |
goto loc_8d89; | |
loc_8b94: | |
r8 = 0x0; | |
rdx = 0x0; | |
rcx = 0x0; | |
r13 = var_850; | |
goto loc_84d4; | |
loc_8d3d: | |
rdx = 0x0; | |
rax = _path_escape_shell_copy(*(var_840 + 0x28)); | |
rdi = "%s didn't return any data"; | |
rsi = rax; | |
goto loc_8d57; | |
loc_8d73: | |
r8 = 0x0; | |
rcx = r13; | |
_syserror("sh -c '%s' failed with exit code %d: %s", r14, rax, rcx, r8, r9, stack[-2200]); | |
goto loc_8d89; | |
loc_8d60: | |
_syserror("unable to launch '%s'", r14, rdx, rcx, r8, r9, stack[-2200]); | |
goto loc_8d89; | |
loc_8991: | |
if ((_path_is_executable_file(r14) == 0x0) || (_is_path_xcrun_shim() != 0x0)) goto loc_89ad; | |
loc_8ba0: | |
rdi = r14; | |
goto loc_8451; | |
loc_89ad: | |
rbx = var_840; | |
if (*(int8_t *)(rbx + 0x10) != 0x0) { | |
_warning("cache result '%s' does not exist or isn't executable", r14, rdx, rcx, r8, r9, stack[-2200]); | |
} | |
goto loc_84b7; | |
loc_83e0: | |
rbx = 0x0; | |
if (*(int8_t *)(r14 + 0x11) == 0x0) { | |
__assert_rtn("xcrun_main2", "/Library/Caches/com.apple.xbs/Sources/xcrun/xcrun-59/src/xcrun.c", 0x190, "xcinfocache_get_reset_cache(infocache) && \"unexpect missing utility name\""); | |
} | |
else { | |
if (**___stack_chk_guard != **___stack_chk_guard) { | |
__stack_chk_fail(); | |
} | |
} | |
return; | |
loc_8390: | |
_xcrun_iter_manpaths(*(r14 + 0x18), *(r14 + 0x30), ^ {/* block implemented at ___xcrun_main2_block_invoke */ } }, 0x1, r8, r9); | |
goto loc_86b5; | |
loc_8297: | |
rbx = 0x0; | |
_append_env("CPATH", "/usr/local/include"); | |
goto loc_82ac; | |
loc_7bfd: | |
if (r15 == 0x0) goto loc_8bfe; | |
loc_7c06: | |
var_860 = 0x0; | |
var_850 = 0x0; | |
rcx = 0x0; | |
goto loc_7c1a; | |
loc_7c1a: | |
r13 = *r12; | |
if (*(int8_t *)r13 != 0x2d) goto loc_7c35; | |
loc_7c25: | |
if (*(int8_t *)(r13 + 0x1) != 0x2d) { | |
rbx = rcx; | |
r14 = r13 + 0x1; | |
} | |
else { | |
rbx = rcx; | |
r14 = r13 + 0x2; | |
} | |
if (strcmp(r14, "sdk") == 0x0) goto loc_7e95; | |
loc_7c79: | |
if (strcmp(r14, "toolchain") == 0x0) goto loc_7ecb; | |
loc_7c90: | |
if ((strcmp(r14, "h") == 0x0) || (strcmp(r14, "help") == 0x0)) goto loc_8be6; | |
loc_7cbe: | |
if (strcmp(r14, "version") == 0x0) goto loc_8c08; | |
loc_7cd5: | |
rsi = "l"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7ec2; | |
loc_7cec: | |
rsi = "log"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7ec2; | |
loc_7d03: | |
rsi = "f"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7f09; | |
loc_7d1a: | |
rsi = "find"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7f09; | |
loc_7d31: | |
rsi = "r"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7f27; | |
loc_7d48: | |
rsi = "run"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7f27; | |
loc_7d5f: | |
rsi = "v"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7f3d; | |
loc_7d76: | |
rsi = "verbose"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7f3d; | |
loc_7d8d: | |
rsi = "n"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7f55; | |
loc_7da4: | |
rsi = "no-cache"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7f55; | |
loc_7dbb: | |
rsi = "k"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7f6d; | |
loc_7dd2: | |
rsi = "kill-cache"; | |
if (strcmp(r14, rsi) == 0x0) goto loc_7f6d; | |
loc_7de9: | |
if (strcmp(r14, "show-cache-path") == 0x0) goto loc_8007; | |
loc_7e00: | |
if (strcmp(r14, "show-sdk-path") == 0x0) goto loc_7f85; | |
loc_7e17: | |
if (strcmp(r14, "show-sdk-version") == 0x0) goto loc_7f8e; | |
loc_7e2e: | |
if (strcmp(r14, "show-sdk-build-version") == 0x0) goto loc_7f97; | |
loc_7e45: | |
if (strcmp(r14, "show-sdk-platform-path") == 0x0) goto loc_7fa0; | |
loc_7e5c: | |
if (strcmp(r14, "show-sdk-platform-version") == 0x0) goto loc_7fa9; | |
loc_7e73: | |
if (strcmp(r14, "show-manpaths") != 0x0) goto loc_8029; | |
loc_7e8a: | |
rsi = "show-manpaths"; | |
var_860 = 0x1; | |
goto loc_7f12; | |
loc_7f12: | |
rcx = rbx; | |
goto loc_7f15; | |
loc_7f15: | |
r12 = r12 + 0x8; | |
r15 = r15 - 0x1; | |
if (r15 != 0x0) goto loc_7c1a; | |
loc_7fbc: | |
rsi = var_850; | |
rbx = rsi != 0x0 ? 0x1 : 0x0; | |
rdx = var_860; | |
r14 = (rdx & 0x1) == 0x0 ? 0x1 : 0x0; | |
r15 = 0x0; | |
if (((var_858 | rdx) & 0x1) != 0x0) goto loc_809c; | |
loc_7feb: | |
r15 = 0x0; | |
if (rsi != 0x0) goto loc_809c; | |
loc_7ff4: | |
if (rcx != 0x0) goto loc_8cdf; | |
loc_7ffd: | |
rcx = 0x0; | |
goto loc_7fff; | |
loc_7fff: | |
r15 = 0x0; | |
goto loc_809c; | |
loc_809c: | |
if ((rbx != 0x0) || (rcx != 0x0)) goto loc_80ca; | |
loc_80a5: | |
if (r14 == 0x0) goto loc_80d6; | |
loc_80aa: | |
r14 = var_840; | |
if (*(int8_t *)(r14 + 0x11) == 0x0) goto loc_8cfe; | |
loc_80bc: | |
r13 = 0x0; | |
var_850 = 0x0; | |
goto loc_80e9; | |
loc_8cfe: | |
_error("no utility name specified", rsi, rdx, rcx, r8, r9, stack[-2200]); | |
goto loc_8bfe; | |
loc_8bfe: | |
_PrintUsageAndExit(0x40); | |
return; | |
loc_80d6: | |
r13 = 0x0; | |
var_850 = 0x0; | |
r14 = var_840; | |
goto loc_80e9; | |
loc_80ca: | |
r14 = var_840; | |
r13 = rcx; | |
goto loc_80e9; | |
loc_8cdf: | |
__assert_rtn("xcrun_main2", "/Library/Caches/com.apple.xbs/Sources/xcrun/xcrun-59/src/xcrun.c", 0x129, "utility == 0 && \"utility value should not be set\""); | |
return; | |
loc_8029: | |
if (*(int8_t *)r14 != 0x0) goto loc_8dff; | |
loc_8033: | |
rsi = "show-manpaths"; | |
r15 = r15 - 0x1; | |
r12 = r12 + 0x8; | |
rcx = rbx; | |
goto loc_803d; | |
loc_803d: | |
rax = var_850; | |
COND = rax == 0x0; | |
rbx = COND_BYTE_SET(NE); | |
r14 = (var_860 & 0x1) != 0x0 ? 0x1 : 0x0; | |
if (((var_860 & 0x1) != 0x0) || (rax != 0x0)) goto loc_8093; | |
loc_805c: | |
if ((var_858 & 0x1) != 0x0) goto loc_83a9; | |
loc_8069: | |
if (rcx != 0x0) goto loc_8cdf; | |
loc_8072: | |
if (r15 > 0x0) { | |
r14 = 0x1; | |
rcx = strdup(*r12); | |
r15 = r15 - 0x1; | |
r12 = r12 + 0x8; | |
} | |
else { | |
r14 = 0x1; | |
rcx = 0x0; | |
} | |
goto loc_809c; | |
loc_83a9: | |
r14 = 0x1; | |
if (r15 <= 0x0) goto loc_809c; | |
loc_83b5: | |
rsi = *r12; | |
if (rcx != 0x0) goto loc_8d21; | |
loc_83c2: | |
rax = strdup(rsi); | |
r12 = r12 + 0x8; | |
if (r15 >= 0x2) goto loc_8d2d; | |
loc_83d8: | |
r14 = 0x1; | |
rcx = rax; | |
goto loc_7fff; | |
loc_8d2d: | |
rsi = *r12; | |
rdi = "unexpected trailing argument '%s' in \"find\" mode"; | |
goto loc_8bf7; | |
loc_8bf7: | |
_error(rdi, rsi, rdx, rcx, r8, r9, stack[-2200]); | |
goto loc_8bfe; | |
loc_8d21: | |
rdi = "invalid argument '%s', cannot specify multiple utility names"; | |
goto loc_8bf7; | |
loc_8093: | |
if (r15 > 0x0) goto loc_8d11; | |
goto loc_809c; | |
loc_8d11: | |
rsi = *r12; | |
rdi = "unexpected trailing argument '%s' with --show-sdk option"; | |
goto loc_8bf7; | |
loc_8dff: | |
rdi = "unrecognized option: %s"; | |
goto loc_8bf4; | |
loc_8bf4: | |
rsi = r13; | |
goto loc_8bf7; | |
loc_7fa9: | |
rsi = "show-sdk-platform-version"; | |
rax = "PlatformVersion"; | |
goto loc_7fb0; | |
loc_7fb0: | |
var_850 = rax; | |
goto loc_7f12; | |
loc_7fa0: | |
rsi = "show-sdk-platform-path"; | |
rax = "PlatformPath"; | |
goto loc_7fb0; | |
loc_7f97: | |
rsi = "show-sdk-build-version"; | |
rax = "ProductBuildVersion"; | |
goto loc_7fb0; | |
loc_7f8e: | |
rsi = "show-sdk-version"; | |
rax = "SDKVersion"; | |
goto loc_7fb0; | |
loc_7f85: | |
rsi = "show-sdk-path"; | |
rax = "Path"; | |
goto loc_7fb0; | |
loc_8007: | |
rdx = *var_840; | |
goto loc_8301; | |
loc_7f6d: | |
rax = var_840; | |
if (*(rax + 0x8) != 0x0) goto loc_8cc0; | |
loc_7f7f: | |
*(int8_t *)(rax + 0x11) = 0x1; | |
goto loc_7f12; | |
loc_8cc0: | |
__assert_rtn("xcinfocache_set_reset_cache", "/Library/Caches/com.apple.xbs/Sources/xcrun/xcrun-59/src/xcinfocache.c", 0x178, "!cache->db && \"cannot set reset cache value after open!\""); | |
return; | |
loc_7f55: | |
rax = var_840; | |
if (*(rax + 0x8) != 0x0) goto loc_8ca1; | |
loc_7f67: | |
*(int8_t *)(rax + 0x12) = 0x1; | |
goto loc_7f12; | |
loc_8ca1: | |
__assert_rtn("xcinfocache_set_skip_cache", "/Library/Caches/com.apple.xbs/Sources/xcrun/xcrun-59/src/xcinfocache.c", 0x194, "!cache->db && \"cannot set skip cache value after open!\""); | |
return; | |
loc_7f3d: | |
rax = var_840; | |
if (*(rax + 0x8) != 0x0) goto loc_8c82; | |
loc_7f4f: | |
*(int8_t *)(rax + 0x10) = 0x1; | |
goto loc_7f12; | |
loc_8c82: | |
__assert_rtn("xcinfocache_set_verbose", "/Library/Caches/com.apple.xbs/Sources/xcrun/xcrun-59/src/xcinfocache.c", 0x1a2, "!cache->db && \"cannot set verbose value after open!\""); | |
return; | |
loc_7f27: | |
if (rbx != 0x0) goto loc_8c76; | |
loc_7f30: | |
rcx = 0x0; | |
var_858 = 0x0; | |
goto loc_7f15; | |
loc_8c76: | |
rdi = "invalid argument '%s', cannot revert to \"run\" mode after specifying a utility name"; | |
goto loc_8bf4; | |
loc_7f09: | |
var_858 = 0x1; | |
goto loc_7f12; | |
loc_7ec2: | |
var_831 = 0x1; | |
goto loc_7f12; | |
loc_8c08: | |
fprintf(**___stdoutp, "xcrun version %s.\n", "59"); | |
exit(0x0); | |
return; | |
loc_8be6: | |
_PrintUsageAndExit(0x0); | |
return; | |
loc_7ecb: | |
r15 = r15 - 0x1; | |
if (r15 == 0x0) goto loc_8bed; | |
loc_7ed4: | |
rcx = var_840; | |
if (*(rcx + 0x8) != 0x0) goto loc_8c57; | |
loc_7ee6: | |
r12 = r12 + 0x8; | |
*(rcx + 0x40) = *r12; | |
rsi = *r12; | |
rdx = 0x1; | |
setenv("TOOLCHAINS", rsi, rdx); | |
goto loc_7f12; | |
loc_8c57: | |
__assert_rtn("xcinfocache_set_toolchains", "/Library/Caches/com.apple.xbs/Sources/xcrun/xcrun-59/src/xcinfocache.c", 0x199, "!cache->db && \"cannot set toolchains value after open!\""); | |
return; | |
loc_8bed: | |
rdi = "argument to '%s' is missing"; | |
goto loc_8bf4; | |
loc_7e95: | |
r15 = r15 - 0x1; | |
if (r15 == 0x0) goto loc_8bed; | |
loc_7e9e: | |
rcx = var_840; | |
if (*(rcx + 0x8) != 0x0) goto loc_8c2e; | |
loc_7eb0: | |
rsi = "sdk"; | |
r12 = r12 + 0x8; | |
*(rcx + 0x30) = *r12; | |
*(int8_t *)(rcx + 0x38) = 0x1; | |
goto loc_7f12; | |
loc_8c2e: | |
__assert_rtn("xcinfocache_set_sdkroot", "/Library/Caches/com.apple.xbs/Sources/xcrun/xcrun-59/src/xcinfocache.c", 0x18e, "!cache->db && \"cannot set reset cache value after open!\""); | |
return; | |
loc_7c35: | |
if ((var_858 & 0x1) == 0x0) goto loc_803d; | |
loc_7c42: | |
if (rcx != 0x0) goto loc_8bdd; | |
loc_7c4b: | |
rcx = strdup(r13); | |
goto loc_7f15; | |
loc_8bdd: | |
rdi = "invalid argument '%s', cannot specify multiple utility names"; | |
goto loc_8bf4; | |
loc_8c4d: | |
exit(0x4a); | |
return; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void _xcselect_invoke_xcrun(int arg0, int arg1, int arg2, int arg3) { | |
rbx = arg3; | |
r14 = arg2; | |
r15 = arg1; | |
r12 = arg0; | |
if (_xpc_runtime_is_app_sandboxed(arg0, arg1, arg2, arg3) == 0x0) goto loc_7fff2e6f4058; | |
loc_7fff2e6f4033: | |
rcx = **___stderrp; | |
rdi = "xcrun: error: cannot be used within an App Sandbox.\n"; | |
rsi = 0x34; | |
goto loc_7fff2e6f4049; | |
loc_7fff2e6f4049: | |
fwrite(rdi, rsi, 0x1, rcx); | |
goto loc_7fff2e6f41c4; | |
loc_7fff2e6f41c4: | |
exit(0x1); | |
return; | |
loc_7fff2e6f4058: | |
rax = _xcselect_get_developer_dir_path(&var_440, 0x400, &var_2B, &var_2A, &var_29); | |
if (rax == 0x0) goto loc_7fff2e6f40a3; | |
loc_7fff2e6f4079: | |
if ((var_2A == 0x0) || (rbx == 0x0)) goto loc_7fff2e6f40be; | |
loc_7fff2e6f4083: | |
rdi = **___stderrp; | |
rsi = "xcode-select: error: tool '%s' requires Xcode, but active developer directory '%s' is a command line tools instance\n"; | |
goto loc_7fff2e6f41bd; | |
loc_7fff2e6f41bd: | |
fprintf(rdi, rsi); | |
goto loc_7fff2e6f41c4; | |
loc_7fff2e6f40be: | |
if (r12 != 0x0) { | |
unsetenv("xcrun_log"); | |
} | |
rax = _path_join(&var_840, 0x400, &var_440, "usr/lib/libxcrun.dylib"); | |
if (_path_exists() == 0x0) goto loc_7fff2e6f41ce; | |
loc_7fff2e6f4101: | |
rax = _xcselect_invoke_xcrun_via_library(&var_840, r12, r15, r14, &var_440); | |
goto loc_7fff2e6f411d; | |
loc_7fff2e6f411d: | |
r13 = &var_840; | |
_path_join(r13, 0x400, "/usr/libexec/DeveloperTools", r12); | |
if (_path_exists() == 0x0) goto loc_7fff2e6f421d; | |
loc_7fff2e6f414b: | |
r12 = sign_extend_64(r15); | |
rax = malloc(r12 * 0x8 + 0x10); | |
rbx = rax; | |
*rax = r13; | |
if (r12 != 0x0) { | |
memcpy(rbx + 0x8, r14, r15 << 0x3); | |
} | |
*(rbx + r12 * 0x8 + 0x8) = 0x0; | |
execv(&var_840, rbx); | |
rbx = **___stderrp; | |
strerror(*(int32_t *)__error()); | |
rsi = "xcrun: error: unable to exec %s (%s).\n"; | |
rdi = rbx; | |
goto loc_7fff2e6f41bd; | |
loc_7fff2e6f421d: | |
if (var_29 == 0x0) { | |
rcx = **___stderrp; | |
rdi = "xcrun: error: unable to get active developer path\nUse `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools, or use `xcode-select --install` to install the standalone command line develope…"; | |
rsi = 0x132; | |
} | |
else { | |
getprogname(); | |
rax = _xcselect_trigger_install_request(); | |
rcx = *___stderrp; | |
rcx = *rcx; | |
if (rax != 0x0) { | |
rdi = "xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.\n"; | |
rsi = 0xb1; | |
} | |
else { | |
rdi = "xcode-select: error: no developer tools were found at '/Applications/Xcode.app', and no install could be requested (perhaps no UI is present), please install manually from 'developer.apple.com'.\n"; | |
rsi = 0xc3; | |
} | |
} | |
goto loc_7fff2e6f4049; | |
loc_7fff2e6f41ce: | |
r13 = &var_C40; | |
rax = _path_join(r13, 0x400, &var_440, "usr/bin/xcrun"); | |
if (_is_path_xcrun_shim() == 0x0) goto loc_7fff2e6f4242; | |
loc_7fff2e6f41fc: | |
fprintf(**___stderrp, "xcode-select: error: malformed developer path (\"%s\")\n", &var_440); | |
goto loc_7fff2e6f41c4; | |
loc_7fff2e6f4242: | |
rbx = r12 != 0x0 ? 0x1 : 0x0; | |
rax = sign_extend_32(rbx + r15); | |
var_38 = rax; | |
rax = malloc(rax * 0x8 + 0x10); | |
*rax = r13; | |
if (r12 != 0x0) { | |
*(rax + 0x8) = r12; | |
} | |
if (r15 != 0x0) { | |
rcx = r15; | |
rbx = rbx + 0x1; | |
rdx = 0x0; | |
do { | |
rdi = rdx + 0x1; | |
*(rax + (rdx + rbx) * 0x8) = *(r14 + rdx * 0x8); | |
rdx = rdi; | |
} while (rcx != rdi); | |
} | |
*(rax + var_38 * 0x8 + 0x8) = 0x0; | |
_xcselect_invoke_xcrun_via_binary(&var_C40, rax, &var_440, var_2B & 0xff); | |
getprogname(); | |
rax = _xcselect_trigger_install_request(); | |
rcx = *___stderrp; | |
rcx = *rcx; | |
if (rax != 0x0) { | |
rdi = "xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.\n"; | |
rsi = 0xb1; | |
} | |
else { | |
rdi = "xcode-select: error: no developer tools were found at '/Applications/Xcode.app', and no install could be requested (perhaps no UI is present), please install manually from 'developer.apple.com'.\n"; | |
rsi = 0xc3; | |
} | |
goto loc_7fff2e6f4049; | |
loc_7fff2e6f40a3: | |
if (r12 != 0x0) goto loc_7fff2e6f411d; | |
loc_7fff2e6f40a8: | |
if (var_29 != 0x0) { | |
rax = _xcselect_trigger_install_request(); | |
rcx = *___stderrp; | |
rcx = *rcx; | |
if (rax != 0x0) { | |
rdi = "xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.\n"; | |
rsi = 0xb1; | |
} | |
else { | |
rdi = "xcode-select: error: no developer tools were found at '/Applications/Xcode.app', and no install could be requested (perhaps no UI is present), please install manually from 'developer.apple.com'.\n"; | |
rsi = 0xc3; | |
} | |
} | |
else { | |
rcx = **___stderrp; | |
rdi = "xcrun: error: unable to get active developer path\nUse `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools, or use `xcode-select --install` to install the standalone command line develope…"; | |
rsi = 0x132; | |
} | |
goto loc_7fff2e6f4049; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int _xcselect_invoke_xcrun_via_library(int arg0, int arg1, int arg2, int arg3, int arg4) { | |
rbx = arg4; | |
r15 = arg3; | |
r12 = arg2; | |
r13 = arg1; | |
rax = dlopen(arg0, 0x5); | |
if (rax != 0x0) goto loc_7fff2e6f4335; | |
loc_7fff2e6f431d: | |
rax = dlerror(); | |
rsi = "xcrun: error: unable to load libxcrun (%s).\n"; | |
goto loc_7fff2e6f4366; | |
loc_7fff2e6f4366: | |
fprintf(**___stderrp, rsi); | |
goto loc_7fff2e6f43dc; | |
loc_7fff2e6f43dc: | |
rax = exit(0x1); | |
return rax; | |
loc_7fff2e6f4335: | |
r14 = rax; | |
var_30 = rbx; | |
rax = dlsym(rax, "xcrun_main"); | |
if (rax != 0x0) goto loc_7fff2e6f4375; | |
loc_7fff2e6f4350: | |
rax = dlerror(); | |
rsi = "xcrun: error: unable to resolve xcrun_main (%s).\n"; | |
goto loc_7fff2e6f4366; | |
loc_7fff2e6f4375: | |
rbx = rax; | |
if (strcmp(*_NSGetProgname(), "xcrun") != 0x0) { | |
rax = dlsym(r14, "xcrun_set_unknown_utility_handler"); | |
if (rax != 0x0) { | |
(rax)(___block_literal_global.61, "xcrun_set_unknown_utility_handler"); | |
} | |
} | |
(rbx)(r13, r12, r15, var_30); | |
fwrite("xcrun: error: unexpected exit from xcrun_main", 0x2d, 0x1, **___stderrp); | |
goto loc_7fff2e6f43dc; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment