mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-18 21:24:32 -04:00
Add functions to save and restore the PrettyStackTrace state.
PrettyStackTraceHead is a LLVM_THREAD_LOCAL, which means it's just a global in LLVM_ENABLE_THREADS=NO builds. If a CrashRecoveryContext is used with code that uses PrettyStackEntries, and a crash happens, PrettyStackTraceHead is currently not reset to its pre-crash value. These functions make it possible to add a cleanup to such code that does this. (Not reseting the value then causes the assert in ~PrettyStackTraceEntry() to fire if the code outside of the CrashRecoveryContext also uses PrettyStackEntries -- for example, clang when building a module.) Part of PR11974. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244338 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -154,6 +154,20 @@ void llvm::EnablePrettyStackTrace() {
|
||||
#endif
|
||||
}
|
||||
|
||||
const void* llvm::SavePrettyStackState() {
|
||||
#if defined(HAVE_BACKTRACE) && defined(ENABLE_BACKTRACES)
|
||||
return PrettyStackTraceHead;
|
||||
#else
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
void llvm::RestorePrettyStackState(const void* Top) {
|
||||
#if defined(HAVE_BACKTRACE) && defined(ENABLE_BACKTRACES)
|
||||
PrettyStackTraceHead = (const PrettyStackTraceEntry*)Top;
|
||||
#endif
|
||||
}
|
||||
|
||||
void LLVMEnablePrettyStackTrace() {
|
||||
EnablePrettyStackTrace();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user