Dean Michael Berris
d1617cdc49
[XRay] ARM 32-bit no-Thumb support in compiler-rt
...
This is a port of XRay to ARM 32-bit, without Thumb support yet.
This is one of 3 commits to different repositories of XRay ARM port. The other 2 are:
https://reviews.llvm.org/D23931 (LLVM)
https://reviews.llvm.org/D23932 (Clang test)
Differential Revision: https://reviews.llvm.org/D23933
llvm-svn: 281971
2016-09-20 14:35:57 +00:00
Etienne Bergeron
130a190bf0
[compiler-rt] Add support for the dynamic shadow allocation
...
Summary:
This patch is adding the needed code to compiler-rt to support
dynamic shadow.
This is to support this patch:
https://reviews.llvm.org/D23354
It's adding support for using a shadow placed at a dynamic address determined
at runtime.
The dynamic shadow is required to work on windows 64-bits.
Reviewers: rnk, kcc, vitalybuka
Subscribers: kubabrecka, dberris, llvm-commits, chrisha
Differential Revision: https://reviews.llvm.org/D23363
llvm-svn: 281909
2016-09-19 15:59:01 +00:00
Kostya Serebryany
f0ca160ea2
[sanitizer] rename __sanitizer_symbolize_data to __sanitizer_symbolize_global (to avoid conflict with another definition)
...
llvm-svn: 281902
2016-09-19 14:18:16 +00:00
Kostya Serebryany
88b93166dc
[sanitizer] add __sanitizer_symbolize_data (can only print the names of the globals for now)
...
llvm-svn: 281886
2016-09-19 05:10:32 +00:00
Kostya Serebryany
4dd6b50f6e
[asan] fix window build
...
llvm-svn: 281679
2016-09-15 23:17:02 +00:00
Kostya Serebryany
3e9ce5f447
[asan] provide dummy implementations for __sanitizer_cov_trace_pc_*
...
llvm-svn: 281677
2016-09-15 23:02:20 +00:00
Evgeniy Stepanov
8652d6ac05
[asan] Reenable 64-bit allocator on android/aarch64.
...
This is a re-commit of r281371, with updated tests.
llvm-svn: 281674
2016-09-15 22:34:53 +00:00
Anna Zaks
de3fb6f0b4
[sanitizer] Fixup 2: Do not introduce __sanitizer namespace globally
...
This got committed by mistake. Should fix some bots.
llvm-svn: 281668
2016-09-15 22:18:36 +00:00
Anna Zaks
8835e9076c
[compiler-rt] Remove the system includes from __sanitizer namespace
...
llvm-svn: 281658
2016-09-15 21:02:22 +00:00
Anna Zaks
691644f3ca
[compiler-rt] Do not introduce __sanitizer namespace globally
...
The definitions in sanitizer_common may conflict with definitions from system headers because:
The runtime includes the system headers after the project headers (as per LLVM coding guidelines).
lib/sanitizer_common/sanitizer_internal_defs.h pollutes the namespace of everything defined after it, which is all/most of the sanitizer .h and .cc files and the included system headers with: using namespace __sanitizer; // NOLINT
This patch solves the problem by introducing the namespace only within the sanitizer namespaces as proposed by Dmitry.
Differential Revision: https://reviews.llvm.org/D21947
llvm-svn: 281657
2016-09-15 21:02:18 +00:00
Anna Zaks
592bc45533
[sanitizers] DLAddr Symbolizer should fail if demangle fails
...
This can case crashes in high verbosity mode when demangling fails.
Not including a test case since this is hard to reproduce.
llvm-svn: 281656
2016-09-15 21:02:09 +00:00
Reid Kleckner
110ecbd336
[sanitizer] Test the allocator with the ASan win64 memory constants
...
These got out of sync and the tests were failing for me locally. We
assume a 47 bit address space in ASan, so we should do the same in the
tests.
llvm-svn: 281622
2016-09-15 16:00:46 +00:00
Reid Kleckner
389c7f9142
Really fix the Windows sanitizer build
...
Don't list __sanitizer_print_memory profile as an INTERFACE_FUNCTION. It
is not exported by ASan; it is exported by user code.
Move the weak definition from asan_win.cc to sanitizer_win.cc to fix the
ubsan tests.
llvm-svn: 281619
2016-09-15 15:39:52 +00:00
Ahmed Bougacha
546d2a3820
[sanitizer] Fix darwin Go tsan build by unifying r281567 and r281553.
...
Avoid redefining the weak stub when building gotsan.cc
llvm-svn: 281576
2016-09-15 04:28:20 +00:00
Kostya Serebryany
5fd668fcfb
[sanitizer] one more attempt to fix things with __sanitizer_print_memory_profile
...
llvm-svn: 281574
2016-09-15 02:11:07 +00:00
Ahmed Bougacha
5a19a2732c
Define the weak symbol added by r281546 on mac.
...
'weak' doesn't behave like it does on linux.
llvm-svn: 281567
2016-09-15 01:04:32 +00:00
Kostya Serebryany
446b5d8811
[tsan] fix tsan build by adding a dummy __sanitizer_print_memory_profile
...
llvm-svn: 281553
2016-09-14 22:35:56 +00:00
Kostya Serebryany
7b296aa567
[asan] add heap_profile=1 to asan to periodically print the heap profile. So far this is a very basic heap-profile functionality
...
llvm-svn: 281546
2016-09-14 22:00:58 +00:00
Evgeniy Stepanov
8bb104b587
[asan] Disable 64-bit allocator on android/aarch64.
...
Makes the device strangely unstable, and fails one sanitizer_common test.
llvm-svn: 281533
2016-09-14 20:25:51 +00:00
Evgeniy Stepanov
ec3e436a36
Switch to 64-bit allocator on android/aarch64.
...
This uses the "very compact" size class mapping that fits in the
39-bit address space.
llvm-svn: 281371
2016-09-13 19:05:33 +00:00
Kostya Serebryany
9a830b9433
[sanitizer] replace CHECK with CHECK_XY in two places for better diagnostics
...
llvm-svn: 281255
2016-09-12 20:39:13 +00:00
Filipe Cabecinhas
64150ea00d
[asan] Cleanup: Move tid into ErrorBase, add const to BufferedStackTrace, be consistent in constructor arguments and member order.
...
Summary: As mentioned in D24394, I'm moving tid to ErrorBase, since basically all errors need it.
Also mentioned in the same review are other cleanups like adding const
to BufferedStackTrace and make sure constructor orders are consistent.
Reviewers: vitalybuka, kcc, eugenis
Subscribers: llvm-commits, kubabrecka
Differential Revision: https://reviews.llvm.org/D24455
llvm-svn: 281236
2016-09-12 17:10:44 +00:00
Keno Fischer
8dc0e0943b
[sanitizer] Add interceptor for ttyname_r
...
Reviewers: eugenis
Subscribers: kubabrecka, llvm-commits
Differential Revision: https://reviews.llvm.org/D24375
llvm-svn: 281116
2016-09-09 23:09:34 +00:00
Kostya Serebryany
58560a05ad
[sanitizer] fix an allocator bug where the allocated memory may overlap with the free array (kudos to Kostya Korcthinsky). Also make sure that the allocator does not mmap more than requested. Test both.
...
llvm-svn: 281103
2016-09-09 21:42:33 +00:00
Kostya Serebryany
d77e8c0269
[sanitizer] fix a potential buffer overflow due to __sanitizer_symbolize_pc (need to put a zero after strncmp). LOL
...
llvm-svn: 281015
2016-09-09 02:13:27 +00:00
Evgeniy Stepanov
55f9f18cb2
Fix tsan-go build.
...
Disable the new abort-in-SIGABRT code under SANITIZER_GO.
llvm-svn: 280980
2016-09-08 19:16:01 +00:00
Renato Golin
6f605133dd
Revert "[XRay] ARM 32-bit no-Thumb support in compiler-rt"
...
This reverts commit r280890, as the related LLVM commit broke the thumb bots.
llvm-svn: 280969
2016-09-08 17:13:15 +00:00
Reid Kleckner
490ccc9cc7
Fix linker warning about sanitizer_common_nolibc functions on Windows
...
llvm-svn: 280962
2016-09-08 16:46:06 +00:00
Qin Zhao
0ab52b97e8
Revert "[ESan][MIPS] Adds support for MIPS64"
...
Summary:
This reverts commit 62b3eecdbe72af0255f0639b0446087a47efbf48. (D23799)
The CL cause 13 ESan test failure on x86_64:
Failing Tests (13):
EfficiencySanitizer-x86_64 :: TestCases/large-stack-linux.c
EfficiencySanitizer-x86_64 :: TestCases/libc-intercept.c
EfficiencySanitizer-x86_64 :: TestCases/mmap-shadow-conflict.c
EfficiencySanitizer-x86_64 :: TestCases/struct-simple.cpp
EfficiencySanitizer-x86_64 :: TestCases/verbose-simple.c
EfficiencySanitizer-x86_64 :: TestCases/workingset-early-fault.c
EfficiencySanitizer-x86_64 :: TestCases/workingset-memset.cpp
EfficiencySanitizer-x86_64 :: TestCases/workingset-midreport.cpp
EfficiencySanitizer-x86_64 :: TestCases/workingset-samples.cpp
EfficiencySanitizer-x86_64 :: TestCases/workingset-signal-posix.cpp
EfficiencySanitizer-x86_64 :: TestCases/workingset-simple.cpp
EfficiencySanitizer-x86_64 :: Unit/circular_buffer.cpp
EfficiencySanitizer-x86_64 :: Unit/hashtable.cpp
Unexpected Failures: 13
Reviewers: bruening, slthakur
Subscribers: sdardis, kubabrecka, beanz
Differential Revision: https://reviews.llvm.org/D24350
llvm-svn: 280954
2016-09-08 16:09:46 +00:00
Kuba Brecka
8651c04ce0
[asan] Fix handle_abort_on_error.cc test on Darwin
...
r280885 added a testcase for handle_abort, which is broken on macOS, let’s add this support into sanitizer_mac.cc.
Differential Revision: https://reviews.llvm.org/D24344
llvm-svn: 280945
2016-09-08 14:32:11 +00:00
Dean Michael Berris
5332645c6d
[XRay] ARM 32-bit no-Thumb support in compiler-rt
...
This is a port of XRay to ARM 32-bit, without Thumb support yet.
This is one of 3 commits to different repositories of XRay ARM port. The
other 2 are:
1. https://reviews.llvm.org/D23931 (LLVM)
2. https://reviews.llvm.org/D23932 (Clang test)
Differential Revision: https://reviews.llvm.org/D23933
llvm-svn: 280890
2016-09-08 00:28:26 +00:00
Evgeniy Stepanov
337e40f157
[sanitizer] Fix a conflict between abort_on_error and handle_abort.
...
Reset the SIGABRT signal handler before calling abort().
Also, change the error message when catching SIGABRT to say "ABRT"
instead of "SEGV".
llvm-svn: 280885
2016-09-07 23:40:53 +00:00
Evgeniy Stepanov
e29f05d037
[asan] Fix build on Linux.
...
llvm-svn: 280881
2016-09-07 23:19:16 +00:00
Evgeniy Stepanov
0b2dba1841
[asan] Add openlog() on Android.
...
Normally, syslog() uses argv[0] for the log tag; bionic, however,
would crash in syslog() before libc constructor unless the log
tag is explicitly set with openlog().
llvm-svn: 280875
2016-09-07 22:56:02 +00:00
Sagar Thakur
41f08b4422
[ESan][MIPS] Adds support for MIPS64
...
With this patch 10 out of 13 tests are passing.
Following is the list of failing tests:
struct-simple.cpp
workingset-signal-posix.cpp
mmap-shadow-conflict.c
Reviewed by bruening
Differential: D23799
llvm-svn: 280795
2016-09-07 09:09:03 +00:00
Kostya Serebryany
2700bd831a
[sanitizer] extend SizeClassMap to take more template parameters, add VeryCompactSizeClassMap for testing purposes
...
llvm-svn: 280266
2016-08-31 17:52:55 +00:00
Kostya Serebryany
4fd30769c1
[sanitizer] remove kBatchClassID that is not used any more; NFC
...
llvm-svn: 280185
2016-08-31 00:37:33 +00:00
Kostya Serebryany
b3177cea0a
[sanitizer-coverage] add two more modes of instrumentation: trace-div and trace-gep, mostly usaful for value-profile-based fuzzing; run-time part
...
llvm-svn: 280045
2016-08-30 01:27:46 +00:00
Kostya Serebryany
6496de48c7
[scudo] use 32 bits of ASLR entropy instead of just 24 when shuffling allocated chunks
...
llvm-svn: 279983
2016-08-29 17:45:43 +00:00
Kostya Serebryany
b72479b84a
[asan] first attempt at releasing free-d memory back to the system using madvise. Requires quite some tuning.
...
llvm-svn: 279887
2016-08-26 23:58:42 +00:00
Kostya Serebryany
7c5ae7cbc6
[sanitizer] enable random shuffling the memory chunks inside the allocator, under a flag. Set this flag for the scudo allocator, add a test.
...
llvm-svn: 279793
2016-08-26 00:06:03 +00:00
Kostya Serebryany
9aab75f697
[sanitizer] add __sanitizer_symbolize_pc. https://github.com/google/sanitizers/issues/322
...
llvm-svn: 279780
2016-08-25 21:35:29 +00:00
Kostya Serebryany
15647b17f3
[sanitizer] change SizeClassAllocator64 to accept just one template parameter instead of 5. First, this will make the mangled names shorter. Second, this will make adding more parameters simpler.
...
llvm-svn: 279771
2016-08-25 20:23:08 +00:00
Kostya Serebryany
8e7ea9ddb5
[sanitizer] re-apply r279572 and r279595 reverted in r279643: change the 64-bit allocator to use a single array for free-d chunks instead of a lock-free linked list of tranfer batches. This change simplifies the code, makes the allocator more 'hardened', and will allow simpler code to release RAM to OS. This may also slowdown malloc stress tests due to lock contension, but I did not observe noticeable slowdown on various real multi-threaded benchmarks.
...
llvm-svn: 279664
2016-08-24 21:20:10 +00:00
Vitaly Buka
769ec705bc
Revert r279572 "[sanitizer] change the 64-bit..." because of failures on ubsan
...
This reverts commit r279572 and r279595.
llvm-svn: 279643
2016-08-24 17:40:29 +00:00
Kostya Serebryany
865a98d2ed
[sanitizer] trying to fix the PPC bots
...
llvm-svn: 279595
2016-08-24 00:10:25 +00:00
Kostya Serebryany
f46d50e360
[sanitizer] change the 64-bit allocator to use a single array for free-d chunks instead of a lock-free linked list of tranfer batches. This change simplifies the code, makes the allocator more 'hardened', and will allow simpler code to release RAM to OS. This may also slowdown malloc stress tests due to lock contension, but I did not observe noticeable slowdown on various real multi-threaded benchmarks.
...
llvm-svn: 279572
2016-08-23 21:19:47 +00:00
Kostya Serebryany
0549a39a17
[sanitizer] adding a threaded performance stress test for malloc (useful for manual analysis of malloc performance)
...
llvm-svn: 279570
2016-08-23 21:12:04 +00:00
Kostya Serebryany
ce2163459f
[sanitizer] allocator: split the local cache class into two, one for 32-bit allocator and one for 64-bit one. NFC. The two imlementations will diverge in the following changes.
...
llvm-svn: 279495
2016-08-23 00:30:43 +00:00
Kostya Serebryany
385b973ad3
[sanitizer-coverage] add __sanitizer_cov_trace_cmp[1248] to the sanitizer-coverage interface
...
llvm-svn: 279026
2016-08-18 01:23:27 +00:00