mirror of
https://git.proxmox.com/git/llvm-toolchain
synced 2025-10-17 18:06:22 +00:00
The sanitizers use the versionned llvm-symbolizer provided by the llvm-X package (Closes: #753572)
This commit is contained in:
parent
f9bd1ba58d
commit
a620f52ff6
4
debian/changelog
vendored
4
debian/changelog
vendored
@ -11,8 +11,8 @@ llvm-toolchain-7 (1:7-8) unstable; urgency=medium
|
||||
(Closes: #909705)
|
||||
* Add tests from old bugs to make sure they don't come back
|
||||
(Closes: #889832, #827866)
|
||||
* The sanitizers use the versionned llvm-symbolizer provided by the llvm-X package
|
||||
(Closes: #753572)
|
||||
* The sanitizers use the versionned llvm-symbolizer provided by the
|
||||
llvm-X package (Closes: #753572)
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Sat, 20 Oct 2018 16:00:58 +0200
|
||||
|
||||
|
9
debian/patches/symbolizer-path.diff
vendored
9
debian/patches/symbolizer-path.diff
vendored
@ -2,20 +2,23 @@ Index: llvm-toolchain-7-7/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_
|
||||
===================================================================
|
||||
--- llvm-toolchain-7-7.orig/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
|
||||
+++ llvm-toolchain-7-7/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
|
||||
@@ -26,6 +26,7 @@
|
||||
@@ -26,6 +26,10 @@
|
||||
#include "sanitizer_symbolizer_internal.h"
|
||||
#include "sanitizer_symbolizer_libbacktrace.h"
|
||||
#include "sanitizer_symbolizer_mac.h"
|
||||
+#include "llvm/Config/llvm-config.h" // for LLVM_VERSION_MAJOR
|
||||
+
|
||||
+#define TOSTR2(X) #X
|
||||
+#define TOSTR(X) TOSTR2(X)
|
||||
|
||||
#include <dlfcn.h> // for dlsym()
|
||||
#include <errno.h>
|
||||
@@ -481,7 +482,7 @@ static SymbolizerTool *ChooseExternalSym
|
||||
@@ -481,7 +485,7 @@ static SymbolizerTool *ChooseExternalSym
|
||||
return new(*allocator) AtosSymbolizer(found_path, allocator);
|
||||
}
|
||||
#endif // SANITIZER_MAC
|
||||
- if (const char *found_path = FindPathToBinary("llvm-symbolizer")) {
|
||||
+ if (const char *found_path = FindPathToBinary("llvm-symbolizer-"LLVM_VERSION_MAJOR)) {
|
||||
+ if (const char *found_path = "/usr/bin/llvm-symbolizer-" TOSTR(LLVM_VERSION_MAJOR))) {
|
||||
VReport(2, "Using llvm-symbolizer found at: %s\n", found_path);
|
||||
return new(*allocator) LLVMSymbolizer(found_path, allocator);
|
||||
}
|
||||
|
56
debian/qualify-clang.sh
vendored
56
debian/qualify-clang.sh
vendored
@ -176,6 +176,61 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||
}
|
||||
EOF
|
||||
|
||||
echo 'int main(int argc, char **argv) {
|
||||
int *array = new int[100];
|
||||
delete [] array;
|
||||
return array[argc]; // BOOM
|
||||
}' > foo.cpp
|
||||
clang++-$VERSION -O1 -g -fsanitize=address -fno-omit-frame-pointer foo.cpp
|
||||
ASAN_OPTIONS=verbosity=1 ./a.out &> foo.log || true
|
||||
if ! grep "Init done" foo.log; then
|
||||
echo "asan verbose mode failed"
|
||||
cat foo.log
|
||||
exit 42
|
||||
fi
|
||||
|
||||
if test ! -f /usr/lib/llvm-$VERSION/bin/llvm-symbolizer; then
|
||||
echo "Install llvm-$VERSION"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# See also https://bugs.llvm.org/show_bug.cgi?id=39514 why
|
||||
# /usr/bin/llvm-symbolizer-7 doesn't work
|
||||
ASAN_OPTIONS=verbosity=2:external_symbolizer_path=/usr/lib/llvm-$VERSION/bin/llvm-symbolizer ./a.out &> foo.log || true
|
||||
if ! grep "Using llvm-symbolizer" foo.log; then
|
||||
echo "could not find llvm-symbolizer path"
|
||||
cat foo.log
|
||||
exit 42
|
||||
fi
|
||||
if ! grep "new\[\](unsigned long)" foo.log; then
|
||||
echo "could not symbolize correctly"
|
||||
cat foo.log
|
||||
exit 42
|
||||
fi
|
||||
|
||||
if ! grep "foo.cpp:3:3" foo.log; then
|
||||
echo "could not symbolize correctly"
|
||||
cat foo.log
|
||||
exit 42
|
||||
fi
|
||||
./a.out &> foo.log || true
|
||||
if ! grep "Using llvm-symbolizer" foo.log; then
|
||||
echo "could not find llvm-symbolizer path"
|
||||
cat foo.log
|
||||
exit 42
|
||||
fi
|
||||
if ! grep "new\[\](unsigned long)" foo.log; then
|
||||
echo "could not symbolize correctly"
|
||||
cat foo.log
|
||||
exit 42
|
||||
fi
|
||||
|
||||
if ! grep "foo.cpp:3:3" foo.log; then
|
||||
echo "could not symbolize correctly"
|
||||
cat foo.log
|
||||
exit 42
|
||||
fi
|
||||
|
||||
if test ! -f /usr/lib/llvm-$VERSION/lib/libFuzzer.a; then
|
||||
echo "Install libfuzzer-$VERSION-dev";
|
||||
exit -1;
|
||||
@ -188,6 +243,7 @@ if ! ./a.out 2>&1 | grep -q -E "(Test unit written|PreferSmall)"; then
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# fails on 32 bit, seems a real BUG in the package, using 64bit static libs?
|
||||
LANG=C clang-$VERSION -fsanitize=fuzzer test_fuzzer.cc &> foo.log
|
||||
if ! grep "No such file or directory" foo.log; then
|
||||
|
Loading…
Reference in New Issue
Block a user