diff options
author | Dave Lee <davelee.com@gmail.com> | 2018-07-05 23:32:15 +0000 |
---|---|---|
committer | Dave Lee <davelee.com@gmail.com> | 2018-07-05 23:32:15 +0000 |
commit | 9e412ec8f2996258f9c6b04f96c5b063cb288c7b (patch) | |
tree | 4b376c972f7180c5761166b8eed5a2ef3cffea8b | |
parent | 03856dd9c6469b770a5c804453f5f0333e88adc2 (diff) | |
download | bcm5719-llvm-9e412ec8f2996258f9c6b04f96c5b063cb288c7b.tar.gz bcm5719-llvm-9e412ec8f2996258f9c6b04f96c5b063cb288c7b.zip |
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: 336399
-rw-r--r-- | llvm/test/tools/llvm-objdump/macho-image-info.test | 7 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/MachODump.cpp | 6 |
2 files changed, 13 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objdump/macho-image-info.test b/llvm/test/tools/llvm-objdump/macho-image-info.test new file mode 100644 index 00000000000..dbb864f84dc --- /dev/null +++ b/llvm/test/tools/llvm-objdump/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) |