├── .azure-pipelines
├── analyze-and-test-template.yml
├── build-plcrashreporter-1ES.yml
├── build-template.yml
└── cocoapods-verification-template.yml
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── feature_request.md
│ └── problem_report.md
└── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── CHANGELOG.md
├── CrashReporter.xcodeproj
├── TemplateIcon.icns
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── xcshareddata
│ └── xcschemes
│ ├── CrashReporter Archive.xcscheme
│ ├── CrashReporter Documentation.xcscheme
│ ├── CrashReporter XCFramework.xcscheme
│ ├── CrashReporter iOS Framework.xcscheme
│ ├── CrashReporter iOS Universal.xcscheme
│ ├── CrashReporter iOS.xcscheme
│ ├── CrashReporter macOS Framework.xcscheme
│ ├── CrashReporter macOS Static Framework.xcscheme
│ ├── CrashReporter macOS.xcscheme
│ ├── CrashReporter tvOS Framework.xcscheme
│ ├── CrashReporter tvOS Universal.xcscheme
│ ├── CrashReporter tvOS.xcscheme
│ ├── CrashReporter.xcscheme
│ ├── DemoCrash iOS.xcscheme
│ ├── DemoCrash macOS.xcscheme
│ ├── DemoCrash tvOS.xcscheme
│ ├── Fuzz Testing.xcscheme
│ └── plcrashutil.xcscheme
├── Dependencies
├── cgmanifest.json
├── protobuf-c
│ ├── generate-pb-c.sh
│ └── protobuf-c
│ │ ├── protobuf-c.c
│ │ └── protobuf-c.h
└── protobuf.rb
├── Documentation
└── Crash Log Format
│ ├── IEEEtrantools.sty
│ └── PLCrashReportFormat.tex
├── Doxyfile
├── LICENSE
├── Other Sources
├── Crash Demo
│ └── main.m
├── Fuzz
│ └── fuzz-main.m
└── plcrashutil
│ └── main.m
├── PLCrashReporter.podspec
├── Package.swift
├── README.md
├── Resources
├── CrashReporter.exp
├── CrashReporter.modulemap
├── Default-568h@2x.png
├── DemoCrash-iOS-Info.plist
├── DemoCrash-iOS.entitlements
├── DemoCrash-macOS-Info.plist
├── DemoCrash-tvOS-Info.plist
├── Info.plist
├── PrivacyInfo.xcprivacy
├── Tests-Info.plist
├── Tests
│ ├── PLCrashAsyncCompactUnwindEncodingTests
│ │ ├── Makefile
│ │ ├── test.c
│ │ ├── test.ios
│ │ ├── test.macosx
│ │ └── test.sim
│ └── PLCrashAsyncDwarfEncodingTests
│ │ ├── Makefile
│ │ ├── README.txt
│ │ ├── build-regression-tests.sh
│ │ ├── regression-bins
│ │ ├── tbin.unwind_test_x86_64_disable_compact_frame.s.1
│ │ ├── tbin.unwind_test_x86_64_frame.s.2
│ │ ├── tbin.unwind_test_x86_64_frame.s.3
│ │ ├── tbin.unwind_test_x86_64_frame.s.4
│ │ ├── tbin.unwind_test_x86_64_frame.s.5
│ │ ├── tbin.unwind_test_x86_64_frameless.s.6
│ │ ├── tbin.unwind_test_x86_64_frameless.s.7
│ │ ├── tbin.unwind_test_x86_64_frameless_big.s.8
│ │ ├── tbin.unwind_test_x86_64_frameless_big.s.9
│ │ ├── tbin.unwind_test_x86_64_unusual.s.10
│ │ ├── tbin.unwind_test_x86_64_unusual.s.11
│ │ ├── tbin.unwind_test_x86_disable_compact_frame.s.12
│ │ ├── tbin.unwind_test_x86_frame.s.13
│ │ ├── tbin.unwind_test_x86_frame.s.14
│ │ ├── tbin.unwind_test_x86_frame.s.15
│ │ ├── tbin.unwind_test_x86_frame.s.16
│ │ ├── tbin.unwind_test_x86_frameless.s.17
│ │ ├── tbin.unwind_test_x86_frameless.s.18
│ │ ├── tbin.unwind_test_x86_frameless_big.s.19
│ │ ├── tbin.unwind_test_x86_frameless_big.s.20
│ │ ├── tbin.unwind_test_x86_unusual.s.21
│ │ └── tbin.unwind_test_x86_unusual.s.22
│ │ ├── regression
│ │ ├── unwind_test_main.c
│ │ ├── unwind_test_x86.s
│ │ ├── unwind_test_x86_64.s
│ │ ├── unwind_test_x86_64_disable_compact_frame.s
│ │ ├── unwind_test_x86_64_frame.s
│ │ ├── unwind_test_x86_64_frameless.s
│ │ ├── unwind_test_x86_64_frameless_big.s
│ │ ├── unwind_test_x86_64_unusual.s
│ │ ├── unwind_test_x86_disable_compact_frame.s
│ │ ├── unwind_test_x86_frame.s
│ │ ├── unwind_test_x86_frameless.s
│ │ ├── unwind_test_x86_frameless_big.s
│ │ └── unwind_test_x86_unusual.s
│ │ ├── test.c
│ │ ├── test.ios
│ │ ├── test.macosx
│ │ └── test.sim
└── fuzz_report.plcrash
├── SECURITY.md
├── Scripts
├── build-framework.sh
├── combine-frameworks.sh
├── combine-libraries.sh
├── combine-xcframework.sh
├── copy-products.sh
├── create-archive.sh
├── generate-documentation.sh
└── verify-modifications.sh
├── Source
├── CrashReporter.h
├── CrashReporter.m
├── CrashReporterFramework.m
├── PLCrashAsync.c
├── PLCrashAsync.h
├── PLCrashAsyncCompactUnwindEncoding.c
├── PLCrashAsyncCompactUnwindEncoding.h
├── PLCrashAsyncDwarfCFAState.cpp
├── PLCrashAsyncDwarfCFAState.hpp
├── PLCrashAsyncDwarfCFAStateEvaluation.cpp
├── PLCrashAsyncDwarfCIE.cpp
├── PLCrashAsyncDwarfCIE.hpp
├── PLCrashAsyncDwarfEncoding.cpp
├── PLCrashAsyncDwarfEncoding.hpp
├── PLCrashAsyncDwarfExpression.cpp
├── PLCrashAsyncDwarfExpression.hpp
├── PLCrashAsyncDwarfFDE.cpp
├── PLCrashAsyncDwarfFDE.hpp
├── PLCrashAsyncDwarfPrimitives.cpp
├── PLCrashAsyncDwarfPrimitives.hpp
├── PLCrashAsyncImageList.cpp
├── PLCrashAsyncImageList.h
├── PLCrashAsyncLinkedList.hpp
├── PLCrashAsyncMObject.c
├── PLCrashAsyncMObject.h
├── PLCrashAsyncMachExceptionInfo.c
├── PLCrashAsyncMachExceptionInfo.h
├── PLCrashAsyncMachOImage.c
├── PLCrashAsyncMachOImage.h
├── PLCrashAsyncMachOString.c
├── PLCrashAsyncMachOString.h
├── PLCrashAsyncObjCSection.h
├── PLCrashAsyncObjCSection.mm
├── PLCrashAsyncSignalInfo.c
├── PLCrashAsyncSignalInfo.h
├── PLCrashAsyncSymbolication.c
├── PLCrashAsyncSymbolication.h
├── PLCrashAsyncThread.c
├── PLCrashAsyncThread.h
├── PLCrashAsyncThread_arm.c
├── PLCrashAsyncThread_arm.h
├── PLCrashAsyncThread_current.S
├── PLCrashAsyncThread_current.c
├── PLCrashAsyncThread_current_defs.h
├── PLCrashAsyncThread_x86.c
├── PLCrashAsyncThread_x86.h
├── PLCrashCompatConstants.h
├── PLCrashFeatureConfig.h
├── PLCrashFrameCompactUnwind.c
├── PLCrashFrameCompactUnwind.h
├── PLCrashFrameDWARFUnwind.cpp
├── PLCrashFrameDWARFUnwind.h
├── PLCrashFrameStackUnwind.c
├── PLCrashFrameStackUnwind.h
├── PLCrashFrameWalker.c
├── PLCrashFrameWalker.h
├── PLCrashHostInfo.h
├── PLCrashHostInfo.m
├── PLCrashLogWriter.h
├── PLCrashLogWriter.m
├── PLCrashLogWriterEncoding.c
├── PLCrashLogWriterEncoding.h
├── PLCrashMachExceptionPort.h
├── PLCrashMachExceptionPort.m
├── PLCrashMachExceptionPortSet.h
├── PLCrashMachExceptionPortSet.m
├── PLCrashMachExceptionServer.h
├── PLCrashMachExceptionServer.m
├── PLCrashMacros.h
├── PLCrashNamespace.h
├── PLCrashProcessInfo.h
├── PLCrashProcessInfo.m
├── PLCrashReport.h
├── PLCrashReport.m
├── PLCrashReport.pb-c.c
├── PLCrashReport.pb-c.h
├── PLCrashReport.proto
├── PLCrashReportApplicationInfo.h
├── PLCrashReportApplicationInfo.m
├── PLCrashReportBinaryImageInfo.h
├── PLCrashReportBinaryImageInfo.m
├── PLCrashReportExceptionInfo.h
├── PLCrashReportExceptionInfo.m
├── PLCrashReportFormatter.h
├── PLCrashReportMachExceptionInfo.h
├── PLCrashReportMachExceptionInfo.m
├── PLCrashReportMachineInfo.h
├── PLCrashReportMachineInfo.m
├── PLCrashReportProcessInfo.h
├── PLCrashReportProcessInfo.m
├── PLCrashReportProcessorInfo.h
├── PLCrashReportProcessorInfo.m
├── PLCrashReportRegisterInfo.h
├── PLCrashReportRegisterInfo.m
├── PLCrashReportSignalInfo.h
├── PLCrashReportSignalInfo.m
├── PLCrashReportStackFrameInfo.h
├── PLCrashReportStackFrameInfo.m
├── PLCrashReportSymbolInfo.h
├── PLCrashReportSymbolInfo.m
├── PLCrashReportSystemInfo.h
├── PLCrashReportSystemInfo.m
├── PLCrashReportTextFormatter.h
├── PLCrashReportTextFormatter.m
├── PLCrashReportThreadInfo.h
├── PLCrashReportThreadInfo.m
├── PLCrashReporter.h
├── PLCrashReporter.m
├── PLCrashReporterConfig.h
├── PLCrashReporterConfig.m
├── PLCrashReporterNSError.h
├── PLCrashReporterNSError.m
├── PLCrashSignalHandler.h
├── PLCrashSignalHandler.mm
├── PLCrashSysctl.c
├── PLCrashSysctl.h
├── PLCrashUncaughtExceptionHandler.h
├── PLCrashUncaughtExceptionHandler.m
├── dwarf_opstream.cpp
├── dwarf_opstream.hpp
├── dwarf_private.h
└── dwarf_stack.hpp
├── Tests
├── Libunwind Regression Tests
│ ├── README.txt
│ ├── unwind_test_arm.S
│ ├── unwind_test_arm64.S
│ ├── unwind_test_arm64_frame.S
│ ├── unwind_test_arm64_frameless.S
│ ├── unwind_test_harness.c
│ ├── unwind_test_harness.h
│ ├── unwind_test_x86.S
│ ├── unwind_test_x86_64.S
│ ├── unwind_test_x86_64_disable_compact_frame.S
│ ├── unwind_test_x86_64_frame.S
│ ├── unwind_test_x86_64_frameless.S
│ ├── unwind_test_x86_64_frameless_big.S
│ ├── unwind_test_x86_64_unusual.S
│ ├── unwind_test_x86_disable_compact_frame.S
│ ├── unwind_test_x86_frame.S
│ ├── unwind_test_x86_frameless.S
│ ├── unwind_test_x86_frameless_big.S
│ └── unwind_test_x86_unusual.S
├── PLCrashAsyncCompactUnwindEncodingTests.m
├── PLCrashAsyncDwarfCFAStateEvaluationTests.mm
├── PLCrashAsyncDwarfCFAStateTests.mm
├── PLCrashAsyncDwarfCIETests.mm
├── PLCrashAsyncDwarfEncodingTests.mm
├── PLCrashAsyncDwarfExpressionTests.mm
├── PLCrashAsyncDwarfFDETests.mm
├── PLCrashAsyncDwarfPrimitivesTests.mm
├── PLCrashAsyncImageListTests.m
├── PLCrashAsyncLinkedListTests.mm
├── PLCrashAsyncMObjectTests.m
├── PLCrashAsyncMachExceptionInfoTests.m
├── PLCrashAsyncMachOImageTests.m
├── PLCrashAsyncMachOStringTests.m
├── PLCrashAsyncObjCSectionTests.m
├── PLCrashAsyncSignalInfoTests.m
├── PLCrashAsyncSymbolicationTests.m
├── PLCrashAsyncTests.m
├── PLCrashAsyncThreadTests.m
├── PLCrashFrameCompactUnwindTests.m
├── PLCrashFrameDWARFUnwindTests.m
├── PLCrashFrameStackUnwindTests.m
├── PLCrashFrameWalkerTests.m
├── PLCrashHostInfoTests.m
├── PLCrashLogWriterEncodingTests.m
├── PLCrashLogWriterEncodingTests.pb-c.c
├── PLCrashLogWriterEncodingTests.pb-c.h
├── PLCrashLogWriterEncodingTests.proto
├── PLCrashLogWriterTests.m
├── PLCrashMachExceptionPortSetTests.m
├── PLCrashMachExceptionPortTests.m
├── PLCrashMachExceptionServerTests.m
├── PLCrashProcessInfoTests.m
├── PLCrashReportTests.m
├── PLCrashReporterNSErrorTests.m
├── PLCrashReporterTests.m
├── PLCrashSignalHandlerTests.m
├── PLCrashSysctlTests.m
├── PLCrashTestCase.h
├── PLCrashTestCase.m
├── PLCrashTestThread.h
├── PLCrashTestThread.m
├── PLCrashTestThreadTests.m
├── PLCrashUncaughtExceptionHandlerTests.m
├── SenTestCompat.h
├── dwarf_encoding_test.h
├── dwarf_opstream_tests.mm
└── dwarf_stack_tests.mm
├── ThirdPartyNotices.txt
├── Tools
└── CrashViewer
│ ├── CrashReporterQuicklook
│ ├── CrashReporterQuicklook-Info.plist
│ ├── CrashReporterQuicklook-Prefix.pch
│ ├── GeneratePreviewForURL.m
│ ├── GenerateThumbnailForURL.c
│ ├── en.lproj
│ │ └── InfoPlist.strings
│ └── main.c
│ ├── CrashViewer.xcodeproj
│ └── project.pbxproj
│ └── CrashViewer
│ ├── CrashViewer-Info.plist
│ ├── CrashViewer-Prefix.pch
│ ├── Images.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
│ ├── PLAsyncTask.h
│ ├── PLAsyncTask.m
│ ├── PLCrashDocument.h
│ ├── PLCrashDocument.m
│ ├── PLCrashWindowController.h
│ ├── PLCrashWindowController.m
│ ├── PLProgressIndicatorController.h
│ ├── PLProgressIndicatorController.m
│ ├── PLProgressIndicatorController.xib
│ ├── en.lproj
│ ├── Credits.rtf
│ ├── InfoPlist.strings
│ ├── MainMenu.xib
│ └── PLCrashWindow.xib
│ └── main.m
└── include
├── CrashReporter.h
├── PLCrashFeatureConfig.h
├── PLCrashMacros.h
├── PLCrashNamespace.h
├── PLCrashReport.h
├── PLCrashReportApplicationInfo.h
├── PLCrashReportBinaryImageInfo.h
├── PLCrashReportExceptionInfo.h
├── PLCrashReportFormatter.h
├── PLCrashReportMachExceptionInfo.h
├── PLCrashReportMachineInfo.h
├── PLCrashReportProcessInfo.h
├── PLCrashReportProcessorInfo.h
├── PLCrashReportRegisterInfo.h
├── PLCrashReportSignalInfo.h
├── PLCrashReportStackFrameInfo.h
├── PLCrashReportSymbolInfo.h
├── PLCrashReportSystemInfo.h
├── PLCrashReportTextFormatter.h
├── PLCrashReportThreadInfo.h
├── PLCrashReporter.h
└── PLCrashReporterConfig.h
/.azure-pipelines/analyze-and-test-template.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | - name: "platforms"
3 | type: "object"
4 |
5 | stages:
6 | - stage: "analyze"
7 | dependsOn:
8 | jobs:
9 | - ${{ each platform in parameters.platforms }}:
10 | - job:
11 | displayName: "${{ format('CrashReporter {0} Analyze and Test', platform) }}"
12 | variables:
13 | XCODE_PATH: "/Applications/Xcode_14.3.1.app/Contents/Developer"
14 | templateContext:
15 | outputs:
16 | - output: "pipelineArtifact"
17 | displayName: "Publish Diagnostic Reports"
18 | condition: "failed()"
19 | targetPath: "/Users/runner/Library/Logs/DiagnosticReports"
20 | artifactName: "Test Diagnostic Reports"
21 | sbomEnabled: false
22 |
23 | steps:
24 | - checkout: "self"
25 |
26 | - task: "Xcode@5"
27 | displayName: "Analyze"
28 | inputs:
29 | actions: "analyze"
30 | configuration: "Debug"
31 | xcodeVersion: "specifyPath"
32 | xcodeDeveloperDir: "$(XCODE_PATH)"
33 | xcWorkspacePath: "CrashReporter.xcodeproj"
34 | ${{ if eq(platform, 'MacCatalyst') }}:
35 | scheme: "CrashReporter iOS"
36 | destinationPlatformOption: "macOS"
37 | ${{ if ne(platform, 'MacCatalyst') }}:
38 | scheme: "CrashReporter ${{ platform }}"
39 | destinationPlatformOption: "${{ platform }}"
40 | ${{ if eq(platform, 'iOS') }}:
41 | destinationSimulators: "iPhone 11"
42 | ${{ if eq(platform, 'tvOS') }}:
43 | destinationSimulators: "Apple TV"
44 |
45 | - task: "Xcode@5"
46 | displayName: "Test"
47 | inputs:
48 | actions: "test"
49 | configuration: "Debug"
50 | xcodeVersion: "specifyPath"
51 | xcodeDeveloperDir: "$(XCODE_PATH)"
52 | xcWorkspacePath: "CrashReporter.xcodeproj"
53 | ${{ if eq(platform, 'MacCatalyst') }}:
54 | scheme: "CrashReporter iOS"
55 | destinationPlatformOption: "macOS"
56 | ${{ if ne(platform, 'MacCatalyst') }}:
57 | scheme: "CrashReporter ${{ platform }}"
58 | destinationPlatformOption: "${{ platform }}"
59 | ${{ if eq(platform, 'iOS') }}:
60 | destinationSimulators: "iPhone 11"
61 | ${{ if eq(platform, 'tvOS') }}:
62 | destinationSimulators: "Apple TV"
63 | publishJUnitResults: true
64 | timeoutInMinutes: 10
65 |
--------------------------------------------------------------------------------
/.azure-pipelines/build-plcrashreporter-1ES.yml:
--------------------------------------------------------------------------------
1 | trigger:
2 | - "master"
3 | pr:
4 | - "master"
5 |
6 | variables:
7 | Configuration: "Release"
8 | SDK: ""
9 | XCODE_PATH: "/Applications/Xcode_14.3.1.app/Contents/Developer"
10 |
11 | resources:
12 | repositories:
13 | - repository: "1ESPipelineTemplates"
14 | type: "git"
15 | name: "1ESPipelineTemplates/1ESPipelineTemplates"
16 | ref: "refs/tags/release"
17 |
18 | extends:
19 | ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/master') }}:
20 | template: "v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates"
21 | ${{ else }}:
22 | template: "v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates"
23 | parameters:
24 | pool:
25 | name: "Azure Pipelines"
26 | image: "macos-13"
27 | os: "macOS"
28 | customBuildTags:
29 | - "ES365AIMigrationTooling-BulkMigrated"
30 | sdl:
31 | sourceAnalysisPool: "1ES-PT-Windows-2022"
32 | stages:
33 | - template: "./build-template.yml@self"
34 | - template: "./analyze-and-test-template.yml@self"
35 | parameters:
36 | platforms: [iOS, macOS, tvOS, MacCatalyst]
37 | - template: "./cocoapods-verification-template.yml@self"
38 |
39 | - stage: "APIScan"
40 | dependsOn: "build"
41 | pool:
42 | name: "1ES-PT-Windows-2022"
43 | os: "windows"
44 | variables:
45 | "agent.source.skip": true
46 | jobs:
47 | - job: "APIScan"
48 | steps:
49 | - task: "DownloadPipelineArtifact@2"
50 | displayName: "Download Pipeline Artifacts for APIScan"
51 | inputs:
52 | artifactName: "Release"
53 | targetPath: "$(Agent.BuildDirectory)/Release"
54 | - task: "AzureKeyVault@2"
55 | inputs:
56 | azureSubscription: "AC - Dev Infra & Build Pool"
57 | KeyVaultName: "mobile-center-sdk"
58 | SecretsFilter: "appcenter-sdk-managed-identity-clientid"
59 | RunAsPreJob: false
60 |
61 | - task: "APIScan@2"
62 | displayName: "Run APIScan"
63 | inputs:
64 | softwareFolder: "$(Agent.BuildDirectory)/Release"
65 | softwareName: "plcrashreporter"
66 | softwareVersionNum: "$(Build.BuildId)"
67 | isLargeApp: false
68 | toolVersion: "Latest"
69 | verbosityLevel: "verbose"
70 | condition: "and(succeeded(), ne(variables['DisableAPIScan'], 'true'))"
71 | env:
72 | AzureServicesAuthConnectionString: "runAs=App;AppId=$(appcenter-sdk-managed-identity-clientid)"
73 |
--------------------------------------------------------------------------------
/.azure-pipelines/cocoapods-verification-template.yml:
--------------------------------------------------------------------------------
1 | stages:
2 | - stage: "cocoapods_verification"
3 | displayName: "CocoaPods Verification"
4 | dependsOn: "build"
5 | jobs:
6 | - job: "lint"
7 | displayName: "CocoaPods Lint Check"
8 | variables:
9 | XCODE_VERSION: "14.3.1"
10 | steps:
11 | - checkout: "none"
12 |
13 | - task: "Bash@3"
14 | displayName: "Switch Xcode to ${XCODE_PATH}"
15 | inputs:
16 | targetType: "inline"
17 | script: |
18 | sudo xcode-select --switch ${XCODE_PATH}
19 |
20 | - task: "DownloadPipelineArtifact@2"
21 | displayName: "Download 'Info' Pipeline Artifact"
22 | inputs:
23 | artifactName: "Info"
24 | targetPath: "$(Agent.BuildDirectory)/Info"
25 |
26 | - task: "DownloadPipelineArtifact@2"
27 | displayName: "Download 'Release' Pipeline Artifact"
28 | inputs:
29 | artifactName: "Release"
30 | targetPath: "$(Agent.BuildDirectory)/Release"
31 |
32 | - task: "Bash@3"
33 | displayName: "Rename XCFramework Zip"
34 | inputs:
35 | targetType: "inline"
36 | script: |
37 | ZIP_NAME=$(find $(Agent.BuildDirectory)/Release -type f -name "PLCrashReporter-Static-*.xcframework.zip")
38 | mv $ZIP_NAME $(Agent.BuildDirectory)/Release/PLCrashReporter-Static.xcframework.zip
39 |
40 | - task: "Bash@3"
41 | displayName: "Patch Podspec to use local zip with PLCrashReporter"
42 | inputs:
43 | targetType: "inline"
44 | script: |
45 | ZIP_NAME=$(find $(Agent.BuildDirectory)/Release -type f -name "PLCrashReporter-Static-*.xcframework.zip")
46 | sed -i '' 's|:http *=> "https://github.com/microsoft/plcrashreporter/releases/download/#{spec.version}/PLCrashReporter-Static-#{spec.version}.xcframework.zip"|:http => "file:$(Agent.BuildDirectory)/Release/PLCrashReporter-Static.xcframework.zip"|' $(Agent.BuildDirectory)/Info/PLCrashReporter.podspec
47 |
48 | - task: "Bash@3"
49 | displayName: "CocoaPods Spec Lint Check"
50 | inputs:
51 | targetType: "inline"
52 | script: |
53 | pod spec lint $(Agent.BuildDirectory)/Info/PLCrashReporter.podspec --verbose
54 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @microsoft/appcenter-fte
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for the SDK
4 | title: ''
5 | labels: feature request
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/problem_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Problem report
3 | about: Report a problem using the SDK
4 | title: ''
5 | labels: support
6 | assignees: ''
7 |
8 | ---
9 |
10 | ### **Description**
11 |
12 | Please describe the issue you are facing using the SDK.
13 |
14 | ### **Repro Steps**
15 |
16 | Please list the steps used to reproduce your issue.
17 |
18 | 1.
19 | 2.
20 |
21 | ### **Details**
22 |
23 | 1. Which SDK version are you using?
24 | 2. Which OS version did you experience the issue on?
25 | 3. Which CocoaPods/Carthage/Xcode version are you using?
26 | 4. What device version did you see this error on? Were you using an emulator or a physical device?
27 | 5. What language are you using?
28 | - [ ] Objective C
29 | - [ ] Swift
30 | 6. What third party libraries are you using?
31 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
7 |
8 | Things to consider before you submit the PR:
9 |
10 | * [ ] Has `CHANGELOG.md` been updated?
11 | * [ ] Are tests passing locally?
12 | * [ ] Are the files formatted correctly?
13 | * [ ] Did you add unit tests?
14 | * [ ] Did you test your change with the sample apps?
15 |
16 | ## Description
17 |
18 | A few sentences describing the overall goals of the pull request.
19 |
20 | ## Related PRs or issues
21 |
22 | List related PRs and other issues.
23 |
24 | ## Misc
25 |
26 | Add what's missing, notes on what you tested, additional thoughts or questions.
27 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # App Code
2 | **/.idea/
3 | **/.idea/**
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 | Documentation/API/
9 |
10 | ## Various settings
11 | *.pbxuser
12 | !default.pbxuser
13 | *.mode1v3
14 | !default.mode1v3
15 | *.mode2v3
16 | !default.mode2v3
17 | *.perspectivev3
18 | !default.perspectivev3
19 | xcuserdata/
20 |
21 | ## Other
22 | /debug.txt
23 | *.moved-aside
24 | *.xccheckout
25 | *.xcscmblueprint
26 |
27 | ## Obj-C/Swift specific
28 | *.hmap
29 | *.ipa
30 | *.dSYM.zip
31 | *.dSYM
32 |
33 | # Mac
34 | .DS_Store
35 |
--------------------------------------------------------------------------------
/CrashReporter.xcodeproj/TemplateIcon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/CrashReporter.xcodeproj/TemplateIcon.icns
--------------------------------------------------------------------------------
/CrashReporter.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/CrashReporter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/CrashReporter.xcodeproj/xcshareddata/xcschemes/CrashReporter XCFramework.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
57 |
58 |
59 |
60 |
62 |
63 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/CrashReporter.xcodeproj/xcshareddata/xcschemes/CrashReporter macOS Static Framework.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
57 |
58 |
59 |
60 |
62 |
63 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/CrashReporter.xcodeproj/xcshareddata/xcschemes/CrashReporter.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
57 |
58 |
59 |
60 |
62 |
63 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/Dependencies/cgmanifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/component-detection-manifest.json",
3 | "Registrations": [
4 | {
5 | "component": {
6 | "type": "git",
7 | "git": {
8 | "name": "protobuf-c",
9 | "repositoryUrl": "https://github.com/protobuf-c/protobuf-c.git",
10 | "commitHash": "f224ab2eeb648a818eb20687d7150a285442c907"
11 | }
12 | }
13 | }
14 | ],
15 | "Version": 1
16 | }
17 |
--------------------------------------------------------------------------------
/Dependencies/protobuf-c/generate-pb-c.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | cd "$(dirname "$0")/../../Source/" && protoc-c --c_out=. "PLCrashReport.proto" && cd "../Tests/" && protoc-c --c_out=. "PLCrashLogWriterEncodingTests.proto"
--------------------------------------------------------------------------------
/Documentation/Crash Log Format/PLCrashReportFormat.tex:
--------------------------------------------------------------------------------
1 | \documentclass[11pt]{article}
2 | \usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots.
3 | \geometry{letterpaper} % ... or a4paper or a5paper or ...
4 | %\geometry{landscape} % Activate for for rotated page geometry
5 | %\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent
6 | \usepackage{graphicx}
7 | \usepackage{amssymb}
8 | \usepackage{epstopdf}
9 | \usepackage[retainorgcmds]{IEEEtrantools} % So we can use IEEE's handy LaTeX tools
10 |
11 | \usepackage{color}
12 | \definecolor{SubtleURL}{cmyk}{1,0,0,1}
13 |
14 | \usepackage[pdftitle={Landon Fuller},
15 | pdfauthor={Plausible Labs Cooperative, Inc.},
16 | pdfsubject={Plausible Crash Log Format},
17 | pdfkeywords={},
18 | colorlinks=true,
19 | linkcolor=SubtleURL,
20 | citecolor=SubtleURL]{hyperref}
21 | \DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png}
22 |
23 | \title{Crash Log Format (DRAFT)}
24 | \author{Plausible Labs Cooperative, Inc.}
25 | %\date{} % Activate to display a given date or no date
26 |
27 | % Terms
28 | \newcommand{\term}{\emph}
29 |
30 | % Spacing
31 | \parskip .5em
32 | \parindent 0em
33 |
34 | \begin{document}
35 | \maketitle
36 | \tableofcontents
37 |
38 | \section{Introduction}
39 |
40 | \section{Notational Conventions}
41 |
42 | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119\cite{RFC2119}
43 |
44 | \begin{thebibliography}{99}
45 | \bibitem{RFC2119} Bradner, S., ``Key words for use in RFCs to Indicate Requirement Levels'', BCP 14, RFC 2119, March 1997.
46 | \end{thebibliography}
47 |
48 |
49 | \end{document}
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Except as noted below, PLCrashReporter is provided under the
2 | following license:
3 |
4 | Copyright (c) Microsoft Corporation.
5 | Copyright (c) 2008 - 2014 Plausible Labs Cooperative, Inc.
6 | All rights reserved.
7 |
8 | Permission is hereby granted, free of charge, to any person
9 | obtaining a copy of this software and associated documentation
10 | files (the "Software"), to deal in the Software without
11 | restriction, including without limitation the rights to use,
12 | copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | copies of the Software, and to permit persons to whom the
14 | Software is furnished to do so, subject to the following
15 | conditions:
16 |
17 | The above copyright notice and this permission notice shall be
18 | included in all copies or substantial portions of the Software.
19 |
20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 | OTHER DEALINGS IN THE SOFTWARE.
28 |
29 | Additional contributions have been made under the same license terms
30 | as above, with copyright held by their respective authors:
31 |
32 | Damian Morris
33 | Copyright (c) 2010 MOSO Corporation, Pty Ltd.
34 | All rights reserved.
35 |
36 | HockeyApp/Bitstadium
37 | Copyright (c) 2012 HockeyApp, Bit Stadium GmbH.
38 | All rights reserved.
39 |
40 | The protobuf-c library, as well as the PLCrashLogWriterEncoding.c
41 | file are licensed as follows:
42 |
43 | Copyright 2008, Dave Benson.
44 |
45 | Licensed under the Apache License, Version 2.0 (the "License");
46 | you may not use this file except in compliance with
47 | the License. You may obtain a copy of the License
48 | at http://www.apache.org/licenses/LICENSE-2.0 Unless
49 | required by applicable law or agreed to in writing,
50 | software distributed under the License is distributed on
51 | an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
52 | KIND, either express or implied. See the License for the
53 | specific language governing permissions and limitations
54 | under the License.
55 |
--------------------------------------------------------------------------------
/Other Sources/Fuzz/fuzz-main.m:
--------------------------------------------------------------------------------
1 | /*
2 | * fuzz-main.c
3 | * CrashReporter
4 | *
5 | * Created by Landon Fuller on 3/6/09.
6 | * Copyright 2009 Plausible Labs Cooperative, Inc.. All rights reserved.
7 | */
8 |
9 | #import
10 |
11 | int main (int argc, char *argv[]) {
12 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
13 | NSError *error;
14 |
15 | if (argc < 2)
16 | return 1;
17 |
18 | /* Try to open and decode a crash report passed as the second argument */
19 | NSString *file = [NSString stringWithUTF8String: argv[1]];
20 | NSData *data = [NSData dataWithContentsOfFile: file];
21 | if (data == nil) {
22 | NSLog(@"Could not load crash report data from %@", file);
23 | exit(1);
24 | }
25 |
26 | PLCrashReport *report = [[PLCrashReport alloc] initWithData: data error: &error];
27 | if (report)
28 | [report release];
29 |
30 | [pool release];
31 | }
32 |
--------------------------------------------------------------------------------
/PLCrashReporter.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |spec|
2 | spec.cocoapods_version = '>= 1.10'
3 | spec.name = 'PLCrashReporter'
4 | spec.version = '1.12.0'
5 | spec.summary = 'Reliable, open-source crash reporting for iOS, macOS and tvOS.'
6 | spec.description = 'PLCrashReporter is a reliable open source library that provides an in-process live crash reporting framework for use on iOS, macOS and tvOS. The library detects crashes and generates reports to help your investigation and troubleshooting with the information of application, system, process, thread, etc. as well as stack traces.'
7 |
8 | spec.homepage = 'https://github.com/microsoft/plcrashreporter'
9 | spec.license = { :type => 'MIT', :file => 'LICENSE.txt' }
10 | spec.authors = { 'Microsoft' => 'appcentersdk@microsoft.com' }
11 |
12 | spec.source = { :http => "https://github.com/microsoft/plcrashreporter/releases/download/#{spec.version}/PLCrashReporter-Static-#{spec.version}.xcframework.zip",
13 | :flatten => true }
14 |
15 | spec.resource_bundle = { 'PLCrashReporter' => 'CrashReporter.xcframework/PrivacyInfo.xcprivacy' }
16 |
17 | spec.ios.deployment_target = '12.0'
18 | spec.osx.deployment_target = '11.5'
19 | spec.tvos.deployment_target = '12.0'
20 | spec.vendored_frameworks = "CrashReporter.xcframework"
21 | spec.libraries = 'c++'
22 | spec.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-lc++' }
23 | end
24 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.3
2 |
3 | import PackageDescription
4 |
5 | let package = Package(
6 | name: "PLCrashReporter",
7 | defaultLocalization: "en",
8 | platforms: [
9 | .iOS(.v11),
10 | .macOS(.v10_10),
11 | .tvOS(.v11)
12 | ],
13 | products: [
14 | .library(name: "CrashReporter", targets: ["CrashReporter"])
15 | ],
16 | targets: [
17 | .target(
18 | name: "CrashReporter",
19 | path: "",
20 | exclude: [
21 | "Source/dwarf_opstream.hpp",
22 | "Source/dwarf_stack.hpp",
23 | "Source/PLCrashAsyncDwarfCFAState.hpp",
24 | "Source/PLCrashAsyncDwarfCIE.hpp",
25 | "Source/PLCrashAsyncDwarfEncoding.hpp",
26 | "Source/PLCrashAsyncDwarfExpression.hpp",
27 | "Source/PLCrashAsyncDwarfFDE.hpp",
28 | "Source/PLCrashAsyncDwarfPrimitives.hpp",
29 | "Source/PLCrashAsyncLinkedList.hpp",
30 | "Source/PLCrashReport.proto",
31 | "Tools/CrashViewer/",
32 | "Other Sources/Crash Demo/",
33 | "Dependencies/protobuf-c/generate-pb-c.sh",
34 | ],
35 | sources: [
36 | "Source",
37 | "Dependencies/protobuf-c"
38 | ],
39 | resources: [.process("Resources/PrivacyInfo.xcprivacy")],
40 | cSettings: [
41 | .define("PLCR_PRIVATE"),
42 | .define("PLCF_RELEASE_BUILD"),
43 | .define("PLCRASHREPORTER_PREFIX", to: ""),
44 | .define("SWIFT_PACKAGE"), // Should be defined by default, Xcode 11.1 workaround.
45 | .headerSearchPath("Dependencies/protobuf-c")
46 | ],
47 | linkerSettings: [
48 | .linkedFramework("Foundation")
49 | ]
50 | )
51 | ]
52 | )
53 |
--------------------------------------------------------------------------------
/Resources/CrashReporter.exp:
--------------------------------------------------------------------------------
1 | # CrashReporter.exp
2 | # CrashReporter
3 | #
4 | # Created by Landon Fuller on 12/5/08.
5 | # Copyright 2008-2013 Plausible Labs Cooperative, Inc. All rights reserved.
6 |
7 | # Prefix wild-cards are used to support the case where a third-party integrator
8 | # adds their own class prefix via PLCrashNamespace.h
9 |
10 | # PLCrashReporter
11 | _*PLCrashReporterException
12 | _*PLCrashReporterErrorDomain
13 |
14 | # Export all Objective-C classes; they're picked up by the runtime regardless.
15 | .objc_class_name_*PL*
16 | _OBJC_CLASS_$_*PL*
17 |
18 | # PLCrashReport
19 | _*PLCrashReportHostOperatingSystem
20 | _*PLCrashReportHostArchitecture
21 |
22 | # PLCrashSignalHandler functions. These are currently exposed to simplify unit testing,
23 | # though the entirity of the current internal set of symbols will likely be exposed as unsupported
24 | # API in a future release.
25 | _*plcrash_signal_handler
26 | _*PLCrashSignalHandlerForward
27 |
28 | # PLCrashMachExceptionServer functions. These are currently exposed to simplify unit testing,
29 | # though the entirity of the current internal set of symbols will likely be exposed as unsupported
30 | # API in a future release.
31 | _*PLCrashMachExceptionForward
32 |
--------------------------------------------------------------------------------
/Resources/CrashReporter.modulemap:
--------------------------------------------------------------------------------
1 | framework module CrashReporter {
2 | umbrella header "CrashReporter.h"
3 |
4 | export *
5 | module * { export * }
6 |
7 | link framework "Foundation"
8 | }
9 |
--------------------------------------------------------------------------------
/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/Resources/DemoCrash-iOS-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleDisplayName
8 | Demo Crash
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundlePackageType
16 | APPL
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1.0
21 | CFBundleShortVersionString
22 | 1.0
23 | UIFileSharingEnabled
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Resources/DemoCrash-iOS.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.network.client
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Resources/DemoCrash-macOS-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleDisplayName
8 | Demo Crash
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundlePackageType
16 | APPL
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1.0
21 | CFBundleShortVersionString
22 | 1.0
23 | LSApplicationCategoryType
24 | public.app-category.developer-tools
25 | NSMainNibFile
26 | MainMenu
27 | NSPrincipalClass
28 | NSApplication
29 | UIFileSharingEnabled
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/Resources/DemoCrash-tvOS-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleDisplayName
8 | Demo Crash
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundlePackageType
16 | APPL
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1.0
21 | CFBundleShortVersionString
22 | 1.0
23 | UIFileSharingEnabled
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | FMWK
19 | CFBundleShortVersionString
20 | $(CURRENT_PROJECT_VERSION)
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | $(CURRENT_PROJECT_VERSION)
25 | NSPrincipalClass
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Resources/PrivacyInfo.xcprivacy:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrivacyTracking
6 |
7 | NSPrivacyTrackingDomains
8 |
9 | NSPrivacyAccessedAPITypes
10 |
11 | NSPrivacyCollectedDataTypes
12 |
13 |
14 | NSPrivacyCollectedDataType
15 | NSPrivacyCollectedDataTypeCrashData
16 | NSPrivacyCollectedDataTypeLinked
17 |
18 | NSPrivacyCollectedDataTypeTracking
19 |
20 | NSPrivacyCollectedDataTypePurposes
21 |
22 | NSPrivacyCollectedDataTypePurposeAppFunctionality
23 |
24 |
25 |
26 | NSPrivacyCollectedDataType
27 | NSPrivacyCollectedDataTypeOtherDiagnosticData
28 | NSPrivacyCollectedDataTypeLinked
29 |
30 | NSPrivacyCollectedDataTypeTracking
31 |
32 | NSPrivacyCollectedDataTypePurposes
33 |
34 | NSPrivacyCollectedDataTypePurposeAppFunctionality
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/Resources/Tests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleSignature
16 | ????
17 | CFBundleVersion
18 | 1.0
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncCompactUnwindEncodingTests/Makefile:
--------------------------------------------------------------------------------
1 | DEVELOPER?= $(shell xcode-select -print-path)
2 | PLATFORMS?= $(DEVELOPER)/Platforms/
3 | CFLAGS?= -Os -std=c99
4 | LDFLAGS?= -dynamiclib
5 |
6 | DEVICE_SDK?= iPhoneOS7.0
7 | DEVICE_PLATFORM?= $(PLATFORMS)/iPhoneOS.platform
8 | DEVICE_ROOT?= $(DEVICE_PLATFORM)/Developer/SDKs/$(DEVICE_SDK).sdk
9 | DEVICE_CC?= $(shell xcrun -sdk `echo ${DEVICE_SDK} | tr '[A-Z]' '[a-z]'` -f clang)
10 | DEVICE_CFLAGS?= -arch armv7 -arch armv7s -arch arm64 -isysroot "$(DEVICE_ROOT)" -gdwarf-2 -miphoneos-version-min=7.0 $(CFLAGS)
11 |
12 | SIM_SDK?= iPhoneSimulator6.1
13 | SIM_PLATFORM?= $(PLATFORMS)/iPhoneSimulator.platform
14 | SIM_ROOT?= $(SIM_PLATFORM)/Developer/SDKs/$(SIM_SDK).sdk
15 | SIM_CC?= $(shell xcrun -sdk `echo ${SIM_SDK} | tr '[A-Z]' '[a-z]'` -f clang)
16 | SIM_CFLAGS?= -arch i386 -isysroot "$(SIM_ROOT)" -mmacosx-version-min=10.6 -gdwarf-2 $(CFLAGS)
17 |
18 | MAC_SDK?= MacOSX10.8
19 | MAC_PLATFORM?= $(PLATFORMS)/MacOSX.platform
20 | MAC_ROOT?= $(MAC_PLATFORM)/Developer/SDKs/$(MAC_SDK).sdk
21 | MAC_CC?= $(shell xcrun -sdk `echo ${MAC_SDK} | tr '[A-Z]' '[a-z]'` -f clang)
22 | MAC_CFLAGS?= -arch x86_64 -arch i386 -isysroot "$(MAC_ROOT)" -mmacosx-version-min=10.6 -gdwarf-2 $(CFLAGS)
23 |
24 | IOS_OBJS= test-ios.o
25 | SIM_OBJS= test-sim.o
26 | MAC_OBJS= test-macosx.o
27 |
28 | PRODUCTS= $(IOS_PRODUCT) $(MAC_PRODUCT) $(SIM_PRODUCT)
29 | IOS_PRODUCT= test.ios
30 | SIM_PRODUCT= test.sim
31 | MAC_PRODUCT= test.macosx
32 |
33 | all: $(PRODUCTS)
34 |
35 | test-sim.o: test.c
36 | $(SIM_CC) $(SIM_CFLAGS) -c $< -o $@
37 |
38 | test-ios.o: test.c
39 | $(DEVICE_CC) $(DEVICE_CFLAGS) -c $< -o $@
40 |
41 | test-macosx.o: test.c
42 | $(MAC_CC) $(MAC_CFLAGS) -c $< -o $@
43 |
44 | $(MAC_PRODUCT): $(MAC_OBJS)
45 | $(MAC_CC) $(LDFLAGS) $(MAC_CFLAGS) $+ -o $@
46 |
47 | $(IOS_PRODUCT): $(IOS_OBJS)
48 | $(DEVICE_CC) $(LDFLAGS) $(DEVICE_CFLAGS) $+ -o $@
49 |
50 | $(SIM_PRODUCT): $(SIM_OBJS)
51 | $(SIM_CC) $(LDFLAGS) $(SIM_CFLAGS) $+ -o $@
52 |
53 | clean-objs:
54 | rm -f $(IOS_OBJS) $(MAC_OBJS) $(SIM_OBJS)
55 |
56 | clean: clean-objs
57 | rm -f $(PRODUCTS)
58 |
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncCompactUnwindEncodingTests/test.ios:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncCompactUnwindEncodingTests/test.ios
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncCompactUnwindEncodingTests/test.macosx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncCompactUnwindEncodingTests/test.macosx
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncCompactUnwindEncodingTests/test.sim:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncCompactUnwindEncodingTests/test.sim
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/Makefile:
--------------------------------------------------------------------------------
1 | DEVELOPER?= $(shell xcode-select -print-path)
2 | PLATFORMS?= $(DEVELOPER)/Platforms/
3 | CFLAGS?= -Os -std=c99
4 | LDFLAGS?= -dynamiclib
5 |
6 | DEVICE_SDK?= iPhoneOS6.1
7 | DEVICE_PLATFORM?= $(PLATFORMS)/iPhoneOS.platform
8 | DEVICE_ROOT?= $(DEVICE_PLATFORM)/Developer/SDKs/$(DEVICE_SDK).sdk
9 | DEVICE_CC?= $(shell xcrun -sdk `echo ${DEVICE_SDK} | tr '[A-Z]' '[a-z]'` -f clang)
10 | DEVICE_CFLAGS?= -arch armv7 -arch armv7s -isysroot "$(DEVICE_ROOT)" -gdwarf-2 -miphoneos-version-min=3.0 $(CFLAGS)
11 |
12 | SIM_SDK?= iPhoneSimulator6.1
13 | SIM_PLATFORM?= $(PLATFORMS)/iPhoneSimulator.platform
14 | SIM_ROOT?= $(SIM_PLATFORM)/Developer/SDKs/$(SIM_SDK).sdk
15 | SIM_CC?= $(shell xcrun -sdk `echo ${SIM_SDK} | tr '[A-Z]' '[a-z]'` -f clang)
16 | SIM_CFLAGS?= -arch i386 -isysroot "$(SIM_ROOT)" -mmacosx-version-min=10.6 -gdwarf-2 $(CFLAGS)
17 |
18 | MAC_SDK?= MacOSX10.8
19 | MAC_PLATFORM?= $(PLATFORMS)/MacOSX.platform
20 | MAC_ROOT?= $(MAC_PLATFORM)/Developer/SDKs/$(MAC_SDK).sdk
21 | MAC_CC?= $(shell xcrun -sdk `echo ${MAC_SDK} | tr '[A-Z]' '[a-z]'` -f clang)
22 | MAC_CFLAGS?= -arch x86_64 -arch i386 -isysroot "$(MAC_ROOT)" -mmacosx-version-min=10.6 -gdwarf-2 $(CFLAGS)
23 |
24 | IOS_OBJS= test-ios.o
25 | SIM_OBJS= test-sim.o
26 | MAC_OBJS= test-macosx.o
27 |
28 | PRODUCTS= $(IOS_PRODUCT) $(MAC_PRODUCT) $(SIM_PRODUCT)
29 | IOS_PRODUCT= test.ios
30 | SIM_PRODUCT= test.sim
31 | MAC_PRODUCT= test.macosx
32 |
33 | all: $(PRODUCTS)
34 |
35 | test-sim.o: test.c
36 | $(SIM_CC) $(SIM_CFLAGS) -c $< -o $@
37 |
38 | test-ios.o: test.c
39 | $(DEVICE_CC) $(DEVICE_CFLAGS) -c $< -o $@
40 |
41 | test-macosx.o: test.c
42 | $(MAC_CC) $(MAC_CFLAGS) -c $< -o $@
43 |
44 | $(MAC_PRODUCT): $(MAC_OBJS)
45 | $(MAC_CC) $(LDFLAGS) $(MAC_CFLAGS) $+ -o $@
46 |
47 | $(IOS_PRODUCT): $(IOS_OBJS)
48 | $(DEVICE_CC) $(LDFLAGS) $(DEVICE_CFLAGS) $+ -o $@
49 |
50 | $(SIM_PRODUCT): $(SIM_OBJS)
51 | $(SIM_CC) $(LDFLAGS) $(SIM_CFLAGS) $+ -o $@
52 |
53 | clean-objs:
54 | rm -f $(IOS_OBJS) $(MAC_OBJS) $(SIM_OBJS)
55 |
56 | clean: clean-objs
57 | rm -f $(PRODUCTS)
58 |
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/README.txt:
--------------------------------------------------------------------------------
1 | The regression test cases were extracted from Apple's libunwind-35.1, where they
2 | are used to validate Apple's compact frame and dwarf unwinding implementation.
3 |
4 | A custom build script (build-regression-tests.sh) may be used to regenerate
5 | the test binaries.
6 |
7 | The test cases themselves are licensed under libunwind's license:
8 |
9 | Copyright (c) 2008-2011 Apple Inc. All rights reserved.
10 |
11 | This file contains Original Code and/or Modifications of Original Code
12 | as defined in and that are subject to the Apple Public Source License
13 | Version 2.0 (the 'License'). You may not use this file except in
14 | compliance with the License. Please obtain a copy of the License at
15 | http://www.opensource.apple.com/apsl/ and read it before using this
16 | file.
17 |
18 | The Original Code and all software distributed under the License are
19 | distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 | EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 | INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 | FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 | Please see the License for the specific language governing rights and
24 | limitations under the License.
25 |
26 |
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/build-regression-tests.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # -----------------------------------------------------------------------
4 | # Copyright (c) 2010-2013, Plausible Labs Cooperative, Inc.
5 | #
6 | # Author: Landon Fuller
7 | #
8 | # Permission is hereby granted, free of charge, to any person obtaining
9 | # a copy of this software and associated documentation files (the
10 | # ``Software''), to deal in the Software without restriction, including
11 | # without limitation the rights to use, copy, modify, merge, publish,
12 | # distribute, sublicense, and/or sell copies of the Software, and to
13 | # permit persons to whom the Software is furnished to do so, subject to
14 | # the following conditions:
15 | #
16 | # The above copyright notice and this permission notice shall be included
17 | # in all copies or substantial portions of the Software.
18 | #
19 | # THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
20 | # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 | # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22 | # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23 | # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24 | # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26 | # DEALINGS IN THE SOFTWARE.
27 | # -----------------------------------------------------------------------
28 |
29 | process() {
30 | local file=$1
31 | local opts=`echo $2`
32 | local count=$3
33 |
34 | eval cc -o regression-bins/tbin.$file.${count} ${file} ${opts}
35 | }
36 |
37 | main() {
38 | local ifs_bak=$IFS
39 | local ifs_nl="
40 | "
41 |
42 | IFS=$ifs_nl
43 | local count="1"
44 | for opt in `grep -H "TEST-OPTIONS:" regression/*.s`; do
45 | IFS=$ifs_back
46 | local fname=`echo "${opt}" | awk -F : '{print $1}'`
47 | local opts=`echo "${opt}" | cut -d ' ' -f 3-`
48 | process "$fname" "${opts}" "${count}"
49 | IFS=$ifs_nl
50 | count=`expr $count + 1`
51 | done
52 | }
53 |
54 | main
55 |
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_disable_compact_frame.s.1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_disable_compact_frame.s.1
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frame.s.2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frame.s.2
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frame.s.3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frame.s.3
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frame.s.4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frame.s.4
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frame.s.5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frame.s.5
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frameless.s.6:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frameless.s.6
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frameless.s.7:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frameless.s.7
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frameless_big.s.8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frameless_big.s.8
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frameless_big.s.9:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_frameless_big.s.9
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_unusual.s.10:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_unusual.s.10
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_unusual.s.11:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_64_unusual.s.11
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_disable_compact_frame.s.12:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_disable_compact_frame.s.12
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frame.s.13:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frame.s.13
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frame.s.14:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frame.s.14
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frame.s.15:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frame.s.15
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frame.s.16:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frame.s.16
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frameless.s.17:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frameless.s.17
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frameless.s.18:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frameless.s.18
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frameless_big.s.19:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frameless_big.s.19
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frameless_big.s.20:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_frameless_big.s.20
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_unusual.s.21:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_unusual.s.21
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_unusual.s.22:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression-bins/tbin.unwind_test_x86_unusual.s.22
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression/unwind_test_main.c:
--------------------------------------------------------------------------------
1 |
2 | #include
3 | #include
4 | #include
5 |
6 | #include "libunwind.h"
7 |
8 | extern int unwind_tester(void*);
9 | extern void* unwind_tester_list[];
10 |
11 | int main()
12 | {
13 | // loop over all function pointers in unwind_tester_list
14 | // and call unwind_tester() on each one. If it returns
15 | // non-zero, then that test failed.
16 | void** p;
17 | for(p=unwind_tester_list; *p != NULL; ++p) {
18 | //fprintf(stderr, "unwind_tester(%p)\n", *p);
19 | if ( unwind_tester(*p) )
20 | return 1;
21 | }
22 | return 0;
23 | }
24 |
25 | // called by test function
26 | // we unwind through the test function
27 | // and resume at caller (unwind_tester)
28 | void uwind_to_main()
29 | {
30 | unw_cursor_t cursor;
31 | unw_context_t uc;
32 | unw_word_t offset;
33 |
34 | unw_getcontext(&uc);
35 | unw_init_local(&cursor, &uc);
36 | if ( unw_step(&cursor) > 0 ) {
37 | // now in test function
38 | if ( unw_step(&cursor) > 0 ) {
39 | // now in unwind_tester
40 | unw_resume(&cursor);
41 | }
42 | }
43 | // error if we got here
44 | exit(1);
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/regression/unwind_test_x86.s:
--------------------------------------------------------------------------------
1 |
2 | #
3 | # This is a generic function to test that restoring registers during unwinding work correctly.
4 | #
5 |
6 | .text
7 | .globl _unwind_tester
8 | _unwind_tester:
9 | LFB2:
10 | pushl %ebp
11 | LCFI0:
12 | movl %esp, %ebp
13 | LCFI1:
14 | subl $56, %esp
15 | LCFI2:
16 | movl %ebx, -12(%ebp)
17 | LCFI3:
18 | movl %esi, -8(%ebp)
19 | LCFI4:
20 | movl %edi, -4(%ebp)
21 | LCFI5:
22 | # load magic values into non-volatile registers
23 | movl $0x12344321, %ebx
24 | movl $0x56788765, %esi
25 | movl $0xABCDDCBA, %edi
26 | # call test function which will invoke unwinder which "returns" here
27 | call *8(%ebp)
28 | # verify that non-volatile registers still contain magic values
29 | cmpl $0x12344321, %ebx
30 | jne L2
31 | cmpl $0x56788765, %esi
32 | jne L2
33 | cmpl $0xABCDDCBA, %edi
34 | jne L2
35 | movl $0, %eax
36 | jmp L3
37 | L2: movl $1, %eax
38 | L3:
39 | movl -12(%ebp), %ebx
40 | movl -8(%ebp), %esi
41 | movl -4(%ebp), %edi
42 | leave
43 | ret
44 | LFE2:
45 |
46 |
47 |
48 | .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
49 | EH_frame1:
50 | .set L$set$0,LECIE1-LSCIE1
51 | .long L$set$0 # Length of Common Information Entry
52 | LSCIE1:
53 | .long 0x0 # CIE Identifier Tag
54 | .byte 0x1 # CIE Version
55 | .ascii "zR\0" # CIE Augmentation
56 | .byte 0x1 # uleb128 0x1; CIE Code Alignment Factor
57 | .byte 0x7c # sleb128 -4; CIE Data Alignment Factor
58 | .byte 0x8 # CIE RA Column
59 | .byte 0x1 # uleb128 0x1; Augmentation size
60 | .byte 0x10 # FDE Encoding (pcrel)
61 | .byte 0xc # DW_CFA_def_cfa
62 | .byte 0x5 # uleb128 0x5
63 | .byte 0x4 # uleb128 0x4
64 | .byte 0x88 # DW_CFA_offset, column 0x8
65 | .byte 0x1 # uleb128 0x1
66 | .align 2
67 | LECIE1:
68 |
69 | .globl _unwind_tester.eh
70 | _unwind_tester.eh:
71 | LSFDE1:
72 | .set L$set$1,LEFDE1-LASFDE1
73 | .long L$set$1 # FDE Length
74 | LASFDE1:
75 | .long LASFDE1-EH_frame1 # FDE CIE offset
76 | .long LFB2-. # FDE initial location
77 | .set L$set$2,LFE2-LFB2
78 | .long L$set$2 # FDE address range
79 | .byte 0x0 # uleb128 0x0; Augmentation size
80 | .byte 0x4 # DW_CFA_advance_loc4
81 | .set L$set$3,LCFI0-LFB2
82 | .long L$set$3
83 | .byte 0xe # DW_CFA_def_cfa_offset
84 | .byte 0x8 # uleb128 0x8
85 | .byte 0x84 # DW_CFA_offset, column 0x4
86 | .byte 0x2 # uleb128 0x2
87 | .byte 0x4 # DW_CFA_advance_loc4
88 | .set L$set$4,LCFI1-LCFI0
89 | .long L$set$4
90 | .byte 0xd # DW_CFA_def_cfa_register
91 | .byte 0x4 # uleb128 0x4
92 | .byte 0x4 # DW_CFA_advance_loc4
93 | .set L$set$5,LCFI5-LCFI1
94 | .long L$set$5
95 | .byte 0x87 # DW_CFA_offset, column 0x7
96 | .byte 0x3 # uleb128 0x3
97 | .byte 0x86 # DW_CFA_offset, column 0x6
98 | .byte 0x4 # uleb128 0x4
99 | .byte 0x83 # DW_CFA_offset, column 0x3
100 | .byte 0x5 # uleb128 0x5
101 | .align 2
102 | LEFDE1:
103 |
104 |
105 |
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/test.ios:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/test.ios
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/test.macosx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/test.macosx
--------------------------------------------------------------------------------
/Resources/Tests/PLCrashAsyncDwarfEncodingTests/test.sim:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/Tests/PLCrashAsyncDwarfEncodingTests/test.sim
--------------------------------------------------------------------------------
/Resources/fuzz_report.plcrash:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/plcrashreporter/8c61e5e38e9f737dd68512ed1ea5ab081244ad65/Resources/fuzz_report.plcrash
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## Security
4 |
5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
6 |
7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.
8 |
9 | ## Reporting Security Issues
10 |
11 | **Please do not report security vulnerabilities through public GitHub issues.**
12 |
13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).
14 |
15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).
16 |
17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc).
18 |
19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
20 |
21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
22 | * Full paths of source file(s) related to the manifestation of the issue
23 | * The location of the affected source code (tag/branch/commit or direct URL)
24 | * Any special configuration required to reproduce the issue
25 | * Step-by-step instructions to reproduce the issue
26 | * Proof-of-concept or exploit code (if possible)
27 | * Impact of the issue, including how an attacker might exploit the issue
28 |
29 | This information will help us triage your report more quickly.
30 |
31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.
32 |
33 | ## Preferred Languages
34 |
35 | We prefer all communications to be in English.
36 |
37 | ## Policy
38 |
39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Scripts/build-framework.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | # Builds the framework for the specified target.
5 | # Usage: build-framework.sh
6 | # Note: it must be run from Xcode's build phase.
7 |
8 | # Print only target name and configuration. Mimic Xcode output to make prettify tools happy.
9 | echo "=== BUILD TARGET $1 OF PROJECT ${PROJECT_NAME} WITH CONFIGURATION ${CONFIGURATION} ==="
10 |
11 | # OBJROOT must be customized to avoid conflicts with the current process.
12 | if [ "$2" == "maccatalyst" ]; then
13 | # Mac Catalyst is a special case - "destination" parameter must be used here.
14 | env -i "PATH=$PATH" xcodebuild \
15 | SYMROOT="${SYMROOT}" OBJROOT="${BUILT_PRODUCTS_DIR}" PROJECT_TEMP_DIR="${PROJECT_TEMP_DIR}" \
16 | ONLY_ACTIVE_ARCH=NO \
17 | -project "${PROJECT_NAME}.xcodeproj" -configuration "${CONFIGURATION}" \
18 | -scheme "$1" -destination 'platform=macOS,variant=Mac Catalyst'
19 | else
20 | env -i "PATH=$PATH" xcodebuild \
21 | SYMROOT="${SYMROOT}" OBJROOT="${BUILT_PRODUCTS_DIR}" PROJECT_TEMP_DIR="${PROJECT_TEMP_DIR}" \
22 | ONLY_ACTIVE_ARCH=NO \
23 | -project "${PROJECT_NAME}.xcodeproj" -configuration "${CONFIGURATION}" \
24 | -target "$1" -sdk "$2"
25 | fi
26 |
--------------------------------------------------------------------------------
/Scripts/combine-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 |
4 | # Combines frameworks for device and simulator into universal one.
5 | # Usage: combine-frameworks.sh