summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZephyron <zephyron@citron-emu.org>2025-01-02 17:25:36 +1000
committerZephyron <zephyron@citron-emu.org>2025-01-02 17:25:36 +1000
commit167a9e1a5b495b469f119c3bcc7c5057f26a22ee (patch)
treed253b30faaf8d227f95d33631b2a07d7c6872776 /src
parent7dc72a0e9533f9b875658456bc01bfc6b390bb17 (diff)
arm: Skip duplicate consecutive addresses in backtrace output
Adds logic to track and skip duplicate consecutive addresses when logging backtraces. This improves log readability by removing redundant entries that point to the same address in sequence.
Diffstat (limited to 'src')
-rw-r--r--src/core/arm/arm_interface.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/arm/arm_interface.cpp b/src/core/arm/arm_interface.cpp
index 1c2557f2c..899c44bd9 100644
--- a/src/core/arm/arm_interface.cpp
+++ b/src/core/arm/arm_interface.cpp
@@ -18,9 +18,15 @@ void ArmInterface::LogBacktrace(Kernel::KProcess* process) const {
"Offset", "Symbol");
LOG_ERROR(Core_ARM, "");
const auto backtrace = GetBacktraceFromContext(process, ctx);
+
+ u64 last_address = 0;
for (const auto& entry : backtrace) {
+ 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;
}
}