From 2feb286e0756d56cfbf680503b483b8f922c2c1b Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Tue, 6 Aug 2019 00:21:30 +0000 Subject: [PATCH] Silence ubsan after r367926. Fixes e.g. http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap-ubsan/builds/14273 We can't left shift here because left shifting of a negative number is UB. The same doesn't apply to unsigned arithmetic, but switching to unsigned doesn't appear to stop ubsan from complaining, so we need to mask out the high bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@367959 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp b/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp index 03c5c6b8e10..d6596ea3926 100644 --- a/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp +++ b/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp @@ -178,6 +178,7 @@ std::error_code SymbolizableObjectFile::addSymbol(const SymbolRef &Symbol, if (UntagAddresses) { // For kernel addresses, bits 56-63 need to be set, so we sign extend bit 55 // into bits 56-63 instead of masking them out. + SymbolAddress &= (1ull << 56) - 1; SymbolAddress = (int64_t(SymbolAddress) << 8) >> 8; } if (OpdExtractor) { -- 2.40.0