Browse Source

use a string view to skip allocation

Signed-off-by: arades79 <scravers@protonmail.com>
arades79 3 years ago
parent
commit
880b6e9795
2 changed files with 7 additions and 13 deletions
  1. 4 10
      src/core/debugger/gdbstub_arch.cpp
  2. 3 3
      src/core/debugger/gdbstub_arch.h

+ 4 - 10
src/core/debugger/gdbstub_arch.cpp

@@ -41,9 +41,8 @@ static void PutSIMDRegister(std::array<u32, 64>& simd_regs, size_t offset, const
 
 
 // For sample XML files see the GDB source /gdb/features
 // For sample XML files see the GDB source /gdb/features
 // This XML defines what the registers are for this specific ARM device
 // This XML defines what the registers are for this specific ARM device
-std::string GDBStubA64::GetTargetXML() const {
-    constexpr static const char* target_xml =
-        R"(<?xml version="1.0"?>
+constexpr std::string_view GDBStubA64::GetTargetXML() const {
+    return R"(<?xml version="1.0"?>
 <!DOCTYPE target SYSTEM "gdb-target.dtd">
 <!DOCTYPE target SYSTEM "gdb-target.dtd">
 <target version="1.0">
 <target version="1.0">
   <architecture>aarch64</architecture>
   <architecture>aarch64</architecture>
@@ -178,8 +177,6 @@ std::string GDBStubA64::GetTargetXML() const {
     <reg name="fpcr" bitsize="32"/>
     <reg name="fpcr" bitsize="32"/>
   </feature>
   </feature>
 </target>)";
 </target>)";
-
-    return target_xml;
 }
 }
 
 
 std::string GDBStubA64::RegRead(const Kernel::KThread* thread, size_t id) const {
 std::string GDBStubA64::RegRead(const Kernel::KThread* thread, size_t id) const {
@@ -270,9 +267,8 @@ u32 GDBStubA64::BreakpointInstruction() const {
     return 0xd4200000;
     return 0xd4200000;
 }
 }
 
 
-std::string GDBStubA32::GetTargetXML() const {
-    constexpr static const char* target_xml =
-        R"(<?xml version="1.0"?>
+constexpr std::string_view GDBStubA32::GetTargetXML() const {
+    return R"(<?xml version="1.0"?>
 <!DOCTYPE target SYSTEM "gdb-target.dtd">
 <!DOCTYPE target SYSTEM "gdb-target.dtd">
 <target version="1.0">
 <target version="1.0">
   <architecture>arm</architecture>
   <architecture>arm</architecture>
@@ -378,8 +374,6 @@ std::string GDBStubA32::GetTargetXML() const {
     <reg name="fpscr" bitsize="32" type="int" group="float" regnum="80"/>
     <reg name="fpscr" bitsize="32" type="int" group="float" regnum="80"/>
   </feature>
   </feature>
 </target>)";
 </target>)";
-
-    return target_xml;
 }
 }
 
 
 std::string GDBStubA32::RegRead(const Kernel::KThread* thread, size_t id) const {
 std::string GDBStubA32::RegRead(const Kernel::KThread* thread, size_t id) const {

+ 3 - 3
src/core/debugger/gdbstub_arch.h

@@ -16,7 +16,7 @@ namespace Core {
 class GDBStubArch {
 class GDBStubArch {
 public:
 public:
     virtual ~GDBStubArch() = default;
     virtual ~GDBStubArch() = default;
-    virtual std::string GetTargetXML() const = 0;
+    virtual constexpr std::string_view GetTargetXML() const = 0;
     virtual std::string RegRead(const Kernel::KThread* thread, size_t id) const = 0;
     virtual std::string RegRead(const Kernel::KThread* thread, size_t id) const = 0;
     virtual void RegWrite(Kernel::KThread* thread, size_t id, std::string_view value) const = 0;
     virtual void RegWrite(Kernel::KThread* thread, size_t id, std::string_view value) const = 0;
     virtual std::string ReadRegisters(const Kernel::KThread* thread) const = 0;
     virtual std::string ReadRegisters(const Kernel::KThread* thread) const = 0;
@@ -27,7 +27,7 @@ public:
 
 
 class GDBStubA64 final : public GDBStubArch {
 class GDBStubA64 final : public GDBStubArch {
 public:
 public:
-    std::string GetTargetXML() const override;
+    constexpr std::string_view GetTargetXML() const override;
     std::string RegRead(const Kernel::KThread* thread, size_t id) const override;
     std::string RegRead(const Kernel::KThread* thread, size_t id) const override;
     void RegWrite(Kernel::KThread* thread, size_t id, std::string_view value) const override;
     void RegWrite(Kernel::KThread* thread, size_t id, std::string_view value) const override;
     std::string ReadRegisters(const Kernel::KThread* thread) const override;
     std::string ReadRegisters(const Kernel::KThread* thread) const override;
@@ -47,7 +47,7 @@ private:
 
 
 class GDBStubA32 final : public GDBStubArch {
 class GDBStubA32 final : public GDBStubArch {
 public:
 public:
-    std::string GetTargetXML() const override;
+    constexpr std::string_view GetTargetXML() const override;
     std::string RegRead(const Kernel::KThread* thread, size_t id) const override;
     std::string RegRead(const Kernel::KThread* thread, size_t id) const override;
     void RegWrite(Kernel::KThread* thread, size_t id, std::string_view value) const override;
     void RegWrite(Kernel::KThread* thread, size_t id, std::string_view value) const override;
     std::string ReadRegisters(const Kernel::KThread* thread) const override;
     std::string ReadRegisters(const Kernel::KThread* thread) const override;