diff --git a/rpcs3/Emu/CPU/CPUThread.cpp b/rpcs3/Emu/CPU/CPUThread.cpp index 4582d1a41c..25f91e85f5 100644 --- a/rpcs3/Emu/CPU/CPUThread.cpp +++ b/rpcs3/Emu/CPU/CPUThread.cpp @@ -627,7 +627,7 @@ std::string cpu_thread::dump_callstack() const return {}; } -std::vector cpu_thread::dump_callstack_list() const +std::vector> cpu_thread::dump_callstack_list() const { return {}; } diff --git a/rpcs3/Emu/CPU/CPUThread.h b/rpcs3/Emu/CPU/CPUThread.h index 2d7cb5e7eb..b009764ae4 100644 --- a/rpcs3/Emu/CPU/CPUThread.h +++ b/rpcs3/Emu/CPU/CPUThread.h @@ -103,7 +103,7 @@ public: virtual std::string dump_callstack() const; // Get CPU call stack list - virtual std::vector dump_callstack_list() const; + virtual std::vector> dump_callstack_list() const; // Get CPU dump of misc information virtual std::string dump_misc() const; diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 9b2c061e46..a1a0a427b6 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -472,16 +472,16 @@ std::string ppu_thread::dump_callstack() const fmt::append(ret, "Call stack:\n=========\n0x%08x (0x0) called\n", cia); - for (u32 sp : dump_callstack_list()) + for (const auto& sp : dump_callstack_list()) { // TODO: function addresses too - fmt::append(ret, "> from 0x%08x (0x0)\n", sp); + fmt::append(ret, "> from 0x%08x (r1=0x%08x)\n", sp.first, sp.second); } return ret; } -std::vector ppu_thread::dump_callstack_list() const +std::vector> ppu_thread::dump_callstack_list() const { //std::shared_lock rlock(vm::g_mutex); // Needs optimizations @@ -507,7 +507,7 @@ std::vector ppu_thread::dump_callstack_list() const stack_max += 4096; } - std::vector call_stack_list; + std::vector> call_stack_list; for ( u64 sp = *vm::get_super_ptr(stack_ptr); @@ -523,7 +523,7 @@ std::vector ppu_thread::dump_callstack_list() const } // TODO: function addresses too - call_stack_list.push_back(static_cast(addr)); + call_stack_list.emplace_back(static_cast(addr), static_cast(sp)); } return call_stack_list; diff --git a/rpcs3/Emu/Cell/PPUThread.h b/rpcs3/Emu/Cell/PPUThread.h index df65f02f42..ddebcb2998 100644 --- a/rpcs3/Emu/Cell/PPUThread.h +++ b/rpcs3/Emu/Cell/PPUThread.h @@ -70,7 +70,7 @@ public: virtual std::string dump_all() const override; virtual std::string dump_regs() const override; virtual std::string dump_callstack() const override; - virtual std::vector dump_callstack_list() const override; + virtual std::vector> dump_callstack_list() const override; virtual std::string dump_misc() const override; virtual void cpu_task() override final; virtual void cpu_sleep() override; diff --git a/rpcs3/Emu/Cell/SPUThread.cpp b/rpcs3/Emu/Cell/SPUThread.cpp index 626b6fbce7..13e2ea78c3 100644 --- a/rpcs3/Emu/Cell/SPUThread.cpp +++ b/rpcs3/Emu/Cell/SPUThread.cpp @@ -872,7 +872,7 @@ std::string spu_thread::dump_callstack() const return {}; } -std::vector spu_thread::dump_callstack_list() const +std::vector> spu_thread::dump_callstack_list() const { return {}; } diff --git a/rpcs3/Emu/Cell/SPUThread.h b/rpcs3/Emu/Cell/SPUThread.h index 097dc8ca9a..ac27d55a2a 100644 --- a/rpcs3/Emu/Cell/SPUThread.h +++ b/rpcs3/Emu/Cell/SPUThread.h @@ -534,7 +534,7 @@ public: virtual std::string dump_all() const override; virtual std::string dump_regs() const override; virtual std::string dump_callstack() const override; - virtual std::vector dump_callstack_list() const override; + virtual std::vector> dump_callstack_list() const override; virtual std::string dump_misc() const override; virtual void cpu_task() override final; virtual void cpu_mem() override; diff --git a/rpcs3/rpcs3qt/call_stack_list.cpp b/rpcs3/rpcs3qt/call_stack_list.cpp index c59c94c307..567198ecdd 100644 --- a/rpcs3/rpcs3qt/call_stack_list.cpp +++ b/rpcs3/rpcs3qt/call_stack_list.cpp @@ -17,15 +17,15 @@ void call_stack_list::UpdateCPUData(std::weak_ptr cpu, std::shared_p this->cpu = cpu; } -void call_stack_list::HandleUpdate(std::vector call_stack) +void call_stack_list::HandleUpdate(std::vector> call_stack) { clear(); - for (auto addr : call_stack) + for (const auto& addr : call_stack) { - const QString call_stack_item_text = qstr(fmt::format("0x%08llx", addr)); + const QString call_stack_item_text = qstr(fmt::format("0x%08llx (r1=0x%08llx)", addr.first, addr.second)); QListWidgetItem* callStackItem = new QListWidgetItem(call_stack_item_text); - callStackItem->setData(Qt::UserRole, { addr }); + callStackItem->setData(Qt::UserRole, { addr.first }); addItem(callStackItem); } } diff --git a/rpcs3/rpcs3qt/call_stack_list.h b/rpcs3/rpcs3qt/call_stack_list.h index 263ed8b2c5..fd269140be 100644 --- a/rpcs3/rpcs3qt/call_stack_list.h +++ b/rpcs3/rpcs3qt/call_stack_list.h @@ -18,7 +18,7 @@ public: Q_SIGNALS: void RequestShowAddress(u32 addr, bool force = false); public Q_SLOTS: - void HandleUpdate(std::vector call_stack); + void HandleUpdate(std::vector> call_stack); private Q_SLOTS: void OnCallStackListDoubleClicked(); private: diff --git a/rpcs3/rpcs3qt/debugger_frame.h b/rpcs3/rpcs3qt/debugger_frame.h index 4f05ee6e70..0d5d82ec53 100644 --- a/rpcs3/rpcs3qt/debugger_frame.h +++ b/rpcs3/rpcs3qt/debugger_frame.h @@ -86,7 +86,7 @@ protected: Q_SIGNALS: void DebugFrameClosed(); - void CallStackUpdateRequested(std::vector call_stack); + void CallStackUpdateRequested(std::vector> call_stack); public Q_SLOTS: void DoStep(bool stepOver = false);