From 8a6b997559a7e2e815cff3bddc35e28b7b824835 Mon Sep 17 00:00:00 2001 From: Pavel Kunyavskiy Date: Wed, 1 Sep 2021 12:27:04 +0300 Subject: [PATCH] [K/N] Patch libbacktrace to work in ios simulator. --- kotlin-native/runtime/src/libbacktrace/c/macho.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/kotlin-native/runtime/src/libbacktrace/c/macho.c b/kotlin-native/runtime/src/libbacktrace/c/macho.c index 66e101e0a4b..43af78c079a 100644 --- a/kotlin-native/runtime/src/libbacktrace/c/macho.c +++ b/kotlin-native/runtime/src/libbacktrace/c/macho.c @@ -92,6 +92,7 @@ struct macho_header_fat #define MACH_O_MH_EXECUTE 0x02 #define MACH_O_MH_DYLIB 0x06 +#define MACH_O_MH_DYLINKER 0x07 #define MACH_O_MH_DSYM 0x0a /* A component of a fat file. A fat file starts with a @@ -1060,6 +1061,8 @@ macho_add (struct backtrace_state *state, const char *filename, int descriptor, case MACH_O_MH_DYLIB: case MACH_O_MH_DSYM: break; + case MACH_O_MH_DYLINKER: + goto skip; default: error_callback (data, "executable file is not an executable", 0); goto fail; @@ -1214,6 +1217,12 @@ macho_add (struct backtrace_state *state, const char *filename, int descriptor, if (descriptor != -1) backtrace_close (descriptor, error_callback, data); return 0; + skip: + if (cmds_view_valid) + backtrace_release_view (state, &cmds_view, error_callback, data); + if (descriptor != -1) + backtrace_close (descriptor, error_callback, data); + return 1; } #ifdef HAVE_MACH_O_DYLD_H