summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Object
diff options
context:
space:
mode:
authorRobert Widmann <devteam.codafi@gmail.com>2019-04-07 18:18:42 +0000
committerRobert Widmann <devteam.codafi@gmail.com>2019-04-07 18:18:42 +0000
commita51883cfab4ea36215549a58f29d65b862ef857c (patch)
tree33219c6d5c09392cd9b4bddf05b198d8fb14c80a /llvm/lib/Object
parentbad648a23e15829a7210cd194e3d3f3ea13a91f8 (diff)
downloadbcm5719-llvm-a51883cfab4ea36215549a58f29d65b862ef857c.tar.gz
bcm5719-llvm-a51883cfab4ea36215549a58f29d65b862ef857c.zip
[LLVM-C] Allow Access to the Type of a Binary
Summary: Add an accessor for the type of a binary file. Reviewers: whitequark, deadalnix Reviewed By: whitequark Subscribers: hiraditya, aheejin, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60366 llvm-svn: 357872
Diffstat (limited to 'llvm/lib/Object')
-rw-r--r--llvm/lib/Object/Object.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/llvm/lib/Object/Object.cpp b/llvm/lib/Object/Object.cpp
index f5bedfd7920..3a88477cea6 100644
--- a/llvm/lib/Object/Object.cpp
+++ b/llvm/lib/Object/Object.cpp
@@ -85,6 +85,52 @@ void LLVMDisposeBinary(LLVMBinaryRef BR) {
delete unwrap(BR);
}
+LLVMBinaryType LLVMBinaryGetType(LLVMBinaryRef BR) {
+ class BinaryTypeMapper final : public Binary {
+ public:
+ static LLVMBinaryType mapBinaryTypeToLLVMBinaryType(unsigned Kind) {
+ switch (Kind) {
+ case ID_Archive:
+ return LLVMBinaryTypeArchive;
+ case ID_MachOUniversalBinary:
+ return LLVMBinaryTypeMachOUniversalBinary;
+ case ID_COFFImportFile:
+ return LLVMBinaryTypeCOFFImportFile;
+ case ID_IR:
+ return LLVMBinaryTypeIR;
+ case ID_WinRes:
+ return LLVMBinaryTypeWinRes;
+ case ID_COFF:
+ return LLVMBinaryTypeCOFF;
+ case ID_ELF32L:
+ return LLVMBinaryTypeELF32L;
+ case ID_ELF32B:
+ return LLVMBinaryTypeELF32B;
+ case ID_ELF64L:
+ return LLVMBinaryTypeELF64L;
+ case ID_ELF64B:
+ return LLVMBinaryTypeELF64B;
+ case ID_MachO32L:
+ return LLVMBinaryTypeMachO32L;
+ case ID_MachO32B:
+ return LLVMBinaryTypeMachO32B;
+ case ID_MachO64L:
+ return LLVMBinaryTypeMachO64L;
+ case ID_MachO64B:
+ return LLVMBinaryTypeMachO64B;
+ case ID_Wasm:
+ return LLVMBinaryTypeWasm;
+ case ID_StartObjects:
+ case ID_EndObjects:
+ llvm_unreachable("Marker types are not valid binary kinds!");
+ default:
+ llvm_unreachable("Unknown binary kind!");
+ }
+ }
+ };
+ return BinaryTypeMapper::mapBinaryTypeToLLVMBinaryType(unwrap(BR)->getType());
+}
+
// ObjectFile creation
LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf) {
std::unique_ptr<MemoryBuffer> Buf(unwrap(MemBuf));
OpenPOWER on IntegriCloud