diff --git a/rpcs3/rpcs3qt/debugger_frame.cpp b/rpcs3/rpcs3qt/debugger_frame.cpp index 42d23dd06a..64579a910a 100644 --- a/rpcs3/rpcs3qt/debugger_frame.cpp +++ b/rpcs3/rpcs3qt/debugger_frame.cpp @@ -1242,10 +1242,32 @@ void debugger_frame::ShowGotoAddressDialog() void debugger_frame::PerformGoToRequest(const QString& text_argument) { - const u64 address = EvaluateExpression(text_argument); + const bool asterisk_prefixed = text_argument.startsWith(QChar('*')); + const u64 address = EvaluateExpression(asterisk_prefixed ? text_argument.sliced(1, text_argument.size() - 1) : text_argument); if (address != umax) { + // Try to read from OPD entry if prefixed by asterisk + if (asterisk_prefixed) + { + if (auto cpu = get_cpu()) + { + if (auto ppu = cpu->try_get()) + { + const vm::ptr func_ptr = vm::cast(static_cast(address)); + + be_t code_addr{}; + + if (func_ptr.try_read(code_addr)) + { + m_debugger_list->ShowAddress(code_addr, true); + } + } + } + + return; + } + m_debugger_list->ShowAddress(static_cast(address), true); } }