summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorDave Lee <davelee.com@gmail.com>2018-07-06 05:11:35 +0000
committerDave Lee <davelee.com@gmail.com>2018-07-06 05:11:35 +0000
commit390abe4a75123db1fe2a6ace53505607af13c7b4 (patch)
tree37965e50b6e9135ecfc604a6f4e2da48bcfa02fc /llvm
parent20da7e467aff1949397a8d3ff56eb5df8424e0c8 (diff)
downloadbcm5719-llvm-390abe4a75123db1fe2a6ace53505607af13c7b4.tar.gz
bcm5719-llvm-390abe4a75123db1fe2a6ace53505607af13c7b4.zip
Reapply: "objdump: Support newer ObjC image info flags"
Summary: Add support for two additional ObjC image info flags: `IS_SIMULATED` and `HAS_CATEGORY_CLASS_PROPERTIES`. `IS_SIMULATED` indicates a Mach-O binary built for iOS simulator. `HAS_CATEGORY_CLASS_PROPERTIES` indicates a Mach-O binary built by a compiler that supports class properties in categories. Reviewers: enderby, compnerd Reviewed By: compnerd Subscribers: keith, llvm-commits Differential Revision: https://reviews.llvm.org/D48568 llvm-svn: 336411
Diffstat (limited to 'llvm')
-rw-r--r--llvm/test/tools/llvm-objdump/X86/macho-image-info.test7
-rw-r--r--llvm/tools/llvm-objdump/MachODump.cpp6
2 files changed, 13 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objdump/X86/macho-image-info.test b/llvm/test/tools/llvm-objdump/X86/macho-image-info.test
new file mode 100644
index 00000000000..dbb864f84dc
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/X86/macho-image-info.test
@@ -0,0 +1,7 @@
+# RUN: llvm-mc < %s -triple x86_64-darwin -filetype=obj | llvm-objdump -m -objc-meta-data - | FileCheck %s
+
+.section __DATA,__objc_imageinfo,regular,no_dead_strip
+.long 0
+.long 96
+
+# CHECK: OBJC_IMAGE_IS_SIMULATED OBJC_IMAGE_HAS_CATEGORY_CLASS_PROPERTIES
diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp
index e7a1f472928..bdf80c73b99 100644
--- a/llvm/tools/llvm-objdump/MachODump.cpp
+++ b/llvm/tools/llvm-objdump/MachODump.cpp
@@ -3229,6 +3229,8 @@ struct imageInfo_t {
/* masks for objc_image_info.flags */
#define OBJC_IMAGE_IS_REPLACEMENT (1 << 0)
#define OBJC_IMAGE_SUPPORTS_GC (1 << 1)
+#define OBJC_IMAGE_IS_SIMULATED (1 << 5)
+#define OBJC_IMAGE_HAS_CATEGORY_CLASS_PROPERTIES (1 << 6)
struct message_ref64 {
uint64_t imp; /* IMP (64-bit pointer) */
@@ -5590,6 +5592,10 @@ static void print_image_info64(SectionRef S, struct DisassembleInfo *info) {
outs() << " OBJC_IMAGE_IS_REPLACEMENT";
if (o.flags & OBJC_IMAGE_SUPPORTS_GC)
outs() << " OBJC_IMAGE_SUPPORTS_GC";
+ if (o.flags & OBJC_IMAGE_IS_SIMULATED)
+ outs() << " OBJC_IMAGE_IS_SIMULATED";
+ if (o.flags & OBJC_IMAGE_HAS_CATEGORY_CLASS_PROPERTIES)
+ outs() << " OBJC_IMAGE_HAS_CATEGORY_CLASS_PROPERTIES";
swift_version = (o.flags >> 8) & 0xff;
if (swift_version != 0) {
if (swift_version == 1)
OpenPOWER on IntegriCloud