From 5d45a2fac8cae62d60ce72e602eb54a0f8d9301b Mon Sep 17 00:00:00 2001 From: Nikolay Volosatov Date: Sat, 16 Mar 2024 13:05:18 +0000 Subject: [PATCH] Use mach utils when available --- .../KSCrashReportFilterAppleFmt.m | 27 +++++++++++++++---- Sources/KSCrashRecordingCore/KSCPU.c | 20 ++++++++------ 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/Sources/KSCrashFilters/KSCrashReportFilterAppleFmt.m b/Sources/KSCrashFilters/KSCrashReportFilterAppleFmt.m index cf57dca79..292cc418f 100644 --- a/Sources/KSCrashFilters/KSCrashReportFilterAppleFmt.m +++ b/Sources/KSCrashFilters/KSCrashReportFilterAppleFmt.m @@ -26,11 +26,12 @@ #import "KSCrashReportFilterAppleFmt.h" - +#import "KSSystemCapabilities.h" #import #import #include +#include #import "KSCrashReportFields.h" #import "KSJSONCodecObjC.h" @@ -264,12 +265,28 @@ - (NSString*) CPUType:(NSString*) CPUArch isSystemInfoHeader:(BOOL) isSystemInfo - (NSString*) CPUArchForMajor:(cpu_type_t) majorCode minor:(cpu_subtype_t) minorCode { -#ifdef __APPLE__ +#if KSCRASH_HOST_APPLE // In Apple platforms we can use this function to get the name of a particular architecture - const NXArchInfo* info = NXGetArchInfoFromCpuType(majorCode, minorCode); - if (info && info->name) { - return [[NSString alloc] initWithUTF8String: info->name]; +#if !KSCRASH_HOST_VISION + if(@available(iOS 16.0, macOS 13.0, tvOS 16.0, watchOS 8.0, *)) +#endif + { + const char *archName = macho_arch_name_for_cpu_type(majorCode, minorCode); + if(archName) + { + return [[NSString alloc] initWithUTF8String:archName]; + } } +#if !KSCRASH_HOST_VISION + else + { + const NXArchInfo* info = NXGetArchInfoFromCpuType(majorCode, minorCode); + if (info && info->name) + { + return [[NSString alloc] initWithUTF8String:info->name]; + } + } +#endif #endif switch(majorCode) diff --git a/Sources/KSCrashRecordingCore/KSCPU.c b/Sources/KSCrashRecordingCore/KSCPU.c index 6cce664a6..1a787b76f 100644 --- a/Sources/KSCrashRecordingCore/KSCPU.c +++ b/Sources/KSCrashRecordingCore/KSCPU.c @@ -31,10 +31,7 @@ #include #include - -#if KSCRASH_HOST_VISION #include -#endif //#define KSLogger_LocalLevel TRACE #include "KSLogger.h" @@ -42,11 +39,18 @@ const char* kscpu_currentArch(void) { -#if KSCRASH_HOST_VISION - return macho_arch_name_for_mach_header(NULL); -#else - const NXArchInfo* archInfo = NXGetLocalArchInfo(); - return archInfo == NULL ? NULL : archInfo->name; +#if !KSCRASH_HOST_VISION + if(__builtin_available(iOS 16.0, macOS 13.0, tvOS 16.0, watchOS 8.0, *)) +#endif + { + return macho_arch_name_for_mach_header(NULL); + } +#if !KSCRASH_HOST_VISION + else + { + const NXArchInfo* archInfo = NXGetLocalArchInfo(); + return archInfo == NULL ? NULL : archInfo->name; + } #endif }