From aeb64a7da453c1e542a03807302f81e1a75d4e76 Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Fri, 13 Sep 2013 15:20:22 -0400 Subject: [PATCH] Pulled architecture detection out into a separate method to eliminate duplicate code. Added break for CPU_SUBTYPE_ARM_V8 to avoid falling through to the default case. --- Classes/BITCrashReportTextFormatter.m | 168 ++++++++++---------------- 1 file changed, 62 insertions(+), 106 deletions(-) diff --git a/Classes/BITCrashReportTextFormatter.m b/Classes/BITCrashReportTextFormatter.m index 9b90b0243e..d8328071ad 100644 --- a/Classes/BITCrashReportTextFormatter.m +++ b/Classes/BITCrashReportTextFormatter.m @@ -360,59 +360,7 @@ NSInteger binaryImageSort(id binary1, id binary2, void *context); uuid = @"???"; /* Determine the architecture string */ - NSString *archName = @"???"; - if (imageInfo.codeType != nil && imageInfo.codeType.typeEncoding == PLCrashReportProcessorTypeEncodingMach) { - switch (imageInfo.codeType.type) { - case CPU_TYPE_ARM: - /* Apple includes subtype for ARM binaries. */ - switch (imageInfo.codeType.subtype) { - case CPU_SUBTYPE_ARM_V6: - archName = @"armv6"; - break; - - case CPU_SUBTYPE_ARM_V7: - archName = @"armv7"; - break; - - case CPU_SUBTYPE_ARM_V7S: - archName = @"armv7s"; - break; - - default: - archName = @"arm-unknown"; - break; - } - break; - - case CPU_TYPE_ARM64: - /* Apple includes subtype for ARM64 binaries. */ - switch (imageInfo.codeType.subtype) { - case CPU_SUBTYPE_ARM_V8: - archName = @"arm64"; - - default: - archName = @"arm64-unknown"; - break; - } - break; - - case CPU_TYPE_X86: - archName = @"i386"; - break; - - case CPU_TYPE_X86_64: - archName = @"x86_64"; - break; - - case CPU_TYPE_POWERPC: - archName = @"powerpc"; - break; - - default: - // Use the default archName value (initialized above). - break; - } - } + NSString *archName = [self archNameFromImageInfo:imageInfo]; /* Determine if this is the main executable or an app specific framework*/ NSString *binaryDesignator = @" "; @@ -472,59 +420,7 @@ NSInteger binaryImageSort(id binary1, id binary2, void *context); uuid = @"???"; /* Determine the architecture string */ - NSString *archName = @"???"; - if (imageInfo.codeType != nil && imageInfo.codeType.typeEncoding == PLCrashReportProcessorTypeEncodingMach) { - switch (imageInfo.codeType.type) { - case CPU_TYPE_ARM: - /* Apple includes subtype for ARM binaries. */ - switch (imageInfo.codeType.subtype) { - case CPU_SUBTYPE_ARM_V6: - archName = @"armv6"; - break; - - case CPU_SUBTYPE_ARM_V7: - archName = @"armv7"; - break; - - case CPU_SUBTYPE_ARM_V7S: - archName = @"armv7s"; - break; - - default: - archName = @"arm-unknown"; - break; - } - break; - - case CPU_TYPE_ARM64: - /* Apple includes subtype for ARM64 binaries. */ - switch (imageInfo.codeType.subtype) { - case CPU_SUBTYPE_ARM_V8: - archName = @"arm64"; - - default: - archName = @"arm64-unknown"; - break; - } - break; - - case CPU_TYPE_X86: - archName = @"i386"; - break; - - case CPU_TYPE_X86_64: - archName = @"x86_64"; - break; - - case CPU_TYPE_POWERPC: - archName = @"powerpc"; - break; - - default: - // Use the default archName value (initialized above). - break; - } - } + NSString *archName = [self archNameFromImageInfo:imageInfo]; /* Determine if this is the app executable or app specific framework */ NSString *imagePath = [imageInfo.imageName stringByStandardizingPath]; @@ -546,6 +442,66 @@ NSInteger binaryImageSort(id binary1, id binary2, void *context); return appUUIDs; } ++ (NSString *)archNameFromImageInfo:(BITPLCrashReportBinaryImageInfo *)imageInfo +{ + NSString *archName = @"???"; + if (imageInfo.codeType != nil && imageInfo.codeType.typeEncoding == PLCrashReportProcessorTypeEncodingMach) { + switch (imageInfo.codeType.type) { + case CPU_TYPE_ARM: + /* Apple includes subtype for ARM binaries. */ + switch (imageInfo.codeType.subtype) { + case CPU_SUBTYPE_ARM_V6: + archName = @"armv6"; + break; + + case CPU_SUBTYPE_ARM_V7: + archName = @"armv7"; + break; + + case CPU_SUBTYPE_ARM_V7S: + archName = @"armv7s"; + break; + + default: + archName = @"arm-unknown"; + break; + } + break; + + case CPU_TYPE_ARM64: + /* Apple includes subtype for ARM64 binaries. */ + switch (imageInfo.codeType.subtype) { + case CPU_SUBTYPE_ARM_V8: + archName = @"arm64"; + break; + + default: + archName = @"arm64-unknown"; + break; + } + break; + + case CPU_TYPE_X86: + archName = @"i386"; + break; + + case CPU_TYPE_X86_64: + archName = @"x86_64"; + break; + + case CPU_TYPE_POWERPC: + archName = @"powerpc"; + break; + + default: + // Use the default archName value (initialized above). + break; + } + } + + return archName; +} + @end