diff options
Diffstat (limited to 'libbacktrace')
-rw-r--r-- | libbacktrace/Backtrace.cpp | 2 | ||||
-rw-r--r-- | libbacktrace/UnwindStack.cpp | 4 | ||||
-rw-r--r-- | libbacktrace/include/backtrace/Backtrace.h | 2 |
3 files changed, 8 insertions, 0 deletions
diff --git a/libbacktrace/Backtrace.cpp b/libbacktrace/Backtrace.cpp index 6bec63c..71980d7 100644 --- a/libbacktrace/Backtrace.cpp +++ b/libbacktrace/Backtrace.cpp @@ -170,5 +170,7 @@ std::string Backtrace::GetErrorString(BacktraceUnwindError error) { return "Failed to unwind due to invalid unwind information"; case BACKTRACE_UNWIND_ERROR_REPEATED_FRAME: return "Failed to unwind due to same sp/pc repeating"; + case BACKTRACE_UNWIND_ERROR_INVALID_ELF: + return "Failed to unwind due to invalid elf"; } } diff --git a/libbacktrace/UnwindStack.cpp b/libbacktrace/UnwindStack.cpp index f5f9b2a..36640cd 100644 --- a/libbacktrace/UnwindStack.cpp +++ b/libbacktrace/UnwindStack.cpp @@ -89,6 +89,10 @@ bool Backtrace::Unwind(unwindstack::Regs* regs, BacktraceMap* back_map, case unwindstack::ERROR_REPEATED_FRAME: error->error_code = BACKTRACE_UNWIND_ERROR_REPEATED_FRAME; break; + + case unwindstack::ERROR_INVALID_ELF: + error->error_code = BACKTRACE_UNWIND_ERROR_INVALID_ELF; + break; } } diff --git a/libbacktrace/include/backtrace/Backtrace.h b/libbacktrace/include/backtrace/Backtrace.h index 10e790b..404e7e8 100644 --- a/libbacktrace/include/backtrace/Backtrace.h +++ b/libbacktrace/include/backtrace/Backtrace.h @@ -64,6 +64,8 @@ enum BacktraceUnwindErrorCode : uint32_t { BACKTRACE_UNWIND_ERROR_UNWIND_INFO, // Unwind information stopped due to sp/pc repeating. BACKTRACE_UNWIND_ERROR_REPEATED_FRAME, + // Unwind information stopped due to invalid elf. + BACKTRACE_UNWIND_ERROR_INVALID_ELF, }; struct BacktraceUnwindError { |