Quellcode durchsuchen

LibDebug: Move Dwarf::AttributeValue to a separate file

Itamar vor 4 Jahren
Ursprung
Commit
edd79ddd00

+ 39 - 0
Userland/Libraries/LibDebug/Dwarf/AttributeValue.h

@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2021, Itamar S. <itamar8910@gmail.com>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/Types.h>
+
+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 {};
+};
+
+}

+ 2 - 3
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 <AK/Function.h>
 #include <AK/NonnullOwnPtr.h>
@@ -21,7 +20,7 @@ class CompilationUnit;
 // DIE = Debugging Information Entry
 class DIE {
 public:
-    DIE(const CompilationUnit&, u32 offset);
+    DIE(const CompilationUnit&, u32 offset, Optional<u32> parent_offset = {});
 
     u32 offset() const { return m_offset; }
     u32 size() const { return m_size; }

+ 2 - 26
Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h

@@ -6,9 +6,11 @@
 
 #pragma once
 
+#include "AttributeValue.h"
 #include "CompilationUnit.h"
 #include "DwarfTypes.h"
 #include <AK/ByteBuffer.h>
+#include <AK/NonnullOwnPtrVector.h>
 #include <AK/NonnullRefPtr.h>
 #include <AK/RefCounted.h>
 #include <AK/String.h>
@@ -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&);