summaryrefslogtreecommitdiffstats
path: root/llvm/lib/DebugInfo
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2016-11-11 17:38:14 +0000
committerGreg Clayton <gclayton@apple.com>2016-11-11 17:38:14 +0000
commit04c19286a108f5ba103a0b0f52eba0412ded6648 (patch)
treeb430dd24e82af998f8e451bb24b7cf308a2af4eb /llvm/lib/DebugInfo
parentd340ccc88a25af80a78882fb4d71544ec1f002b4 (diff)
downloadbcm5719-llvm-04c19286a108f5ba103a0b0f52eba0412ded6648.tar.gz
bcm5719-llvm-04c19286a108f5ba103a0b0f52eba0412ded6648.zip
Fixed issues found by Paul Robinson with my patch for:
https://reviews.llvm.org/D26526 - Fixed DW_FORM_strp to be correctly sized and extracted for DWARF64 - Added some missing strp variants as well - Fixed comment typo llvm-svn: 286603
Diffstat (limited to 'llvm/lib/DebugInfo')
-rw-r--r--llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp b/llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp
index dcb491fdd80..b3f1a52e6b7 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp
@@ -128,9 +128,9 @@ static Optional<uint8_t> getFixedByteSize(dwarf::Form Form, const T *U) {
case DW_FORM_data4:
case DW_FORM_ref4:
- case DW_FORM_strp:
return 4;
+ case DW_FORM_strp:
case DW_FORM_GNU_ref_alt:
case DW_FORM_GNU_strp_alt:
case DW_FORM_line_strp:
@@ -169,7 +169,7 @@ static bool skipFormValue(dwarf::Form Form, const DataExtractor &DebugInfoData,
bool Indirect = false;
do {
switch (Form) {
- // Blocks if inlined data that have a length field and the data bytes
+ // Blocks of inlined data that have a length field and the data bytes
// inlined in the .debug_info.
case DW_FORM_exprloc:
case DW_FORM_block: {
@@ -211,8 +211,11 @@ static bool skipFormValue(dwarf::Form Form, const DataExtractor &DebugInfoData,
case DW_FORM_ref4:
case DW_FORM_ref8:
case DW_FORM_ref_sig8:
+ case DW_FORM_ref_sup:
case DW_FORM_sec_offset:
case DW_FORM_strp:
+ case DW_FORM_strp_sup:
+ case DW_FORM_line_strp:
case DW_FORM_GNU_ref_alt:
case DW_FORM_GNU_strp_alt:
if (Optional<uint8_t> FixedSize = ::getFixedByteSize(Form, U)) {
@@ -341,8 +344,7 @@ bool DWARFFormValue::extractValue(const DataExtractor &data,
Value.uval = data.getU16(offset_ptr);
break;
case DW_FORM_data4:
- case DW_FORM_ref4:
- case DW_FORM_strp: {
+ case DW_FORM_ref4: {
Value.uval = data.getU32(offset_ptr);
if (!U)
break;
@@ -369,6 +371,7 @@ bool DWARFFormValue::extractValue(const DataExtractor &data,
Form = static_cast<dwarf::Form>(data.getULEB128(offset_ptr));
indirect = true;
break;
+ case DW_FORM_strp:
case DW_FORM_sec_offset:
case DW_FORM_GNU_ref_alt:
case DW_FORM_GNU_strp_alt:
OpenPOWER on IntegriCloud