aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
diff options
context:
space:
mode:
authorAnthony Tran <atran881@usc.edu>2025-07-26 08:50:25 -0700
committerGitHub <noreply@github.com>2025-07-26 08:50:25 -0700
commit29992cfd628ed5b968ccb73b17ed0521382ba317 (patch)
tree1c223a6d8a8ff94a357ff8624b8f9ce080c16648 /llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
parentfa79c23ecc23d6e8a6956d9caedd0443ecdb5853 (diff)
downloadllvm-29992cfd628ed5b968ccb73b17ed0521382ba317.zip
llvm-29992cfd628ed5b968ccb73b17ed0521382ba317.tar.gz
llvm-29992cfd628ed5b968ccb73b17ed0521382ba317.tar.bz2
[Clang][CodeGen] Emit “trap reasons” on UBSan traps (#145967)
This patch adds a human readable trap category and message to UBSan traps. The category and message are encoded in a fake frame in the debug info where the function is a fake inline function where the name encodes the trap category and message. This is the same mechanism used by Clang’s `__builtin_verbose_trap()`. This change allows consumers of binaries built with trapping UBSan to more easily identify the reason for trapping. In particular LLDB already has a frame recognizer that recognizes the fake function names emitted in debug info by this patch. A patch testing this behavior in LLDB will be added in a separately. The human readable trap messages are based on the messages currently emitted by the userspace runtime for UBSan in compiler-rt. Note the wording is not identical because the userspace UBSan runtime has access to dynamic information that is not available during Clang’s codegen. Test cases for each UBSan trap kind are included. This complements the [`-fsanitize-annotate-debug-info` feature](https://github.com/llvm/llvm-project/pull/141997). While `-fsanitize-annotate-debug-info` attempts to annotate all UBSan-added instructions, this feature (`-fsanitize-debug-trap-reasons`) only annotates the final trap instruction using SanitizerHandler information. This work is part of a GSoc 2025 project.
Diffstat (limited to 'llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions