aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/MachOObjectFile.cpp
diff options
context:
space:
mode:
authorShubham Sandeep Rastogi <srastogi22@apple.com>2021-11-17 15:05:58 -0800
committerShubham Sandeep Rastogi <srastogi22@apple.com>2022-01-21 13:22:40 -0800
commitd84d1135d80c1dead6564347943ba56eed5aac3b (patch)
tree34629f910521816b1fe21f4937ffc130f768a99b /llvm/lib/Object/MachOObjectFile.cpp
parent4f8ea3c84f3de6ddb754ad339c4672c7e3b7fc74 (diff)
downloadllvm-d84d1135d80c1dead6564347943ba56eed5aac3b.zip
llvm-d84d1135d80c1dead6564347943ba56eed5aac3b.tar.gz
llvm-d84d1135d80c1dead6564347943ba56eed5aac3b.tar.bz2
Emit swift5 reflection section data in dsym bundle generated by dsymutil in the Dwarf section.
Add support for Swift reflection metadata to dsymutil. This patch adds support for copying Swift reflection metadata (__swift5_.* sections) from .o files to into the symbol-rich binary in the output .dSYM. The functionality is automatically enabled only if a .o file has reflection metadata sections and the binary doesn't. When copying dsymutil moves the section from the __TEXT segment to the __DWARF segment. rdar://76973336 https://reviews.llvm.org/D115007
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
-rw-r--r--llvm/lib/Object/MachOObjectFile.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index 42e2575..83bc74f 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -20,6 +20,7 @@
#include "llvm/ADT/Triple.h"
#include "llvm/ADT/Twine.h"
#include "llvm/BinaryFormat/MachO.h"
+#include "llvm/BinaryFormat/Swift.h"
#include "llvm/Object/Error.h"
#include "llvm/Object/MachO.h"
#include "llvm/Object/ObjectFile.h"
@@ -4765,3 +4766,14 @@ MachOObjectFile::findDsymObjectMembers(StringRef Path) {
Path.str().c_str());
return ObjectPaths;
}
+
+llvm::swift::Swift5ReflectionSectionKind
+MachOObjectFile::mapReflectionSectionNameToEnumValue(
+ StringRef SectionName) const {
+#define HANDLE_SWIFT_SECTION(KIND, MACHO, ELF, COFF) \
+ .Case(MACHO, llvm::swift::Swift5ReflectionSectionKind::KIND)
+ return StringSwitch<llvm::swift::Swift5ReflectionSectionKind>(SectionName)
+#include "llvm/BinaryFormat/Swift.def"
+ .Default(llvm::swift::Swift5ReflectionSectionKind::Unknown);
+#undef HANDLE_SWIFT_SECTION
+}