summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.h
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/platforms/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.h')
-rw-r--r--StoneIsland/platforms/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/StoneIsland/platforms/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.h b/StoneIsland/platforms/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.h
new file mode 100644
index 00000000..59b46055
--- /dev/null
+++ b/StoneIsland/platforms/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.h
@@ -0,0 +1,110 @@
+// Copyright 2019 Google
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#pragma once
+
+#include <mach-o/arch.h>
+#include <mach-o/loader.h>
+#include <sys/types.h>
+
+#include <CoreFoundation/CoreFoundation.h>
+
+struct FIRCLSMachOFile {
+ int fd;
+ size_t mappedSize;
+ void* mappedFile;
+};
+typedef struct FIRCLSMachOFile* FIRCLSMachOFileRef;
+
+struct FIRCLSMachOSlice {
+ const void* startAddress;
+ cpu_type_t cputype;
+ cpu_subtype_t cpusubtype;
+};
+typedef struct FIRCLSMachOSlice* FIRCLSMachOSliceRef;
+
+typedef struct {
+ uint32_t major;
+ uint32_t minor;
+ uint32_t bugfix;
+} FIRCLSMachOVersion;
+
+typedef struct {
+ uint64_t addr;
+ uint64_t size;
+ uint32_t offset;
+} FIRCLSMachOSection;
+
+typedef struct {
+ char segname[16];
+ uint64_t vmaddr;
+ uint64_t vmsize;
+} FIRCLSMachOSegmentCommand;
+
+typedef void (^FIRCLSMachOSliceIterator)(FIRCLSMachOSliceRef slice);
+typedef void (^FIRCLSMachOLoadCommandIterator)(uint32_t type,
+ uint32_t size,
+ const struct load_command* cmd);
+
+__BEGIN_DECLS
+
+bool FIRCLSMachOFileInitWithPath(FIRCLSMachOFileRef file, const char* path);
+bool FIRCLSMachOFileInitWithCurrent(FIRCLSMachOFileRef file);
+void FIRCLSMachOFileDestroy(FIRCLSMachOFileRef file);
+void FIRCLSMachOFileEnumerateSlices(FIRCLSMachOFileRef file, FIRCLSMachOSliceIterator block);
+struct FIRCLSMachOSlice FIRCLSMachOFileSliceWithArchitectureName(FIRCLSMachOFileRef file,
+ const char* name);
+
+void FIRCLSMachOEnumerateSlicesAtAddress(void* executableData, FIRCLSMachOSliceIterator block);
+void FIRCLSMachOSliceEnumerateLoadCommands(FIRCLSMachOSliceRef slice,
+ FIRCLSMachOLoadCommandIterator block);
+struct FIRCLSMachOSlice FIRCLSMachOSliceGetCurrent(void);
+struct FIRCLSMachOSlice FIRCLSMachOSliceWithHeader(void* machHeader);
+
+const char* FIRCLSMachOSliceGetExecutablePath(FIRCLSMachOSliceRef slice);
+const char* FIRCLSMachOSliceGetArchitectureName(FIRCLSMachOSliceRef slice);
+bool FIRCLSMachOSliceIs64Bit(FIRCLSMachOSliceRef slice);
+bool FIRCLSMachOSliceGetSectionByName(FIRCLSMachOSliceRef slice,
+ const char* segName,
+ const char* sectionName,
+ const void** ptr);
+bool FIRCLSMachOSliceInitSectionByName(FIRCLSMachOSliceRef slice,
+ const char* segName,
+ const char* sectionName,
+ FIRCLSMachOSection* section);
+void FIRCLSMachOSliceGetUnwindInformation(FIRCLSMachOSliceRef slice,
+ const void** ehFrame,
+ const void** unwindInfo);
+
+// load-command-specific calls for convenience
+
+// returns a pointer to the 16-byte UUID
+uint8_t const* FIRCLSMachOGetUUID(const struct load_command* cmd);
+const char* FIRCLSMachOGetDylibPath(const struct load_command* cmd);
+
+// return true if the header indicates the binary is encrypted
+bool FIRCLSMachOGetEncrypted(const struct load_command* cmd);
+
+// SDK minimums
+FIRCLSMachOVersion FIRCLSMachOGetMinimumOSVersion(const struct load_command* cmd);
+FIRCLSMachOVersion FIRCLSMachOGetLinkedSDKVersion(const struct load_command* cmd);
+
+// Helpers
+FIRCLSMachOSegmentCommand FIRCLSMachOGetSegmentCommand(const struct load_command* cmd);
+
+#ifdef __OBJC__
+NSString* FIRCLSMachONormalizeUUID(CFUUIDBytes* uuidBytes);
+NSString* FIRCLSMachOFormatVersion(FIRCLSMachOVersion* version);
+#endif
+__END_DECLS