From 0418ef2691110903254f98214a869ddd682a31e7 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Thu, 14 Jul 2016 00:41:18 +0000 Subject: [PATCH] Synchronize LLVM and clang's ObjCDeclSpec::ObjCPropertyAttributeKind. This adds Clang-specific DWARF constants for nullability and ObjC class properties that are already generated by clang. This patch adds dwarfdump support and a more comprehensive testcase. llvm-svn: 275354 --- llvm/docs/SourceLevelDebugging.rst | 8 ++- llvm/include/llvm/Support/Dwarf.h | 7 ++- llvm/lib/Support/Dwarf.cpp | 6 +++ llvm/test/DebugInfo/Inputs/dwarfdump-objc.m | 6 +++ .../DebugInfo/Inputs/dwarfdump-objc.x86_64.o | Bin 11512 -> 15648 bytes llvm/test/DebugInfo/dwarfdump-accel.test | 24 +++++---- llvm/test/DebugInfo/dwarfdump-objc.test | 47 +++++++++++++++--- 7 files changed, 78 insertions(+), 20 deletions(-) diff --git a/llvm/docs/SourceLevelDebugging.rst b/llvm/docs/SourceLevelDebugging.rst index fb70745034e3..1815ee398e0c 100644 --- a/llvm/docs/SourceLevelDebugging.rst +++ b/llvm/docs/SourceLevelDebugging.rst @@ -681,7 +681,13 @@ New DWARF Constants | DW_APPLE_PROPERTY_strong | 0x400 | +--------------------------------------+-------+ | DW_APPLE_PROPERTY_unsafe_unretained | 0x800 | -+--------------------------------+-----+-------+ ++--------------------------------------+-------+ +| DW_APPLE_PROPERTY_nullability | 0x1000| ++--------------------------------------+-------+ +| DW_APPLE_PROPERTY_null_resettable | 0x2000| ++--------------------------------------+-------+ +| DW_APPLE_PROPERTY_class | 0x4000| ++--------------------------------------+-------+ Name Accelerator Tables ----------------------- diff --git a/llvm/include/llvm/Support/Dwarf.h b/llvm/include/llvm/Support/Dwarf.h index 79731aec4bbe..86b19676c345 100644 --- a/llvm/include/llvm/Support/Dwarf.h +++ b/llvm/include/llvm/Support/Dwarf.h @@ -538,7 +538,7 @@ enum LocationListEntry : unsigned char { DW_LLE_offset_pair_entry }; -/// Contstants for the DW_APPLE_PROPERTY_attributes attribute. +/// Constants for the DW_APPLE_PROPERTY_attributes attribute. /// Keep this list in sync with clang's DeclSpec.h ObjCPropertyAttributeKind. enum ApplePropertyAttributes { // Apple Objective-C Property Attributes @@ -553,7 +553,10 @@ enum ApplePropertyAttributes { DW_APPLE_PROPERTY_atomic = 0x100, DW_APPLE_PROPERTY_weak = 0x200, DW_APPLE_PROPERTY_strong = 0x400, - DW_APPLE_PROPERTY_unsafe_unretained = 0x800 + DW_APPLE_PROPERTY_unsafe_unretained = 0x800, + DW_APPLE_PROPERTY_nullability = 0x1000, + DW_APPLE_PROPERTY_null_resettable = 0x2000, + DW_APPLE_PROPERTY_class = 0x4000 }; // Constants for the DWARF5 Accelerator Table Proposal diff --git a/llvm/lib/Support/Dwarf.cpp b/llvm/lib/Support/Dwarf.cpp index 230a3dafe621..7aea05d7701f 100644 --- a/llvm/lib/Support/Dwarf.cpp +++ b/llvm/lib/Support/Dwarf.cpp @@ -545,6 +545,12 @@ const char *llvm::dwarf::ApplePropertyString(unsigned Prop) { return "DW_APPLE_PROPERTY_strong"; case DW_APPLE_PROPERTY_unsafe_unretained: return "DW_APPLE_PROPERTY_unsafe_unretained"; + case DW_APPLE_PROPERTY_nullability: + return "DW_APPLE_PROPERTY_nullability"; + case DW_APPLE_PROPERTY_null_resettable: + return "DW_APPLE_PROPERTY_null_resettable"; + case DW_APPLE_PROPERTY_class: + return "DW_APPLE_PROPERTY_class"; } return nullptr; } diff --git a/llvm/test/DebugInfo/Inputs/dwarfdump-objc.m b/llvm/test/DebugInfo/Inputs/dwarfdump-objc.m index 54fbee2ac39c..805384c13643 100644 --- a/llvm/test/DebugInfo/Inputs/dwarfdump-objc.m +++ b/llvm/test/DebugInfo/Inputs/dwarfdump-objc.m @@ -10,6 +10,12 @@ @property (retain) NSObject *Retain; @property (copy) NSObject *Copy; @property (nonatomic) int NonAtomic; +@property (atomic) int Atomic; +@property (strong) NSObject *Strong; +@property (unsafe_unretained) id UnsafeUnretained; +@property (nullable) NSObject *Nullability; +@property (null_resettable) NSObject *NullResettable; +@property (class) int ClassProperty; @end @implementation TestInterface diff --git a/llvm/test/DebugInfo/Inputs/dwarfdump-objc.x86_64.o b/llvm/test/DebugInfo/Inputs/dwarfdump-objc.x86_64.o index 6b55d38ce91db67d1f11e3a5c78c5ebc82f3ee98..8c0dcd565097b6d44de9df90ed2bce0ebfc5e434 100644 GIT binary patch literal 15648 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 diff --git a/llvm/test/DebugInfo/dwarfdump-accel.test b/llvm/test/DebugInfo/dwarfdump-accel.test index 7c1838829562..c6a971a2b9aa 100644 --- a/llvm/test/DebugInfo/dwarfdump-accel.test +++ b/llvm/test/DebugInfo/dwarfdump-accel.test @@ -21,28 +21,30 @@ CHECK: .apple_names contents: CHECK: Magic = 0x48415348 CHECK: Version = 0x0001 CHECK: Hash function = 0x00000000 -CHECK: Bucket count = 11 -CHECK: Hashes count = 22 +CHECK: Bucket count = 21 +CHECK: Hashes count = 42 CHECK: HeaderData length = 12 CHECK: DIE offset base = 0 CHECK: Number of atoms = 1 CHECK: Atom[0] Type: DW_ATOM_die_offset Form: DW_FORM_data4 -Check that empty buckets are handled correctly. -CHECK: Bucket[2] -CHECK: EMPTY -CHECK: Bucket[3] - Check that the accelerators point to the right DIEs. CHECK: Name:{{.*}}"-[TestInterface ReadOnly]" CHECK-NOT: Name CHECK: {Atom[0]: [[READONLY]]} -CHECK: Name:{{.*}}"-[TestInterface setAssign:]" -CHECK-NOT: Name -CHECK: {Atom[0]: [[SETASSIGN]]} + +Check that empty buckets are handled correctly. +CHECK: Bucket[3] +CHECK: EMPTY +CHECK: Bucket[4] + +Check that the accelerators point to the right DIEs. CHECK: Name:{{.*}}"-[TestInterface Assign]" CHECK-NOT: Name CHECK: {Atom[0]: [[ASSIGN]]} +CHECK: Name:{{.*}}"-[TestInterface setAssign:]" +CHECK-NOT: Name +CHECK: {Atom[0]: [[SETASSIGN]]} Check that types are referenced correctly. CHECK: .apple_types contents: @@ -50,7 +52,7 @@ CHECK: Name{{.*}}"TestInterface" CHECK-NOT: Name CHECK: {Atom[0]: [[TESTINTERFACE]]} -Check that an empty ecceleratorsection is handled correctly. +Check that an empty accelerator section is handled correctly. CHECK: .apple_namespaces contents: CHECK-NOT: Magic diff --git a/llvm/test/DebugInfo/dwarfdump-objc.test b/llvm/test/DebugInfo/dwarfdump-objc.test index 6890c3a0471f..60d0d2ff2e5e 100644 --- a/llvm/test/DebugInfo/dwarfdump-objc.test +++ b/llvm/test/DebugInfo/dwarfdump-objc.test @@ -6,35 +6,70 @@ CHECK: DW_TAG_APPLE_property CHECK-NOT: TAG CHECK: DW_AT_APPLE_property_name {{.*}} "ReadOnly" CHECK-NOT: TAG -CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x01 (DW_APPLE_PROPERTY_readonly)) +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x0101 (DW_APPLE_PROPERTY_readonly, DW_APPLE_PROPERTY_atomic)) CHECK: DW_TAG_APPLE_property CHECK-NOT: TAG CHECK: DW_AT_APPLE_property_name {{.*}} "Assign" CHECK-NOT: TAG -CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x0c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite)) +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x090c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained)) CHECK: DW_TAG_APPLE_property CHECK-NOT: TAG CHECK: DW_AT_APPLE_property_name {{.*}} "ReadWrite" CHECK-NOT: TAG -CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x0c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite)) +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x090c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained)) CHECK: DW_TAG_APPLE_property CHECK-NOT: TAG CHECK: DW_AT_APPLE_property_name {{.*}} "Retain" CHECK-NOT: TAG -CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x18 (DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_retain)) +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x0118 (DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_retain, DW_APPLE_PROPERTY_atomic)) CHECK: DW_TAG_APPLE_property CHECK-NOT: TAG CHECK: DW_AT_APPLE_property_name {{.*}} "Copy" CHECK-NOT: TAG -CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x28 (DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_copy)) +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x0128 (DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_copy, DW_APPLE_PROPERTY_atomic)) CHECK: DW_TAG_APPLE_property CHECK-NOT: TAG CHECK: DW_AT_APPLE_property_name {{.*}} "NonAtomic" CHECK-NOT: TAG -CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x4c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_nonatomic)) +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x084c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_nonatomic, DW_APPLE_PROPERTY_unsafe_unretained)) +CHECK: DW_TAG_APPLE_property +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_name {{.*}} "Atomic" +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x090c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained)) + +CHECK: DW_TAG_APPLE_property +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_name {{.*}} "Strong" +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x0508 (DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_strong)) + +CHECK: DW_TAG_APPLE_property +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_name {{.*}} "UnsafeUnretained" +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x090c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained)) + +CHECK: DW_TAG_APPLE_property +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_name {{.*}} "Nullability" +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x190c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained, DW_APPLE_PROPERTY_nullability)) + +CHECK: DW_TAG_APPLE_property +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_name {{.*}} "NullResettable" +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x390c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained, DW_APPLE_PROPERTY_nullability, DW_APPLE_PROPERTY_null_resettable)) + +CHECK: DW_TAG_APPLE_property +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_name {{.*}} "ClassProperty" +CHECK-NOT: TAG +CHECK: DW_AT_APPLE_property_attribute {{.*}} (0x490c (DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained, DW_APPLE_PROPERTY_class))