├── .github ├── FUNDING.yml └── workflows │ └── ci-mac.yaml ├── .gitmodules ├── dyld-cache-dump.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── xcshareddata │ └── xcschemes │ │ └── dyld-cache-dump.xcscheme └── project.pbxproj ├── .gitignore ├── LICENSE ├── README.md ├── dyld-cache-dump ├── String+LocalizedError.swift ├── Arguments.swift ├── main.swift └── Extractor.swift └── CODE_OF_CONDUCT.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: macmade 2 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Submodules/xcconfig"] 2 | path = Submodules/xcconfig 3 | url = https://github.com/macmade/xcconfig.git 4 | -------------------------------------------------------------------------------- /dyld-cache-dump.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /dyld-cache-dump.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Mac Finder 2 | .DS_Store 3 | .Trashes 4 | Icon? 5 | 6 | # Thumbnails 7 | ._* 8 | 9 | # Files that might appear on external disk 10 | .Spotlight-V100 11 | .Trashes 12 | 13 | # Xcode 14 | *.pbxuser 15 | *.mode1v3 16 | *.mode2v3 17 | *.perspectivev3 18 | *.xccheckout 19 | *.profraw 20 | !default.pbxuser 21 | !default.mode1v3 22 | !default.mode2v3 23 | !default.perspectivev3 24 | xcuserdata 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2023 Jean-David Gadina - www.xs-labs.com 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/ci-mac.yaml: -------------------------------------------------------------------------------- 1 | name: ci-mac 2 | on: [push] 3 | jobs: 4 | ci: 5 | runs-on: macos-latest 6 | strategy: 7 | matrix: 8 | run-config: 9 | - { scheme: 'dyld-cache-dump', configuration: 'Debug', project: 'dyld-cache-dump.xcodeproj', build: 1, analyze: 1, test: 0, info: 1, destination: 'platform=macOS' } 10 | - { scheme: 'dyld-cache-dump', configuration: 'Release', project: 'dyld-cache-dump.xcodeproj', build: 1, analyze: 1, test: 0, info: 1, destination: 'platform=macOS' } 11 | steps: 12 | 13 | - uses: actions/checkout@v1 14 | with: 15 | submodules: 'recursive' 16 | 17 | - uses: macmade/action-xcodebuild@v1.0.0 18 | 19 | - uses: macmade/action-slack@v1.0.0 20 | if: ${{ always() }} 21 | env: 22 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} 23 | with: 24 | channel: '#ci' 25 | status: ${{ job.status }} 26 | title: ${{ matrix.run-config[ 'scheme' ] }} - ${{ matrix.run-config[ 'configuration' ] }} 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | dyld-cache-dump 2 | =============== 3 | 4 | [![Build Status](https://img.shields.io/github/actions/workflow/status/macmade/dyld-cache-dump/ci-mac.yaml?label=macOS&logo=apple)](https://github.com/macmade/dyld-cache-dump/actions/workflows/ci-mac.yaml) 5 | [![Issues](http://img.shields.io/github/issues/macmade/dyld-cache-dump.svg?logo=github)](https://github.com/macmade/dyld-cache-dump/issues) 6 | ![Status](https://img.shields.io/badge/status-active-brightgreen.svg?logo=git) 7 | ![License](https://img.shields.io/badge/license-mit-brightgreen.svg?logo=open-source-initiative) 8 | [![Contact](https://img.shields.io/badge/follow-@macmade-blue.svg?logo=twitter&style=social)](https://twitter.com/macmade) 9 | [![Sponsor](https://img.shields.io/badge/sponsor-macmade-pink.svg?logo=github-sponsors&style=social)](https://github.com/sponsors/macmade) 10 | 11 | ### About 12 | 13 | A macOS command-line tool to dump the contents of dyld shared cache files. 14 | 15 | ``` 16 | Usage: dyld-cache-dump SOURCE DESTINATION 17 | ``` 18 | 19 | ### Installation 20 | 21 | ``` 22 | brew install --HEAD macmade/tap/dyld-cache-dump 23 | ``` 24 | 25 | License 26 | ------- 27 | 28 | Project is released under the terms of the MIT License. 29 | 30 | Repository Infos 31 | ---------------- 32 | 33 | Owner: Jean-David Gadina - XS-Labs 34 | Web: www.xs-labs.com 35 | Blog: www.noxeos.com 36 | Twitter: @macmade 37 | GitHub: github.com/macmade 38 | LinkedIn: ch.linkedin.com/in/macmade/ 39 | StackOverflow: stackoverflow.com/users/182676/macmade 40 | -------------------------------------------------------------------------------- /dyld-cache-dump/String+LocalizedError.swift: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * The MIT License (MIT) 3 | * 4 | * Copyright (c) 2023, Jean-David Gadina - www.xs-labs.com 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the Software), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | ******************************************************************************/ 24 | 25 | import Foundation 26 | 27 | extension String: @retroactive LocalizedError 28 | { 29 | public var errorDescription: String? 30 | { 31 | self 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /dyld-cache-dump/Arguments.swift: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * The MIT License (MIT) 3 | * 4 | * Copyright (c) 2023, Jean-David Gadina - www.xs-labs.com 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the Software), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | ******************************************************************************/ 24 | 25 | import Foundation 26 | import Darwin 27 | 28 | public class Arguments 29 | { 30 | public static let shared = Arguments() 31 | 32 | public private( set ) var executable: String 33 | public private( set ) var source: String? 34 | public private( set ) var destination: String? 35 | 36 | private init() 37 | { 38 | let args = ProcessInfo.processInfo.arguments 39 | 40 | if let exec = args.first 41 | { 42 | self.executable = URL( filePath: exec ).lastPathComponent 43 | } 44 | else 45 | { 46 | self.executable = "dyld-cache-dump" 47 | } 48 | 49 | if args.count >= 2 50 | { 51 | self.source = args[ 1 ] 52 | } 53 | 54 | if args.count >= 3 55 | { 56 | self.destination = args[ 2 ] 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /dyld-cache-dump/main.swift: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * The MIT License (MIT) 3 | * 4 | * Copyright (c) 2023, Jean-David Gadina - www.xs-labs.com 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the Software), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | ******************************************************************************/ 24 | 25 | import Foundation 26 | 27 | do 28 | { 29 | guard let source = Arguments.shared.source, let destination = Arguments.shared.destination 30 | else 31 | { 32 | print( "Usage: \( Arguments.shared.executable ) SOURCE DESTINATION" ) 33 | exit( EXIT_FAILURE ) 34 | } 35 | 36 | var extracted: Int32 = 0 37 | 38 | try Extractor().extract( cache: URL( filePath: source ), to: URL( filePath: destination ) ) 39 | { 40 | let percent = ( Double( $0 ) / Double( $1 ) ) * 100 41 | 42 | print( "Extracting DYLD shared cache: \( $0 ) of \( $1 ) - \( String( format: "%.0f", percent ) )%", terminator: "\r" ) 43 | fflush( stdout ) 44 | 45 | extracted = $0 46 | } 47 | 48 | print( "Extracted \( extracted ) files from \( source )" ) 49 | } 50 | catch 51 | { 52 | print( "Error: \( error )" ) 53 | exit( EXIT_FAILURE ) 54 | } 55 | -------------------------------------------------------------------------------- /dyld-cache-dump.xcodeproj/xcshareddata/xcschemes/dyld-cache-dump.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 43 | 45 | 51 | 52 | 53 | 54 | 60 | 62 | 68 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /dyld-cache-dump/Extractor.swift: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * The MIT License (MIT) 3 | * 4 | * Copyright (c) 2023, Jean-David Gadina - www.xs-labs.com 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the Software), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | ******************************************************************************/ 24 | 25 | import Cocoa 26 | import Darwin 27 | 28 | public class Extractor 29 | { 30 | private static let extractorBundlePath = "/usr/lib/dsc_extractor.bundle" 31 | private static let extractorFuncName = "dyld_shared_cache_extract_dylibs_progress" 32 | 33 | private typealias ExtractorFuncType = @convention( c ) ( UnsafePointer< CChar >, UnsafePointer< CChar >, ( Int32, Int32 ) -> Void ) -> Void 34 | 35 | private var extractorFunc: ExtractorFuncType 36 | 37 | public init() throws 38 | { 39 | guard let handle = dlopen( Extractor.extractorBundlePath, RTLD_LAZY ) 40 | else 41 | { 42 | throw "Cannot open \( Extractor.extractorBundlePath )" 43 | } 44 | 45 | guard let symbol = dlsym( handle, Extractor.extractorFuncName ) 46 | else 47 | { 48 | throw "Cannot load \( Extractor.extractorFuncName ) from \( Extractor.extractorBundlePath )" 49 | } 50 | 51 | self.extractorFunc = unsafeBitCast( symbol, to: ExtractorFuncType.self ) 52 | } 53 | 54 | public func extract( cache: URL, to destination: URL, progress: ( ( Int32, Int32 ) -> Void )? ) throws 55 | { 56 | guard FileManager.default.fileExists( atPath: cache.path( percentEncoded: false ) ) 57 | else 58 | { 59 | throw "Cache file does not exist at \( cache.path( percentEncoded: false ) )" 60 | } 61 | 62 | var isDir: ObjCBool = false 63 | 64 | if FileManager.default.fileExists( atPath: destination.path( percentEncoded: false ), isDirectory: &isDir ) 65 | { 66 | if isDir.boolValue == false 67 | { 68 | throw "Cannot use existing file \( destination.path( percentEncoded: false ) ) as destination" 69 | } 70 | 71 | try self.recylce( url: destination ) 72 | } 73 | 74 | self.extractorFunc( cache.path( percentEncoded: false ), destination.path( percentEncoded: false ) ) 75 | { 76 | progress?( $0 + 1, $1 ) 77 | } 78 | 79 | self.setFilesAsExecutable( in: destination ) 80 | } 81 | 82 | private func setFilesAsExecutable( in directory: URL ) 83 | { 84 | guard let enumerator = FileManager.default.enumerator( at: directory, includingPropertiesForKeys: nil ) 85 | else 86 | { 87 | return 88 | } 89 | 90 | enumerator.forEach 91 | { 92 | guard let file = $0 as? URL 93 | else 94 | { 95 | return 96 | } 97 | 98 | var isDir: ObjCBool = false 99 | 100 | if FileManager.default.fileExists( atPath: file.path( percentEncoded: false ), isDirectory: &isDir ), isDir.boolValue == false 101 | { 102 | let attributes: [ FileAttributeKey: Any ] = [ 103 | .posixPermissions: 0o755 104 | ] 105 | 106 | try? FileManager.default.setAttributes( attributes, ofItemAtPath: file.path( percentEncoded: false ) ) 107 | } 108 | } 109 | } 110 | 111 | private func recylce( url: URL ) throws 112 | { 113 | let group = DispatchGroup() 114 | var recycleError: Error? 115 | 116 | group.enter() 117 | 118 | DispatchQueue.global( qos: .userInitiated ).async 119 | { 120 | NSWorkspace.shared.recycle( [ url ] ) 121 | { 122 | urls, error in 123 | 124 | recycleError = error 125 | 126 | group.leave() 127 | } 128 | } 129 | 130 | group.wait() 131 | 132 | if let error = recycleError 133 | { 134 | throw error 135 | } 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | xs-labs.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /dyld-cache-dump.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 56; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 056CA43A2A376F1C00F61F63 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056CA4392A376F1C00F61F63 /* main.swift */; }; 11 | 056CA4412A3772D600F61F63 /* Extractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056CA4402A3772D600F61F63 /* Extractor.swift */; }; 12 | 056CA4432A3772F400F61F63 /* String+LocalizedError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056CA4422A3772F400F61F63 /* String+LocalizedError.swift */; }; 13 | 056CA4452A37747800F61F63 /* Arguments.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056CA4442A37747800F61F63 /* Arguments.swift */; }; 14 | /* End PBXBuildFile section */ 15 | 16 | /* Begin PBXCopyFilesBuildPhase section */ 17 | 056CA4342A376F1C00F61F63 /* CopyFiles */ = { 18 | isa = PBXCopyFilesBuildPhase; 19 | buildActionMask = 2147483647; 20 | dstPath = /usr/share/man/man1/; 21 | dstSubfolderSpec = 0; 22 | files = ( 23 | ); 24 | runOnlyForDeploymentPostprocessing = 1; 25 | }; 26 | /* End PBXCopyFilesBuildPhase section */ 27 | 28 | /* Begin PBXFileReference section */ 29 | 056CA4362A376F1C00F61F63 /* dyld-cache-dump */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "dyld-cache-dump"; sourceTree = BUILT_PRODUCTS_DIR; }; 30 | 056CA4392A376F1C00F61F63 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; 31 | 056CA4402A3772D600F61F63 /* Extractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extractor.swift; sourceTree = ""; }; 32 | 056CA4422A3772F400F61F63 /* String+LocalizedError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+LocalizedError.swift"; sourceTree = ""; }; 33 | 056CA4442A37747800F61F63 /* Arguments.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Arguments.swift; sourceTree = ""; }; 34 | 056CA4462A3782EA00F61F63 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 35 | 056CA4472A3782EA00F61F63 /* CODE_OF_CONDUCT.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CODE_OF_CONDUCT.md; sourceTree = ""; }; 36 | 056CA4482A3782EA00F61F63 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 37 | 056CA44A2A3782F500F61F63 /* CODE_OF_CONDUCT.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CODE_OF_CONDUCT.md; sourceTree = ""; }; 38 | 056CA44B2A3782F500F61F63 /* Release - ccache.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Release - ccache.xcconfig"; sourceTree = ""; }; 39 | 056CA44C2A3782F500F61F63 /* Common.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Common.xcconfig; sourceTree = ""; }; 40 | 056CA44D2A3782F500F61F63 /* Debug - ccache.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Debug - ccache.xcconfig"; sourceTree = ""; }; 41 | 056CA44E2A3782F500F61F63 /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; 42 | 056CA44F2A3782F500F61F63 /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 43 | 056CA4502A3782F500F61F63 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 44 | 056CA4512A3782F500F61F63 /* Release - Library.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Release - Library.xcconfig"; sourceTree = ""; }; 45 | 056CA4532A3782F500F61F63 /* Signing.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Signing.xcconfig; sourceTree = ""; }; 46 | 056CA4542A3782F500F61F63 /* Architectures.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Architectures.xcconfig; sourceTree = ""; }; 47 | 056CA4562A3782F500F61F63 /* Issues.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Issues.xcconfig; sourceTree = ""; }; 48 | 056CA4582A3782F500F61F63 /* Apple-APIs.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Apple-APIs.xcconfig"; sourceTree = ""; }; 49 | 056CA4592A3782F500F61F63 /* Generic-Issues.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Generic-Issues.xcconfig"; sourceTree = ""; }; 50 | 056CA45A2A3782F500F61F63 /* Security.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Security.xcconfig; sourceTree = ""; }; 51 | 056CA45B2A3782F500F61F63 /* Objective-C.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Objective-C.xcconfig"; sourceTree = ""; }; 52 | 056CA45C2A3782F500F61F63 /* Analysis-Policy.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Analysis-Policy.xcconfig"; sourceTree = ""; }; 53 | 056CA45D2A3782F500F61F63 /* Deployment.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Deployment.xcconfig; sourceTree = ""; }; 54 | 056CA45E2A3782F500F61F63 /* Build-Options.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Build-Options.xcconfig"; sourceTree = ""; }; 55 | 056CA45F2A3782F500F61F63 /* Swift-Compiler.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Swift-Compiler.xcconfig"; sourceTree = ""; }; 56 | 056CA4602A3782F500F61F63 /* Static-Analyzer.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Static-Analyzer.xcconfig"; sourceTree = ""; }; 57 | 056CA4622A3782F500F61F63 /* Warnings-Policies.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Warnings-Policies.xcconfig"; sourceTree = ""; }; 58 | 056CA4632A3782F500F61F63 /* Code-Generation.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Code-Generation.xcconfig"; sourceTree = ""; }; 59 | 056CA4642A3782F500F61F63 /* Language.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Language.xcconfig; sourceTree = ""; }; 60 | 056CA4652A3782F500F61F63 /* General.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = General.xcconfig; sourceTree = ""; }; 61 | 056CA4662A3782F500F61F63 /* Search-Paths.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Search-Paths.xcconfig"; sourceTree = ""; }; 62 | 056CA4672A3782F500F61F63 /* Apple-LLVM.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Apple-LLVM.xcconfig"; sourceTree = ""; }; 63 | 056CA46A2A3782F500F61F63 /* Modules.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Modules.xcconfig; sourceTree = ""; }; 64 | 056CA46B2A3782F500F61F63 /* Objective-C.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Objective-C.xcconfig"; sourceTree = ""; }; 65 | 056CA46C2A3782F500F61F63 /* C++.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "C++.xcconfig"; sourceTree = ""; }; 66 | 056CA46D2A3782F500F61F63 /* Code-Generation.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Code-Generation.xcconfig"; sourceTree = ""; }; 67 | 056CA46E2A3782F500F61F63 /* Address-Sanitizer.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Address-Sanitizer.xcconfig"; sourceTree = ""; }; 68 | 056CA46F2A3782F500F61F63 /* Language.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Language.xcconfig; sourceTree = ""; }; 69 | 056CA4702A3782F500F61F63 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 70 | 056CA4712A3782F500F61F63 /* Undefined-Behavior-Sanitizer.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Undefined-Behavior-Sanitizer.xcconfig"; sourceTree = ""; }; 71 | 056CA4722A3782F500F61F63 /* Warning-Policies.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Warning-Policies.xcconfig"; sourceTree = ""; }; 72 | 056CA4742A3782F500F61F63 /* Objective-C-ARC.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Objective-C-ARC.xcconfig"; sourceTree = ""; }; 73 | 056CA4752A3782F500F61F63 /* Objective-C.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Objective-C.xcconfig"; sourceTree = ""; }; 74 | 056CA4762A3782F500F61F63 /* C++.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "C++.xcconfig"; sourceTree = ""; }; 75 | 056CA4772A3782F500F61F63 /* All-Languages.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "All-Languages.xcconfig"; sourceTree = ""; }; 76 | 056CA4782A3782F500F61F63 /* Preprocessing.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Preprocessing.xcconfig; sourceTree = ""; }; 77 | 056CA4792A3782F500F61F63 /* Debug - Library.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Debug - Library.xcconfig"; sourceTree = ""; }; 78 | 056CA47A2A3782F500F61F63 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; 79 | 056CA47C2A3782F500F61F63 /* ccache-config.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "ccache-config.sh"; sourceTree = ""; }; 80 | 056CA47D2A3782F500F61F63 /* ccache.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = ccache.sh; sourceTree = ""; }; 81 | 056CA47F2A3782F500F61F63 /* FUNDING.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = FUNDING.yml; sourceTree = ""; }; 82 | 056CA4802A3782F500F61F63 /* Debug - zld.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Debug - zld.xcconfig"; sourceTree = ""; }; 83 | /* End PBXFileReference section */ 84 | 85 | /* Begin PBXFrameworksBuildPhase section */ 86 | 056CA4332A376F1C00F61F63 /* Frameworks */ = { 87 | isa = PBXFrameworksBuildPhase; 88 | buildActionMask = 2147483647; 89 | files = ( 90 | ); 91 | runOnlyForDeploymentPostprocessing = 0; 92 | }; 93 | /* End PBXFrameworksBuildPhase section */ 94 | 95 | /* Begin PBXGroup section */ 96 | 056CA42D2A376F1C00F61F63 = { 97 | isa = PBXGroup; 98 | children = ( 99 | 056CA4472A3782EA00F61F63 /* CODE_OF_CONDUCT.md */, 100 | 056CA4462A3782EA00F61F63 /* LICENSE */, 101 | 056CA4482A3782EA00F61F63 /* README.md */, 102 | 056CA4492A3782F500F61F63 /* xcconfig */, 103 | 056CA4382A376F1C00F61F63 /* dyld-cache-dump */, 104 | 056CA4372A376F1C00F61F63 /* Products */, 105 | ); 106 | sourceTree = ""; 107 | }; 108 | 056CA4372A376F1C00F61F63 /* Products */ = { 109 | isa = PBXGroup; 110 | children = ( 111 | 056CA4362A376F1C00F61F63 /* dyld-cache-dump */, 112 | ); 113 | name = Products; 114 | sourceTree = ""; 115 | }; 116 | 056CA4382A376F1C00F61F63 /* dyld-cache-dump */ = { 117 | isa = PBXGroup; 118 | children = ( 119 | 056CA4442A37747800F61F63 /* Arguments.swift */, 120 | 056CA4402A3772D600F61F63 /* Extractor.swift */, 121 | 056CA4392A376F1C00F61F63 /* main.swift */, 122 | 056CA4422A3772F400F61F63 /* String+LocalizedError.swift */, 123 | ); 124 | path = "dyld-cache-dump"; 125 | sourceTree = ""; 126 | }; 127 | 056CA4492A3782F500F61F63 /* xcconfig */ = { 128 | isa = PBXGroup; 129 | children = ( 130 | 056CA44A2A3782F500F61F63 /* CODE_OF_CONDUCT.md */, 131 | 056CA44B2A3782F500F61F63 /* Release - ccache.xcconfig */, 132 | 056CA44C2A3782F500F61F63 /* Common.xcconfig */, 133 | 056CA44D2A3782F500F61F63 /* Debug - ccache.xcconfig */, 134 | 056CA44E2A3782F500F61F63 /* Debug.xcconfig */, 135 | 056CA44F2A3782F500F61F63 /* Release.xcconfig */, 136 | 056CA4502A3782F500F61F63 /* README.md */, 137 | 056CA4512A3782F500F61F63 /* Release - Library.xcconfig */, 138 | 056CA4522A3782F500F61F63 /* Common */, 139 | 056CA4792A3782F500F61F63 /* Debug - Library.xcconfig */, 140 | 056CA47A2A3782F500F61F63 /* .gitignore */, 141 | 056CA47B2A3782F500F61F63 /* Scripts */, 142 | 056CA47E2A3782F500F61F63 /* .github */, 143 | 056CA4802A3782F500F61F63 /* Debug - zld.xcconfig */, 144 | ); 145 | name = xcconfig; 146 | path = Submodules/xcconfig; 147 | sourceTree = ""; 148 | }; 149 | 056CA4522A3782F500F61F63 /* Common */ = { 150 | isa = PBXGroup; 151 | children = ( 152 | 056CA4532A3782F500F61F63 /* Signing.xcconfig */, 153 | 056CA4542A3782F500F61F63 /* Architectures.xcconfig */, 154 | 056CA4552A3782F500F61F63 /* Static-Analyzer */, 155 | 056CA45D2A3782F500F61F63 /* Deployment.xcconfig */, 156 | 056CA45E2A3782F500F61F63 /* Build-Options.xcconfig */, 157 | 056CA45F2A3782F500F61F63 /* Swift-Compiler.xcconfig */, 158 | 056CA4602A3782F500F61F63 /* Static-Analyzer.xcconfig */, 159 | 056CA4612A3782F500F61F63 /* Swift-Compiler */, 160 | 056CA4662A3782F500F61F63 /* Search-Paths.xcconfig */, 161 | 056CA4672A3782F500F61F63 /* Apple-LLVM.xcconfig */, 162 | 056CA4682A3782F500F61F63 /* Apple-LLVM */, 163 | ); 164 | path = Common; 165 | sourceTree = ""; 166 | }; 167 | 056CA4552A3782F500F61F63 /* Static-Analyzer */ = { 168 | isa = PBXGroup; 169 | children = ( 170 | 056CA4562A3782F500F61F63 /* Issues.xcconfig */, 171 | 056CA4572A3782F500F61F63 /* Issues */, 172 | ); 173 | path = "Static-Analyzer"; 174 | sourceTree = ""; 175 | }; 176 | 056CA4572A3782F500F61F63 /* Issues */ = { 177 | isa = PBXGroup; 178 | children = ( 179 | 056CA4582A3782F500F61F63 /* Apple-APIs.xcconfig */, 180 | 056CA4592A3782F500F61F63 /* Generic-Issues.xcconfig */, 181 | 056CA45A2A3782F500F61F63 /* Security.xcconfig */, 182 | 056CA45B2A3782F500F61F63 /* Objective-C.xcconfig */, 183 | 056CA45C2A3782F500F61F63 /* Analysis-Policy.xcconfig */, 184 | ); 185 | path = Issues; 186 | sourceTree = ""; 187 | }; 188 | 056CA4612A3782F500F61F63 /* Swift-Compiler */ = { 189 | isa = PBXGroup; 190 | children = ( 191 | 056CA4622A3782F500F61F63 /* Warnings-Policies.xcconfig */, 192 | 056CA4632A3782F500F61F63 /* Code-Generation.xcconfig */, 193 | 056CA4642A3782F500F61F63 /* Language.xcconfig */, 194 | 056CA4652A3782F500F61F63 /* General.xcconfig */, 195 | ); 196 | path = "Swift-Compiler"; 197 | sourceTree = ""; 198 | }; 199 | 056CA4682A3782F500F61F63 /* Apple-LLVM */ = { 200 | isa = PBXGroup; 201 | children = ( 202 | 056CA4692A3782F500F61F63 /* Language */, 203 | 056CA46D2A3782F500F61F63 /* Code-Generation.xcconfig */, 204 | 056CA46E2A3782F500F61F63 /* Address-Sanitizer.xcconfig */, 205 | 056CA46F2A3782F500F61F63 /* Language.xcconfig */, 206 | 056CA4702A3782F500F61F63 /* Warnings.xcconfig */, 207 | 056CA4712A3782F500F61F63 /* Undefined-Behavior-Sanitizer.xcconfig */, 208 | 056CA4722A3782F500F61F63 /* Warning-Policies.xcconfig */, 209 | 056CA4732A3782F500F61F63 /* Warnings */, 210 | 056CA4782A3782F500F61F63 /* Preprocessing.xcconfig */, 211 | ); 212 | path = "Apple-LLVM"; 213 | sourceTree = ""; 214 | }; 215 | 056CA4692A3782F500F61F63 /* Language */ = { 216 | isa = PBXGroup; 217 | children = ( 218 | 056CA46A2A3782F500F61F63 /* Modules.xcconfig */, 219 | 056CA46B2A3782F500F61F63 /* Objective-C.xcconfig */, 220 | 056CA46C2A3782F500F61F63 /* C++.xcconfig */, 221 | ); 222 | path = Language; 223 | sourceTree = ""; 224 | }; 225 | 056CA4732A3782F500F61F63 /* Warnings */ = { 226 | isa = PBXGroup; 227 | children = ( 228 | 056CA4742A3782F500F61F63 /* Objective-C-ARC.xcconfig */, 229 | 056CA4752A3782F500F61F63 /* Objective-C.xcconfig */, 230 | 056CA4762A3782F500F61F63 /* C++.xcconfig */, 231 | 056CA4772A3782F500F61F63 /* All-Languages.xcconfig */, 232 | ); 233 | path = Warnings; 234 | sourceTree = ""; 235 | }; 236 | 056CA47B2A3782F500F61F63 /* Scripts */ = { 237 | isa = PBXGroup; 238 | children = ( 239 | 056CA47C2A3782F500F61F63 /* ccache-config.sh */, 240 | 056CA47D2A3782F500F61F63 /* ccache.sh */, 241 | ); 242 | path = Scripts; 243 | sourceTree = ""; 244 | }; 245 | 056CA47E2A3782F500F61F63 /* .github */ = { 246 | isa = PBXGroup; 247 | children = ( 248 | 056CA47F2A3782F500F61F63 /* FUNDING.yml */, 249 | ); 250 | path = .github; 251 | sourceTree = ""; 252 | }; 253 | /* End PBXGroup section */ 254 | 255 | /* Begin PBXNativeTarget section */ 256 | 056CA4352A376F1C00F61F63 /* dyld-cache-dump */ = { 257 | isa = PBXNativeTarget; 258 | buildConfigurationList = 056CA43D2A376F1C00F61F63 /* Build configuration list for PBXNativeTarget "dyld-cache-dump" */; 259 | buildPhases = ( 260 | 056CA4322A376F1C00F61F63 /* Sources */, 261 | 056CA4332A376F1C00F61F63 /* Frameworks */, 262 | 056CA4342A376F1C00F61F63 /* CopyFiles */, 263 | ); 264 | buildRules = ( 265 | ); 266 | dependencies = ( 267 | ); 268 | name = "dyld-cache-dump"; 269 | productName = "dyld-cache-extract"; 270 | productReference = 056CA4362A376F1C00F61F63 /* dyld-cache-dump */; 271 | productType = "com.apple.product-type.tool"; 272 | }; 273 | /* End PBXNativeTarget section */ 274 | 275 | /* Begin PBXProject section */ 276 | 056CA42E2A376F1C00F61F63 /* Project object */ = { 277 | isa = PBXProject; 278 | attributes = { 279 | BuildIndependentTargetsInParallel = 1; 280 | LastSwiftUpdateCheck = 1430; 281 | LastUpgradeCheck = 1430; 282 | TargetAttributes = { 283 | 056CA4352A376F1C00F61F63 = { 284 | CreatedOnToolsVersion = 14.3.1; 285 | }; 286 | }; 287 | }; 288 | buildConfigurationList = 056CA4312A376F1C00F61F63 /* Build configuration list for PBXProject "dyld-cache-dump" */; 289 | compatibilityVersion = "Xcode 14.0"; 290 | developmentRegion = en; 291 | hasScannedForEncodings = 0; 292 | knownRegions = ( 293 | en, 294 | Base, 295 | ); 296 | mainGroup = 056CA42D2A376F1C00F61F63; 297 | productRefGroup = 056CA4372A376F1C00F61F63 /* Products */; 298 | projectDirPath = ""; 299 | projectRoot = ""; 300 | targets = ( 301 | 056CA4352A376F1C00F61F63 /* dyld-cache-dump */, 302 | ); 303 | }; 304 | /* End PBXProject section */ 305 | 306 | /* Begin PBXSourcesBuildPhase section */ 307 | 056CA4322A376F1C00F61F63 /* Sources */ = { 308 | isa = PBXSourcesBuildPhase; 309 | buildActionMask = 2147483647; 310 | files = ( 311 | 056CA4452A37747800F61F63 /* Arguments.swift in Sources */, 312 | 056CA4412A3772D600F61F63 /* Extractor.swift in Sources */, 313 | 056CA4432A3772F400F61F63 /* String+LocalizedError.swift in Sources */, 314 | 056CA43A2A376F1C00F61F63 /* main.swift in Sources */, 315 | ); 316 | runOnlyForDeploymentPostprocessing = 0; 317 | }; 318 | /* End PBXSourcesBuildPhase section */ 319 | 320 | /* Begin XCBuildConfiguration section */ 321 | 056CA43B2A376F1C00F61F63 /* Debug */ = { 322 | isa = XCBuildConfiguration; 323 | baseConfigurationReference = 056CA44E2A3782F500F61F63 /* Debug.xcconfig */; 324 | buildSettings = { 325 | }; 326 | name = Debug; 327 | }; 328 | 056CA43C2A376F1C00F61F63 /* Release */ = { 329 | isa = XCBuildConfiguration; 330 | baseConfigurationReference = 056CA44F2A3782F500F61F63 /* Release.xcconfig */; 331 | buildSettings = { 332 | }; 333 | name = Release; 334 | }; 335 | 056CA43E2A376F1C00F61F63 /* Debug */ = { 336 | isa = XCBuildConfiguration; 337 | buildSettings = { 338 | PRODUCT_NAME = "$(TARGET_NAME)"; 339 | }; 340 | name = Debug; 341 | }; 342 | 056CA43F2A376F1C00F61F63 /* Release */ = { 343 | isa = XCBuildConfiguration; 344 | buildSettings = { 345 | PRODUCT_NAME = "$(TARGET_NAME)"; 346 | }; 347 | name = Release; 348 | }; 349 | /* End XCBuildConfiguration section */ 350 | 351 | /* Begin XCConfigurationList section */ 352 | 056CA4312A376F1C00F61F63 /* Build configuration list for PBXProject "dyld-cache-dump" */ = { 353 | isa = XCConfigurationList; 354 | buildConfigurations = ( 355 | 056CA43B2A376F1C00F61F63 /* Debug */, 356 | 056CA43C2A376F1C00F61F63 /* Release */, 357 | ); 358 | defaultConfigurationIsVisible = 0; 359 | defaultConfigurationName = Release; 360 | }; 361 | 056CA43D2A376F1C00F61F63 /* Build configuration list for PBXNativeTarget "dyld-cache-dump" */ = { 362 | isa = XCConfigurationList; 363 | buildConfigurations = ( 364 | 056CA43E2A376F1C00F61F63 /* Debug */, 365 | 056CA43F2A376F1C00F61F63 /* Release */, 366 | ); 367 | defaultConfigurationIsVisible = 0; 368 | defaultConfigurationName = Release; 369 | }; 370 | /* End XCConfigurationList section */ 371 | }; 372 | rootObject = 056CA42E2A376F1C00F61F63 /* Project object */; 373 | } 374 | --------------------------------------------------------------------------------