diff options
author | Greg Clayton <gclayton@apple.com> | 2016-04-29 20:48:39 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2016-04-29 20:48:39 +0000 |
commit | 909b277845a75595651de1e93b8e315d5d632077 (patch) | |
tree | 2c3ba4ab9ff16d1433949ab41bbffa1dcd9661d6 /lldb/packages/Python/lldbsuite/test | |
parent | 04d61050ea0c064520e0952497fbc5948d908662 (diff) | |
download | bcm5719-llvm-909b277845a75595651de1e93b8e315d5d632077.tar.gz bcm5719-llvm-909b277845a75595651de1e93b8e315d5d632077.zip |
Make sure LLDB can deal with forward declarations to enums without crashing or asserting.
<rdar://problem/23776428>
llvm-svn: 268098
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/lang/c/enum_types/TestEnumTypes.py | 9 | ||||
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/lang/c/enum_types/main.c | 11 |
2 files changed, 19 insertions, 1 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/TestEnumTypes.py b/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/TestEnumTypes.py index b0c5c882f6a..3e0f7422674 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/TestEnumTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/TestEnumTypes.py @@ -63,7 +63,14 @@ class EnumTypesTestCase(TestBase): 'Sunday', 'kNumDays', '5']; - + + # Make sure a pointer to an anonymous enum type does crash LLDB and displays correctly using + # frame variable and expression commands + self.expect('frame variable f.op', DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ['ops *', 'f.op', '0x0000000000000000']) + self.expect('frame variable *f.op', DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ['ops', '*f.op', '<parent is NULL>']) + self.expect('expr f.op', DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ['ops *', '$', '0x0000000000000000']) + self.expect('expr *f.op', DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ['error:'], error = True) + bkpt = self.target().FindBreakpointByID(bkpt_id) for enum_value in enum_values: self.expect("frame variable day", 'check for valid enumeration value', diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/main.c b/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/main.c index 3d59654eff6..be0fa57d0b7 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/main.c +++ b/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/main.c @@ -8,6 +8,15 @@ //===----------------------------------------------------------------------===// #include <stdio.h> +#include <stdio.h> + +// Forward declare an enumeration (only works in C, not C++) +typedef enum ops ops; + +struct foo { + ops *op; +}; + int main (int argc, char const *argv[]) { enum days { @@ -21,6 +30,8 @@ int main (int argc, char const *argv[]) kNumDays }; enum days day; + struct foo f; + f.op = NULL; for (day = Monday - 1; day <= kNumDays + 1; day++) { printf("day as int is %i\n", (int)day); // Set break point at this line. |