diff options
Diffstat (limited to 'src/core/debugger/gdbstub.cpp')
| -rw-r--r-- | src/core/debugger/gdbstub.cpp | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/src/core/debugger/gdbstub.cpp b/src/core/debugger/gdbstub.cpp index 2076aa8a2..6f5f5156b 100644 --- a/src/core/debugger/gdbstub.cpp +++ b/src/core/debugger/gdbstub.cpp | |||
| @@ -109,7 +109,7 @@ static std::string EscapeXML(std::string_view data) { | |||
| 109 | 109 | ||
| 110 | GDBStub::GDBStub(DebuggerBackend& backend_, Core::System& system_) | 110 | GDBStub::GDBStub(DebuggerBackend& backend_, Core::System& system_) |
| 111 | : DebuggerFrontend(backend_), system{system_} { | 111 | : DebuggerFrontend(backend_), system{system_} { |
| 112 | if (system.ApplicationProcess()->Is64BitProcess()) { | 112 | if (system.ApplicationProcess()->Is64Bit()) { |
| 113 | arch = std::make_unique<GDBStubA64>(); | 113 | arch = std::make_unique<GDBStubA64>(); |
| 114 | } else { | 114 | } else { |
| 115 | arch = std::make_unique<GDBStubA32>(); | 115 | arch = std::make_unique<GDBStubA32>(); |
| @@ -446,10 +446,10 @@ void GDBStub::HandleBreakpointRemove(std::string_view command) { | |||
| 446 | // See osdbg_thread_local_region.os.horizon.hpp and osdbg_thread_type.os.horizon.hpp | 446 | // See osdbg_thread_local_region.os.horizon.hpp and osdbg_thread_type.os.horizon.hpp |
| 447 | 447 | ||
| 448 | static std::optional<std::string> GetNameFromThreadType32(Core::Memory::Memory& memory, | 448 | static std::optional<std::string> GetNameFromThreadType32(Core::Memory::Memory& memory, |
| 449 | const Kernel::KThread* thread) { | 449 | const Kernel::KThread& thread) { |
| 450 | // Read thread type from TLS | 450 | // Read thread type from TLS |
| 451 | const VAddr tls_thread_type{memory.Read32(thread->GetTlsAddress() + 0x1fc)}; | 451 | const VAddr tls_thread_type{memory.Read32(thread.GetTlsAddress() + 0x1fc)}; |
| 452 | const VAddr argument_thread_type{thread->GetArgument()}; | 452 | const VAddr argument_thread_type{thread.GetArgument()}; |
| 453 | 453 | ||
| 454 | if (argument_thread_type && tls_thread_type != argument_thread_type) { | 454 | if (argument_thread_type && tls_thread_type != argument_thread_type) { |
| 455 | // Probably not created by nnsdk, no name available. | 455 | // Probably not created by nnsdk, no name available. |
| @@ -477,10 +477,10 @@ static std::optional<std::string> GetNameFromThreadType32(Core::Memory::Memory& | |||
| 477 | } | 477 | } |
| 478 | 478 | ||
| 479 | static std::optional<std::string> GetNameFromThreadType64(Core::Memory::Memory& memory, | 479 | static std::optional<std::string> GetNameFromThreadType64(Core::Memory::Memory& memory, |
| 480 | const Kernel::KThread* thread) { | 480 | const Kernel::KThread& thread) { |
| 481 | // Read thread type from TLS | 481 | // Read thread type from TLS |
| 482 | const VAddr tls_thread_type{memory.Read64(thread->GetTlsAddress() + 0x1f8)}; | 482 | const VAddr tls_thread_type{memory.Read64(thread.GetTlsAddress() + 0x1f8)}; |
| 483 | const VAddr argument_thread_type{thread->GetArgument()}; | 483 | const VAddr argument_thread_type{thread.GetArgument()}; |
| 484 | 484 | ||
| 485 | if (argument_thread_type && tls_thread_type != argument_thread_type) { | 485 | if (argument_thread_type && tls_thread_type != argument_thread_type) { |
| 486 | // Probably not created by nnsdk, no name available. | 486 | // Probably not created by nnsdk, no name available. |
| @@ -508,16 +508,16 @@ static std::optional<std::string> GetNameFromThreadType64(Core::Memory::Memory& | |||
| 508 | } | 508 | } |
| 509 | 509 | ||
| 510 | static std::optional<std::string> GetThreadName(Core::System& system, | 510 | static std::optional<std::string> GetThreadName(Core::System& system, |
| 511 | const Kernel::KThread* thread) { | 511 | const Kernel::KThread& thread) { |
| 512 | if (system.ApplicationProcess()->Is64BitProcess()) { | 512 | if (system.ApplicationProcess()->Is64Bit()) { |
| 513 | return GetNameFromThreadType64(system.ApplicationMemory(), thread); | 513 | return GetNameFromThreadType64(system.ApplicationMemory(), thread); |
| 514 | } else { | 514 | } else { |
| 515 | return GetNameFromThreadType32(system.ApplicationMemory(), thread); | 515 | return GetNameFromThreadType32(system.ApplicationMemory(), thread); |
| 516 | } | 516 | } |
| 517 | } | 517 | } |
| 518 | 518 | ||
| 519 | static std::string_view GetThreadWaitReason(const Kernel::KThread* thread) { | 519 | static std::string_view GetThreadWaitReason(const Kernel::KThread& thread) { |
| 520 | switch (thread->GetWaitReasonForDebugging()) { | 520 | switch (thread.GetWaitReasonForDebugging()) { |
| 521 | case Kernel::ThreadWaitReasonForDebugging::Sleep: | 521 | case Kernel::ThreadWaitReasonForDebugging::Sleep: |
| 522 | return "Sleep"; | 522 | return "Sleep"; |
| 523 | case Kernel::ThreadWaitReasonForDebugging::IPC: | 523 | case Kernel::ThreadWaitReasonForDebugging::IPC: |
| @@ -535,8 +535,8 @@ static std::string_view GetThreadWaitReason(const Kernel::KThread* thread) { | |||
| 535 | } | 535 | } |
| 536 | } | 536 | } |
| 537 | 537 | ||
| 538 | static std::string GetThreadState(const Kernel::KThread* thread) { | 538 | static std::string GetThreadState(const Kernel::KThread& thread) { |
| 539 | switch (thread->GetState()) { | 539 | switch (thread.GetState()) { |
| 540 | case Kernel::ThreadState::Initialized: | 540 | case Kernel::ThreadState::Initialized: |
| 541 | return "Initialized"; | 541 | return "Initialized"; |
| 542 | case Kernel::ThreadState::Waiting: | 542 | case Kernel::ThreadState::Waiting: |
| @@ -604,7 +604,7 @@ void GDBStub::HandleQuery(std::string_view command) { | |||
| 604 | const auto& threads = system.ApplicationProcess()->GetThreadList(); | 604 | const auto& threads = system.ApplicationProcess()->GetThreadList(); |
| 605 | std::vector<std::string> thread_ids; | 605 | std::vector<std::string> thread_ids; |
| 606 | for (const auto& thread : threads) { | 606 | for (const auto& thread : threads) { |
| 607 | thread_ids.push_back(fmt::format("{:x}", thread->GetThreadId())); | 607 | thread_ids.push_back(fmt::format("{:x}", thread.GetThreadId())); |
| 608 | } | 608 | } |
| 609 | SendReply(fmt::format("m{}", fmt::join(thread_ids, ","))); | 609 | SendReply(fmt::format("m{}", fmt::join(thread_ids, ","))); |
| 610 | } else if (command.starts_with("sThreadInfo")) { | 610 | } else if (command.starts_with("sThreadInfo")) { |
| @@ -616,14 +616,14 @@ void GDBStub::HandleQuery(std::string_view command) { | |||
| 616 | buffer += "<threads>"; | 616 | buffer += "<threads>"; |
| 617 | 617 | ||
| 618 | const auto& threads = system.ApplicationProcess()->GetThreadList(); | 618 | const auto& threads = system.ApplicationProcess()->GetThreadList(); |
| 619 | for (const auto* thread : threads) { | 619 | for (const auto& thread : threads) { |
| 620 | auto thread_name{GetThreadName(system, thread)}; | 620 | auto thread_name{GetThreadName(system, thread)}; |
| 621 | if (!thread_name) { | 621 | if (!thread_name) { |
| 622 | thread_name = fmt::format("Thread {:d}", thread->GetThreadId()); | 622 | thread_name = fmt::format("Thread {:d}", thread.GetThreadId()); |
| 623 | } | 623 | } |
| 624 | 624 | ||
| 625 | buffer += fmt::format(R"(<thread id="{:x}" core="{:d}" name="{}">{}</thread>)", | 625 | buffer += fmt::format(R"(<thread id="{:x}" core="{:d}" name="{}">{}</thread>)", |
| 626 | thread->GetThreadId(), thread->GetActiveCore(), | 626 | thread.GetThreadId(), thread.GetActiveCore(), |
| 627 | EscapeXML(*thread_name), GetThreadState(thread)); | 627 | EscapeXML(*thread_name), GetThreadState(thread)); |
| 628 | } | 628 | } |
| 629 | 629 | ||
| @@ -850,10 +850,10 @@ void GDBStub::HandleRcmd(const std::vector<u8>& command) { | |||
| 850 | } | 850 | } |
| 851 | 851 | ||
| 852 | Kernel::KThread* GDBStub::GetThreadByID(u64 thread_id) { | 852 | Kernel::KThread* GDBStub::GetThreadByID(u64 thread_id) { |
| 853 | const auto& threads{system.ApplicationProcess()->GetThreadList()}; | 853 | auto& threads{system.ApplicationProcess()->GetThreadList()}; |
| 854 | for (auto* thread : threads) { | 854 | for (auto& thread : threads) { |
| 855 | if (thread->GetThreadId() == thread_id) { | 855 | if (thread.GetThreadId() == thread_id) { |
| 856 | return thread; | 856 | return std::addressof(thread); |
| 857 | } | 857 | } |
| 858 | } | 858 | } |
| 859 | 859 | ||