[arm] allow duplicate addresses on backtrace (#251)

As a reminder, never remove duplicate entries from a back-trace, ever.
Signed-off-by: lizzie <lizzie@eden-emu.dev>

Reviewed-on: #251
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
lizzie 2025-08-15 23:20:08 +02:00 committed by crueter
parent 09a8fab2a2
commit 9c6fad7561
Signed by: crueter
GPG key ID: 425ACD2D4830EBC6

View file

@ -1,3 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@ -12,25 +14,11 @@ namespace Core {
void ArmInterface::LogBacktrace(Kernel::KProcess* process) const {
Kernel::Svc::ThreadContext ctx;
this->GetContext(ctx);
LOG_ERROR(Core_ARM, "Backtrace, sp={:016X}, pc={:016X}", ctx.sp, ctx.pc);
LOG_ERROR(Core_ARM, "{:20}{:20}{:20}{:20}{}", "Module Name", "Address", "Original Address", "Offset", "Symbol");
LOG_ERROR(Core_ARM, "");
const auto backtrace = GetBacktraceFromContext(process, ctx);
u64 last_address = 0;
for (const auto& entry : backtrace) {
// Skip duplicate consecutive addresses
if (entry.address == last_address)
continue;
LOG_ERROR(Core_ARM, "{:20}{:016X} {:016X} {:016X} {}", entry.module, entry.address,
entry.original_address, entry.offset, entry.name);
last_address = entry.address;
}
auto const backtrace = GetBacktraceFromContext(process, ctx);
for (auto const& entry : backtrace)
LOG_ERROR(Core_ARM, "{:20}{:016X} {:016X} {:016X} {}", entry.module, entry.address, entry.original_address, entry.offset, entry.name);
}
const Kernel::DebugWatchpoint* ArmInterface::MatchingWatchpoint(