From 203c501ba80a041d957e76681698f5ace098e1d0 Mon Sep 17 00:00:00 2001 From: junzhan Date: Thu, 25 Aug 2016 13:45:16 +0800 Subject: [PATCH 1/2] fix some crash cases --- DataController.mm | 4 ++- LinkEdit.mm | 41 ++++++++++++++++++----------- machoview.xcodeproj/project.pbxproj | 4 +-- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/DataController.mm b/DataController.mm index 646d7ea..ab83c7a 100644 --- a/DataController.mm +++ b/DataController.mm @@ -163,7 +163,9 @@ -(void)replaceColoumnAtIndex:(NSUInteger)index withString:(NSString *)str //----------------------------------------------------------------------------- - (void)writeString:(NSString *)str toFile:(FILE *)pFile { - fwrite(CSTRING(str), [str length] + 1, 1, pFile); + if(str){ + fwrite(CSTRING(str), [str length] + 1, 1, pFile); + } } //----------------------------------------------------------------------------- diff --git a/LinkEdit.mm b/LinkEdit.mm index 429cd4f..98c94ac 100644 --- a/LinkEdit.mm +++ b/LinkEdit.mm @@ -827,9 +827,10 @@ - (MVNode *) createSymbolsNode:parent nameToStore = (nameToStore != nil ? [nameToStore stringByAppendingFormat:@"(%@)", symbolName] : [NSString stringWithFormat:@"0x%X (%@)", nlist->n_value, symbolName]); - - [symbolNames setObject:nameToStore - forKey:[NSNumber numberWithUnsignedLong:nlist->n_value]]; + if(nameToStore){ + [symbolNames setObject:nameToStore + forKey:[NSNumber numberWithUnsignedLong:nlist->n_value]]; + } } } else @@ -841,8 +842,10 @@ - (MVNode *) createSymbolsNode:parent // fill in lookup table with undefined sybols (key equals (-1) * index) uint32_t key = *symbols.begin() - nlist - 1; - [symbolNames setObject:symbolName - forKey:[NSNumber numberWithUnsignedLong:key]]; + if(symbolName){ + [symbolNames setObject:symbolName + forKey:[NSNumber numberWithUnsignedLong:key]]; + } } [node.details setAttributesFromRowIndex:bookmark:MVMetaDataAttributeName,symbolName, @@ -991,9 +994,10 @@ - (MVNode *) createSymbols64Node:parent nameToStore = (nameToStore != nil ? [nameToStore stringByAppendingFormat:@"(%@)", symbolName] : [NSString stringWithFormat:@"0x%qX (%@)", nlist_64->n_value, symbolName]); - - [symbolNames setObject:nameToStore - forKey:[NSNumber numberWithUnsignedLongLong:nlist_64->n_value]]; + if(nameToStore){ + [symbolNames setObject:nameToStore + forKey:[NSNumber numberWithUnsignedLongLong:nlist_64->n_value]]; + } } } else @@ -1005,8 +1009,10 @@ - (MVNode *) createSymbols64Node:parent // fill in lookup table with undefined sybols (key equals (-1) * index) uint64_t key = *symbols_64.begin() - nlist_64 - 1; - [symbolNames setObject:symbolName - forKey:[NSNumber numberWithUnsignedLongLong:key]]; + if(symbolName){ + [symbolNames setObject:symbolName + forKey:[NSNumber numberWithUnsignedLongLong:key]]; + } } [node.details setAttributesFromRowIndex:bookmark:MVMetaDataAttributeName,symbolName, @@ -1174,10 +1180,11 @@ - (MVNode *) createISymbolsNode:parent symbolName = [NSString stringWithFormat:@"[0x%X->LOCAL ABSOLUTE]",indirectAddress]; } } - - // fill in lookup table with special indirect sybols - [symbolNames setObject:symbolName - forKey:[NSNumber numberWithUnsignedLong:indirectAddress]]; + if(symbolName){ + // fill in lookup table with special indirect sybols + [symbolNames setObject:symbolName + forKey:[NSNumber numberWithUnsignedLong:indirectAddress]]; + } } [node.details appendRow:@"":@"":@"Section" @@ -1303,9 +1310,11 @@ - (MVNode *) createISymbols64Node:parent } } + if(symbolName){ // fill in lookup table with special indirect sybols - [symbolNames setObject:symbolName - forKey:[NSNumber numberWithUnsignedLongLong:indirectAddress]]; + [symbolNames setObject:symbolName + forKey:[NSNumber numberWithUnsignedLongLong:indirectAddress]]; + } } [node.details appendRow:@"":@"":@"Section" diff --git a/machoview.xcodeproj/project.pbxproj b/machoview.xcodeproj/project.pbxproj index afa40ac..07234e9 100644 --- a/machoview.xcodeproj/project.pbxproj +++ b/machoview.xcodeproj/project.pbxproj @@ -726,7 +726,7 @@ ); PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = MachOView; - SDKROOT = macosx10.9; + SDKROOT = macosx; USER_HEADER_SEARCH_PATHS = ""; VALID_ARCHS = "$(inherited)"; VERSIONING_SYSTEM = ""; @@ -781,7 +781,7 @@ ); PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = MachOView; - SDKROOT = macosx10.9; + SDKROOT = macosx; SKIP_INSTALL = NO; USER_HEADER_SEARCH_PATHS = ""; VALID_ARCHS = "$(inherited)"; From a3dbb7ef4c62fab34a656646b781a139010d28c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=9B=E5=B1=95?= Date: Thu, 21 Mar 2019 20:17:22 +0800 Subject: [PATCH 2/2] xcode10 support --- Document.mm | 47 ++++----- Info.plist | 6 +- machoview.xcodeproj/project.pbxproj | 6 ++ .../contents.xcworkspacedata | 7 ++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 28415 bytes .../xcschemes/MachOView.xcscheme | 91 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 22 +++++ 8 files changed, 162 insertions(+), 25 deletions(-) create mode 100644 machoview.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 machoview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 machoview.xcodeproj/project.xcworkspace/xcuserdata/junzhan.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 machoview.xcodeproj/xcuserdata/junzhan.xcuserdatad/xcschemes/MachOView.xcscheme create mode 100644 machoview.xcodeproj/xcuserdata/junzhan.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/Document.mm b/Document.mm index c59fbe5..29f422b 100644 --- a/Document.mm +++ b/Document.mm @@ -448,28 +448,31 @@ - (void)handleDataTableChanged:(NSNotification *)notification //---------------------------------------------------------------------------- - (void)handleThreadStateChanged:(NSNotification *)notification { - if ([notification object] == dataController) - { - NSString * threadState = [[notification userInfo] objectForKey:MVStatusUserInfoKey]; - if ([threadState isEqualToString:MVStatusTaskStarted] == YES) - { - if (OSAtomicIncrement32(&threadCount) == 1) - { - [progressIndicator setUsesThreadedAnimation:YES]; - [progressIndicator startAnimation:nil]; - [stopButton setHidden:NO]; - } - } - else if ([threadState isEqualToString:MVStatusTaskTerminated] == YES) - { - if (OSAtomicDecrement32(&threadCount) == 0) - { - [progressIndicator stopAnimation:nil]; - [statusText setStringValue:@""]; - [stopButton setHidden:YES]; - } - } - } + dispatch_async(dispatch_get_main_queue(), ^{ + if ([notification object] == dataController) + { + NSString * threadState = [[notification userInfo] objectForKey:MVStatusUserInfoKey]; + if ([threadState isEqualToString:MVStatusTaskStarted] == YES) + { + if (OSAtomicIncrement32(&threadCount) == 1) + { + [progressIndicator setUsesThreadedAnimation:YES]; + [progressIndicator startAnimation:nil]; + [stopButton setHidden:NO]; + } + } + else if ([threadState isEqualToString:MVStatusTaskTerminated] == YES) + { + if (OSAtomicDecrement32(&threadCount) == 0) + { + [progressIndicator stopAnimation:nil]; + [statusText setStringValue:@""]; + [stopButton setHidden:YES]; + } + } + } + }); + } //---------------------------------------------------------------------------- diff --git a/Info.plist b/Info.plist index d09111f..556b7a0 100644 --- a/Info.plist +++ b/Info.plist @@ -3,9 +3,9 @@ CFBuildDate - Thu Apr 23 12:18:08 WEST 2015 + Thu Mar 21 20:13:01 CST 2019 CFBuildNumber - 9121 + 9132 CFBundleDevelopmentRegion English CFBundleDocumentTypes @@ -44,7 +44,7 @@ CFBundleSignature ???? CFBundleVersion - 9121 + 9132 LSApplicationCategoryType public.app-category.developer-tools LSMinimumSystemVersion diff --git a/machoview.xcodeproj/project.pbxproj b/machoview.xcodeproj/project.pbxproj index 07234e9..62c6b0d 100644 --- a/machoview.xcodeproj/project.pbxproj +++ b/machoview.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 005039762243B5A20012A68C /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 005039752243B5A20012A68C /* libc++.tbd */; }; 256AC3DA0F4B6AC300CF3369 /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* AppController.mm */; }; 3C0ADEB0169CD42600DA428E /* README in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3CE90DFC11F6107600543402 /* README */; }; 3C0F958411F6589D0070A2FE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3C0F957E11F6589D0070A2FE /* InfoPlist.strings */; }; @@ -77,6 +78,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 005039752243B5A20012A68C /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 256AC3D80F4B6AC300CF3369 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = ""; }; 256AC3D90F4B6AC300CF3369 /* AppController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AppController.mm; sourceTree = ""; }; @@ -216,6 +218,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 005039762243B5A20012A68C /* libc++.tbd in Frameworks */, 3CC0022211F64A45000F7A3D /* Cocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -337,6 +340,7 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + 005039752243B5A20012A68C /* libc++.tbd */, 7B5E71E319B6829F00843CCE /* libcapstone.a */, 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, @@ -686,6 +690,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_TEMP_DIR = "$(inherited)"; @@ -738,6 +743,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_TEMP_DIR = "$(inherited)"; diff --git a/machoview.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/machoview.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/machoview.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/machoview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/machoview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/machoview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/machoview.xcodeproj/project.xcworkspace/xcuserdata/junzhan.xcuserdatad/UserInterfaceState.xcuserstate b/machoview.xcodeproj/project.xcworkspace/xcuserdata/junzhan.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..2a0e8dc5f7c46be8efd4772f00c648540adc0dc0 GIT binary patch literal 28415 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 I{;t;ifBC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/machoview.xcodeproj/xcuserdata/junzhan.xcuserdatad/xcschemes/xcschememanagement.plist b/machoview.xcodeproj/xcuserdata/junzhan.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..0ef9d06 --- /dev/null +++ b/machoview.xcodeproj/xcuserdata/junzhan.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + MachOView.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 8D1107260486CEB800E47090 + + primary + + + + +