From 07adbf19c4325f9b9ca768eaf6740342e07c9f98 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Sun, 18 Apr 2021 12:34:26 +0200 Subject: [PATCH] LibDebug: Implement support for AttributeDataForm::Data8 I came across this while analyzing a crash dump for openttd. --- Userland/Libraries/LibDebug/Dwarf/DIE.cpp | 8 ++++++++ Userland/Libraries/LibDebug/Dwarf/DIE.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/Userland/Libraries/LibDebug/Dwarf/DIE.cpp b/Userland/Libraries/LibDebug/Dwarf/DIE.cpp index 5733b33fd5..47160cf5d2 100644 --- a/Userland/Libraries/LibDebug/Dwarf/DIE.cpp +++ b/Userland/Libraries/LibDebug/Dwarf/DIE.cpp @@ -131,6 +131,14 @@ DIE::AttributeValue DIE::get_attribute_value(AttributeDataForm form, value.data.as_u32 = data; break; } + case AttributeDataForm::Data8: { + u64 data; + debug_info_stream >> data; + VERIFY(!debug_info_stream.has_any_error()); + value.type = AttributeValue::Type::LongUnsignedNumber; + value.data.as_u64 = data; + break; + } case AttributeDataForm::Ref4: { u32 data; debug_info_stream >> data; diff --git a/Userland/Libraries/LibDebug/Dwarf/DIE.h b/Userland/Libraries/LibDebug/Dwarf/DIE.h index 3ba68eafa8..a1f4a278e8 100644 --- a/Userland/Libraries/LibDebug/Dwarf/DIE.h +++ b/Userland/Libraries/LibDebug/Dwarf/DIE.h @@ -46,6 +46,7 @@ public: enum class Type : u8 { UnsignedNumber, SignedNumber, + LongUnsignedNumber, String, DieReference, // Reference to another DIE in the same compilation unit Boolean, @@ -57,6 +58,7 @@ public: union { u32 as_u32; i32 as_i32; + u64 as_u64; const char* as_string; // points to bytes in the memory mapped elf image bool as_bool; struct {