diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2019-02-27 00:58:09 +0000 |
---|---|---|
committer | Jonas Devlieghere <jonas@devlieghere.com> | 2019-02-27 00:58:09 +0000 |
commit | bb111152b7e4d45aeb711be9262b252936e0c028 (patch) | |
tree | b51f6ff5fa375cb0e7028e5236afd3dd4239378f /llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp | |
parent | 25838c6dacca8203b4478ac2c16e563b51c3708b (diff) | |
download | bcm5719-llvm-bb111152b7e4d45aeb711be9262b252936e0c028.tar.gz bcm5719-llvm-bb111152b7e4d45aeb711be9262b252936e0c028.zip |
[DWARFFormValue] Cleanup DWARFFormValue interface. (NFC)
DWARFFormValues can be created from a data extractor or by passing its
value directly. Until now this was done by member functions that
modified an existing object's internal state. This patch replaces a
subset of these methods with static method that return a new
DWARFFormValue.
llvm-svn: 354941
Diffstat (limited to 'llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp')
-rw-r--r-- | llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp | 195 |
1 files changed, 95 insertions, 100 deletions
diff --git a/llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp b/llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp index 13119df005c..bd519767105 100644 --- a/llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp +++ b/llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp @@ -1555,128 +1555,123 @@ TEST(DWARFDebugInfo, TestFindRecurse) { TEST(DWARFDebugInfo, TestDwarfToFunctions) { // Test all of the dwarf::toXXX functions that take a // Optional<DWARFFormValue> and extract the values from it. - DWARFFormValue FormVal; uint64_t InvalidU64 = 0xBADBADBADBADBADB; int64_t InvalidS64 = 0xBADBADBADBADBADB; + // First test that we don't get valid values back when using an optional with // no value. - Optional<DWARFFormValue> FormValOpt; - EXPECT_FALSE(toString(FormValOpt).hasValue()); - EXPECT_FALSE(toUnsigned(FormValOpt).hasValue()); - EXPECT_FALSE(toReference(FormValOpt).hasValue()); - EXPECT_FALSE(toSigned(FormValOpt).hasValue()); - EXPECT_FALSE(toAddress(FormValOpt).hasValue()); - EXPECT_FALSE(toSectionOffset(FormValOpt).hasValue()); - EXPECT_FALSE(toBlock(FormValOpt).hasValue()); - EXPECT_EQ(nullptr, toString(FormValOpt, nullptr)); - EXPECT_EQ(InvalidU64, toUnsigned(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toReference(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toAddress(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidS64, toSigned(FormValOpt, InvalidS64)); + Optional<DWARFFormValue> FormValOpt1 = DWARFFormValue(); + EXPECT_FALSE(toString(FormValOpt1).hasValue()); + EXPECT_FALSE(toUnsigned(FormValOpt1).hasValue()); + EXPECT_FALSE(toReference(FormValOpt1).hasValue()); + EXPECT_FALSE(toSigned(FormValOpt1).hasValue()); + EXPECT_FALSE(toAddress(FormValOpt1).hasValue()); + EXPECT_FALSE(toSectionOffset(FormValOpt1).hasValue()); + EXPECT_FALSE(toBlock(FormValOpt1).hasValue()); + EXPECT_EQ(nullptr, toString(FormValOpt1, nullptr)); + EXPECT_EQ(InvalidU64, toUnsigned(FormValOpt1, InvalidU64)); + EXPECT_EQ(InvalidU64, toReference(FormValOpt1, InvalidU64)); + EXPECT_EQ(InvalidU64, toAddress(FormValOpt1, InvalidU64)); + EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt1, InvalidU64)); + EXPECT_EQ(InvalidS64, toSigned(FormValOpt1, InvalidS64)); // Test successful and unsuccessful address decoding. uint64_t Address = 0x100000000ULL; - FormVal.setForm(DW_FORM_addr); - FormVal.setUValue(Address); - FormValOpt = FormVal; - - EXPECT_FALSE(toString(FormValOpt).hasValue()); - EXPECT_FALSE(toUnsigned(FormValOpt).hasValue()); - EXPECT_FALSE(toReference(FormValOpt).hasValue()); - EXPECT_FALSE(toSigned(FormValOpt).hasValue()); - EXPECT_TRUE(toAddress(FormValOpt).hasValue()); - EXPECT_FALSE(toSectionOffset(FormValOpt).hasValue()); - EXPECT_FALSE(toBlock(FormValOpt).hasValue()); - EXPECT_EQ(nullptr, toString(FormValOpt, nullptr)); - EXPECT_EQ(InvalidU64, toUnsigned(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toReference(FormValOpt, InvalidU64)); - EXPECT_EQ(Address, toAddress(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidS64, toSigned(FormValOpt, InvalidU64)); + Optional<DWARFFormValue> FormValOpt2 = + DWARFFormValue::createFromUValue(DW_FORM_addr, Address); + + EXPECT_FALSE(toString(FormValOpt2).hasValue()); + EXPECT_FALSE(toUnsigned(FormValOpt2).hasValue()); + EXPECT_FALSE(toReference(FormValOpt2).hasValue()); + EXPECT_FALSE(toSigned(FormValOpt2).hasValue()); + EXPECT_TRUE(toAddress(FormValOpt2).hasValue()); + EXPECT_FALSE(toSectionOffset(FormValOpt2).hasValue()); + EXPECT_FALSE(toBlock(FormValOpt2).hasValue()); + EXPECT_EQ(nullptr, toString(FormValOpt2, nullptr)); + EXPECT_EQ(InvalidU64, toUnsigned(FormValOpt2, InvalidU64)); + EXPECT_EQ(InvalidU64, toReference(FormValOpt2, InvalidU64)); + EXPECT_EQ(Address, toAddress(FormValOpt2, InvalidU64)); + EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt2, InvalidU64)); + EXPECT_EQ(InvalidS64, toSigned(FormValOpt2, InvalidU64)); // Test successful and unsuccessful unsigned constant decoding. uint64_t UData8 = 0x1020304050607080ULL; - FormVal.setForm(DW_FORM_udata); - FormVal.setUValue(UData8); - FormValOpt = FormVal; - - EXPECT_FALSE(toString(FormValOpt).hasValue()); - EXPECT_TRUE(toUnsigned(FormValOpt).hasValue()); - EXPECT_FALSE(toReference(FormValOpt).hasValue()); - EXPECT_TRUE(toSigned(FormValOpt).hasValue()); - EXPECT_FALSE(toAddress(FormValOpt).hasValue()); - EXPECT_FALSE(toSectionOffset(FormValOpt).hasValue()); - EXPECT_FALSE(toBlock(FormValOpt).hasValue()); - EXPECT_EQ(nullptr, toString(FormValOpt, nullptr)); - EXPECT_EQ(UData8, toUnsigned(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toReference(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toAddress(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt, InvalidU64)); - EXPECT_EQ((int64_t)UData8, toSigned(FormValOpt, InvalidU64)); + Optional<DWARFFormValue> FormValOpt3 = + DWARFFormValue::createFromUValue(DW_FORM_udata, UData8); + + EXPECT_FALSE(toString(FormValOpt3).hasValue()); + EXPECT_TRUE(toUnsigned(FormValOpt3).hasValue()); + EXPECT_FALSE(toReference(FormValOpt3).hasValue()); + EXPECT_TRUE(toSigned(FormValOpt3).hasValue()); + EXPECT_FALSE(toAddress(FormValOpt3).hasValue()); + EXPECT_FALSE(toSectionOffset(FormValOpt3).hasValue()); + EXPECT_FALSE(toBlock(FormValOpt3).hasValue()); + EXPECT_EQ(nullptr, toString(FormValOpt3, nullptr)); + EXPECT_EQ(UData8, toUnsigned(FormValOpt3, InvalidU64)); + EXPECT_EQ(InvalidU64, toReference(FormValOpt3, InvalidU64)); + EXPECT_EQ(InvalidU64, toAddress(FormValOpt3, InvalidU64)); + EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt3, InvalidU64)); + EXPECT_EQ((int64_t)UData8, toSigned(FormValOpt3, InvalidU64)); // Test successful and unsuccessful reference decoding. uint32_t RefData = 0x11223344U; - FormVal.setForm(DW_FORM_ref_addr); - FormVal.setUValue(RefData); - FormValOpt = FormVal; - - EXPECT_FALSE(toString(FormValOpt).hasValue()); - EXPECT_FALSE(toUnsigned(FormValOpt).hasValue()); - EXPECT_TRUE(toReference(FormValOpt).hasValue()); - EXPECT_FALSE(toSigned(FormValOpt).hasValue()); - EXPECT_FALSE(toAddress(FormValOpt).hasValue()); - EXPECT_FALSE(toSectionOffset(FormValOpt).hasValue()); - EXPECT_FALSE(toBlock(FormValOpt).hasValue()); - EXPECT_EQ(nullptr, toString(FormValOpt, nullptr)); - EXPECT_EQ(InvalidU64, toUnsigned(FormValOpt, InvalidU64)); - EXPECT_EQ(RefData, toReference(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toAddress(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidS64, toSigned(FormValOpt, InvalidU64)); + Optional<DWARFFormValue> FormValOpt4 = + DWARFFormValue::createFromUValue(DW_FORM_ref_addr, RefData); + + EXPECT_FALSE(toString(FormValOpt4).hasValue()); + EXPECT_FALSE(toUnsigned(FormValOpt4).hasValue()); + EXPECT_TRUE(toReference(FormValOpt4).hasValue()); + EXPECT_FALSE(toSigned(FormValOpt4).hasValue()); + EXPECT_FALSE(toAddress(FormValOpt4).hasValue()); + EXPECT_FALSE(toSectionOffset(FormValOpt4).hasValue()); + EXPECT_FALSE(toBlock(FormValOpt4).hasValue()); + EXPECT_EQ(nullptr, toString(FormValOpt4, nullptr)); + EXPECT_EQ(InvalidU64, toUnsigned(FormValOpt4, InvalidU64)); + EXPECT_EQ(RefData, toReference(FormValOpt4, InvalidU64)); + EXPECT_EQ(InvalidU64, toAddress(FormValOpt4, InvalidU64)); + EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt4, InvalidU64)); + EXPECT_EQ(InvalidS64, toSigned(FormValOpt4, InvalidU64)); // Test successful and unsuccessful signed constant decoding. int64_t SData8 = 0x1020304050607080ULL; - FormVal.setForm(DW_FORM_udata); - FormVal.setSValue(SData8); - FormValOpt = FormVal; - - EXPECT_FALSE(toString(FormValOpt).hasValue()); - EXPECT_TRUE(toUnsigned(FormValOpt).hasValue()); - EXPECT_FALSE(toReference(FormValOpt).hasValue()); - EXPECT_TRUE(toSigned(FormValOpt).hasValue()); - EXPECT_FALSE(toAddress(FormValOpt).hasValue()); - EXPECT_FALSE(toSectionOffset(FormValOpt).hasValue()); - EXPECT_FALSE(toBlock(FormValOpt).hasValue()); - EXPECT_EQ(nullptr, toString(FormValOpt, nullptr)); - EXPECT_EQ((uint64_t)SData8, toUnsigned(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toReference(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toAddress(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt, InvalidU64)); - EXPECT_EQ(SData8, toSigned(FormValOpt, InvalidU64)); + Optional<DWARFFormValue> FormValOpt5 = + DWARFFormValue::createFromSValue(DW_FORM_udata, SData8); + + EXPECT_FALSE(toString(FormValOpt5).hasValue()); + EXPECT_TRUE(toUnsigned(FormValOpt5).hasValue()); + EXPECT_FALSE(toReference(FormValOpt5).hasValue()); + EXPECT_TRUE(toSigned(FormValOpt5).hasValue()); + EXPECT_FALSE(toAddress(FormValOpt5).hasValue()); + EXPECT_FALSE(toSectionOffset(FormValOpt5).hasValue()); + EXPECT_FALSE(toBlock(FormValOpt5).hasValue()); + EXPECT_EQ(nullptr, toString(FormValOpt5, nullptr)); + EXPECT_EQ((uint64_t)SData8, toUnsigned(FormValOpt5, InvalidU64)); + EXPECT_EQ(InvalidU64, toReference(FormValOpt5, InvalidU64)); + EXPECT_EQ(InvalidU64, toAddress(FormValOpt5, InvalidU64)); + EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt5, InvalidU64)); + EXPECT_EQ(SData8, toSigned(FormValOpt5, InvalidU64)); // Test successful and unsuccessful block decoding. uint8_t Data[] = { 2, 3, 4 }; ArrayRef<uint8_t> Array(Data); - FormVal.setForm(DW_FORM_block1); - FormVal.setBlockValue(Array); - FormValOpt = FormVal; - - EXPECT_FALSE(toString(FormValOpt).hasValue()); - EXPECT_FALSE(toUnsigned(FormValOpt).hasValue()); - EXPECT_FALSE(toReference(FormValOpt).hasValue()); - EXPECT_FALSE(toSigned(FormValOpt).hasValue()); - EXPECT_FALSE(toAddress(FormValOpt).hasValue()); - EXPECT_FALSE(toSectionOffset(FormValOpt).hasValue()); - auto BlockOpt = toBlock(FormValOpt); + Optional<DWARFFormValue> FormValOpt6 = + DWARFFormValue::createFromBlockValue(DW_FORM_block1, Array); + + EXPECT_FALSE(toString(FormValOpt6).hasValue()); + EXPECT_FALSE(toUnsigned(FormValOpt6).hasValue()); + EXPECT_FALSE(toReference(FormValOpt6).hasValue()); + EXPECT_FALSE(toSigned(FormValOpt6).hasValue()); + EXPECT_FALSE(toAddress(FormValOpt6).hasValue()); + EXPECT_FALSE(toSectionOffset(FormValOpt6).hasValue()); + auto BlockOpt = toBlock(FormValOpt6); EXPECT_TRUE(BlockOpt.hasValue()); EXPECT_EQ(*BlockOpt, Array); - EXPECT_EQ(nullptr, toString(FormValOpt, nullptr)); - EXPECT_EQ(InvalidU64, toUnsigned(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toReference(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toAddress(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt, InvalidU64)); - EXPECT_EQ(InvalidS64, toSigned(FormValOpt, InvalidU64)); + EXPECT_EQ(nullptr, toString(FormValOpt6, nullptr)); + EXPECT_EQ(InvalidU64, toUnsigned(FormValOpt6, InvalidU64)); + EXPECT_EQ(InvalidU64, toReference(FormValOpt6, InvalidU64)); + EXPECT_EQ(InvalidU64, toAddress(FormValOpt6, InvalidU64)); + EXPECT_EQ(InvalidU64, toSectionOffset(FormValOpt6, InvalidU64)); + EXPECT_EQ(InvalidS64, toSigned(FormValOpt6, InvalidU64)); // Test } |