diff options
author | Alexey Samsonov <samsonov@google.com> | 2013-10-28 23:01:48 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2013-10-28 23:01:48 +0000 |
commit | c5253237f8b3b4eb888f7f85f39acd7d4d0f57cf (patch) | |
tree | 203b75962c5da40e7263f2ca12d9452fe602fef3 /unittests | |
parent | 730e3c69952d4f26a0c51b55902ac55c88238ee8 (diff) | |
download | external_llvm-c5253237f8b3b4eb888f7f85f39acd7d4d0f57cf.zip external_llvm-c5253237f8b3b4eb888f7f85f39acd7d4d0f57cf.tar.gz external_llvm-c5253237f8b3b4eb888f7f85f39acd7d4d0f57cf.tar.bz2 |
DebugInfo: Introduce the notion of "form classes"
Summary:
Use DWARF4 table of form classes to fetch attributes from DIE
in a more consistent way. This shouldn't change the functionality and
serves as a refactoring for upcoming change: DW_AT_high_pc has different
semantics depending on its form class.
Reviewers: dblaikie, echristo
Reviewed By: echristo
CC: echristo, llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1961
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193553 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r-- | unittests/DebugInfo/DWARFFormValueTest.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/unittests/DebugInfo/DWARFFormValueTest.cpp b/unittests/DebugInfo/DWARFFormValueTest.cpp index 04b859b..e7216b3 100644 --- a/unittests/DebugInfo/DWARFFormValueTest.cpp +++ b/unittests/DebugInfo/DWARFFormValueTest.cpp @@ -28,4 +28,21 @@ TEST(DWARFFormValue, FixedFormSizes) { EXPECT_EQ(0, DWARFFormValue::getFixedFormSizes(16, 2)); } +bool isFormClass(uint16_t Form, DWARFFormValue::FormClass FC) { + return DWARFFormValue(Form).isFormClass(FC); +} + +TEST(DWARFFormValue, FormClass) { + EXPECT_TRUE(isFormClass(DW_FORM_addr, DWARFFormValue::FC_Address)); + EXPECT_FALSE(isFormClass(DW_FORM_data8, DWARFFormValue::FC_Address)); + EXPECT_TRUE(isFormClass(DW_FORM_data8, DWARFFormValue::FC_Constant)); + EXPECT_TRUE(isFormClass(DW_FORM_data8, DWARFFormValue::FC_SectionOffset)); + EXPECT_TRUE( + isFormClass(DW_FORM_sec_offset, DWARFFormValue::FC_SectionOffset)); + EXPECT_TRUE(isFormClass(DW_FORM_GNU_str_index, DWARFFormValue::FC_String)); + EXPECT_TRUE(isFormClass(DW_FORM_GNU_addr_index, DWARFFormValue::FC_Address)); + EXPECT_FALSE(isFormClass(DW_FORM_ref_addr, DWARFFormValue::FC_Address)); + EXPECT_TRUE(isFormClass(DW_FORM_ref_addr, DWARFFormValue::FC_Reference)); +} + } // end anonymous namespace |