From edd79ddd00836fa48fb128dc7e5affd58de85090 Mon Sep 17 00:00:00 2001 From: Itamar Date: Fri, 18 Jun 2021 14:15:01 +0300 Subject: LibDebug: Move Dwarf::AttributeValue to a separate file --- Userland/Libraries/LibDebug/Dwarf/AttributeValue.h | 39 ++++++++++++++++++++++ Userland/Libraries/LibDebug/Dwarf/DIE.h | 5 ++- Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h | 28 ++-------------- 3 files changed, 43 insertions(+), 29 deletions(-) create mode 100644 Userland/Libraries/LibDebug/Dwarf/AttributeValue.h (limited to 'Userland') diff --git a/Userland/Libraries/LibDebug/Dwarf/AttributeValue.h b/Userland/Libraries/LibDebug/Dwarf/AttributeValue.h new file mode 100644 index 0000000000..c1c9d87888 --- /dev/null +++ b/Userland/Libraries/LibDebug/Dwarf/AttributeValue.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021, Itamar S. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Debug::Dwarf { + +struct AttributeValue { + enum class Type : u8 { + UnsignedNumber, + SignedNumber, + LongUnsignedNumber, + String, + DieReference, // Reference to another DIE in the same compilation unit + Boolean, + DwarfExpression, + SecOffset, + RawBytes, + } type; + + 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 { + u32 length; + const u8* bytes; // points to bytes in the memory mapped elf image + } as_raw_bytes; + } data {}; +}; + +} diff --git a/Userland/Libraries/LibDebug/Dwarf/DIE.h b/Userland/Libraries/LibDebug/Dwarf/DIE.h index c234e94fee..67fc1e1e2e 100644 --- a/Userland/Libraries/LibDebug/Dwarf/DIE.h +++ b/Userland/Libraries/LibDebug/Dwarf/DIE.h @@ -6,8 +6,7 @@ #pragma once -#include "CompilationUnit.h" -#include "DwarfInfo.h" +#include "AttributeValue.h" #include "DwarfTypes.h" #include #include @@ -21,7 +20,7 @@ class CompilationUnit; // DIE = Debugging Information Entry class DIE { public: - DIE(const CompilationUnit&, u32 offset); + DIE(const CompilationUnit&, u32 offset, Optional parent_offset = {}); u32 offset() const { return m_offset; } u32 size() const { return m_size; } diff --git a/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h b/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h index 49e41611f8..5942a2acad 100644 --- a/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h +++ b/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h @@ -6,9 +6,11 @@ #pragma once +#include "AttributeValue.h" #include "CompilationUnit.h" #include "DwarfTypes.h" #include +#include #include #include #include @@ -16,32 +18,6 @@ namespace Debug::Dwarf { -struct AttributeValue { - enum class Type : u8 { - UnsignedNumber, - SignedNumber, - LongUnsignedNumber, - String, - DieReference, // Reference to another DIE in the same compilation unit - Boolean, - DwarfExpression, - SecOffset, - RawBytes, - } type; - - 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 { - u32 length; - const u8* bytes; // points to bytes in the memory mapped elf image - } as_raw_bytes; - } data {}; -}; - class DwarfInfo { public: explicit DwarfInfo(const ELF::Image&); -- cgit v1.2.3