[Lldb-commits] [lldb] r251091 - Upstreaming the apple internal changes that accumulated during the

Adrian Prantl via lldb-commits lldb-commits at lists.llvm.org
Fri Oct 23 11:59:34 PDT 2015


Hi Jason,

It looks like this might have broken the lldb builder on lab.llvm.org:

http://lab.llvm.org:8080/green/job/lldb_build_test/13571/consoleFull#131781548749ba4694-19c4-4d7e-bec5-911270d8a58c

-- adrian

> On Oct 22, 2015, at 7:49 PM, Jason Molenda via lldb-commits <lldb-commits at lists.llvm.org> wrote:
> 
> Author: jmolenda
> Date: Thu Oct 22 21:49:51 2015
> New Revision: 251091
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=251091&view=rev
> Log:
> Upstreaming the apple internal changes that accumulated during the
> previous release.  Most of the diffs are duplication in the xcode
> project file caused by adding a "debugserver-mini" target.  Jim
> Ingham added support for a new SPI needed to request app launches
> on iOS.  Greg Clayton added code to indicate the platform of the
> binary (macosx, ios, watchos, tvos) based on Mach-O load commands.
> Jason Molenda added code so debugserver will identify when it is
> running on a tvos/watchos device to lldb.
> 
> Modified:
>    lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj
>    lldb/trunk/tools/debugserver/source/DNB.cpp
>    lldb/trunk/tools/debugserver/source/DNBDefs.h
>    lldb/trunk/tools/debugserver/source/DNBError.cpp
>    lldb/trunk/tools/debugserver/source/DNBError.h
>    lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.h
>    lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm
>    lldb/trunk/tools/debugserver/source/RNBRemote.cpp
>    lldb/trunk/tools/debugserver/source/com.apple.debugserver.applist.internal.plist
>    lldb/trunk/tools/debugserver/source/com.apple.debugserver.applist.plist
>    lldb/trunk/tools/debugserver/source/com.apple.debugserver.internal.plist
>    lldb/trunk/tools/debugserver/source/com.apple.debugserver.plist
>    lldb/trunk/tools/debugserver/source/com.apple.debugserver.posix.plist
>    lldb/trunk/tools/debugserver/source/debugserver-entitlements.plist
>    lldb/trunk/tools/debugserver/source/debugserver.cpp
> 
> Modified: lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj (original)
> +++ lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj Thu Oct 22 21:49:51 2015
> @@ -42,6 +42,43 @@
> 		26CE05C5115C36590022F371 /* CFBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2695DD910D3EBFF6007E4CA2 /* CFBundle.cpp */; };
> 		26CE05CF115C36F70022F371 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26ACA3340D3E956300A2120B /* CoreFoundation.framework */; settings = {ATTRIBUTES = (Required, ); }; };
> 		26CE05F1115C387C0022F371 /* PseudoTerminal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF67ABFF0D34604D0022D128 /* PseudoTerminal.cpp */; };
> +		456F67461AD46CE9002850C2 /* DNBError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637DE0C71334A0024798E /* DNBError.cpp */; };
> +		456F67471AD46CE9002850C2 /* DNBThreadResumeActions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E7331114BFFE600D1DFB3 /* DNBThreadResumeActions.cpp */; };
> +		456F67481AD46CE9002850C2 /* debugserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A02918114AB9240029C479 /* debugserver.cpp */; };
> +		456F67491AD46CE9002850C2 /* RNBContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A68F7E0D104EC800665A9E /* RNBContext.cpp */; };
> +		456F674A1AD46CE9002850C2 /* RNBServices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EF8878A00D9C797C001831DA /* RNBServices.cpp */; };
> +		456F674B1AD46CE9002850C2 /* RNBSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A68FB00D1054DA00665A9E /* RNBSocket.cpp */; };
> +		456F674C1AD46CE9002850C2 /* RNBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A68FD60D10574500665A9E /* RNBRemote.cpp */; };
> +		456F674D1AD46CE9002850C2 /* dbgnub-mig.defs in Sources */ = {isa = PBXBuildFile; fileRef = 26C637E80C71334A0024798E /* dbgnub-mig.defs */; settings = {ATTRIBUTES = (Client, Server, ); }; };
> +		456F674E1AD46CE9002850C2 /* MachException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637EE0C71334A0024798E /* MachException.cpp */; };
> +		456F674F1AD46CE9002850C2 /* MachProcess.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26C637F00C71334A0024798E /* MachProcess.mm */; };
> +		456F67501AD46CE9002850C2 /* MachThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637F20C71334A0024798E /* MachThread.cpp */; };
> +		456F67511AD46CE9002850C2 /* MachThreadList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637F40C71334A0024798E /* MachThreadList.cpp */; };
> +		456F67521AD46CE9002850C2 /* MachVMMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637F60C71334A0024798E /* MachVMMemory.cpp */; };
> +		456F67531AD46CE9002850C2 /* MachVMRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637F80C71334A0024798E /* MachVMRegion.cpp */; };
> +		456F67541AD46CE9002850C2 /* MachTask.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26B67DE10EE9BC30006C8BC0 /* MachTask.mm */; };
> +		456F67551AD46CE9002850C2 /* DNB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637D60C71334A0024798E /* DNB.cpp */; };
> +		456F67561AD46CE9002850C2 /* Genealogy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFEC3363194A8B0B00FF05C6 /* Genealogy.cpp */; };
> +		456F67571AD46CE9002850C2 /* DNBBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637D90C71334A0024798E /* DNBBreakpoint.cpp */; };
> +		456F67581AD46CE9002850C2 /* DNBDataRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637DB0C71334A0024798E /* DNBDataRef.cpp */; };
> +		456F67591AD46CE9002850C2 /* DNBLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637E00C71334A0024798E /* DNBLog.cpp */; };
> +		456F675A1AD46CE9002850C2 /* DNBRegisterInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637E20C71334A0024798E /* DNBRegisterInfo.cpp */; };
> +		456F675B1AD46CE9002850C2 /* PThreadEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637FE0C71334A0024798E /* PThreadEvent.cpp */; };
> +		456F675C1AD46CE9002850C2 /* PThreadMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2672DBEE0EEF446700E92059 /* PThreadMutex.cpp */; };
> +		456F675D1AD46CE9002850C2 /* SysSignal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C638010C71334A0024798E /* SysSignal.cpp */; };
> +		456F675E1AD46CE9002850C2 /* DNBArchImplX86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26CF99A21142EB7400011AAB /* DNBArchImplX86_64.cpp */; };
> +		456F675F1AD46CE9002850C2 /* DNBArchImplI386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637EA0C71334A0024798E /* DNBArchImplI386.cpp */; };
> +		456F67601AD46CE9002850C2 /* DNBArchImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2675D4220CCEB705000F49AF /* DNBArchImpl.cpp */; };
> +		456F67611AD46CE9002850C2 /* DNBArchImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637FB0C71334A0024798E /* DNBArchImpl.cpp */; };
> +		456F67621AD46CE9002850C2 /* CFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2695DD9B0D3EC160007E4CA2 /* CFString.cpp */; };
> +		456F67631AD46CE9002850C2 /* CFData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2695DE2E0D3EE55B007E4CA2 /* CFData.cpp */; };
> +		456F67641AD46CE9002850C2 /* CFBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2695DD910D3EBFF6007E4CA2 /* CFBundle.cpp */; };
> +		456F67651AD46CE9002850C2 /* PseudoTerminal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF67ABFF0D34604D0022D128 /* PseudoTerminal.cpp */; };
> +		456F67661AD46CE9002850C2 /* StringExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2660D9CC1192280900958FBD /* StringExtractor.cpp */; };
> +		456F67671AD46CE9002850C2 /* DNBArch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264D5D571293835600ED4C01 /* DNBArch.cpp */; };
> +		456F67681AD46CE9002850C2 /* HasAVX.s in Sources */ = {isa = PBXBuildFile; fileRef = 4971AE7113D10F4F00649E37 /* HasAVX.s */; };
> +		456F67691AD46CE9002850C2 /* DNBArchImplARM64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266B5ECF1460A68200E43F0A /* DNBArchImplARM64.cpp */; };
> +		456F676B1AD46CE9002850C2 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26ACA3340D3E956300A2120B /* CoreFoundation.framework */; settings = {ATTRIBUTES = (Required, ); }; };
> 		4971AE7213D10F4F00649E37 /* HasAVX.s in Sources */ = {isa = PBXBuildFile; fileRef = 4971AE7113D10F4F00649E37 /* HasAVX.s */; };
> 		AFEC3364194A8B0B00FF05C6 /* Genealogy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFEC3363194A8B0B00FF05C6 /* Genealogy.cpp */; };
> /* End PBXBuildFile section */
> @@ -58,7 +95,6 @@
> 		264F679A1B2F9EB200140093 /* JSONGenerator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSONGenerator.h; sourceTree = "<group>"; };
> 		26593A060D4931CC001C9FE3 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ChangeLog; sourceTree = "<group>"; };
> 		2660D9CC1192280900958FBD /* StringExtractor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringExtractor.cpp; path = ../../source/Utility/StringExtractor.cpp; sourceTree = SOURCE_ROOT; };
> -		2660D9CD1192280900958FBD /* StringExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StringExtractor.h; path = ../../source/Utility/StringExtractor.h; sourceTree = SOURCE_ROOT; };
> 		266B5ECF1460A68200E43F0A /* DNBArchImplARM64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DNBArchImplARM64.cpp; sourceTree = "<group>"; };
> 		266B5ED01460A68200E43F0A /* DNBArchImplARM64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DNBArchImplARM64.h; sourceTree = "<group>"; };
> 		2672DBEE0EEF446700E92059 /* PThreadMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PThreadMutex.cpp; sourceTree = "<group>"; };
> @@ -127,6 +163,7 @@
> 		26CF99A21142EB7400011AAB /* DNBArchImplX86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DNBArchImplX86_64.cpp; sourceTree = "<group>"; };
> 		26CF99A31142EB7400011AAB /* DNBArchImplX86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DNBArchImplX86_64.h; sourceTree = "<group>"; };
> 		26E6B9DA0D1329010037ECDD /* RNBDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNBDefs.h; sourceTree = "<group>"; };
> +		456F67721AD46CE9002850C2 /* debugserver */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = debugserver; sourceTree = BUILT_PRODUCTS_DIR; };
> 		4971AE7013D10F4F00649E37 /* HasAVX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HasAVX.h; sourceTree = "<group>"; };
> 		4971AE7113D10F4F00649E37 /* HasAVX.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = HasAVX.s; sourceTree = "<group>"; };
> 		49F530111331519C008956F6 /* MachRegisterStatesI386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MachRegisterStatesI386.h; sourceTree = "<group>"; };
> @@ -154,6 +191,14 @@
> 			);
> 			runOnlyForDeploymentPostprocessing = 0;
> 		};
> +		456F676A1AD46CE9002850C2 /* Frameworks */ = {
> +			isa = PBXFrameworksBuildPhase;
> +			buildActionMask = 2147483647;
> +			files = (
> +				456F676B1AD46CE9002850C2 /* CoreFoundation.framework in Frameworks */,
> +			);
> +			runOnlyForDeploymentPostprocessing = 0;
> +		};
> /* End PBXFrameworksBuildPhase section */
> 
> /* Begin PBXGroup section */
> @@ -171,6 +216,7 @@
> 			isa = PBXGroup;
> 			children = (
> 				26CE0594115C31C20022F371 /* debugserver */,
> +				456F67721AD46CE9002850C2 /* debugserver */,
> 			);
> 			name = Products;
> 			sourceTree = "<group>";
> @@ -353,7 +399,6 @@
> 				26A68FD50D10574500665A9E /* RNBRemote.h */,
> 				26A68FD60D10574500665A9E /* RNBRemote.cpp */,
> 				26E6B9DA0D1329010037ECDD /* RNBDefs.h */,
> -				2660D9CD1192280900958FBD /* StringExtractor.h */,
> 				2660D9CC1192280900958FBD /* StringExtractor.cpp */,
> 			);
> 			name = debugserver;
> @@ -380,12 +425,29 @@
> 			productReference = 26CE0594115C31C20022F371 /* debugserver */;
> 			productType = "com.apple.product-type.tool";
> 		};
> +		456F67431AD46CE9002850C2 /* debugserver-mini */ = {
> +			isa = PBXNativeTarget;
> +			buildConfigurationList = 456F676D1AD46CE9002850C2 /* Build configuration list for PBXNativeTarget "debugserver-mini" */;
> +			buildPhases = (
> +				456F67451AD46CE9002850C2 /* Sources */,
> +				456F676A1AD46CE9002850C2 /* Frameworks */,
> +			);
> +			buildRules = (
> +			);
> +			dependencies = (
> +			);
> +			name = "debugserver-mini";
> +			productName = "lldb-debugserver";
> +			productReference = 456F67721AD46CE9002850C2 /* debugserver */;
> +			productType = "com.apple.product-type.tool";
> +		};
> /* End PBXNativeTarget section */
> 
> /* Begin PBXProject section */
> 		08FB7793FE84155DC02AAC07 /* Project object */ = {
> 			isa = PBXProject;
> 			attributes = {
> +				LastSwiftUpdateCheck = 0700;
> 				LastUpgradeCheck = 0600;
> 			};
> 			buildConfigurationList = 1DEB914E08733D8E0010E9CD /* Build configuration list for PBXProject "debugserver" */;
> @@ -403,6 +465,7 @@
> 			projectRoot = "";
> 			targets = (
> 				26CE0593115C31C20022F371 /* debugserver */,
> +				456F67431AD46CE9002850C2 /* debugserver-mini */,
> 			);
> 		};
> /* End PBXProject section */
> @@ -418,8 +481,8 @@
> 			outputPaths = (
> 			);
> 			runOnlyForDeploymentPostprocessing = 0;
> -			shellPath = /bin/sh;
> -			shellScript = "if [ \"${CONFIGURATION}\" != BuildAndIntegration ]\nthen\n    codesign -f -s lldb_codesign \"${TARGET_BUILD_DIR}/${TARGET_NAME}\"\nfi\n";
> +			shellPath = "/bin/sh -x";
> +			shellScript = "if [ \"${CONFIGURATION}\" != BuildAndIntegration ]\nthen\n    if [ -n \"${DEBUGSERVER_USE_FROM_SYSTEM}\" ]\n    then\n\t\tditto \"${DEVELOPER_DIR}/../SharedFrameworks/LLDB.framework/Resources/debugserver\" \"${TARGET_BUILD_DIR}/${TARGET_NAME}\"\n    elif [ \"${DEBUGSERVER_DISABLE_CODESIGN}\" == \"\" ]\n    then\n        codesign -f -s lldb_codesign \"${TARGET_BUILD_DIR}/${TARGET_NAME}\"\n    fi\nfi\n";
> 		};
> /* End PBXShellScriptBuildPhase section */
> 
> @@ -467,6 +530,49 @@
> 			);
> 			runOnlyForDeploymentPostprocessing = 0;
> 		};
> +		456F67451AD46CE9002850C2 /* Sources */ = {
> +			isa = PBXSourcesBuildPhase;
> +			buildActionMask = 2147483647;
> +			files = (
> +				456F67461AD46CE9002850C2 /* DNBError.cpp in Sources */,
> +				456F67471AD46CE9002850C2 /* DNBThreadResumeActions.cpp in Sources */,
> +				456F67481AD46CE9002850C2 /* debugserver.cpp in Sources */,
> +				456F67491AD46CE9002850C2 /* RNBContext.cpp in Sources */,
> +				456F674A1AD46CE9002850C2 /* RNBServices.cpp in Sources */,
> +				456F674B1AD46CE9002850C2 /* RNBSocket.cpp in Sources */,
> +				456F674C1AD46CE9002850C2 /* RNBRemote.cpp in Sources */,
> +				456F674D1AD46CE9002850C2 /* dbgnub-mig.defs in Sources */,
> +				456F674E1AD46CE9002850C2 /* MachException.cpp in Sources */,
> +				456F674F1AD46CE9002850C2 /* MachProcess.mm in Sources */,
> +				456F67501AD46CE9002850C2 /* MachThread.cpp in Sources */,
> +				456F67511AD46CE9002850C2 /* MachThreadList.cpp in Sources */,
> +				456F67521AD46CE9002850C2 /* MachVMMemory.cpp in Sources */,
> +				456F67531AD46CE9002850C2 /* MachVMRegion.cpp in Sources */,
> +				456F67541AD46CE9002850C2 /* MachTask.mm in Sources */,
> +				456F67551AD46CE9002850C2 /* DNB.cpp in Sources */,
> +				456F67561AD46CE9002850C2 /* Genealogy.cpp in Sources */,
> +				456F67571AD46CE9002850C2 /* DNBBreakpoint.cpp in Sources */,
> +				456F67581AD46CE9002850C2 /* DNBDataRef.cpp in Sources */,
> +				456F67591AD46CE9002850C2 /* DNBLog.cpp in Sources */,
> +				456F675A1AD46CE9002850C2 /* DNBRegisterInfo.cpp in Sources */,
> +				456F675B1AD46CE9002850C2 /* PThreadEvent.cpp in Sources */,
> +				456F675C1AD46CE9002850C2 /* PThreadMutex.cpp in Sources */,
> +				456F675D1AD46CE9002850C2 /* SysSignal.cpp in Sources */,
> +				456F675E1AD46CE9002850C2 /* DNBArchImplX86_64.cpp in Sources */,
> +				456F675F1AD46CE9002850C2 /* DNBArchImplI386.cpp in Sources */,
> +				456F67601AD46CE9002850C2 /* DNBArchImpl.cpp in Sources */,
> +				456F67611AD46CE9002850C2 /* DNBArchImpl.cpp in Sources */,
> +				456F67621AD46CE9002850C2 /* CFString.cpp in Sources */,
> +				456F67631AD46CE9002850C2 /* CFData.cpp in Sources */,
> +				456F67641AD46CE9002850C2 /* CFBundle.cpp in Sources */,
> +				456F67651AD46CE9002850C2 /* PseudoTerminal.cpp in Sources */,
> +				456F67661AD46CE9002850C2 /* StringExtractor.cpp in Sources */,
> +				456F67671AD46CE9002850C2 /* DNBArch.cpp in Sources */,
> +				456F67681AD46CE9002850C2 /* HasAVX.s in Sources */,
> +				456F67691AD46CE9002850C2 /* DNBArchImplARM64.cpp in Sources */,
> +			);
> +			runOnlyForDeploymentPostprocessing = 0;
> +		};
> /* End PBXSourcesBuildPhase section */
> 
> /* Begin XCBuildConfiguration section */
> @@ -477,10 +583,7 @@
> 					arm64,
> 					armv7,
> 				);
> -				"ARCHS[sdk=macosx*]" = (
> -					x86_64,
> -					i386,
> -				);
> +				"ARCHS[sdk=macosx*]" = "$(ARCHS_STANDARD_64_BIT)";
> 				CLANG_WARN_BOOL_CONVERSION = YES;
> 				CLANG_WARN_CONSTANT_CONVERSION = YES;
> 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
> @@ -559,10 +662,7 @@
> 			isa = XCBuildConfiguration;
> 			buildSettings = {
> 				"ARCHS[sdk=iphoneos*]" = arm64;
> -				"ARCHS[sdk=macosx*]" = (
> -					x86_64,
> -					i386,
> -				);
> +				"ARCHS[sdk=macosx*]" = "$(ARCHS_STANDARD_64_BIT)";
> 				CLANG_WARN_BOOL_CONVERSION = YES;
> 				CLANG_WARN_CONSTANT_CONVERSION = YES;
> 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
> @@ -602,6 +702,8 @@
> 				CLANG_CXX_LIBRARY = "libc++";
> 				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> 				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "-";
> +				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
> 				COPY_PHASE_STRIP = YES;
> 				CURRENT_PROJECT_VERSION = 350.99.0;
> 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
> @@ -617,21 +719,41 @@
> 				HEADER_SEARCH_PATHS = /System/Library/Frameworks/System.framework/PrivateHeaders;
> 				INSTALL_PATH = /usr/bin;
> 				"INSTALL_PATH[sdk=iphoneos*]" = /Developer/usr/bin/;
> +				LLDB_COMPRESSION_CFLAGS = "";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=appletvos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=iphoneos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11internal]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=watchos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				LLDB_COMPRESSION_LDFLAGS = "";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=appletvos*]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=iphoneos*]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11internal]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=watchos*]" = "-weak-lcompression";
> 				LLDB_DEBUGSERVER = 1;
> 				LLDB_ENERGY_CFLAGS = "";
> -				"LLDB_ENERGY_CFLAGS[sdk=macosx10.10internal]" = "-DLLDB_ENERGY";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx*]" = "-DLLDB_ENERGY";
> 				LLDB_ENERGY_LFLAGS = "";
> -				"LLDB_ENERGY_LFLAGS[sdk=macosx10.10internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx*]" = "-weak-lpmenergy -weak-lpmsample";
> +				LLDB_ZLIB_CFLAGS = "-DHAVE_LIBZ=1";
> +				LLDB_ZLIB_LDFLAGS = "-lz";
> 				MACOSX_DEPLOYMENT_TARGET = 10.9;
> 				OTHER_CFLAGS = (
> +					"-Wparentheses",
> +					"$(LLDB_ENERGY_CFLAGS)",
> +					"-DDT_VARIANT_$(DT_VARIANT)",
> 					"$(LLDB_COMPRESSION_CFLAGS)",
> 					"$(LLDB_ZLIB_CFLAGS)",
> 				);
> -				"OTHER_CFLAGS[sdk=iphoneos*][arch=*]" = (
> +				"OTHER_CFLAGS[sdk=iphoneos*]" = (
> 					"-Wparentheses",
> 					"-DWITH_LOCKDOWN",
> +					"-DWITH_FBS",
> 					"-DWITH_BKS",
> 					"-DOS_OBJECT_USE_OBJC=0",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> 				);
> 				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> 				OTHER_LDFLAGS = "";
> @@ -643,6 +765,10 @@
> 					"-framework",
> 					Foundation,
> 					"-llockdown",
> +					"-framework",
> +					FrontBoardServices,
> +					"-framework",
> +					MobileCoreServices,
> 					"$(LLDB_COMPRESSION_LDFLAGS)",
> 					"$(LLDB_ZLIB_LDFLAGS)",
> 				);
> @@ -657,6 +783,10 @@
> 				);
> 				OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)";
> 				PRODUCT_NAME = debugserver;
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> 				SKIP_INSTALL = YES;
> 				"SKIP_INSTALL[sdk=iphoneos*]" = NO;
> 				STRIP_INSTALLED_PRODUCT = YES;
> @@ -670,6 +800,7 @@
> 			buildSettings = {
> 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> 				CLANG_CXX_LIBRARY = "libc++";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=*]" = "source/debugserver-macosx-entitlements.plist";
> 				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> 				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
> @@ -688,13 +819,30 @@
> 				GCC_PREPROCESSOR_DEFINITIONS = LLDB_DEBUGSERVER_DEBUG;
> 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> 				INSTALL_PATH = /usr/bin;
> +				LLDB_COMPRESSION_CFLAGS = "";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=appletvos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=iphoneos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11internal]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=watchos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				LLDB_COMPRESSION_LDFLAGS = "";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=appletvos*]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=iphoneos*]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11internal]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=watchos*]" = "-weak-lcompression";
> 				LLDB_DEBUGSERVER = 1;
> 				LLDB_ENERGY_CFLAGS = "";
> -				"LLDB_ENERGY_CFLAGS[sdk=macosx10.10internal]" = "-DLLDB_ENERGY";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx.internal]" = "-DLLDB_ENERGY";
> 				LLDB_ENERGY_LFLAGS = "";
> -				"LLDB_ENERGY_LFLAGS[sdk=macosx10.10internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx.internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				LLDB_ZLIB_CFLAGS = "-DHAVE_LIBZ=1";
> +				LLDB_ZLIB_LDFLAGS = "-lz";
> 				MACOSX_DEPLOYMENT_TARGET = 10.9;
> 				OTHER_CFLAGS = (
> +					"-Wparentheses",
> +					"$(LLDB_ENERGY_CFLAGS)",
> +					"-DDT_VARIANT_$(DT_VARIANT)",
> 					"$(LLDB_COMPRESSION_CFLAGS)",
> 					"$(LLDB_ZLIB_CFLAGS)",
> 				);
> @@ -702,7 +850,10 @@
> 					"-Wparentheses",
> 					"-DWITH_LOCKDOWN",
> 					"-DWITH_BKS",
> +					"-DWITH_FBS",
> 					"-DOS_OBJECT_USE_OBJC=0",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> 				);
> 				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> 				OTHER_LDFLAGS = "";
> @@ -714,6 +865,10 @@
> 					"-framework",
> 					Foundation,
> 					"-llockdown",
> +					"-framework",
> +					FrontBoardServices,
> +					"-framework",
> +					MobileCoreServices,
> 					"$(LLDB_COMPRESSION_LDFLAGS)",
> 					"$(LLDB_ZLIB_LDFLAGS)",
> 				);
> @@ -730,6 +885,10 @@
> 				PRODUCT_NAME = debugserver;
> 				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
> 				"PROVISIONING_PROFILE[sdk=macosx*]" = "";
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> 				SKIP_INSTALL = YES;
> 				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> 				ZERO_LINK = NO;
> @@ -741,6 +900,7 @@
> 			buildSettings = {
> 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> 				CLANG_CXX_LIBRARY = "libc++";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=*]" = "source/debugserver-macosx-entitlements.plist";
> 				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> 				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
> @@ -759,21 +919,41 @@
> 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> 				HEADER_SEARCH_PATHS = /System/Library/Frameworks/System.framework/PrivateHeaders;
> 				INSTALL_PATH = /usr/bin;
> +				LLDB_COMPRESSION_CFLAGS = "";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=appletvos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=iphoneos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11internal]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=watchos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				LLDB_COMPRESSION_LDFLAGS = "";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=appletvos*]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=iphoneos*]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11internal]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=watchos*]" = "-weak-lcompression";
> 				LLDB_DEBUGSERVER = 1;
> 				LLDB_ENERGY_CFLAGS = "";
> -				"LLDB_ENERGY_CFLAGS[sdk=macosx10.10internal]" = "-DLLDB_ENERGY";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx.internal]" = "-DLLDB_ENERGY";
> 				LLDB_ENERGY_LFLAGS = "";
> -				"LLDB_ENERGY_LFLAGS[sdk=macosx10.10internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx.internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				LLDB_ZLIB_CFLAGS = "-DHAVE_LIBZ=1";
> +				LLDB_ZLIB_LDFLAGS = "-lz";
> 				MACOSX_DEPLOYMENT_TARGET = 10.9;
> 				OTHER_CFLAGS = (
> +					"-Wparentheses",
> +					"$(LLDB_ENERGY_CFLAGS)",
> +					"-DDT_VARIANT_$(DT_VARIANT)",
> 					"$(LLDB_COMPRESSION_CFLAGS)",
> 					"$(LLDB_ZLIB_CFLAGS)",
> 				);
> 				"OTHER_CFLAGS[sdk=iphoneos*][arch=*]" = (
> 					"-Wparentheses",
> 					"-DWITH_LOCKDOWN",
> +					"-DWITH_FBS",
> 					"-DWITH_BKS",
> 					"-DOS_OBJECT_USE_OBJC=0",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> 				);
> 				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> 				OTHER_LDFLAGS = "";
> @@ -782,9 +962,13 @@
> 					SpringBoardServices,
> 					"-framework",
> 					BackBoardServices,
> -					"-llockdown",
> 					"-framework",
> 					Foundation,
> +					"-llockdown",
> +					"-framework",
> +					FrontBoardServices,
> +					"-framework",
> +					MobileCoreServices,
> 					"$(LLDB_COMPRESSION_LDFLAGS)",
> 					"$(LLDB_ZLIB_LDFLAGS)",
> 				);
> @@ -801,23 +985,21 @@
> 				PRODUCT_NAME = debugserver;
> 				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
> 				"PROVISIONING_PROFILE[sdk=macosx*]" = "";
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> 				SKIP_INSTALL = YES;
> 				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> 				ZERO_LINK = NO;
> 			};
> 			name = Release;
> 		};
> -		4968B7A916657FAE00741ABB /* DebugClang */ = {
> +		456F676E1AD46CE9002850C2 /* Debug */ = {
> 			isa = XCBuildConfiguration;
> 			buildSettings = {
> -				"ARCHS[sdk=iphoneos*]" = (
> -					arm64,
> -					armv7,
> -				);
> -				"ARCHS[sdk=macosx*]" = (
> -					x86_64,
> -					i386,
> -				);
> +				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> +				CLANG_CXX_LIBRARY = "libc++";
> 				CLANG_WARN_BOOL_CONVERSION = YES;
> 				CLANG_WARN_CONSTANT_CONVERSION = YES;
> 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
> @@ -826,10 +1008,25 @@
> 				CLANG_WARN_INT_CONVERSION = YES;
> 				CLANG_WARN_UNREACHABLE_CODE = YES;
> 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
> +				"CODE_SIGN_ENTITLEMENTS[sdk=*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> 				CODE_SIGN_IDENTITY = "";
> +				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
> +				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "";
> 				COPY_PHASE_STRIP = NO;
> 				CURRENT_PROJECT_VERSION = 350.99.0;
> 				ENABLE_STRICT_OBJC_MSGSEND = YES;
> +				FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks;
> +				"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = (
> +					"$(SDKROOT)/System/Library/PrivateFrameworks",
> +					"$(SDKROOT)/Developer/Library/PrivateFrameworks",
> +				);
> +				"FRAMEWORK_SEARCH_PATHS[sdk=macosx*][arch=*]" = "$(SDKROOT)/System/Library/PrivateFrameworks";
> +				GCC_C_LANGUAGE_STANDARD = c99;
> +				GCC_DYNAMIC_NO_PIC = NO;
> +				GCC_OPTIMIZATION_LEVEL = 0;
> +				GCC_PREPROCESSOR_DEFINITIONS = LLDB_DEBUGSERVER_DEBUG;
> 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
> 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
> @@ -837,25 +1034,61 @@
> 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
> 				GCC_WARN_UNUSED_FUNCTION = YES;
> 				GCC_WARN_UNUSED_VARIABLE = YES;
> +				INSTALL_PATH = /usr/bin;
> 				LLDB_COMPRESSION_CFLAGS = "";
> 				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11]" = "-DHAVE_LIBCOMPRESSION=1";
> 				LLDB_COMPRESSION_LDFLAGS = "";
> 				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11]" = "-weak-lcompression";
> +				LLDB_DEBUGSERVER = 1;
> +				LLDB_ENERGY_CFLAGS = "";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx.internal]" = "-DLLDB_ENERGY";
> +				LLDB_ENERGY_LFLAGS = "";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx.internal]" = "-weak-lpmenergy -weak-lpmsample";
> 				LLDB_ZLIB_CFLAGS = "-DHAVE_LIBZ=1";
> 				LLDB_ZLIB_LDFLAGS = "-lz";
> +				MACOSX_DEPLOYMENT_TARGET = 10.9;
> 				ONLY_ACTIVE_ARCH = YES;
> 				OTHER_CFLAGS = "";
> +				"OTHER_CFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-Wparentheses",
> +					"-DOS_OBJECT_USE_OBJC=0",
> +				);
> +				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> +				OTHER_LDFLAGS = "";
> +				"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-framework",
> +					Foundation,
> +				);
> +				"OTHER_LDFLAGS[sdk=macosx*]" = (
> +					"-sectcreate",
> +					__TEXT,
> +					__info_plist,
> +					"$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist",
> +					"$(LLDB_ENERGY_LFLAGS)",
> +				);
> +				OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)";
> +				PRODUCT_NAME = debugserver;
> +				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
> +				"PROVISIONING_PROFILE[sdk=macosx*]" = "";
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				SKIP_INSTALL = YES;
> 				STRIP_INSTALLED_PRODUCT = NO;
> +				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> 				VERSIONING_SYSTEM = "apple-generic";
> 				VERSION_INFO_BUILDER = "$(USER)";
> +				ZERO_LINK = NO;
> 			};
> -			name = DebugClang;
> +			name = Debug;
> 		};
> -		4968B7AA16657FAE00741ABB /* DebugClang */ = {
> +		456F676F1AD46CE9002850C2 /* DebugClang */ = {
> 			isa = XCBuildConfiguration;
> 			buildSettings = {
> 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> 				CLANG_CXX_LIBRARY = "libc++";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=*]" = "source/debugserver-macosx-entitlements.plist";
> 				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> 				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
> @@ -876,9 +1109,9 @@
> 				INSTALL_PATH = /usr/bin;
> 				LLDB_DEBUGSERVER = 1;
> 				LLDB_ENERGY_CFLAGS = "";
> -				"LLDB_ENERGY_CFLAGS[sdk=macosx10.10internal]" = "-DLLDB_ENERGY";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx.internal]" = "-DLLDB_ENERGY";
> 				LLDB_ENERGY_LFLAGS = "";
> -				"LLDB_ENERGY_LFLAGS[sdk=macosx10.10internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx.internal]" = "-weak-lpmenergy -weak-lpmsample";
> 				MACOSX_DEPLOYMENT_TARGET = 10.9;
> 				OTHER_CFLAGS = (
> 					"$(LLDB_COMPRESSION_CFLAGS)",
> @@ -886,18 +1119,79 @@
> 				);
> 				"OTHER_CFLAGS[sdk=iphoneos*][arch=*]" = (
> 					"-Wparentheses",
> -					"-DWITH_LOCKDOWN",
> -					"-DWITH_BKS",
> 					"-DOS_OBJECT_USE_OBJC=0",
> 				);
> 				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> 				OTHER_LDFLAGS = "";
> 				"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
> 					"-framework",
> -					SpringBoardServices,
> -					"-framework",
> -					BackBoardServices,
> -					"-llockdown",
> +					Foundation,
> +					"$(LLDB_COMPRESSION_LDFLAGS)",
> +				);
> +				"OTHER_LDFLAGS[sdk=macosx*]" = (
> +					"-sectcreate",
> +					__TEXT,
> +					__info_plist,
> +					"$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist",
> +					"$(LLDB_ENERGY_LFLAGS)",
> +					"$(LLDB_COMPRESSION_LDFLAGS)",
> +					"$(LLDB_ZLIB_LDFLAGS)",
> +				);
> +				OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)";
> +				PRODUCT_NAME = debugserver;
> +				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
> +				"PROVISIONING_PROFILE[sdk=macosx*]" = "";
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				SKIP_INSTALL = YES;
> +				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> +				ZERO_LINK = NO;
> +			};
> +			name = DebugClang;
> +		};
> +		456F67701AD46CE9002850C2 /* Release */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> +				CLANG_CXX_LIBRARY = "libc++";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
> +				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "";
> +				COPY_PHASE_STRIP = YES;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
> +				FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks;
> +				"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = (
> +					"$(SDKROOT)/System/Library/PrivateFrameworks",
> +					"$(SDKROOT)/Developer/Library/PrivateFrameworks",
> +				);
> +				"FRAMEWORK_SEARCH_PATHS[sdk=macosx*][arch=*]" = "$(SDKROOT)/System/Library/PrivateFrameworks";
> +				GCC_C_LANGUAGE_STANDARD = c99;
> +				GCC_PREPROCESSOR_DEFINITIONS = LLDB_DEBUGSERVER_RELEASE;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				HEADER_SEARCH_PATHS = /System/Library/Frameworks/System.framework/PrivateHeaders;
> +				INSTALL_PATH = /usr/bin;
> +				LLDB_DEBUGSERVER = 1;
> +				LLDB_ENERGY_CFLAGS = "";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx.internal]" = "-DLLDB_ENERGY";
> +				LLDB_ENERGY_LFLAGS = "";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx.internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				MACOSX_DEPLOYMENT_TARGET = 10.9;
> +				OTHER_CFLAGS = (
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> +				);
> +				"OTHER_CFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-Wparentheses",
> +					"-DOS_OBJECT_USE_OBJC=0",
> +				);
> +				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> +				OTHER_LDFLAGS = "";
> +				"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
> 					"-framework",
> 					Foundation,
> 					"$(LLDB_COMPRESSION_LDFLAGS)",
> @@ -916,33 +1210,724 @@
> 				PRODUCT_NAME = debugserver;
> 				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
> 				"PROVISIONING_PROFILE[sdk=macosx*]" = "";
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> 				SKIP_INSTALL = YES;
> 				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> 				ZERO_LINK = NO;
> 			};
> -			name = DebugClang;
> +			name = Release;
> 		};
> -/* End XCBuildConfiguration section */
> -
> -/* Begin XCConfigurationList section */
> -		1DEB914E08733D8E0010E9CD /* Build configuration list for PBXProject "debugserver" */ = {
> -			isa = XCConfigurationList;
> -			buildConfigurations = (
> -				1DEB914F08733D8E0010E9CD /* Debug */,
> -				4968B7A916657FAE00741ABB /* DebugClang */,
> -				1DEB915008733D8E0010E9CD /* Release */,
> -				262419A11198A93E00067686 /* BuildAndIntegration */,
> +		456F67711AD46CE9002850C2 /* BuildAndIntegration */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> +				CLANG_CXX_LIBRARY = "libc++";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "-";
> +				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
> +				COPY_PHASE_STRIP = YES;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
> +				FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks;
> +				"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = (
> +					"$(SDKROOT)/System/Library/PrivateFrameworks",
> +					"$(SDKROOT)/Developer/Library/PrivateFrameworks",
> 			);
> -			defaultConfigurationIsVisible = 0;
> -			defaultConfigurationName = BuildAndIntegration;
> +				"FRAMEWORK_SEARCH_PATHS[sdk=macosx*][arch=*]" = "$(SDKROOT)/System/Library/PrivateFrameworks";
> +				GCC_C_LANGUAGE_STANDARD = c99;
> +				GCC_PREPROCESSOR_DEFINITIONS = LLDB_DEBUGSERVER_BUILDANDINTEGRATION;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				HEADER_SEARCH_PATHS = /System/Library/Frameworks/System.framework/PrivateHeaders;
> +				INSTALL_PATH = /usr/bin;
> +				"INSTALL_PATH[sdk=iphoneos*]" = /Developer/usr/bin/;
> +				LLDB_DEBUGSERVER = 1;
> +				LLDB_ENERGY_CFLAGS = "";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx*]" = "-DLLDB_ENERGY";
> +				LLDB_ENERGY_LFLAGS = "";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx*]" = "-weak-lpmenergy -weak-lpmsample";
> +				MACOSX_DEPLOYMENT_TARGET = 10.9;
> +				OTHER_CFLAGS = (
> +					"-Wparentheses",
> +					"$(LLDB_ENERGY_CFLAGS)",
> +				);
> +				"OTHER_CFLAGS[sdk=iphoneos*]" = (
> +					"-Wparentheses",
> +					"-DOS_OBJECT_USE_OBJC=0",
> +				);
> +				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> +				"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-framework",
> +					Foundation,
> +				);
> +				"OTHER_LDFLAGS[sdk=macosx*]" = (
> +					"-sectcreate",
> +					__TEXT,
> +					__info_plist,
> +					"$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist",
> +					"$(LLDB_ENERGY_LFLAGS)",
> +				);
> +				OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)";
> +				PRODUCT_NAME = debugserver;
> +				SDKROOT = macosx.internal;
> +				SKIP_INSTALL = YES;
> +				"SKIP_INSTALL[sdk=iphoneos*]" = NO;
> +				STRIP_INSTALLED_PRODUCT = YES;
> +				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> +				ZERO_LINK = NO;
> 		};
> -		26CE05A4115C31ED0022F371 /* Build configuration list for PBXNativeTarget "debugserver" */ = {
> -			isa = XCConfigurationList;
> -			buildConfigurations = (
> -				26CE0596115C31C30022F371 /* Debug */,
> -				4968B7AA16657FAE00741ABB /* DebugClang */,
> -				26CE0597115C31C30022F371 /* Release */,
> -				262419A21198A93E00067686 /* BuildAndIntegration */,
> +			name = BuildAndIntegration;
> +		};
> +		4968B7A916657FAE00741ABB /* DebugClang */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				"ARCHS[sdk=iphoneos*]" = (
> +					arm64,
> +					armv7,
> +				);
> +				"ARCHS[sdk=macosx*]" = "$(ARCHS_STANDARD_64_BIT)";
> +				CLANG_WARN_BOOL_CONVERSION = YES;
> +				CLANG_WARN_CONSTANT_CONVERSION = YES;
> +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
> +				CLANG_WARN_EMPTY_BODY = YES;
> +				CLANG_WARN_ENUM_CONVERSION = YES;
> +				CLANG_WARN_INT_CONVERSION = YES;
> +				CLANG_WARN_UNREACHABLE_CODE = YES;
> +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
> +				CODE_SIGN_IDENTITY = "";
> +				COPY_PHASE_STRIP = NO;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				ENABLE_STRICT_OBJC_MSGSEND = YES;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
> +				GCC_WARN_ABOUT_RETURN_TYPE = YES;
> +				GCC_WARN_UNDECLARED_SELECTOR = YES;
> +				GCC_WARN_UNINITIALIZED_AUTOS = YES;
> +				GCC_WARN_UNUSED_FUNCTION = YES;
> +				GCC_WARN_UNUSED_VARIABLE = YES;
> +				ONLY_ACTIVE_ARCH = YES;
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				STRIP_INSTALLED_PRODUCT = NO;
> +				VERSIONING_SYSTEM = "apple-generic";
> +				VERSION_INFO_BUILDER = "$(USER)";
> +			};
> +			name = DebugClang;
> +		};
> +		4968B7AA16657FAE00741ABB /* DebugClang */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> +				CLANG_CXX_LIBRARY = "libc++";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
> +				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "";
> +				COPY_PHASE_STRIP = YES;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks;
> +				"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = (
> +					"$(SDKROOT)/System/Library/PrivateFrameworks",
> +					"$(SDKROOT)/Developer/Library/PrivateFrameworks",
> +				);
> +				"FRAMEWORK_SEARCH_PATHS[sdk=macosx*][arch=*]" = "$(SDKROOT)/System/Library/PrivateFrameworks";
> +				GCC_C_LANGUAGE_STANDARD = c99;
> +				GCC_DYNAMIC_NO_PIC = NO;
> +				GCC_OPTIMIZATION_LEVEL = 0;
> +				GCC_PREPROCESSOR_DEFINITIONS = LLDB_DEBUGSERVER_DEBUG;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				INSTALL_PATH = /usr/bin;
> +				LLDB_COMPRESSION_CFLAGS = "";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=appletvos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=iphoneos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11internal]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=watchos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				LLDB_COMPRESSION_LDFLAGS = "";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=appletvos*]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=iphoneos*]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11internal]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=watchos*]" = "-weak-lcompression";
> +				LLDB_DEBUGSERVER = 1;
> +				LLDB_ENERGY_CFLAGS = "";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx.internal]" = "-DLLDB_ENERGY";
> +				LLDB_ENERGY_LFLAGS = "";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx.internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				LLDB_ZLIB_CFLAGS = "-DHAVE_LIBZ=1";
> +				LLDB_ZLIB_LDFLAGS = "-lz";
> +				MACOSX_DEPLOYMENT_TARGET = 10.9;
> +				OTHER_CFLAGS = (
> +					"-Wparentheses",
> +					"$(LLDB_ENERGY_CFLAGS)",
> +					"-DDT_VARIANT_$(DT_VARIANT)",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> +				);
> +				"OTHER_CFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-Wparentheses",
> +					"-DWITH_LOCKDOWN",
> +					"-DWITH_FBS",
> +					"-DWITH_BKS",
> +					"-DOS_OBJECT_USE_OBJC=0",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> +				);
> +				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> +				"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-framework",
> +					SpringBoardServices,
> +					"-framework",
> +					BackBoardServices,
> +					"-framework",
> +					Foundation,
> +					"-llockdown",
> +					"-framework",
> +					FrontBoardServices,
> +					"-framework",
> +					MobileCoreServices,
> +					"$(LLDB_COMPRESSION_LDFLAGS)",
> +					"$(LLDB_ZLIB_LDFLAGS)",
> +				);
> +				"OTHER_LDFLAGS[sdk=macosx*]" = (
> +					"-sectcreate",
> +					__TEXT,
> +					__info_plist,
> +					"$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist",
> +					"$(LLDB_ENERGY_LFLAGS)",
> +					"$(LLDB_COMPRESSION_LDFLAGS)",
> +					"$(LLDB_ZLIB_LDFLAGS)",
> +				);
> +				OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)";
> +				PRODUCT_NAME = debugserver;
> +				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
> +				"PROVISIONING_PROFILE[sdk=macosx*]" = "";
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				SKIP_INSTALL = YES;
> +				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> +				ZERO_LINK = NO;
> +			};
> +			name = DebugClang;
> +		};
> +		940AD5251B1FE3B10051E88F /* DebugPresubmission */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				"ARCHS[sdk=iphoneos*]" = (
> +					arm64,
> +					armv7,
> +				);
> +				"ARCHS[sdk=macosx*]" = "$(ARCHS_STANDARD_64_BIT)";
> +				CLANG_WARN_BOOL_CONVERSION = YES;
> +				CLANG_WARN_CONSTANT_CONVERSION = YES;
> +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
> +				CLANG_WARN_EMPTY_BODY = YES;
> +				CLANG_WARN_ENUM_CONVERSION = YES;
> +				CLANG_WARN_INT_CONVERSION = YES;
> +				CLANG_WARN_UNREACHABLE_CODE = YES;
> +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
> +				CODE_SIGN_IDENTITY = "";
> +				COPY_PHASE_STRIP = NO;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				ENABLE_STRICT_OBJC_MSGSEND = YES;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
> +				GCC_WARN_ABOUT_RETURN_TYPE = YES;
> +				GCC_WARN_UNDECLARED_SELECTOR = YES;
> +				GCC_WARN_UNINITIALIZED_AUTOS = YES;
> +				GCC_WARN_UNUSED_FUNCTION = YES;
> +				GCC_WARN_UNUSED_VARIABLE = YES;
> +				ONLY_ACTIVE_ARCH = YES;
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				STRIP_INSTALLED_PRODUCT = NO;
> +				VERSIONING_SYSTEM = "apple-generic";
> +				VERSION_INFO_BUILDER = "$(USER)";
> +			};
> +			name = DebugPresubmission;
> +		};
> +		940AD5261B1FE3B10051E88F /* DebugPresubmission */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> +				CLANG_CXX_LIBRARY = "libc++";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
> +				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "";
> +				COPY_PHASE_STRIP = YES;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks;
> +				"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = (
> +					"$(SDKROOT)/System/Library/PrivateFrameworks",
> +					"$(SDKROOT)/Developer/Library/PrivateFrameworks",
> +				);
> +				"FRAMEWORK_SEARCH_PATHS[sdk=macosx*][arch=*]" = "$(SDKROOT)/System/Library/PrivateFrameworks";
> +				GCC_C_LANGUAGE_STANDARD = c99;
> +				GCC_DYNAMIC_NO_PIC = NO;
> +				GCC_OPTIMIZATION_LEVEL = 0;
> +				GCC_PREPROCESSOR_DEFINITIONS = LLDB_DEBUGSERVER_DEBUG;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				INSTALL_PATH = /usr/bin;
> +				LLDB_COMPRESSION_CFLAGS = "";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=appletvos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=iphoneos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11internal]" = "-DHAVE_LIBCOMPRESSION=1";
> +				"LLDB_COMPRESSION_CFLAGS[sdk=watchos*]" = "-DHAVE_LIBCOMPRESSION=1";
> +				LLDB_COMPRESSION_LDFLAGS = "";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=appletvos*]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=iphoneos*]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=macosx10.11internal]" = "-weak-lcompression";
> +				"LLDB_COMPRESSION_LDFLAGS[sdk=watchos*]" = "-weak-lcompression";
> +				LLDB_DEBUGSERVER = 1;
> +				LLDB_ENERGY_CFLAGS = "";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx.internal]" = "-DLLDB_ENERGY";
> +				LLDB_ENERGY_LFLAGS = "";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx.internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				LLDB_ZLIB_CFLAGS = "-DHAVE_LIBZ=1";
> +				LLDB_ZLIB_LDFLAGS = "-lz";
> +				MACOSX_DEPLOYMENT_TARGET = 10.9;
> +				OTHER_CFLAGS = (
> +					"-Wparentheses",
> +					"$(LLDB_ENERGY_CFLAGS)",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> +				);
> +				"OTHER_CFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-Wparentheses",
> +					"-DWITH_LOCKDOWN",
> +					"-DWITH_FBS",
> +					"-DWITH_BKS",
> +					"-DOS_OBJECT_USE_OBJC=0",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> +				);
> +				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> +				"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-framework",
> +					SpringBoardServices,
> +					"-framework",
> +					BackBoardServices,
> +					"-framework",
> +					Foundation,
> +					"-llockdown",
> +					"-framework",
> +					FrontBoardServices,
> +					"-framework",
> +					MobileCoreServices,
> +					"$(LLDB_COMPRESSION_LDFLAGS)",
> +					"$(LLDB_ZLIB_LDFLAGS)",
> +				);
> +				"OTHER_LDFLAGS[sdk=macosx*]" = (
> +					"-sectcreate",
> +					__TEXT,
> +					__info_plist,
> +					"$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist",
> +					"$(LLDB_ENERGY_LFLAGS)",
> +					"$(LLDB_COMPRESSION_LDFLAGS)",
> +					"$(LLDB_ZLIB_LDFLAGS)",
> +				);
> +				OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)";
> +				PRODUCT_NAME = debugserver;
> +				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
> +				"PROVISIONING_PROFILE[sdk=macosx*]" = "";
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				SKIP_INSTALL = YES;
> +				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> +				ZERO_LINK = NO;
> +			};
> +			name = DebugPresubmission;
> +		};
> +		940AD5271B1FE3B10051E88F /* DebugPresubmission */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> +				CLANG_CXX_LIBRARY = "libc++";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
> +				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "";
> +				COPY_PHASE_STRIP = YES;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks;
> +				"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = (
> +					"$(SDKROOT)/System/Library/PrivateFrameworks",
> +					"$(SDKROOT)/Developer/Library/PrivateFrameworks",
> +				);
> +				"FRAMEWORK_SEARCH_PATHS[sdk=macosx*][arch=*]" = "$(SDKROOT)/System/Library/PrivateFrameworks";
> +				GCC_C_LANGUAGE_STANDARD = c99;
> +				GCC_DYNAMIC_NO_PIC = NO;
> +				GCC_OPTIMIZATION_LEVEL = 0;
> +				GCC_PREPROCESSOR_DEFINITIONS = LLDB_DEBUGSERVER_DEBUG;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				INSTALL_PATH = /usr/bin;
> +				LLDB_DEBUGSERVER = 1;
> +				LLDB_ENERGY_CFLAGS = "";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx.internal]" = "-DLLDB_ENERGY";
> +				LLDB_ENERGY_LFLAGS = "";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx.internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				MACOSX_DEPLOYMENT_TARGET = 10.9;
> +				OTHER_CFLAGS = (
> +					"-Wparentheses",
> +					"$(LLDB_ENERGY_CFLAGS)",
> +				);
> +				"OTHER_CFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-Wparentheses",
> +					"-DOS_OBJECT_USE_OBJC=0",
> +				);
> +				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> +				"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-framework",
> +					Foundation,
> +				);
> +				"OTHER_LDFLAGS[sdk=macosx*]" = (
> +					"-sectcreate",
> +					__TEXT,
> +					__info_plist,
> +					"$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist",
> +					"$(LLDB_ENERGY_LFLAGS)",
> +				);
> +				OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)";
> +				PRODUCT_NAME = debugserver;
> +				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
> +				"PROVISIONING_PROFILE[sdk=macosx*]" = "";
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				SKIP_INSTALL = YES;
> +				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> +				ZERO_LINK = NO;
> +			};
> +			name = DebugPresubmission;
> +		};
> +		94BA9B361B1A7C5700035A23 /* CustomSwift-Debug */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				PRODUCT_NAME = "lldb-debugserver";
> +			};
> +			name = "CustomSwift-Debug";
> +		};
> +		94BA9B371B1A7C5700035A23 /* CustomSwift-Release */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				PRODUCT_NAME = "lldb-debugserver";
> +			};
> +			name = "CustomSwift-Release";
> +		};
> +		94D72C871ADF10AA00A3F718 /* CustomSwift-Debug */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				"ARCHS[sdk=iphoneos*]" = (
> +					arm64,
> +					armv7,
> +				);
> +				"ARCHS[sdk=macosx*]" = "$(ARCHS_STANDARD_64_BIT)";
> +				CLANG_WARN_BOOL_CONVERSION = YES;
> +				CLANG_WARN_CONSTANT_CONVERSION = YES;
> +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
> +				CLANG_WARN_EMPTY_BODY = YES;
> +				CLANG_WARN_ENUM_CONVERSION = YES;
> +				CLANG_WARN_INT_CONVERSION = YES;
> +				CLANG_WARN_UNREACHABLE_CODE = YES;
> +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
> +				CODE_SIGN_IDENTITY = "";
> +				COPY_PHASE_STRIP = NO;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				ENABLE_STRICT_OBJC_MSGSEND = YES;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
> +				GCC_WARN_ABOUT_RETURN_TYPE = YES;
> +				GCC_WARN_UNDECLARED_SELECTOR = YES;
> +				GCC_WARN_UNINITIALIZED_AUTOS = YES;
> +				GCC_WARN_UNUSED_FUNCTION = YES;
> +				GCC_WARN_UNUSED_VARIABLE = YES;
> +				ONLY_ACTIVE_ARCH = YES;
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				STRIP_INSTALLED_PRODUCT = NO;
> +				VERSIONING_SYSTEM = "apple-generic";
> +				VERSION_INFO_BUILDER = "$(USER)";
> +			};
> +			name = "CustomSwift-Debug";
> +		};
> +		94D72C881ADF10AA00A3F718 /* CustomSwift-Debug */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> +				CLANG_CXX_LIBRARY = "libc++";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
> +				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "";
> +				COPY_PHASE_STRIP = YES;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks;
> +				"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = (
> +					"$(SDKROOT)/System/Library/PrivateFrameworks",
> +					"$(SDKROOT)/Developer/Library/PrivateFrameworks",
> +				);
> +				"FRAMEWORK_SEARCH_PATHS[sdk=macosx*][arch=*]" = "$(SDKROOT)/System/Library/PrivateFrameworks";
> +				GCC_C_LANGUAGE_STANDARD = c99;
> +				GCC_DYNAMIC_NO_PIC = NO;
> +				GCC_OPTIMIZATION_LEVEL = 0;
> +				GCC_PREPROCESSOR_DEFINITIONS = LLDB_DEBUGSERVER_DEBUG;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				INSTALL_PATH = /usr/bin;
> +				LLDB_COMPRESSION_CFLAGS = "";
> +				LLDB_COMPRESSION_LDFLAGS = "";
> +				LLDB_DEBUGSERVER = 1;
> +				LLDB_ENERGY_CFLAGS = "";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx.internal]" = "-DLLDB_ENERGY";
> +				LLDB_ENERGY_LFLAGS = "";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx.internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				LLDB_ZLIB_CFLAGS = "-DHAVE_LIBZ=1";
> +				LLDB_ZLIB_LDFLAGS = "-lz";
> +				MACOSX_DEPLOYMENT_TARGET = 10.9;
> +				OTHER_CFLAGS = (
> +					"-Wparentheses",
> +					"$(LLDB_ENERGY_CFLAGS)",
> +					"-DDT_VARIANT_$(DT_VARIANT)",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> +				);
> +				"OTHER_CFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-Wparentheses",
> +					"-DWITH_LOCKDOWN",
> +					"-DWITH_BKS",
> +					"-DWITH_FBS",
> +					"-DOS_OBJECT_USE_OBJC=0",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> +				);
> +				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> +				OTHER_LDFLAGS = "";
> +				"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-framework",
> +					SpringBoardServices,
> +					"-framework",
> +					BackBoardServices,
> +					"-framework",
> +					Foundation,
> +					"-llockdown",
> +					"-framework",
> +					FrontBoardServices,
> +					"-framework",
> +					MobileCoreServices,
> +					"$(LLDB_COMPRESSION_LDFLAGS)",
> +					"$(LLDB_ZLIB_LDFLAGS)",
> +				);
> +				"OTHER_LDFLAGS[sdk=macosx*]" = (
> +					"-sectcreate",
> +					__TEXT,
> +					__info_plist,
> +					"$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist",
> +					"$(LLDB_ENERGY_LFLAGS)",
> +					"$(LLDB_COMPRESSION_LDFLAGS)",
> +					"$(LLDB_ZLIB_LDFLAGS)",
> +				);
> +				OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)";
> +				PRODUCT_NAME = debugserver;
> +				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
> +				"PROVISIONING_PROFILE[sdk=macosx*]" = "";
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				SKIP_INSTALL = YES;
> +				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> +				ZERO_LINK = NO;
> +			};
> +			name = "CustomSwift-Debug";
> +		};
> +		94D72C891ADF10B000A3F718 /* CustomSwift-Release */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				"ARCHS[sdk=iphoneos*]" = (
> +					armv7,
> +					armv7s,
> +				);
> +				"ARCHS[sdk=macosx*]" = "$(ARCHS_STANDARD_64_BIT)";
> +				CLANG_WARN_BOOL_CONVERSION = YES;
> +				CLANG_WARN_CONSTANT_CONVERSION = YES;
> +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
> +				CLANG_WARN_EMPTY_BODY = YES;
> +				CLANG_WARN_ENUM_CONVERSION = YES;
> +				CLANG_WARN_INT_CONVERSION = YES;
> +				CLANG_WARN_UNREACHABLE_CODE = YES;
> +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				DEAD_CODE_STRIPPING = YES;
> +				ENABLE_STRICT_OBJC_MSGSEND = YES;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
> +				GCC_WARN_ABOUT_RETURN_TYPE = YES;
> +				GCC_WARN_UNDECLARED_SELECTOR = YES;
> +				GCC_WARN_UNINITIALIZED_AUTOS = YES;
> +				GCC_WARN_UNUSED_FUNCTION = YES;
> +				GCC_WARN_UNUSED_VARIABLE = YES;
> +				ONLY_ACTIVE_ARCH = YES;
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				STRIPFLAGS = "-x";
> +				STRIP_STYLE = debugging;
> +				VERSIONING_SYSTEM = "apple-generic";
> +				VERSION_INFO_BUILDER = "$(USER)";
> +			};
> +			name = "CustomSwift-Release";
> +		};
> +		94D72C8A1ADF10B000A3F718 /* CustomSwift-Release */ = {
> +			isa = XCBuildConfiguration;
> +			buildSettings = {
> +				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
> +				CLANG_CXX_LIBRARY = "libc++";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist";
> +				"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]" = "source/debugserver-macosx-entitlements.plist";
> +				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
> +				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "";
> +				COPY_PHASE_STRIP = YES;
> +				CURRENT_PROJECT_VERSION = 350.99.0;
> +				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
> +				FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks;
> +				"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = (
> +					"$(SDKROOT)/System/Library/PrivateFrameworks",
> +					"$(SDKROOT)/Developer/Library/PrivateFrameworks",
> +				);
> +				"FRAMEWORK_SEARCH_PATHS[sdk=macosx*][arch=*]" = "$(SDKROOT)/System/Library/PrivateFrameworks";
> +				GCC_C_LANGUAGE_STANDARD = c99;
> +				GCC_PREPROCESSOR_DEFINITIONS = LLDB_DEBUGSERVER_RELEASE;
> +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
> +				HEADER_SEARCH_PATHS = /System/Library/Frameworks/System.framework/PrivateHeaders;
> +				INSTALL_PATH = /usr/bin;
> +				LLDB_COMPRESSION_CFLAGS = "";
> +				LLDB_COMPRESSION_LDFLAGS = "";
> +				LLDB_DEBUGSERVER = 1;
> +				LLDB_ENERGY_CFLAGS = "";
> +				"LLDB_ENERGY_CFLAGS[sdk=macosx.internal]" = "-DLLDB_ENERGY";
> +				LLDB_ENERGY_LFLAGS = "";
> +				"LLDB_ENERGY_LFLAGS[sdk=macosx.internal]" = "-weak-lpmenergy -weak-lpmsample";
> +				LLDB_ZLIB_CFLAGS = "-DHAVE_LIBZ=1";
> +				LLDB_ZLIB_LDFLAGS = "-lz";
> +				MACOSX_DEPLOYMENT_TARGET = 10.9;
> +				OTHER_CFLAGS = (
> +					"-Wparentheses",
> +					"$(LLDB_ENERGY_CFLAGS)",
> +					"-DDT_VARIANT_$(DT_VARIANT)",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> +				);
> +				"OTHER_CFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-Wparentheses",
> +					"-DWITH_LOCKDOWN",
> +					"-DWITH_FBS",
> +					"-DWITH_BKS",
> +					"-DOS_OBJECT_USE_OBJC=0",
> +					"$(LLDB_COMPRESSION_CFLAGS)",
> +					"$(LLDB_ZLIB_CFLAGS)",
> +				);
> +				"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
> +				"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
> +					"-framework",
> +					SpringBoardServices,
> +					"-framework",
> +					BackBoardServices,
> +					"-framework",
> +					Foundation,
> +					"-llockdown",
> +					"-framework",
> +					FrontBoardServices,
> +					"-framework",
> +					MobileCoreServices,
> +					"$(LLDB_COMPRESSION_LDFLAGS)",
> +					"$(LLDB_ZLIB_LDFLAGS)",
> +				);
> +				"OTHER_LDFLAGS[sdk=macosx*]" = (
> +					"-sectcreate",
> +					__TEXT,
> +					__info_plist,
> +					"$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist",
> +					"$(LLDB_ENERGY_LFLAGS)",
> +					"$(LLDB_COMPRESSION_LDFLAGS)",
> +					"$(LLDB_ZLIB_LDFLAGS)",
> +				);
> +				OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)";
> +				PRODUCT_NAME = debugserver;
> +				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
> +				"PROVISIONING_PROFILE[sdk=macosx*]" = "";
> +				SDKROOT = macosx.internal;
> +				"SDKROOT[arch=i386]" = macosx;
> +				"SDKROOT[arch=x86_64]" = macosx;
> +				"SDKROOT[arch=x86_64h]" = macosx;
> +				SKIP_INSTALL = YES;
> +				USER_HEADER_SEARCH_PATHS = "./source ../../source $(DERIVED_SOURCES_DIR) ../../include";
> +				ZERO_LINK = NO;
> +			};
> +			name = "CustomSwift-Release";
> +		};
> +/* End XCBuildConfiguration section */
> +
> +/* Begin XCConfigurationList section */
> +		1DEB914E08733D8E0010E9CD /* Build configuration list for PBXProject "debugserver" */ = {
> +			isa = XCConfigurationList;
> +			buildConfigurations = (
> +				1DEB914F08733D8E0010E9CD /* Debug */,
> +				94D72C871ADF10AA00A3F718 /* CustomSwift-Debug */,
> +				4968B7A916657FAE00741ABB /* DebugClang */,
> +				940AD5251B1FE3B10051E88F /* DebugPresubmission */,
> +				1DEB915008733D8E0010E9CD /* Release */,
> +				94D72C891ADF10B000A3F718 /* CustomSwift-Release */,
> +				262419A11198A93E00067686 /* BuildAndIntegration */,
> +			);
> +			defaultConfigurationIsVisible = 0;
> +			defaultConfigurationName = BuildAndIntegration;
> +		};
> +		26CE05A4115C31ED0022F371 /* Build configuration list for PBXNativeTarget "debugserver" */ = {
> +			isa = XCConfigurationList;
> +			buildConfigurations = (
> +				26CE0596115C31C30022F371 /* Debug */,
> +				94D72C881ADF10AA00A3F718 /* CustomSwift-Debug */,
> +				4968B7AA16657FAE00741ABB /* DebugClang */,
> +				940AD5261B1FE3B10051E88F /* DebugPresubmission */,
> +				26CE0597115C31C30022F371 /* Release */,
> +				94D72C8A1ADF10B000A3F718 /* CustomSwift-Release */,
> +				262419A21198A93E00067686 /* BuildAndIntegration */,
> +			);
> +			defaultConfigurationIsVisible = 0;
> +			defaultConfigurationName = BuildAndIntegration;
> +		};
> +		456F676D1AD46CE9002850C2 /* Build configuration list for PBXNativeTarget "debugserver-mini" */ = {
> +			isa = XCConfigurationList;
> +			buildConfigurations = (
> +				456F676E1AD46CE9002850C2 /* Debug */,
> +				456F676F1AD46CE9002850C2 /* DebugClang */,
> +				940AD5271B1FE3B10051E88F /* DebugPresubmission */,
> +				456F67701AD46CE9002850C2 /* Release */,
> +				456F67711AD46CE9002850C2 /* BuildAndIntegration */,
> +				94BA9B361B1A7C5700035A23 /* CustomSwift-Debug */,
> +				94BA9B371B1A7C5700035A23 /* CustomSwift-Release */,
> 			);
> 			defaultConfigurationIsVisible = 0;
> 			defaultConfigurationName = BuildAndIntegration;
> 
> Modified: lldb/trunk/tools/debugserver/source/DNB.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/DNB.cpp?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/DNB.cpp (original)
> +++ lldb/trunk/tools/debugserver/source/DNB.cpp Thu Oct 22 21:49:51 2015
> @@ -747,7 +747,7 @@ DNBProcessAttachWait (const char *waitfo
>         if (attach_token != NULL)
>         {
>             nub_process_t pid;
> -            pid = MachProcess::CheckForProcess(attach_token);
> +            pid = MachProcess::CheckForProcess(attach_token, launch_flavor);
>             if (pid != INVALID_NUB_PROCESS)
>             {
>                 waitfor_pid = pid;
> @@ -825,7 +825,7 @@ DNBProcessAttachWait (const char *waitfo
>     }
> 
>     bool success = waitfor_pid != INVALID_NUB_PROCESS;
> -    MachProcess::CleanupAfterAttach (attach_token, success, prepare_error);
> +    MachProcess::CleanupAfterAttach (attach_token, launch_flavor, success, prepare_error);
> 
>     return waitfor_pid;
> }
> 
> Modified: lldb/trunk/tools/debugserver/source/DNBDefs.h
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/DNBDefs.h?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/DNBDefs.h (original)
> +++ lldb/trunk/tools/debugserver/source/DNBDefs.h Thu Oct 22 21:49:51 2015
> @@ -96,9 +96,11 @@ typedef enum
>     eLaunchFlavorSpringBoard = 3,
> #endif
> #ifdef WITH_BKS
> -    eLaunchFlavorBKS = 4
> +    eLaunchFlavorBKS = 4,
> +#endif
> +#ifdef WITH_FBS
> +    eLaunchFlavorFBS = 5
> #endif
> -
> } nub_launch_flavor_t;
> 
> #define NUB_STATE_IS_RUNNING(s) ((s) == eStateAttaching ||\
> 
> Modified: lldb/trunk/tools/debugserver/source/DNBError.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/DNBError.cpp?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/DNBError.cpp (original)
> +++ lldb/trunk/tools/debugserver/source/DNBError.cpp Thu Oct 22 21:49:51 2015
> @@ -54,7 +54,17 @@ DNBError::AsString() const
>                 // You have to call ObjC routines to get the error string from BackBoardServices.
>                 // Not sure I want to make DNBError.cpp an .mm file.  For now just make sure you
>                 // pre-populate the error string when you make the DNBError of type BackBoard.
> -                m_str.assign("Should have set Backboard error when making the error string.");
> +                m_str.assign("Should have set BackBoard error when making the error string.");
> +            }
> +            break;
> +#endif
> +#ifdef WITH_FBS
> +        case FrontBoard:
> +            {
> +                // You have to call ObjC routines to get the error string from FrontBoardServices.
> +                // Not sure I want to make DNBError.cpp an .mm file.  For now just make sure you
> +                // pre-populate the error string when you make the DNBError of type FrontBoard.
> +                m_str.assign("Should have set FrontBoard error when making the error string.");
>             }
>             break;
> #endif
> 
> Modified: lldb/trunk/tools/debugserver/source/DNBError.h
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/DNBError.h?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/DNBError.h (original)
> +++ lldb/trunk/tools/debugserver/source/DNBError.h Thu Oct 22 21:49:51 2015
> @@ -34,6 +34,9 @@ public:
> #ifdef WITH_BKS
>         , BackBoard = 4
> #endif
> +#ifdef WITH_FBS
> +        , FrontBoard = 5
> +#endif
>     } FlavorType;
> 
>     explicit DNBError(    ValueType err = 0,
> 
> Modified: lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.h
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.h?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.h (original)
> +++ lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.h Thu Oct 22 21:49:51 2015
> @@ -14,6 +14,12 @@
> #ifndef __MachProcess_h__
> #define __MachProcess_h__
> 
> +#include <mach/mach.h>
> +#include <sys/signal.h>
> +#include <pthread.h>
> +#include <vector>
> +#include <CoreFoundation/CoreFoundation.h>
> +
> #include "DNBDefs.h"
> #include "DNBBreakpoint.h"
> #include "DNBError.h"
> @@ -29,11 +35,6 @@
> #include "ThreadInfo.h"
> #include "JSONGenerator.h"
> 
> -#include <mach/mach.h>
> -#include <sys/signal.h>
> -#include <pthread.h>
> -#include <vector>
> -
> class DNBThreadResumeActions;
> 
> class MachProcess
> @@ -78,19 +79,24 @@ public:
>                                                                DNBError& err);
>     nub_addr_t              GetDYLDAllImageInfosAddress ();
>     static const void *     PrepareForAttach (const char *path, nub_launch_flavor_t launch_flavor, bool waitfor, DNBError &err_str);
> -    static void             CleanupAfterAttach (const void *attach_token, bool success, DNBError &err_str);
> -    static nub_process_t    CheckForProcess (const void *attach_token);
> +    static void             CleanupAfterAttach (const void *attach_token, nub_launch_flavor_t launch_flavor, bool success, DNBError &err_str);
> +    static nub_process_t    CheckForProcess (const void *attach_token, nub_launch_flavor_t launch_flavor);
> +#if defined(WITH_BKS) || defined(WITH_FBS)
> +    pid_t                   BoardServiceLaunchForDebug (const char *app_bundle_path, char const *argv[], char const *envp[], bool no_stdio, bool disable_aslr, const char *event_data, DNBError &launch_err);
> +    pid_t                   BoardServiceForkChildForPTraceDebugging (const char *path, char const *argv[], char const *envp[], bool no_stdio, bool disable_aslr, const char *event_data, DNBError &launch_err);
> +    bool                    BoardServiceSendEvent (const char *event, DNBError &error);
> +#endif
>     static bool             GetOSVersionNumbers (uint64_t *major, uint64_t *minor, uint64_t *patch);
> #ifdef WITH_BKS
> -    pid_t                   BKSLaunchForDebug (const char *app_bundle_path, char const *argv[], char const *envp[], bool no_stdio, bool disable_aslr, const char *event_data, DNBError &launch_err);
> -    pid_t                   BKSForkChildForPTraceDebugging (const char *path, char const *argv[], char const *envp[], bool no_stdio, bool disable_aslr, const char *event_data, DNBError &launch_err);
> -    bool                    BKSSendEvent (const char *event, DNBError &error);
>     static void             BKSCleanupAfterAttach (const void *attach_token, DNBError &err_str);
> -#endif
> +#endif // WITH_BKS
> +#ifdef WITH_FBS
> +    static void             FBSCleanupAfterAttach (const void *attach_token, DNBError &err_str);
> +#endif  // WITH_FBS
> #ifdef WITH_SPRINGBOARD
>     pid_t                   SBLaunchForDebug (const char *app_bundle_path, char const *argv[], char const *envp[], bool no_stdio, bool disable_aslr, DNBError &launch_err);
>     static pid_t            SBForkChildForPTraceDebugging (const char *path, char const *argv[], char const *envp[], bool no_stdio, MachProcess* process, DNBError &launch_err);
> -#endif
> +#endif  // WITH_SPRINGBOARD
>     nub_addr_t              LookupSymbol (const char *name, const char *shlib);
>     void                    SetNameToAddressCallback (DNBCallbackNameToAddress callback, void *baton)
>                             {
> @@ -287,7 +293,8 @@ private:
>         eMachProcessFlagsNone = 0,
>         eMachProcessFlagsAttached = (1 << 0),
>         eMachProcessFlagsUsingSBS = (1 << 1),
> -        eMachProcessFlagsUsingBKS = (1 << 2)
> +        eMachProcessFlagsUsingBKS = (1 << 2),
> +        eMachProcessFlagsUsingFBS = (1 << 3)
>     };
>     void                    Clear (bool detaching = false);
>     void                    ReplyToAllExceptions ();
> 
> Modified: lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm (original)
> +++ lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm Thu Oct 22 21:49:51 2015
> @@ -44,58 +44,137 @@
> #include "CFData.h"
> #include "CFString.h"
> 
> -#if defined (WITH_SPRINGBOARD) || defined (WITH_BKS)
> +#ifdef WITH_SPRINGBOARD
> +
> +#include <CoreFoundation/CoreFoundation.h>
> +#include <SpringBoardServices/SpringBoardServer.h>
> +#include <SpringBoardServices/SBSWatchdogAssertion.h>
> +
> +static bool
> +IsSBProcess (nub_process_t pid)
> +{
> +    CFReleaser<CFArrayRef> appIdsForPID (::SBSCopyDisplayIdentifiersForProcessID(pid));
> +    return appIdsForPID.get() != NULL;
> +}
> +
> +#endif // WITH_SPRINGBOARD
> +
> +#if defined (WITH_SPRINGBOARD) || defined (WITH_BKS) || defined (WITH_FBS)
> // This returns a CFRetained pointer to the Bundle ID for app_bundle_path,
> // or NULL if there was some problem getting the bundle id.
> -static CFStringRef
> -CopyBundleIDForPath (const char *app_bundle_path, DNBError &err_str)
> +static CFStringRef CopyBundleIDForPath (const char *app_bundle_path, DNBError &err_str);
> +#endif
> +
> +#if defined(WITH_BKS) || defined(WITH_FBS)
> +#import <Foundation/Foundation.h>
> +static const int OPEN_APPLICATION_TIMEOUT_ERROR = 111;
> +typedef void (*SetErrorFunction) (NSInteger, DNBError &);
> +typedef bool (*CallOpenApplicationFunction) (NSString *bundleIDNSStr, NSDictionary *options, DNBError &error, pid_t *return_pid);
> +// This function runs the BKSSystemService (or FBSSystemService) method openApplication:options:clientPort:withResult,
> +// messaging the app passed in bundleIDNSStr.
> +// The function should be run inside of an NSAutoReleasePool.
> +//
> +// It will use the "options" dictionary passed in, and fill the error passed in if there is an error.
> +// If return_pid is not NULL, we'll fetch the pid that was made for the bundleID.
> +// If bundleIDNSStr is NULL, then the system application will be messaged.
> +
> +template <typename OpenFlavor, typename ErrorFlavor, ErrorFlavor no_error_enum_value, SetErrorFunction error_function>
> +static bool
> +CallBoardSystemServiceOpenApplication (NSString *bundleIDNSStr, NSDictionary *options, DNBError &error, pid_t *return_pid)
> {
> -    CFBundle bundle(app_bundle_path);
> -    CFStringRef bundleIDCFStr = bundle.GetIdentifier();
> -    std::string bundleID;
> -    if (CFString::UTF8(bundleIDCFStr, bundleID) == NULL)
> +    // Now make our systemService:
> +    OpenFlavor *system_service = [[OpenFlavor alloc] init];
> +    
> +    if (bundleIDNSStr == nil)
>     {
> -        struct stat app_bundle_stat;
> -        char err_msg[PATH_MAX];
> +        bundleIDNSStr = [system_service systemApplicationBundleIdentifier];
> +        if (bundleIDNSStr == nil)
> +        {
> +            // Okay, no system app...
> +            error.SetErrorString("No system application to message.");
> +            return false;
> +        }
> +    }
> 
> -        if (::stat (app_bundle_path, &app_bundle_stat) < 0)
> +    mach_port_t client_port = [system_service createClientPort];
> +    __block dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
> +    __block  ErrorFlavor open_app_error = no_error_enum_value;
> +    bool wants_pid = (return_pid != NULL);
> +    __block pid_t pid_in_block;
> +    
> +    const char *cstr = [bundleIDNSStr UTF8String];
> +    if (!cstr)
> +        cstr = "<Unknown Bundle ID>";
> +    
> +    DNBLog ("About to launch process for bundle ID: %s", cstr);
> +    [system_service openApplication: bundleIDNSStr
> +                    options: options
> +                    clientPort: client_port
> +                    withResult: ^(NSError *bks_error)
>         {
> -            err_str.SetError(errno, DNBError::POSIX);
> -            snprintf(err_msg, sizeof(err_msg), "%s: \"%s\"", err_str.AsString(), app_bundle_path);
> -            err_str.SetErrorString(err_msg);
> -            DNBLogThreadedIf(LOG_PROCESS, "%s() error: %s", __FUNCTION__, err_msg);
> +                        // The system service will cleanup the client port we created for us.
> +                        if (bks_error)
> +                            open_app_error = (ErrorFlavor)[bks_error code];
> +                                        
> +                        if (open_app_error == no_error_enum_value)
> +                        {
> +                            if (wants_pid)
> +                            {
> +                                pid_in_block = [system_service pidForApplication: bundleIDNSStr];
> +                                DNBLog("In completion handler, got pid for bundle id, pid: %d.", pid_in_block);
> +                                DNBLogThreadedIf(LOG_PROCESS, "In completion handler, got pid for bundle id, pid: %d.", pid_in_block);
> +                            }
> +                            else
> +                                DNBLogThreadedIf (LOG_PROCESS, "In completion handler: success.");
>         }
>         else
>         {
> -            err_str.SetError(-1, DNBError::Generic);
> -            snprintf(err_msg, sizeof(err_msg), "failed to extract CFBundleIdentifier from %s", app_bundle_path);
> -            err_str.SetErrorString(err_msg);
> -            DNBLogThreadedIf(LOG_PROCESS, "%s() error: failed to extract CFBundleIdentifier from '%s'", __FUNCTION__, app_bundle_path);
> +                            const char *error_str = [(NSString *)[bks_error localizedDescription] UTF8String];
> +                            DNBLogThreadedIf(LOG_PROCESS, "In completion handler for send event, got error \"%s\"(%ld).",
> +                                             error_str ? error_str : "<unknown error>",
> +                                             open_app_error);
> +                            // REMOVE ME
> +                            DNBLogError ("In completion handler for send event, got error \"%s\"(%ld).",
> +                                             error_str ? error_str : "<unknown error>",
> +                                             open_app_error);
>         }
> -        return NULL;
> + 
> +                        [system_service release];
> +                        dispatch_semaphore_signal(semaphore);
>     }
> 
> -    DNBLogThreadedIf(LOG_PROCESS, "%s() extracted CFBundleIdentifier: %s", __FUNCTION__, bundleID.c_str());
> -    CFRetain (bundleIDCFStr);
> +    ];
> 
> -    return bundleIDCFStr;
> -}
> -#endif // #if defined 9WITH_SPRINGBOARD) || defined (WITH_BKS)
> +    const uint32_t timeout_secs = 9;
> 
> -#ifdef WITH_SPRINGBOARD
> +    dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, timeout_secs * NSEC_PER_SEC);
> 
> -#include <CoreFoundation/CoreFoundation.h>
> -#include <SpringBoardServices/SpringBoardServer.h>
> -#include <SpringBoardServices/SBSWatchdogAssertion.h>
> +    long success = dispatch_semaphore_wait(semaphore, timeout) == 0;
> 
> -static bool
> -IsSBProcess (nub_process_t pid)
> +    dispatch_release(semaphore);
> +    
> +    if (!success)
> {
> -    CFReleaser<CFArrayRef> appIdsForPID (::SBSCopyDisplayIdentifiersForProcessID(pid));
> -    return appIdsForPID.get() != NULL;
> +        DNBLogError("timed out trying to send openApplication to %s.", cstr);
> +        error.SetError (OPEN_APPLICATION_TIMEOUT_ERROR, DNBError::Generic);
> +        error.SetErrorString ("timed out trying to launch app");
> +    }
> +    else if (open_app_error != no_error_enum_value)
> +    {
> +        error_function (open_app_error, error);
> +        DNBLogError("unable to launch the application with CFBundleIdentifier '%s' bks_error = %u", cstr, open_app_error);
> +        success = false;
> +    }
> +    else if (wants_pid)
> +    {
> +        *return_pid = pid_in_block;
> +        DNBLogThreadedIf (LOG_PROCESS, "Out of completion handler, pid from block %d and passing out: %d", pid_in_block, *return_pid);
> }
> 
> -#endif // WITH_SPRINGBOARD
> +
> +    return success;
> +}
> +#endif
> 
> #ifdef WITH_BKS
> #import <Foundation/Foundation.h>
> @@ -115,10 +194,10 @@ IsBKSProcess (nub_process_t pid)
> }
> 
> static void
> -SetBKSError (BKSOpenApplicationErrorCode error_code, DNBError &error)
> +SetBKSError (NSInteger error_code, DNBError &error)
> {
>     error.SetError (error_code, DNBError::BackBoard);
> -    NSString *err_nsstr = ::BKSOpenApplicationErrorCodeToString(error_code);
> +    NSString *err_nsstr = ::BKSOpenApplicationErrorCodeToString((BKSOpenApplicationErrorCode) error_code);
>     const char *err_str = NULL;
>     if (err_nsstr == NULL)
>         err_str = "unknown BKS error";
> @@ -131,8 +210,164 @@ SetBKSError (BKSOpenApplicationErrorCode
>     error.SetErrorString(err_str);
> }
> 
> -static const int BKS_OPEN_APPLICATION_TIMEOUT_ERROR = 111;
> +static bool
> +BKSAddEventDataToOptions (NSMutableDictionary *options, const char *event_data, DNBError &option_error)
> +{
> +    if (strcmp (event_data, "BackgroundContentFetching") == 0)
> +    {
> +        DNBLog("Setting ActivateForEvent key in options dictionary.");
> +        NSDictionary *event_details = [NSDictionary dictionary];
> +        NSDictionary *event_dictionary = [NSDictionary dictionaryWithObject:event_details forKey:BKSActivateForEventOptionTypeBackgroundContentFetching];
> +        [options setObject: event_dictionary forKey: BKSOpenApplicationOptionKeyActivateForEvent];
> +        return true;
> +    }
> +    else
> +    {
> +        DNBLogError ("Unrecognized event type: %s.  Ignoring.", event_data);
> +        option_error.SetErrorString("Unrecognized event data.");
> +        return false;
> +    }
> +    
> +}
> +
> +static NSMutableDictionary *
> +BKSCreateOptionsDictionary(const char *app_bundle_path, NSMutableArray *launch_argv, NSMutableDictionary *launch_envp, NSString *stdio_path, bool disable_aslr, const char *event_data)
> +{
> +    NSMutableDictionary *debug_options = [NSMutableDictionary dictionary];
> +    if (launch_argv != nil)
> +        [debug_options setObject: launch_argv forKey: BKSDebugOptionKeyArguments];
> +    if (launch_envp != nil)
> +        [debug_options setObject: launch_envp forKey: BKSDebugOptionKeyEnvironment];
> +
> +    [debug_options setObject: stdio_path forKey: BKSDebugOptionKeyStandardOutPath];
> +    [debug_options setObject: stdio_path forKey: BKSDebugOptionKeyStandardErrorPath];
> +    [debug_options setObject: [NSNumber numberWithBool: YES] forKey: BKSDebugOptionKeyWaitForDebugger];
> +    if (disable_aslr)
> +        [debug_options setObject: [NSNumber numberWithBool: YES] forKey: BKSDebugOptionKeyDisableASLR];
> +    
> +    // That will go in the overall dictionary:
> +    
> +    NSMutableDictionary *options = [NSMutableDictionary dictionary];
> +    [options setObject: debug_options forKey: BKSOpenApplicationOptionKeyDebuggingOptions];
> +    // And there are some other options at the top level in this dictionary:
> +    [options setObject: [NSNumber numberWithBool: YES] forKey: BKSOpenApplicationOptionKeyUnlockDevice];
> +
> +    DNBError error;
> +    BKSAddEventDataToOptions (options, event_data, error);
> +
> +    return options;
> +}
> +
> +static CallOpenApplicationFunction BKSCallOpenApplicationFunction = CallBoardSystemServiceOpenApplication<BKSSystemService, BKSOpenApplicationErrorCode, BKSOpenApplicationErrorCodeNone, SetBKSError>;
> #endif // WITH_BKS
> +
> +#ifdef WITH_FBS
> +#import <Foundation/Foundation.h>
> +extern "C"
> +{
> +#import <FrontBoardServices/FrontBoardServices.h>
> +#import <FrontBoardServices/FBSSystemService_LaunchServices.h>
> +#import <FrontBoardServices/FBSOpenApplicationConstants_Private.h>
> +#import <MobileCoreServices/MobileCoreServices.h>
> +#import <MobileCoreServices/LSResourceProxy.h>
> +}
> +
> +#ifdef WITH_BKS
> +static bool
> +IsFBSProcess (nub_process_t pid)
> +{
> +    BKSApplicationStateMonitor *state_monitor = [[BKSApplicationStateMonitor alloc] init];
> +    BKSApplicationState app_state = [state_monitor mostElevatedApplicationStateForPID: pid];
> +    return app_state != BKSApplicationStateUnknown;
> +}
> +#else
> +static bool
> +IsFBSProcess (nub_process_t pid)
> +{
> +    // FIXME: What is the FBS equivalent of BKSApplicationStateMonitor
> +    return true;
> +}
> +#endif
> +
> +static void
> +SetFBSError (NSInteger error_code, DNBError &error)
> +{
> +    error.SetError ((DNBError::ValueType) error_code, DNBError::FrontBoard);
> +    NSString *err_nsstr = ::FBSOpenApplicationErrorCodeToString((FBSOpenApplicationErrorCode) error_code);
> +    const char *err_str = NULL;
> +    if (err_nsstr == NULL)
> +        err_str = "unknown FBS error";
> +    else
> +    {
> +        err_str = [err_nsstr UTF8String];
> +        if (err_str == NULL)
> +            err_str = "unknown FBS error";
> +    }
> +    error.SetErrorString(err_str);
> +}
> +
> +static bool
> +FBSAddEventDataToOptions (NSMutableDictionary *options, const char *event_data, DNBError &option_error)
> +{
> +    if (strcmp (event_data, "BackgroundContentFetching") == 0)
> +    {
> +        DNBLog("Setting ActivateForEvent key in options dictionary.");
> +        NSDictionary *event_details = [NSDictionary dictionary];
> +        NSDictionary *event_dictionary = [NSDictionary dictionaryWithObject:event_details forKey:FBSActivateForEventOptionTypeBackgroundContentFetching];
> +        [options setObject: event_dictionary forKey: FBSOpenApplicationOptionKeyActivateForEvent];
> +        return true;
> +    }
> +    else
> +    {
> +        DNBLogError ("Unrecognized event type: %s.  Ignoring.", event_data);
> +        option_error.SetErrorString("Unrecognized event data.");
> +        return false;
> +    }
> +    
> +}
> +
> +static NSMutableDictionary *
> +FBSCreateOptionsDictionary(const char *app_bundle_path, NSMutableArray *launch_argv, NSDictionary *launch_envp, NSString *stdio_path, bool disable_aslr, const char *event_data)
> +{
> +    NSMutableDictionary *debug_options = [NSMutableDictionary dictionary];
> +
> +    if (launch_argv != nil)
> +        [debug_options setObject: launch_argv forKey: FBSDebugOptionKeyArguments];
> +    if (launch_envp != nil)
> +        [debug_options setObject: launch_envp forKey: FBSDebugOptionKeyEnvironment];
> +
> +    [debug_options setObject: stdio_path forKey: FBSDebugOptionKeyStandardOutPath];
> +    [debug_options setObject: stdio_path forKey: FBSDebugOptionKeyStandardErrorPath];
> +    [debug_options setObject: [NSNumber numberWithBool: YES] forKey: FBSDebugOptionKeyWaitForDebugger];
> +    if (disable_aslr)
> +        [debug_options setObject: [NSNumber numberWithBool: YES] forKey: FBSDebugOptionKeyDisableASLR];
> +    
> +    // That will go in the overall dictionary:
> +    
> +    NSMutableDictionary *options = [NSMutableDictionary dictionary];
> +    [options setObject: debug_options forKey: FBSOpenApplicationOptionKeyDebuggingOptions];
> +    // And there are some other options at the top level in this dictionary:
> +    [options setObject: [NSNumber numberWithBool: YES] forKey: FBSOpenApplicationOptionKeyUnlockDevice];
> +
> +    // We have to get the "sequence ID & UUID" for this app bundle path and send them to FBS:
> +
> +    NSURL *app_bundle_url = [NSURL fileURLWithPath: [NSString stringWithUTF8String: app_bundle_path] isDirectory: YES];
> +    LSApplicationProxy *app_proxy = [LSApplicationProxy applicationProxyForBundleURL: app_bundle_url];
> +    if (app_proxy)
> +    {
> +        DNBLog("Sending AppProxy info: sequence no: %lu, GUID: %s.", app_proxy.sequenceNumber, [app_proxy.cacheGUID.UUIDString UTF8String]);
> +        [options setObject: [NSNumber numberWithUnsignedInteger: app_proxy.sequenceNumber] forKey: FBSOpenApplicationOptionKeyLSSequenceNumber];
> +        [options setObject: app_proxy.cacheGUID.UUIDString forKey: FBSOpenApplicationOptionKeyLSCacheGUID];
> +    }
> +
> +    DNBError error;
> +    FBSAddEventDataToOptions (options, event_data, error);
> +
> +    return options;
> +}
> +static CallOpenApplicationFunction FBSCallOpenApplicationFunction = CallBoardSystemServiceOpenApplication<FBSSystemService, FBSOpenApplicationErrorCode, FBSOpenApplicationErrorCodeNone, SetFBSError>;
> +#endif // WITH_FBS
> +
> #if 0
> #define DEBUG_LOG(fmt, ...) printf(fmt, ## __VA_ARGS__)
> #else
> @@ -863,8 +1098,9 @@ MachProcess::SendEvent (const char *even
>     DNBLogThreadedIf(LOG_PROCESS, "MachProcess::SendEvent (event = %s) to pid: %d", event, m_pid);
>     if (m_pid == INVALID_NUB_PROCESS)
>         return false;
> -#if WITH_BKS
> -    return BKSSendEvent (event, send_err);
> +    // FIXME: Shouldn't we use the launch flavor we were started with?
> +#if defined(WITH_FBS) || defined(WITH_BKS)
> +    return BoardServiceSendEvent (event, send_err);
> #endif
>     return true;
> }
> @@ -1970,9 +2206,22 @@ MachProcess::AttachForDebug (pid_t pid,
>         SetState(eStateAttaching);
>         m_pid = pid;
>         // Let ourselves know we are going to be using SBS or BKS if the correct flag bit is set...
> -#if defined (WITH_BKS)
> -        if (IsBKSProcess (pid))
> +#if defined (WITH_FBS) || defined (WITH_BKS)
> +        bool found_app_flavor = false;
> +#endif
> +        
> +#if defined (WITH_FBS)
> +        if (!found_app_flavor && IsFBSProcess (pid))
> +        {
> +            found_app_flavor = true;
> +            m_flags |= eMachProcessFlagsUsingFBS;
> +        }
> +#elif defined (WITH_BKS)
> +        if (!found_app_flavor && IsBKSProcess (pid))
> +        {
> +            found_app_flavor = true;
>             m_flags |= eMachProcessFlagsUsingBKS;
> +        }
> #elif defined (WITH_SPRINGBOARD)
>         if (IsSBProcess(pid))
>             m_flags |= eMachProcessFlagsUsingSBS;
> @@ -2058,7 +2307,7 @@ MachProcess::GetOSVersionNumbers (uint64
> const void *
> MachProcess::PrepareForAttach (const char *path, nub_launch_flavor_t launch_flavor, bool waitfor, DNBError &attach_err)
> {
> -#if defined (WITH_SPRINGBOARD) || defined (WITH_BKS)
> +#if defined (WITH_SPRINGBOARD) || defined (WITH_BKS) || defined (WITH_FBS)
>     // Tell SpringBoard to halt the next launch of this application on startup.
> 
>     if (!waitfor)
> @@ -2074,7 +2323,12 @@ MachProcess::PrepareForAttach (const cha
>         return NULL;
>     }
> 
> -#if defined (WITH_BKS)
> +#if defined (WITH_FBS)
> +    if (launch_flavor == eLaunchFlavorDefault)
> +        launch_flavor = eLaunchFlavorFBS;
> +    if (launch_flavor != eLaunchFlavorFBS)
> +        return NULL;
> +#elif defined (WITH_BKS)
>     if (launch_flavor == eLaunchFlavorDefault)
>         launch_flavor = eLaunchFlavorBKS;
>     if (launch_flavor != eLaunchFlavorBKS)
> @@ -2101,8 +2355,8 @@ MachProcess::PrepareForAttach (const cha
>         return NULL;
>     }
> 
> -#if defined (WITH_BKS)
> -    if (launch_flavor == eLaunchFlavorBKS)
> +#if defined (WITH_FBS)
> +    if (launch_flavor == eLaunchFlavorFBS)
>     {
>         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
> 
> @@ -2119,18 +2373,18 @@ MachProcess::PrepareForAttach (const cha
>                                       bundleIDStr.c_str(),
>                                       null_path);
> 
> -        [debug_options setObject: stdio_path forKey: BKSDebugOptionKeyStandardOutPath];
> -        [debug_options setObject: stdio_path forKey: BKSDebugOptionKeyStandardErrorPath];
> -        [debug_options setObject: [NSNumber numberWithBool: YES] forKey: BKSDebugOptionKeyWaitForDebugger];
> -        [debug_options setObject: [NSNumber numberWithBool: YES] forKey: BKSDebugOptionKeyDebugOnNextLaunch];
> +        [debug_options setObject: stdio_path forKey: FBSDebugOptionKeyStandardOutPath];
> +        [debug_options setObject: stdio_path forKey: FBSDebugOptionKeyStandardErrorPath];
> +        [debug_options setObject: [NSNumber numberWithBool: YES] forKey: FBSDebugOptionKeyWaitForDebugger];
> +        [debug_options setObject: [NSNumber numberWithBool: YES] forKey: FBSDebugOptionKeyDebugOnNextLaunch];
> 
> -        [options setObject: debug_options forKey: BKSOpenApplicationOptionKeyDebuggingOptions];
> +        [options setObject: debug_options forKey: FBSOpenApplicationOptionKeyDebuggingOptions];
> 
> -        BKSSystemService *system_service = [[BKSSystemService alloc] init];
> +        FBSSystemService *system_service = [[FBSSystemService alloc] init];
> 
>         mach_port_t client_port = [system_service createClientPort];
>         __block dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
> -        __block BKSOpenApplicationErrorCode attach_error_code = BKSOpenApplicationErrorCodeNone;
> +        __block FBSOpenApplicationErrorCode attach_error_code = FBSOpenApplicationErrorCodeNone;
> 
>         NSString *bundleIDNSStr = (NSString *) bundleIDCFStr;
> 
> @@ -2141,7 +2395,7 @@ MachProcess::PrepareForAttach (const cha
>                        {
>                             // The system service will cleanup the client port we created for us.
>                             if (error)
> -                                attach_error_code = (BKSOpenApplicationErrorCode)[error code];
> +                                attach_error_code = (FBSOpenApplicationErrorCode)[error code];
> 
>                             [system_service release];
>                             dispatch_semaphore_signal(semaphore);
> @@ -2158,19 +2412,91 @@ MachProcess::PrepareForAttach (const cha
>         {
>             DNBLogError("timed out trying to launch %s.", bundleIDStr.c_str());
>             attach_err.SetErrorString("debugserver timed out waiting for openApplication to complete.");
> -            attach_err.SetError (BKS_OPEN_APPLICATION_TIMEOUT_ERROR, DNBError::Generic);
> +            attach_err.SetError (OPEN_APPLICATION_TIMEOUT_ERROR, DNBError::Generic);
>         }
> -        else if (attach_error_code != BKSOpenApplicationErrorCodeNone)
> +        else if (attach_error_code != FBSOpenApplicationErrorCodeNone)
> +        {
> +            SetFBSError (attach_error_code, attach_err);
> +            DNBLogError("unable to launch the application with CFBundleIdentifier '%s' bks_error = %ld",
> +                        bundleIDStr.c_str(),
> +                        (NSInteger) attach_error_code);
> +        }
> +        dispatch_release(semaphore);
> +        [pool drain];
> +    }
> +#endif
> +#if defined (WITH_BKS)
> +    if (launch_flavor == eLaunchFlavorBKS)
> +    {
> +        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
> +
> +        NSString *stdio_path = nil;
> +        NSFileManager *file_manager = [NSFileManager defaultManager];
> +        const char *null_path = "/dev/null";
> +        stdio_path = [file_manager stringWithFileSystemRepresentation: null_path length: strlen(null_path)];
> +
> +        NSMutableDictionary *debug_options = [NSMutableDictionary dictionary];
> +        NSMutableDictionary *options       = [NSMutableDictionary dictionary];
> +
> +        DNBLogThreadedIf(LOG_PROCESS, "Calling BKSSystemService openApplication: @\"%s\",options include stdio path: \"%s\", "
> +                                      "BKSDebugOptionKeyDebugOnNextLaunch & BKSDebugOptionKeyWaitForDebugger )",
> +                                      bundleIDStr.c_str(),
> +                                      null_path);
> +        
> +        [debug_options setObject: stdio_path forKey: BKSDebugOptionKeyStandardOutPath];
> +        [debug_options setObject: stdio_path forKey: BKSDebugOptionKeyStandardErrorPath];
> +        [debug_options setObject: [NSNumber numberWithBool: YES] forKey: BKSDebugOptionKeyWaitForDebugger];
> +        [debug_options setObject: [NSNumber numberWithBool: YES] forKey: BKSDebugOptionKeyDebugOnNextLaunch];
> +        
> +        [options setObject: debug_options forKey: BKSOpenApplicationOptionKeyDebuggingOptions];
> +
> +        BKSSystemService *system_service = [[BKSSystemService alloc] init];
> +                
> +        mach_port_t client_port = [system_service createClientPort];
> +        __block dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
> +        __block BKSOpenApplicationErrorCode attach_error_code = BKSOpenApplicationErrorCodeNone;
> +        
> +        NSString *bundleIDNSStr = (NSString *) bundleIDCFStr;
> +        
> +        [system_service openApplication: bundleIDNSStr
> +                       options: options
> +                       clientPort: client_port
> +                       withResult: ^(NSError *error)
> +                       {
> +                            // The system service will cleanup the client port we created for us.
> +                            if (error)
> +                                attach_error_code = (BKSOpenApplicationErrorCode)[error code];
> +                                                                       
> +                            [system_service release];
> +                            dispatch_semaphore_signal(semaphore);
> +                        }
> +        ];
> +        
> +        const uint32_t timeout_secs = 9;
> +        
> +        dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, timeout_secs * NSEC_PER_SEC);
> +        
> +        long success = dispatch_semaphore_wait(semaphore, timeout) == 0;
> +        
> +        if (!success)
> +        {
> +            DNBLogError("timed out trying to launch %s.", bundleIDStr.c_str());
> +            attach_err.SetErrorString("debugserver timed out waiting for openApplication to complete.");
> +            attach_err.SetError (OPEN_APPLICATION_TIMEOUT_ERROR, DNBError::Generic);
> +        }
> +        else if (attach_error_code != BKSOpenApplicationErrorCodeNone)
>         {
>             SetBKSError (attach_error_code, attach_err);
> -            DNBLogError("unable to launch the application with CFBundleIdentifier '%s' bks_error = %u",
> +            DNBLogError("unable to launch the application with CFBundleIdentifier '%s' bks_error = %ld",
>                         bundleIDStr.c_str(),
>                         attach_error_code);
>         }
>         dispatch_release(semaphore);
>         [pool drain];
>     }
> -#elif defined (WITH_SPRINGBOARD)
> +#endif
> +
> +#if defined (WITH_SPRINGBOARD)
>     if (launch_flavor == eLaunchFlavorSpringBoard)
>     {
>         SBSApplicationLaunchError sbs_error = 0;
> @@ -2203,7 +2529,7 @@ MachProcess::PrepareForAttach (const cha
> 
>     DNBLogThreadedIf(LOG_PROCESS, "Successfully set DebugOnNextLaunch.");
>     return bundleIDCFStr;
> -# else  // defined (WITH_SPRINGBOARD) || defined (WITH_BKS)
> +# else  // !(defined (WITH_SPRINGBOARD) || defined (WITH_BKS) || defined (WITH_FBS))
>   return NULL;
> #endif
> }
> @@ -2213,12 +2539,28 @@ MachProcess::PrepareForAttach (const cha
> // will be returned.
> 
> nub_process_t
> -MachProcess::CheckForProcess (const void *attach_token)
> +MachProcess::CheckForProcess (const void *attach_token, nub_launch_flavor_t launch_flavor)
> {
>     if (attach_token == NULL)
>         return INVALID_NUB_PROCESS;
> 
> +#if defined (WITH_FBS)
> +    if (launch_flavor == eLaunchFlavorFBS)
> +    {
> +        NSString *bundleIDNSStr = (NSString *) attach_token;
> +        FBSSystemService *systemService = [[FBSSystemService alloc] init];
> +        pid_t pid = [systemService pidForApplication: bundleIDNSStr];
> +        [systemService release];
> +        if (pid == 0)
> +            return INVALID_NUB_PROCESS;
> +        else
> +            return pid;
> +    }
> +#endif
> +
> #if defined (WITH_BKS)
> +    if (launch_flavor == eLaunchFlavorBKS)
> +    {
>     NSString *bundleIDNSStr = (NSString *) attach_token;
>     BKSSystemService *systemService = [[BKSSystemService alloc] init];
>     pid_t pid = [systemService pidForApplication: bundleIDNSStr];
> @@ -2227,7 +2569,12 @@ MachProcess::CheckForProcess (const void
>         return INVALID_NUB_PROCESS;
>     else
>         return pid;
> -#elif defined (WITH_SPRINGBOARD)
> +    }
> +#endif
> +
> +#if defined (WITH_SPRINGBOARD)
> +    if (launch_flavor == eLaunchFlavorSpringBoard)
> +    {
>     CFStringRef bundleIDCFStr = (CFStringRef) attach_token;
>     Boolean got_it;
>     nub_process_t attach_pid;
> @@ -2236,9 +2583,9 @@ MachProcess::CheckForProcess (const void
>         return attach_pid;
>     else
>         return INVALID_NUB_PROCESS;
> -#else
> -    return INVALID_NUB_PROCESS;
> +    }
> #endif
> +    return INVALID_NUB_PROCESS;
> }
> 
> // Call this to clean up after you have either attached or given up on the attach.
> @@ -2247,22 +2594,39 @@ MachProcess::CheckForProcess (const void
> // this method.
> 
> void
> -MachProcess::CleanupAfterAttach (const void *attach_token, bool success, DNBError &err_str)
> +MachProcess::CleanupAfterAttach (const void *attach_token, nub_launch_flavor_t launch_flavor, bool success, DNBError &err_str)
> {
>     if (attach_token == NULL)
>         return;
> 
> +#if defined (WITH_FBS)
> +    if (launch_flavor == eLaunchFlavorFBS)
> +    {
> +        if (!success)
> +        {
> +            FBSCleanupAfterAttach (attach_token, err_str);
> +        }
> +        CFRelease((CFStringRef) attach_token);
> +    }
> +#endif
> +
> #if defined (WITH_BKS)
> 
> +    if (launch_flavor == eLaunchFlavorBKS)
> +    {
>     if (!success)
>     {
>         BKSCleanupAfterAttach (attach_token, err_str);
>     }
>     CFRelease((CFStringRef) attach_token);
> +    }
> +#endif
> 
> -#elif defined (WITH_SPRINGBOARD)
> +#if defined (WITH_SPRINGBOARD)
>     // Tell SpringBoard to cancel the debug on next launch of this application
>     // if we failed to attach
> +    if (launch_flavor == eMachProcessFlagsUsingSpringBoard)
> +    {
>     if (!success)
>     {
>         SBSApplicationLaunchError sbs_error = 0;
> @@ -2284,6 +2648,7 @@ MachProcess::CleanupAfterAttach (const v
>     }
> 
>     CFRelease((CFStringRef) attach_token);
> +    }
> #endif
> }
> 
> @@ -2317,6 +2682,22 @@ MachProcess::LaunchForDebug
>     case eLaunchFlavorForkExec:
>         m_pid = MachProcess::ForkChildForPTraceDebugging (path, argv, envp, this, launch_err);
>         break;
> +#ifdef WITH_FBS
> +    case eLaunchFlavorFBS:
> +        {
> +            const char *app_ext = strstr(path, ".app");
> +            if (app_ext && (app_ext[4] == '\0' || app_ext[4] == '/'))
> +            {
> +                std::string app_bundle_path(path, app_ext + strlen(".app"));
> +                m_flags |= eMachProcessFlagsUsingFBS;
> +                if (BoardServiceLaunchForDebug (app_bundle_path.c_str(), argv, envp, no_stdio, disable_aslr, event_data, launch_err) != 0)
> +                    return m_pid; // A successful SBLaunchForDebug() returns and assigns a non-zero m_pid.
> +                else
> +                    break; // We tried a FBS launch, but didn't succeed lets get out
> +            }
> +        }
> +        break;
> +#endif
> #ifdef WITH_BKS
>     case eLaunchFlavorBKS:
>         {
> @@ -2324,7 +2705,8 @@ MachProcess::LaunchForDebug
>             if (app_ext && (app_ext[4] == '\0' || app_ext[4] == '/'))
>             {
>                 std::string app_bundle_path(path, app_ext + strlen(".app"));
> -                if (BKSLaunchForDebug (app_bundle_path.c_str(), argv, envp, no_stdio, disable_aslr, event_data, launch_err) != 0)
> +                m_flags |= eMachProcessFlagsUsingBKS;
> +                if (BoardServiceLaunchForDebug (app_bundle_path.c_str(), argv, envp, no_stdio, disable_aslr, event_data, launch_err) != 0)
>                     return m_pid; // A successful SBLaunchForDebug() returns and assigns a non-zero m_pid.
>                 else
>                     break; // We tried a BKS launch, but didn't succeed lets get out
> @@ -2719,6 +3101,43 @@ MachProcess::ForkChildForPTraceDebugging
>     return pid;
> }
> 
> +#if defined (WITH_SPRINGBOARD) || defined (WITH_BKS) || defined (WITH_FBS)
> +// This returns a CFRetained pointer to the Bundle ID for app_bundle_path,
> +// or NULL if there was some problem getting the bundle id.
> +static CFStringRef
> +CopyBundleIDForPath (const char *app_bundle_path, DNBError &err_str)
> +{
> +    CFBundle bundle(app_bundle_path);
> +    CFStringRef bundleIDCFStr = bundle.GetIdentifier();
> +    std::string bundleID;
> +    if (CFString::UTF8(bundleIDCFStr, bundleID) == NULL)
> +    {
> +        struct stat app_bundle_stat;
> +        char err_msg[PATH_MAX];
> +
> +        if (::stat (app_bundle_path, &app_bundle_stat) < 0)
> +        {
> +            err_str.SetError(errno, DNBError::POSIX);
> +            snprintf(err_msg, sizeof(err_msg), "%s: \"%s\"", err_str.AsString(), app_bundle_path);
> +            err_str.SetErrorString(err_msg);
> +            DNBLogThreadedIf(LOG_PROCESS, "%s() error: %s", __FUNCTION__, err_msg);
> +        }
> +        else
> +        {
> +            err_str.SetError(-1, DNBError::Generic);
> +            snprintf(err_msg, sizeof(err_msg), "failed to extract CFBundleIdentifier from %s", app_bundle_path);
> +            err_str.SetErrorString(err_msg);
> +            DNBLogThreadedIf(LOG_PROCESS, "%s() error: failed to extract CFBundleIdentifier from '%s'", __FUNCTION__, app_bundle_path);
> +        }
> +        return NULL;
> +    }
> +
> +    DNBLogThreadedIf(LOG_PROCESS, "%s() extracted CFBundleIdentifier: %s", __FUNCTION__, bundleID.c_str());
> +    CFRetain (bundleIDCFStr);
> +
> +    return bundleIDCFStr;
> +}
> +#endif // #if defined (WITH_SPRINGBOARD) || defined (WITH_BKS) || defined (WITH_FBS)
> #ifdef WITH_SPRINGBOARD
> 
> pid_t
> @@ -2929,178 +3348,19 @@ MachProcess::SBForkChildForPTraceDebuggi
> 
> #endif // #ifdef WITH_SPRINGBOARD
> 
> -#ifdef WITH_BKS
> -
> -
> -// This function runs the BKSSystemService method openApplication:options:clientPort:withResult,
> -// messaging the app passed in bundleIDNSStr.
> -// The function should be run inside of an NSAutoReleasePool.
> -//
> -// It will use the "options" dictionary passed in, and fill the error passed in if there is an error.
> -// If return_pid is not NULL, we'll fetch the pid that was made for the bundleID.
> -// If bundleIDNSStr is NULL, then the system application will be messaged.
> -
> -static bool
> -CallBKSSystemServiceOpenApplication (NSString *bundleIDNSStr, NSDictionary *options, DNBError &error, pid_t *return_pid)
> -{
> -    // Now make our systemService:
> -    BKSSystemService *system_service = [[BKSSystemService alloc] init];
> -    
> -    if (bundleIDNSStr == nil)
> -    {
> -        bundleIDNSStr = [system_service systemApplicationBundleIdentifier];
> -        if (bundleIDNSStr == nil)
> -        {
> -            // Okay, no system app...
> -            error.SetErrorString("No system application to message.");
> -            return false;
> -        }
> -    }
> -    
> -    mach_port_t client_port = [system_service createClientPort];
> -    __block dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
> -    __block BKSOpenApplicationErrorCode open_app_error = BKSOpenApplicationErrorCodeNone;
> -    bool wants_pid = (return_pid != NULL);
> -    __block pid_t pid_in_block;
> -    
> -    const char *cstr = [bundleIDNSStr UTF8String];
> -    if (!cstr)
> -        cstr = "<Unknown Bundle ID>";
> -    
> -    DNBLog ("About to launch process for bundle ID: %s", cstr);
> -    [system_service openApplication: bundleIDNSStr
> -                    options: options
> -                    clientPort: client_port
> -                    withResult: ^(NSError *bks_error)
> -                    {
> -                        // The system service will cleanup the client port we created for us.
> -                        if (bks_error)
> -                            open_app_error = (BKSOpenApplicationErrorCode)[bks_error code];
> -                                        
> -                        if (open_app_error == BKSOpenApplicationErrorCodeNone)
> -                        {
> -                            if (wants_pid)
> -                            {
> -                                pid_in_block = [system_service pidForApplication: bundleIDNSStr];
> -                                DNBLog("In completion handler, got pid for bundle id, pid: %d.", pid_in_block);
> -                                DNBLogThreadedIf(LOG_PROCESS, "In completion handler, got pid for bundle id, pid: %d.", pid_in_block);
> -                            }
> -                            else
> -                                DNBLogThreadedIf (LOG_PROCESS, "In completion handler: success.");
> -                        }
> -                        else
> -                        {
> -                            const char *error_str = [[bks_error localizedDescription] UTF8String];
> -                            DNBLogThreadedIf(LOG_PROCESS, "In completion handler for send event, got error \"%s\"(%d).",
> -                                             error_str ? error_str : "<unknown error>",
> -                                             open_app_error);
> -                            // REMOVE ME
> -                            DNBLogError ("In completion handler for send event, got error \"%s\"(%d).",
> -                                             error_str ? error_str : "<unknown error>",
> -                                             open_app_error);
> -                        }
> - 
> -                        [system_service release];
> -                        dispatch_semaphore_signal(semaphore);
> -                    }
> -
> -    ];
> -    
> -    const uint32_t timeout_secs = 9;
> -    
> -    dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, timeout_secs * NSEC_PER_SEC);
> -    
> -    long success = dispatch_semaphore_wait(semaphore, timeout) == 0;
> -    
> -    dispatch_release(semaphore);
> -    
> -    if (!success)
> -    {
> -        DNBLogError("timed out trying to send openApplication to %s.", cstr);
> -        error.SetError (BKS_OPEN_APPLICATION_TIMEOUT_ERROR, DNBError::Generic);
> -        error.SetErrorString ("timed out trying to launch app");
> -    }
> -    else if (open_app_error != BKSOpenApplicationErrorCodeNone)
> -    {
> -        SetBKSError (open_app_error, error);
> -        DNBLogError("unable to launch the application with CFBundleIdentifier '%s' bks_error = %u", cstr, open_app_error);
> -        success = false;
> -    }
> -    else if (wants_pid)
> -    {
> -        *return_pid = pid_in_block;
> -        DNBLogThreadedIf (LOG_PROCESS, "Out of completion handler, pid from block %d and passing out: %d", pid_in_block, *return_pid);
> -    }
> -    
> -
> -    return success;
> -}
> -
> -void
> -MachProcess::BKSCleanupAfterAttach (const void *attach_token, DNBError &err_str)
> -{
> -    bool success;
> -    
> -    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
> -    
> -    // Instead of rewriting CopyBundleIDForPath for NSStrings, we'll just use toll-free bridging here:
> -    NSString *bundleIDNSStr = (NSString *) attach_token;
> -
> -    // Okay, now let's assemble all these goodies into the BackBoardServices options mega-dictionary:
> -    
> -    // First we have the debug sub-dictionary:
> -    NSMutableDictionary *debug_options = [NSMutableDictionary dictionary];
> -    [debug_options setObject: [NSNumber numberWithBool: YES] forKey: BKSDebugOptionKeyCancelDebugOnNextLaunch];
> -    
> -    // That will go in the overall dictionary:
> -    
> -    NSMutableDictionary *options = [NSMutableDictionary dictionary];
> -    [options setObject: debug_options forKey: BKSOpenApplicationOptionKeyDebuggingOptions];
> -
> -    success = CallBKSSystemServiceOpenApplication(bundleIDNSStr, options, err_str, NULL);
> -    
> -    if (!success)
> -    {
> -        DNBLogError ("error trying to cancel debug on next launch for %s: %s", [bundleIDNSStr UTF8String], err_str.AsString());
> -    }
> -
> -    [pool drain];
> -}
> -
> -bool
> -AddEventDataToOptions (NSMutableDictionary *options, const char *event_data, DNBError &option_error)
> -{
> -    if (strcmp (event_data, "BackgroundContentFetching") == 0)
> -    {
> -        DNBLog("Setting ActivateForEvent key in options dictionary.");
> -        NSDictionary *event_details = [NSDictionary dictionary];
> -        NSDictionary *event_dictionary = [NSDictionary dictionaryWithObject:event_details forKey:BKSActivateForEventOptionTypeBackgroundContentFetching];
> -        [options setObject: event_dictionary forKey: BKSOpenApplicationOptionKeyActivateForEvent];
> -        return true;
> -    }
> -    else
> -    {
> -        DNBLogError ("Unrecognized event type: %s.  Ignoring.", event_data);
> -        option_error.SetErrorString("Unrecognized event data.");
> -        return false;
> -    }
> 
> -}
> 
> +#if defined (WITH_BKS) || defined (WITH_FBS)
> pid_t
> -MachProcess::BKSLaunchForDebug (const char *path, char const *argv[], char const *envp[], bool no_stdio, bool disable_aslr, const char *event_data, DNBError &launch_err)
> +MachProcess::BoardServiceLaunchForDebug (const char *path, char const *argv[], char const *envp[], bool no_stdio, bool disable_aslr, const char *event_data, DNBError &launch_err)
> {
> -    // Clear out and clean up from any current state
> -    Clear();
> -
>     DNBLogThreadedIf(LOG_PROCESS, "%s( '%s', argv)", __FUNCTION__, path);
> 
>     // Fork a child process for debugging
>     SetState(eStateLaunching);
> -    m_pid = BKSForkChildForPTraceDebugging(path, argv, envp, no_stdio, disable_aslr, event_data, launch_err);
> +    m_pid = BoardServiceForkChildForPTraceDebugging(path, argv, envp, no_stdio, disable_aslr, event_data, launch_err);
>     if (m_pid != 0)
>     {
> -        m_flags |= eMachProcessFlagsUsingBKS;
>         m_path = path;
>         size_t i;
>         char const *arg;
> @@ -3136,7 +3396,7 @@ MachProcess::BKSLaunchForDebug (const ch
> }
> 
> pid_t
> -MachProcess::BKSForkChildForPTraceDebugging (const char *app_bundle_path,
> +MachProcess::BoardServiceForkChildForPTraceDebugging (const char *app_bundle_path,
>                                              char const *argv[],
>                                              char const *envp[],
>                                              bool no_stdio,
> @@ -3242,40 +3502,24 @@ MachProcess::BKSForkChildForPTraceDebugg
> 
>     // Okay, now let's assemble all these goodies into the BackBoardServices options mega-dictionary:
> 
> -    // First we have the debug sub-dictionary:
> -    NSMutableDictionary *debug_options = [NSMutableDictionary dictionary];
> -    if (launch_argv != nil)
> -        [debug_options setObject: launch_argv forKey: BKSDebugOptionKeyArguments];
> -    if (launch_envp != nil)
> -        [debug_options setObject: launch_envp forKey: BKSDebugOptionKeyEnvironment];
> -
> -    [debug_options setObject: stdio_path forKey: BKSDebugOptionKeyStandardOutPath];
> -    [debug_options setObject: stdio_path forKey: BKSDebugOptionKeyStandardErrorPath];
> -    [debug_options setObject: [NSNumber numberWithBool: YES] forKey: BKSDebugOptionKeyWaitForDebugger];
> -    if (disable_aslr)
> -        [debug_options setObject: [NSNumber numberWithBool: YES] forKey: BKSDebugOptionKeyDisableASLR];
> -    
> -    // That will go in the overall dictionary:
> -    
> -    NSMutableDictionary *options = [NSMutableDictionary dictionary];
> -    [options setObject: debug_options forKey: BKSOpenApplicationOptionKeyDebuggingOptions];
> +    NSMutableDictionary *options = nullptr;
> +    pid_t return_pid = INVALID_NUB_PROCESS;
> +    bool success = false;
> 
> -    // For now we only support one kind of event: the "fetch" event, which is indicated by the fact that its data
> -    // is an empty dictionary.
> -    if (event_data != NULL && *event_data != '\0')
> -    {
> -        if (!AddEventDataToOptions(options, event_data, launch_err))
> +#ifdef WITH_BKS
> +    if (m_flags & eMachProcessFlagsUsingBKS)
>         {
> -            [pool drain];
> -            return INVALID_NUB_PROCESS;
> +        options = BKSCreateOptionsDictionary(app_bundle_path, launch_argv, launch_envp, stdio_path, disable_aslr, event_data);
> +        success = BKSCallOpenApplicationFunction (bundleIDNSStr, options, launch_err, &return_pid);
>         }
> +#endif
> +#ifdef WITH_FBS
> +    if (m_flags & eMachProcessFlagsUsingFBS)
> +    {
> +        options = FBSCreateOptionsDictionary(app_bundle_path, launch_argv, launch_envp, stdio_path, disable_aslr, event_data);
> +        success = FBSCallOpenApplicationFunction (bundleIDNSStr, options, launch_err, &return_pid);
>     }
> -    
> -    // And there are some other options at the top level in this dictionary:
> -    [options setObject: [NSNumber numberWithBool: YES] forKey: BKSOpenApplicationOptionKeyUnlockDevice];
> -
> -    pid_t return_pid = INVALID_NUB_PROCESS;
> -    bool success = CallBKSSystemServiceOpenApplication(bundleIDNSStr, options, launch_err, &return_pid);
> +#endif
> 
>     if (success)
>     {
> @@ -3290,7 +3534,7 @@ MachProcess::BKSForkChildForPTraceDebugg
> }
> 
> bool
> -MachProcess::BKSSendEvent (const char *event_data, DNBError &send_err)
> +MachProcess::BoardServiceSendEvent (const char *event_data, DNBError &send_err)
> {
>     bool return_value = true;
> 
> @@ -3306,7 +3550,18 @@ MachProcess::BKSSendEvent (const char *e
>     if (strcmp (event_data, "BackgroundApplication") == 0)
>     {
>         // This is an event I cooked up.  What you actually do is foreground the system app, so:
> -        return_value = CallBKSSystemServiceOpenApplication(nil, nil, send_err, NULL);
> +#ifdef WITH_BKS
> +        if (m_flags & eMachProcessFlagsUsingBKS)
> +        {
> +            return_value = BKSCallOpenApplicationFunction(nil, nil, send_err, NULL);
> +        }
> +#endif
> +#ifdef WITH_FBS
> +        if (m_flags & eMachProcessFlagsUsingFBS)
> +        {
> +            return_value = FBSCallOpenApplicationFunction(nil, nil, send_err, NULL);
> +        }
> +#endif
>         if (!return_value)
>         {
>             DNBLogError ("Failed to background application, error: %s.", send_err.AsString());
> @@ -3326,14 +3581,31 @@ MachProcess::BKSSendEvent (const char *e
> 
>         NSMutableDictionary *options = [NSMutableDictionary dictionary];
> 
> -        if (!AddEventDataToOptions(options, event_data, send_err))
> +#ifdef WITH_BKS
> +        if (m_flags & eMachProcessFlagsUsingBKS)
> +        {
> +            if (!BKSAddEventDataToOptions(options, event_data, send_err))
>         {
>             [pool drain];
>             return false;
>         }
> +            return_value = BKSCallOpenApplicationFunction (bundleIDNSStr, options, send_err, NULL);
> +            DNBLogThreadedIf (LOG_PROCESS, "Called BKSCallOpenApplicationFunction to send event.");
> 
> -
> -        return_value = CallBKSSystemServiceOpenApplication(bundleIDNSStr, options, send_err, NULL);
> +        }
> +#endif
> +#ifdef WITH_FBS
> +        if (m_flags & eMachProcessFlagsUsingFBS)
> +        {
> +            if (!FBSAddEventDataToOptions(options, event_data, send_err))
> +            {
> +                [pool drain];
> +                return false;
> +            }
> +            return_value = FBSCallOpenApplicationFunction (bundleIDNSStr, options, send_err, NULL);
> +            DNBLogThreadedIf (LOG_PROCESS, "Called FBSCallOpenApplicationFunction to send event.");
> +        }
> +#endif
> 
>         if (!return_value)
>         {
> @@ -3344,4 +3616,70 @@ MachProcess::BKSSendEvent (const char *e
>     [pool drain];
>     return return_value;
> }
> +#endif // defined(WITH_BKS) || defined (WITH_FBS)
> +
> +#ifdef WITH_BKS
> +void
> +MachProcess::BKSCleanupAfterAttach (const void *attach_token, DNBError &err_str)
> +{
> +    bool success;
> +    
> +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
> +    
> +    // Instead of rewriting CopyBundleIDForPath for NSStrings, we'll just use toll-free bridging here:
> +    NSString *bundleIDNSStr = (NSString *) attach_token;
> +
> +    // Okay, now let's assemble all these goodies into the BackBoardServices options mega-dictionary:
> +    
> +    // First we have the debug sub-dictionary:
> +    NSMutableDictionary *debug_options = [NSMutableDictionary dictionary];
> +    [debug_options setObject: [NSNumber numberWithBool: YES] forKey: BKSDebugOptionKeyCancelDebugOnNextLaunch];
> +    
> +    // That will go in the overall dictionary:
> +    
> +    NSMutableDictionary *options = [NSMutableDictionary dictionary];
> +    [options setObject: debug_options forKey: BKSOpenApplicationOptionKeyDebuggingOptions];
> +
> +    success = BKSCallOpenApplicationFunction (bundleIDNSStr, options, err_str, NULL);
> +    
> +    if (!success)
> +    {
> +        DNBLogError ("error trying to cancel debug on next launch for %s: %s", [bundleIDNSStr UTF8String], err_str.AsString());
> +    }
> +
> +    [pool drain];
> +}
> #endif // WITH_BKS
> +
> +#ifdef WITH_FBS
> +void
> +MachProcess::FBSCleanupAfterAttach (const void *attach_token, DNBError &err_str)
> +{
> +    bool success;
> +    
> +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
> +    
> +    // Instead of rewriting CopyBundleIDForPath for NSStrings, we'll just use toll-free bridging here:
> +    NSString *bundleIDNSStr = (NSString *) attach_token;
> +
> +    // Okay, now let's assemble all these goodies into the BackBoardServices options mega-dictionary:
> +    
> +    // First we have the debug sub-dictionary:
> +    NSMutableDictionary *debug_options = [NSMutableDictionary dictionary];
> +    [debug_options setObject: [NSNumber numberWithBool: YES] forKey: FBSDebugOptionKeyCancelDebugOnNextLaunch];
> +    
> +    // That will go in the overall dictionary:
> +    
> +    NSMutableDictionary *options = [NSMutableDictionary dictionary];
> +    [options setObject: debug_options forKey: FBSOpenApplicationOptionKeyDebuggingOptions];
> +
> +    success = FBSCallOpenApplicationFunction (bundleIDNSStr, options, err_str, NULL);
> +
> +    if (!success)
> +    {
> +        DNBLogError ("error trying to cancel debug on next launch for %s: %s", [bundleIDNSStr UTF8String], err_str.AsString());
> +    }
> +
> +    [pool drain];
> +}
> +#endif // WITH_FBS
> 
> Modified: lldb/trunk/tools/debugserver/source/RNBRemote.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/RNBRemote.cpp?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/RNBRemote.cpp (original)
> +++ lldb/trunk/tools/debugserver/source/RNBRemote.cpp Thu Oct 22 21:49:51 2015
> @@ -17,6 +17,7 @@
> #include <unistd.h>
> #include <signal.h>
> #include <mach/exception_types.h>
> +#include <mach-o/loader.h>
> #include <sys/stat.h>
> #include <sys/sysctl.h>
> 
> @@ -4608,7 +4609,14 @@ RNBRemote::HandlePacket_qHostInfo (const
>     // this for now.
>     if (cputype == CPU_TYPE_ARM || cputype == CPU_TYPE_ARM64)
>     {
> +#if defined (TARGET_OS_TV) && TARGET_OS_TV == 1
> +        strm << "ostype:tvos;";
> +#elif defined (TARGET_OS_WATCH) && TARGET_OS_WATCH == 1
> +        strm << "ostype:watchos;";
> +#else
>         strm << "ostype:ios;";
> +#endif
> +
>         // On armv7 we use "synchronous" watchpoints which means the exception is delivered before the instruction executes.
>         strm << "watchpoint_exceptions_received:before;";
>     }
> @@ -4655,6 +4663,11 @@ RNBRemote::HandlePacket_qHostInfo (const
>         strm << "ptrsize:8;";
>     else
>         strm << "ptrsize:" << std::dec << sizeof(void *) << ';';
> +
> +#if defined (TARGET_OS_WATCH) && TARGET_OS_WATCH == 1
> +    strm << "default_packet_timeout:10;";
> +#endif
> +
>     return SendPacket (strm.str());
> }
> 
> @@ -5514,6 +5527,138 @@ RNBRemote::HandlePacket_jGetLoadedDynami
>     return SendPacket ("OK");
> }
> 
> +static bool
> +MachHeaderIsMainExecutable (nub_process_t pid, uint32_t addr_size, nub_addr_t mach_header_addr, mach_header &mh)
> +{
> +    DNBLogThreadedIf (LOG_RNB_PROC, "GetMachHeaderForMainExecutable(pid = %u, addr_size = %u, mach_header_addr = 0x%16.16llx)", pid, addr_size, mach_header_addr);
> +    const nub_size_t bytes_read = DNBProcessMemoryRead(pid, mach_header_addr, sizeof(mh), &mh);
> +    if (bytes_read == sizeof(mh))
> +    {
> +        DNBLogThreadedIf (LOG_RNB_PROC, "GetMachHeaderForMainExecutable(pid = %u, addr_size = %u, mach_header_addr = 0x%16.16llx): mh = {\n  magic = 0x%8.8x\n  cpu = 0x%8.8x\n  sub = 0x%8.8x\n  filetype = %u\n  ncmds = %u\n  sizeofcmds = 0x%8.8x\n  flags = 0x%8.8x }", pid, addr_size, mach_header_addr, mh.magic, mh.cputype, mh.cpusubtype, mh.filetype, mh.ncmds, mh.sizeofcmds, mh.flags);
> +        if ((addr_size == 4 && mh.magic == MH_MAGIC) ||
> +            (addr_size == 8 && mh.magic == MH_MAGIC_64))
> +        {
> +            if (mh.filetype == MH_EXECUTE)
> +            {
> +                DNBLogThreadedIf (LOG_RNB_PROC, "GetMachHeaderForMainExecutable(pid = %u, addr_size = %u, mach_header_addr = 0x%16.16llx) -> this is the executable!!!", pid, addr_size, mach_header_addr);
> +                return true;
> +            }
> +        }
> +    }
> +    return false;
> +}
> +
> +static nub_addr_t
> +GetMachHeaderForMainExecutable (const nub_process_t pid, const uint32_t addr_size, mach_header &mh)
> +{
> +    struct AllImageInfos
> +    {
> +        uint32_t version;
> +        uint32_t dylib_info_count;
> +        uint64_t dylib_info_addr;
> +    };
> +
> +    uint64_t mach_header_addr = 0;
> +
> +    const nub_addr_t shlib_addr = DNBProcessGetSharedLibraryInfoAddress (pid);
> +    uint8_t bytes[256];
> +    nub_size_t bytes_read = 0;
> +    DNBDataRef data (bytes, sizeof(bytes), false);
> +    DNBDataRef::offset_t offset = 0;
> +    data.SetPointerSize(addr_size);
> +
> +    //----------------------------------------------------------------------
> +    // When we are sitting at __dyld_start, the kernel has placed the
> +    // address of the mach header of the main executable on the stack. If we
> +    // read the SP and dereference a pointer, we might find the mach header
> +    // for the executable. We also just make sure there is only 1 thread
> +    // since if we are at __dyld_start we shouldn't have multiple threads.
> +    //----------------------------------------------------------------------
> +    if (DNBProcessGetNumThreads(pid) == 1)
> +    {
> +        nub_thread_t tid = DNBProcessGetThreadAtIndex(pid, 0);
> +        if (tid != INVALID_NUB_THREAD)
> +        {
> +            DNBRegisterValue sp_value;
> +            if (DNBThreadGetRegisterValueByID(pid, tid, REGISTER_SET_GENERIC, GENERIC_REGNUM_SP, &sp_value))
> +            {
> +                uint64_t sp = addr_size == 8 ? sp_value.value.uint64 : sp_value.value.uint32;
> +                bytes_read = DNBProcessMemoryRead(pid, sp, addr_size, bytes);
> +                if (bytes_read == addr_size)
> +                {
> +                    offset = 0;
> +                    mach_header_addr = data.GetPointer(&offset);
> +                    if (MachHeaderIsMainExecutable(pid, addr_size, mach_header_addr, mh))
> +                        return mach_header_addr;
> +                }
> +            }
> +        }
> +    }
> +
> +    //----------------------------------------------------------------------
> +    // Check the dyld_all_image_info structure for a list of mach header
> +    // since it is a very easy thing to check
> +    //----------------------------------------------------------------------
> +    if (shlib_addr != INVALID_NUB_ADDRESS)
> +    {
> +        bytes_read = DNBProcessMemoryRead(pid, shlib_addr, sizeof(AllImageInfos), bytes);
> +        if (bytes_read > 0)
> +        {
> +            AllImageInfos aii;
> +            offset = 0;
> +            aii.version = data.Get32(&offset);
> +            aii.dylib_info_count = data.Get32(&offset);
> +            if (aii.dylib_info_count > 0)
> +            {
> +                aii.dylib_info_addr = data.GetPointer(&offset);
> +                if (aii.dylib_info_addr != 0)
> +                {
> +                    const size_t image_info_byte_size = 3 * addr_size;
> +                    for (uint32_t i=0; i<aii.dylib_info_count; ++i)
> +                    {
> +                        bytes_read = DNBProcessMemoryRead(pid, aii.dylib_info_addr + i * image_info_byte_size, image_info_byte_size, bytes);
> +                        if (bytes_read != image_info_byte_size)
> +                            break;
> +                        offset = 0;
> +                        mach_header_addr = data.GetPointer(&offset);
> +                        if (MachHeaderIsMainExecutable(pid, addr_size, mach_header_addr, mh))
> +                            return mach_header_addr;
> +                    }
> +                }
> +            }
> +        }
> +    }
> +
> +    //----------------------------------------------------------------------
> +    // We failed to find the executable's mach header from the all image
> +    // infos and by dereferencing the stack pointer. Now we fall back to
> +    // enumerating the memory regions and looking for regions that are
> +    // executable.
> +    //----------------------------------------------------------------------
> +    DNBRegionInfo region_info;
> +    mach_header_addr = 0;
> +    while (DNBProcessMemoryRegionInfo(pid, mach_header_addr, &region_info))
> +    {
> +        if (region_info.size == 0)
> +            break;
> +
> +        if (region_info.permissions & eMemoryPermissionsExecutable)
> +        {
> +            DNBLogThreadedIf (LOG_RNB_PROC, "[0x%16.16llx - 0x%16.16llx) permissions = %c%c%c: checking region for executable mach header", region_info.addr, region_info.addr + region_info.size, (region_info.permissions & eMemoryPermissionsReadable) ? 'r' : '-', (region_info.permissions & eMemoryPermissionsWritable) ? 'w' : '-', (region_info.permissions & eMemoryPermissionsExecutable) ? 'x' : '-');
> +            if (MachHeaderIsMainExecutable(pid, addr_size, mach_header_addr, mh))
> +                return mach_header_addr;
> +        }
> +        else
> +        {
> +            DNBLogThreadedIf (LOG_RNB_PROC, "[0x%16.16llx - 0x%16.16llx): permissions = %c%c%c: skipping region", region_info.addr, region_info.addr + region_info.size, (region_info.permissions & eMemoryPermissionsReadable) ? 'r' : '-', (region_info.permissions & eMemoryPermissionsWritable) ? 'w' : '-', (region_info.permissions & eMemoryPermissionsExecutable) ? 'x' : '-');
> +        }
> +        // Set the address to the next mapped region
> +        mach_header_addr = region_info.addr + region_info.size;
> +    }
> +    bzero (&mh, sizeof(mh));
> +    return INVALID_NUB_ADDRESS;
> +}
> +
> rnb_err_t
> RNBRemote::HandlePacket_qSymbol (const char *command)
> {
> @@ -5593,7 +5738,7 @@ RNBRemote::HandlePacket_qProcessInfo (co
> 
>     pid = m_ctx.ProcessID();
> 
> -    rep << "pid:" << std::hex << pid << ";";
> +    rep << "pid:" << std::hex << pid << ';';
> 
>     int procpid_mib[4];
>     procpid_mib[0] = CTL_KERN;
> @@ -5607,12 +5752,12 @@ RNBRemote::HandlePacket_qProcessInfo (co
>     {
>         if (proc_kinfo_size > 0)
>         {
> -            rep << "parent-pid:" << std::hex << proc_kinfo.kp_eproc.e_ppid << ";";
> -            rep << "real-uid:" << std::hex << proc_kinfo.kp_eproc.e_pcred.p_ruid << ";";
> -            rep << "real-gid:" << std::hex << proc_kinfo.kp_eproc.e_pcred.p_rgid << ";";
> -            rep << "effective-uid:" << std::hex << proc_kinfo.kp_eproc.e_ucred.cr_uid << ";";
> +            rep << "parent-pid:" << std::hex << proc_kinfo.kp_eproc.e_ppid << ';';
> +            rep << "real-uid:" << std::hex << proc_kinfo.kp_eproc.e_pcred.p_ruid << ';';
> +            rep << "real-gid:" << std::hex << proc_kinfo.kp_eproc.e_pcred.p_rgid << ';';
> +            rep << "effective-uid:" << std::hex << proc_kinfo.kp_eproc.e_ucred.cr_uid << ';';
>             if (proc_kinfo.kp_eproc.e_ucred.cr_ngroups > 0)
> -                rep << "effective-gid:" << std::hex << proc_kinfo.kp_eproc.e_ucred.cr_groups[0] << ";";
> +                rep << "effective-gid:" << std::hex << proc_kinfo.kp_eproc.e_ucred.cr_groups[0] << ';';
>         }
>     }
> 
> @@ -5623,9 +5768,14 @@ RNBRemote::HandlePacket_qProcessInfo (co
>         cputype = best_guess_cpu_type();
>     }
> 
> +    uint32_t addr_size = 0;
>     if (cputype != 0)
>     {
>         rep << "cputype:" << std::hex << cputype << ";";
> +        if (cputype & CPU_ARCH_ABI64)
> +            addr_size = 8;
> +        else
> +            addr_size = 4;
>     }
> 
>     bool host_cpu_is_64bit = false;
> @@ -5660,11 +5810,82 @@ RNBRemote::HandlePacket_qProcessInfo (co
>         rep << "cpusubtype:" << std::hex << cpusubtype << ';';
>     }
> 
> +    bool os_handled = false;
> +    if (addr_size > 0)
> +    {
> +        rep << "ptrsize:" << std::dec << addr_size << ';';
> +
> +#if (defined (__x86_64__) || defined (__i386__))
> +        // Try and get the OS type by looking at the load commands in the main
> +        // executable and looking for a LC_VERSION_MIN load command. This is the
> +        // most reliable way to determine the "ostype" value when on desktop.
> +
> +        mach_header mh;
> +        nub_addr_t exe_mach_header_addr = GetMachHeaderForMainExecutable (pid, addr_size, mh);
> +        if (exe_mach_header_addr != INVALID_NUB_ADDRESS)
> +        {
> +            uint64_t load_command_addr = exe_mach_header_addr + ((addr_size == 8) ? sizeof(mach_header_64) : sizeof(mach_header));
> +            load_command lc;
> +            for (uint32_t i=0; i<mh.ncmds && !os_handled; ++i)
> +            {
> +                const nub_size_t bytes_read = DNBProcessMemoryRead (pid, load_command_addr, sizeof(lc), &lc);
> +                uint32_t raw_cmd = lc.cmd & ~LC_REQ_DYLD;
> +                if (bytes_read != sizeof(lc))
> +                    break;
> +                switch (raw_cmd)
> +                {
> +                case LC_VERSION_MIN_IPHONEOS:
> +                    os_handled = true;
> +                    rep << "ostype:ios;";
> +                    DNBLogThreadedIf (LOG_RNB_PROC, "LC_VERSION_MIN_IPHONEOS -> 'ostype:ios;'");
> +                    break;
> +
> +                case LC_VERSION_MIN_MACOSX:
> +                    os_handled = true;
> +                    rep << "ostype:macosx;";
> +                    DNBLogThreadedIf (LOG_RNB_PROC, "LC_VERSION_MIN_MACOSX -> 'ostype:macosx;'");
> +                    break;
> +
> +#if defined (DT_VARIANT_PONDEROSA) || TARGET_OS_TV == 1
> +                case LC_VERSION_MIN_TVOS:
> +                    os_handled = true;
> +                    rep << "ostype:tvos;";
> +                    DNBLogThreadedIf (LOG_RNB_PROC, "LC_VERSION_MIN_TVOS -> 'ostype:tvos;'");
> +                    break;
> +#endif
> +
> +                case LC_VERSION_MIN_WATCHOS:
> +                    os_handled = true;
> +                    rep << "ostype:watchos;";
> +                    DNBLogThreadedIf (LOG_RNB_PROC, "LC_VERSION_MIN_WATCHOS -> 'ostype:watchos;'");
> +                    break;
> +
> +                default:
> +                    break;
> +                }
> +                load_command_addr = load_command_addr + lc.cmdsize;
> +            }
> +        }
> +#endif
> +    }
> +
> +    // If we weren't able to find the OS in a LC_VERSION_MIN load command, try
> +    // to set it correctly by using the cpu type and other tricks
> +    if (!os_handled)
> +    {
>     // The OS in the triple should be "ios" or "macosx" which doesn't match our
>     // "Darwin" which gets returned from "kern.ostype", so we need to hardcode
>     // this for now.
>     if (cputype == CPU_TYPE_ARM || cputype == CPU_TYPE_ARM64)
> +        {
> +#if defined (TARGET_OS_TV) && TARGET_OS_TV == 1
> +            rep << "ostype:tvos;";
> +#elif defined (TARGET_OS_WATCH) && TARGET_OS_WATCH == 1
> +            rep << "ostype:watchos;";
> +#else
>         rep << "ostype:ios;";
> +#endif
> +        }
>     else
>     {
>         bool is_ios_simulator = false;
> @@ -5716,10 +5937,21 @@ RNBRemote::HandlePacket_qProcessInfo (co
>             }
>         }
>         if (is_ios_simulator)
> +            {
> +#if defined (TARGET_OS_TV) && TARGET_OS_TV == 1
> +                rep << "ostype:tvos;";
> +#elif defined (TARGET_OS_WATCH) && TARGET_OS_WATCH == 1
> +                rep << "ostype:watchos;";
> +#else
>             rep << "ostype:ios;";
> +#endif
> +            }
>         else
> +            {
>             rep << "ostype:macosx;";
>     }
> +        }
> +    }
> 
>     rep << "vendor:apple;";
> 
> @@ -5731,6 +5963,8 @@ RNBRemote::HandlePacket_qProcessInfo (co
>     rep << "endian:pdp;";
> #endif
> 
> +    if (addr_size == 0)
> +    {
> #if (defined (__x86_64__) || defined (__i386__)) && defined (x86_THREAD_STATE)
>     nub_thread_t thread = DNBProcessGetCurrentThreadMachPort (pid);
>     kern_return_t kr;
> @@ -5764,6 +5998,7 @@ RNBRemote::HandlePacket_qProcessInfo (co
>             rep << "ptrsize:4;";
>     }
> #endif
> +    }
> 
>     return SendPacket (rep.str());
> }
> 
> Modified: lldb/trunk/tools/debugserver/source/com.apple.debugserver.applist.internal.plist
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/com.apple.debugserver.applist.internal.plist?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/com.apple.debugserver.applist.internal.plist (original)
> +++ lldb/trunk/tools/debugserver/source/com.apple.debugserver.applist.internal.plist Thu Oct 22 21:49:51 2015
> @@ -10,5 +10,7 @@
> 		<string>--lockdown</string>
> 		<string>--applist</string>
> 	</array>
> +    <key>AllowByProxy</key>
> +    <true/>
> </dict>
> </plist>
> 
> Modified: lldb/trunk/tools/debugserver/source/com.apple.debugserver.applist.plist
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/com.apple.debugserver.applist.plist?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/com.apple.debugserver.applist.plist (original)
> +++ lldb/trunk/tools/debugserver/source/com.apple.debugserver.applist.plist Thu Oct 22 21:49:51 2015
> @@ -11,7 +11,9 @@
> 		<string>/Developer/usr/bin/debugserver</string>
> 		<string>--lockdown</string>
>         <string>--applist</string>
> -        <string>--launch=backboard</string>
> +        <string>--launch=frontboard</string>
> 	</array>
> +    <key>AllowByProxy</key>
> +    <true/>
> </dict>
> </plist>
> 
> Modified: lldb/trunk/tools/debugserver/source/com.apple.debugserver.internal.plist
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/com.apple.debugserver.internal.plist?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/com.apple.debugserver.internal.plist (original)
> +++ lldb/trunk/tools/debugserver/source/com.apple.debugserver.internal.plist Thu Oct 22 21:49:51 2015
> @@ -9,5 +9,7 @@
> 		<string>/Developer/usr/bin/debugserver</string>
> 		<string>--lockdown</string>
> 	</array>
> +    <key>AllowByProxy</key>
> +    <true/>
> </dict>
> </plist>
> 
> Modified: lldb/trunk/tools/debugserver/source/com.apple.debugserver.plist
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/com.apple.debugserver.plist?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/com.apple.debugserver.plist (original)
> +++ lldb/trunk/tools/debugserver/source/com.apple.debugserver.plist Thu Oct 22 21:49:51 2015
> @@ -10,7 +10,9 @@
> 	<array>
> 		<string>/Developer/usr/bin/debugserver</string>
> 		<string>--lockdown</string>
> -        <string>--launch=backboard</string>
> +        <string>--launch=frontboard</string>
> 	</array>
> +    <key>AllowByProxy</key>
> +    <true/>
> </dict>
> </plist>
> 
> Modified: lldb/trunk/tools/debugserver/source/com.apple.debugserver.posix.plist
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/com.apple.debugserver.posix.plist?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/com.apple.debugserver.posix.plist (original)
> +++ lldb/trunk/tools/debugserver/source/com.apple.debugserver.posix.plist Thu Oct 22 21:49:51 2015
> @@ -12,5 +12,7 @@
> 		<string>--lockdown</string>
> 		<string>--launch=posix</string>
> 	</array>
> +    <key>AllowByProxy</key>
> +    <true/>
> </dict>
> </plist>
> 
> Modified: lldb/trunk/tools/debugserver/source/debugserver-entitlements.plist
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/debugserver-entitlements.plist?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/debugserver-entitlements.plist (original)
> +++ lldb/trunk/tools/debugserver/source/debugserver-entitlements.plist Thu Oct 22 21:49:51 2015
> @@ -8,6 +8,10 @@
> 	<true/>
> 	<key>com.apple.backboardd.debugapplications</key>
> 	<true/>
> +    <key>com.apple.frontboard.launchapplications</key>
> +    <true/>
> +    <key>com.apple.frontboard.debugapplications</key>
> +    <true/>
> 	<key>run-unsigned-code</key>
> 	<true/>
> 	<key>seatbelt-profiles</key>
> 
> Modified: lldb/trunk/tools/debugserver/source/debugserver.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/debugserver.cpp?rev=251091&r1=251090&r2=251091&view=diff
> ==============================================================================
> --- lldb/trunk/tools/debugserver/source/debugserver.cpp (original)
> +++ lldb/trunk/tools/debugserver/source/debugserver.cpp Thu Oct 22 21:49:51 2015
> @@ -202,7 +202,13 @@ RNBRunLoopLaunchInferior (RNBRemote *rem
>         // Our default launch method is posix spawn
>         launch_flavor = eLaunchFlavorPosixSpawn;
> 
> -#if defined WITH_BKS
> +#if defined WITH_FBS
> +        // Check if we have an app bundle, if so launch using BackBoard Services.
> +        if (strstr(inferior_argv[0], ".app"))
> +        {
> +            launch_flavor = eLaunchFlavorFBS;
> +        }
> +#elif defined WITH_BKS
>         // Check if we have an app bundle, if so launch using BackBoard Services.
>         if (strstr(inferior_argv[0], ".app"))
>         {
> @@ -1094,6 +1100,10 @@ main (int argc, char *argv[])
>                     else if (strcasestr(optarg, "backboard") == optarg)
>                         g_launch_flavor = eLaunchFlavorBKS;
> #endif
> +#ifdef WITH_FBS
> +                    else if (strcasestr(optarg, "frontboard") == optarg)
> +                        g_launch_flavor = eLaunchFlavorFBS;
> +#endif
> 
>                     else
>                     {
> @@ -1108,6 +1118,9 @@ main (int argc, char *argv[])
> #ifdef WITH_BKS
>                         RNBLogSTDERR ("  backboard  Launch the executable through BackBoard Services.\n");
> #endif
> +#ifdef WITH_FBS
> +                        RNBLogSTDERR ("  frontboard  Launch the executable through FrontBoard Services.\n");
> +#endif
>                         exit (5);
>                     }
>                 }
> @@ -1484,7 +1497,13 @@ main (int argc, char *argv[])
>                         // Our default launch method is posix spawn
>                         launch_flavor = eLaunchFlavorPosixSpawn;
> 
> -#if defined WITH_BKS
> +#if defined WITH_FBS
> +                        // Check if we have an app bundle, if so launch using SpringBoard.
> +                        if (waitfor_pid_name.find (".app") != std::string::npos)
> +                        {
> +                            launch_flavor = eLaunchFlavorFBS;
> +                        }
> +#elif defined WITH_BKS
>                         // Check if we have an app bundle, if so launch using SpringBoard.
>                         if (waitfor_pid_name.find (".app") != std::string::npos)
>                         {
> 
> 
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits



More information about the lldb-commits mailing list