Evgeniy Stepanov
251080b0eb
[sanitizer] Fix build when scanf interceptors are enabled, and __isoc99_*scanf are not.
...
Fixes PR16916.
llvm-svn: 189015
2013-08-22 13:59:15 +00:00
Chandler Carruth
6b8d17bf35
It appears that glibc 2.13 has the same thread descriptor size as 2.11,
...
bump up the inflection point to 2.14. If someone can tell me how to
actually figure out value for this, that would be awesome.
Anyways, this takes me to one ASan failure, one LSan failure, and three
TSan failures for 'check-all' on Linux.
llvm-svn: 188635
2013-08-18 10:04:51 +00:00
Chandler Carruth
022a3d4e88
Revert r188369 (and r188455) which breaks the build on at least some
...
Linux systems. I've replied on the original commit thread with details
of the problem.
llvm-svn: 188628
2013-08-18 08:47:06 +00:00
Timur Iskhodzhanov
10286e1e59
[ASan/RTL] Disable colored reporting on Windows
...
llvm-svn: 188545
2013-08-16 11:26:26 +00:00
Evgeniy Stepanov
a1d44d4d8f
[sanitizer] Add missing include.
...
llvm-svn: 188455
2013-08-15 10:20:30 +00:00
Evgeniy Stepanov
0bb7577d89
[sanitizer] Split platform_limits_posix into system- and kernel-dependent parts.
...
This change moves everything depending on kernel headers (mostly ioctl types
and ids) into a separate source file. This will reduce the possibility of
header conflict on various platforms (most importantly, older glibc versions).
This change also removes 2 deprecated ioctls, and symbolic ids for other bunch
of ambiguous ioctls (i.e. same id is shared by ioctls with different memory
behavior).
llvm-svn: 188369
2013-08-14 13:34:14 +00:00
Timur Iskhodzhanov
dd052cedf8
Add a FIXME to check_lint
...
llvm-svn: 188266
2013-08-13 13:44:02 +00:00
Timur Iskhodzhanov
82a6647755
[*San/RTL] One more minor fix
...
llvm-svn: 188263
2013-08-13 12:16:43 +00:00
Timur Iskhodzhanov
45e82d12b0
[*San/RTL] Fix minor breakage
...
Grumbling: this hasn't been caught by running 'make check-{a,l,t}san check-sanitizer'
llvm-svn: 188262
2013-08-13 12:03:51 +00:00
Timur Iskhodzhanov
eee13914e2
Define SANITIZER_INTERFACE_ATTRIBUTE on Windows and fix all the places where SANITIZER_INTERFACE_ATTRIBUTE or SANITIZER_ATTRIBUTE_WEAK are used
...
llvm-svn: 188261
2013-08-13 11:42:45 +00:00
Evgeniy Stepanov
64cace0687
[sanitizer] Intercept poll/ppoll.
...
llvm-svn: 188177
2013-08-12 13:19:53 +00:00
Evgeniy Stepanov
98c39a184e
[sanitizer] Intercept getgroups.
...
llvm-svn: 188167
2013-08-12 11:01:40 +00:00
Daniel Dunbar
bc5dbc435e
[tests] Update to use lit_config and lit package, as appropriate.
...
llvm-svn: 188116
2013-08-09 22:14:01 +00:00
Evgeniy Stepanov
7f915cf8a5
[sanitizer] Fix handling of %n in scanf interceptor.
...
%n does not increase the input item count. The new code emits writes to %n
arguments even if it has run out of input items.
llvm-svn: 188069
2013-08-09 12:58:35 +00:00
Evgeniy Stepanov
3bf5439a9d
[sanitizer] Limit scandir interceptor to Linux.
...
Implementation uses __thread not available on certain platforms.
llvm-svn: 187983
2013-08-08 14:04:36 +00:00
Evgeniy Stepanov
564215d949
[sanitizer] Intercept scandir/scandir64.
...
llvm-svn: 187982
2013-08-08 13:57:15 +00:00
Dmitry Vyukov
87bf47894c
tsan: better diagnostics for invalid addresses passed to free()
...
llvm-svn: 187980
2013-08-08 13:47:50 +00:00
Evgeniy Stepanov
233455cba8
[sanitizer] Intercept strerror and strerror_r.
...
llvm-svn: 187978
2013-08-08 11:44:05 +00:00
Evgeniy Stepanov
04b7bff1fe
[sanitizer] Intercept sched_getaffinity.
...
Re-applying with a more reliable test case.
llvm-svn: 187876
2013-08-07 09:10:16 +00:00
David Blaikie
787e2b6499
Revert "[sanitizer] Intercept sched_getaffinity."
...
This reverts commit r187788.
The test case is unreliable (as the test may be run in a situation in
which it has no affinity with cpu0). This can be recommitted with a more
reliable test - possibly using CPU_COUNT != 0 instead (I wasn't entirely
sure that a process was guaranteed to have at least one affinity, though
it seems reasonable, or I'd have made the change myself).
llvm-svn: 187841
2013-08-07 00:37:26 +00:00
Alexander Potapenko
8c6cd93123
[libsanitizer] Drive-by fix for -Wempty-body in sanitizer_common_syscalls.inc
...
This makes the file consistently use { } around the if statements containing the PRE_/POST_ macros.
llvm-svn: 187797
2013-08-06 14:07:46 +00:00
Evgeniy Stepanov
03c0281a17
[sanitizer] Fix NULL arg handling in setitimer/getitimer interceptors.
...
llvm-svn: 187789
2013-08-06 09:54:33 +00:00
Evgeniy Stepanov
9f05e5e533
[sanitizer] Intercept sched_getaffinity.
...
llvm-svn: 187788
2013-08-06 09:29:01 +00:00
Alexey Samsonov
b42ea7ef21
Lint fixes
...
llvm-svn: 187726
2013-08-05 13:20:39 +00:00
Evgeniy Stepanov
44b77c26e4
[msan] Allocator statistics interface and malloc hooks.
...
llvm-svn: 187653
2013-08-02 14:26:58 +00:00
Sergey Matveev
6459a370a7
[lsan] Add leak_check_at_exit flag.
...
We needed a way to tell LSan to invoke leak checking only if __do_leak_check()
is called explicitly. This can now be achieved by setting
leak_check_at_exit=false.
llvm-svn: 187578
2013-08-01 14:57:07 +00:00
Evgeniy Stepanov
3feb17c452
[sanitizer] Tweak read syscall handler signature for consistency.
...
llvm-svn: 187417
2013-07-30 13:16:52 +00:00
Evgeniy Stepanov
9fbd981f99
[sanitizer] read() syscall hook.
...
llvm-svn: 187414
2013-07-30 13:04:43 +00:00
Evgeniy Stepanov
da9fd25603
[msan] Intercept confstr.
...
llvm-svn: 187412
2013-07-30 12:46:59 +00:00
Evgeniy Stepanov
f3e218a021
[asan] Raise thread stack size limit.
...
It's a sanity check, mostly, and we've seen threads with >256Mb stack.
llvm-svn: 187408
2013-07-30 09:01:18 +00:00
Evgeniy Stepanov
573ba3499e
[sanitizer] Disable ForEachMappedRegion on Android.
...
It needs interface that is missing from the NDK, and it is not used on Android anyway.
llvm-svn: 187407
2013-07-30 08:39:16 +00:00
Peter Collingbourne
e572e17a8e
Fix warning.
...
llvm-svn: 187373
2013-07-29 20:13:41 +00:00
Peter Collingbourne
9058c07c95
Move UnpoisonMappedDSO to sanitizer_common.
...
This is so DFSan will be able to use it.
Differential Revision: http://llvm-reviews.chandlerc.com/D1206
llvm-svn: 187372
2013-07-29 19:09:49 +00:00
Sergey Matveev
540338259d
[sanitizer] Change strip_path_prefix flag behavior.
...
Previously (in tools other than TSan) the entire prefix of the path had to mach
the argument. With this change, only some suffix of the prefix has to match.
This is the same way this flag works in TSan.
llvm-svn: 186837
2013-07-22 16:14:38 +00:00
Sergey Matveev
9c012165ad
[lsan] Make __lsan_do_leak_check() honor the detect_leaks flag.
...
Also move detect_leaks to common flags.
llvm-svn: 186821
2013-07-22 12:38:17 +00:00
Alexey Samsonov
3122deb65c
[Sanitizer] Always provide --default-arch argument to llvm-symbolizer
...
llvm-svn: 186513
2013-07-17 15:02:43 +00:00
Dmitry Vyukov
46cbc2ed50
tsan: fix unitialized read warning under newer gcc (it does not have visibility into asm)
...
llvm-svn: 186495
2013-07-17 06:56:47 +00:00
Dmitry Vyukov
d4060fd281
tsan: extend suppressions format with ^ and $ symbols
...
not it's possible to write more precise suppressions,
e.g. "^foo$" won't match "blafoobar"
llvm-svn: 186424
2013-07-16 16:44:15 +00:00
Alexey Samsonov
9916aa2d95
[Sanitizer] move strcpy and strncpy to common interceptors
...
llvm-svn: 186408
2013-07-16 12:51:53 +00:00
Alexey Samsonov
eb7973246f
[ASan] Bump min supported Mac OS X version to 10.6
...
llvm-svn: 186404
2013-07-16 11:54:40 +00:00
Timur Iskhodzhanov
4245f78fdd
[ASan] Use less shadow on Win 32-bit
...
llvm-svn: 186393
2013-07-16 09:47:39 +00:00
Timur Iskhodzhanov
d7eb67774e
Fix check_lint warnings in sanitizers' runtime libraries
...
llvm-svn: 186328
2013-07-15 16:11:39 +00:00
Alexey Samsonov
0048a248bd
Completely revert all mbstowcs-and-friends changes from r186109. They were unintentional
...
llvm-svn: 186158
2013-07-12 12:33:23 +00:00
Alexey Samsonov
fde429ba69
[Sanitizer] Revert some parts of r186109 related to mbstowcs-and-friends interceptors
...
llvm-svn: 186155
2013-07-12 11:59:58 +00:00
Chandler Carruth
1a48dc5ed6
Fix a veritable conucopia of bugs in the readdir_r interceptors.
...
First, the reason I came here: I forgot to look at readdir64_r which had
the exact same bug as readdir_r. However, upon applying the same
quick-fix and testing it I discovered that it still didn't work at all.
As a consequence, I spent some time studying the code and thinking about
it and fixed several other problems.
Second, the code was checking for a null entry and result pointer, but
there is no indication that null pointers are viable here. Certainly,
the spec makes it extremely clear that there is no non-error case where
the implementation of readdir_r fails to dereference the 'result'
pointer and store NULL to it. Thus, our checking for a non-null 'result'
pointer before reflecting that write in the instrumentation was
trivially dead. Remove it.
Third, the interceptor was marking the write to the actual dirent struct
by looking at the entry pointer, but nothing in the spec requires that
the dirent struct written is actually written into the entry structure
provided. A threadlocal buffer would be just as conforming, and the spec
goes out of its way to say the pointer to the *actual* result dirent
struct is stored into *result, so *that* is where the interceptor should
reflect a write occuring. This also obviates the need to even consider
whether the 'entry' parameter is null.
Fourth, I got to the bottom of why nothing at all worked in readdir64_r
-- the interceptor structure for dirent64 was completely wrong in that
it was the same as dirent. I fixed this struct to be correct (64-bit
inode and 64-bit offset! just a 64-bit offset isn't enough!) and added
several missing tests for the size and layout of this struct.
llvm-svn: 186109
2013-07-11 18:51:40 +00:00
Sergey Matveev
29e787d456
[sanitizer] Remove optional arguments from clone() invocation.
...
Unbreaks compilation on older systems. Patch by Andy Jost.
llvm-svn: 186103
2013-07-11 16:37:44 +00:00
Evgeniy Stepanov
9240838655
[sanitizer] More checks in mbstowcs-like interceptors.
...
llvm-svn: 186004
2013-07-10 14:17:46 +00:00
Evgeniy Stepanov
123fdb3413
[sanitizer] Fix handling of edge cases in mbstowcs-like interceptors.
...
llvm-svn: 186002
2013-07-10 14:01:51 +00:00
Chandler Carruth
28c1b294b8
Fix a bug in the readdir_r interceptor: when we reach the end of the
...
directory stream, the entry is not written to, instead *result is set to
NULL and the entry is not written to at all.
I'm still somewhat suspicious of the correct instrumention here --
I feel like it should be marking the written range as the pointer in
*result and the length (*result)->d_reclen in case the implementation
decides not to use the passed-in entry (if that's even allowed).
Finally, the definition of 'struct dirent' analog used in the
interceptor is wrong in 32-bit mode with _FILE_OFFSET_BITS=64 as it hard
codes the use of a pointer-sized offset.
I've added a somewhat goofy test for the bug I fixed via ASan --
suggestions on how to better test the interceptor logic itself welcome.
llvm-svn: 185998
2013-07-10 09:50:29 +00:00
Evgeniy Stepanov
7160fb6511
[sanitizer] Update glob64 interceptor to handle GLOB_ALTDIRFUNC as well.
...
llvm-svn: 185935
2013-07-09 12:34:25 +00:00
Evgeniy Stepanov
faba61a7bc
[sanitizer] Support GLOB_ALTDIRFUNC in glob interceptor.
...
llvm-svn: 185932
2013-07-09 12:07:59 +00:00
Evgeniy Stepanov
77ef78a0a5
[sanitizer] Intercept realpath and canonicalize_file_name.
...
Handle realpath(path, NULL) form.
llvm-svn: 185921
2013-07-09 09:53:37 +00:00
Evgeniy Stepanov
f60c75a644
[sanitizer] Wrap lines >80 chars.
...
llvm-svn: 185920
2013-07-09 09:47:36 +00:00
Evgeniy Stepanov
f7f252d025
[sanitizer] Syscall handlers for clock_gettime and clock_getres.
...
llvm-svn: 185913
2013-07-09 08:54:59 +00:00
Evgeniy Stepanov
c2e3ba9eed
[sanitizer] Fix mac build.
...
llvm-svn: 185706
2013-07-05 15:04:56 +00:00
Evgeniy Stepanov
628d727749
[msan] Intercept pthread_key_create.
...
llvm-svn: 185693
2013-07-05 12:31:07 +00:00
Evgeniy Stepanov
0d1d35aeba
[sanitizer] Disable ptrace interception on non-x86(_64).
...
Patch by Hal Finkel.
llvm-svn: 185686
2013-07-05 08:57:47 +00:00
Evgeniy Stepanov
717e0cd2a7
[sanitizer] Intercept tcgetattr.
...
llvm-svn: 185626
2013-07-04 14:03:31 +00:00
Evgeniy Stepanov
db615c186f
[sanitizer] More interceptors.
...
bcopy
strtoimax, strtoumax
mbstowcs, mbsrtowcs, mbsnrtowcs
wcstombs, wcsrtombs, wcsnrtombs
llvm-svn: 185624
2013-07-04 13:19:41 +00:00
Sergey Matveev
22614e5e3f
[sanitizer] Fix memory leak in sanitizer_common discovered by LeakSanitizer.
...
llvm-svn: 185536
2013-07-03 13:45:13 +00:00
Evgeniy Stepanov
1bd0fe447f
[sanitizer] Fix Android build.
...
llvm-svn: 185432
2013-07-02 14:51:31 +00:00
Evgeniy Stepanov
69a387e6ae
[sanitizer] Fix GLOB_NOMATCH behaviour and refactor the interceptor a bit.
...
llvm-svn: 185428
2013-07-02 14:08:52 +00:00
Evgeniy Stepanov
165d759a6a
[sanitizer] Intercept mbtowc, mbrtowc, get_current_dir_name.
...
Move getcwd to common interceptors.
llvm-svn: 185424
2013-07-02 13:34:44 +00:00
Evgeniy Stepanov
1df4dfe87a
[sanitizer] Intercept setlocale.
...
llvm-svn: 185416
2013-07-02 09:23:45 +00:00
Evgeniy Stepanov
8a4e24ea8b
[sanitizer] Intercept getnameinfo.
...
llvm-svn: 185338
2013-07-01 13:51:31 +00:00
Alexey Samsonov
7a1ad5e605
Change __sanitizer_symbolize_demangle hook return type to 'int'
...
llvm-svn: 185326
2013-07-01 11:20:56 +00:00
Sergey Matveev
6b5a492091
[sanitizer] Use the correct macro to check glibc version.
...
llvm-svn: 185324
2013-07-01 10:15:29 +00:00
Evgeniy Stepanov
d6e856f722
[sanitizer] Fix build with older kernels.
...
PTRACE_SETREGSET & PTRACE_GETREGSET may be missing from linux headers.
llvm-svn: 185317
2013-07-01 09:10:34 +00:00
Sergey Matveev
2b19ee3da8
[lsan] Add suppression support.
...
llvm-svn: 185152
2013-06-28 14:38:31 +00:00
Evgeniy Stepanov
a127039258
[sanitizer] Disable all ptrace-related definitions on Android.
...
llvm-svn: 185150
2013-06-28 14:18:10 +00:00
Alexey Samsonov
002d764f21
[ASan] Migrate lit tests to external symbolizer from asan_symbolize.py script
...
llvm-svn: 185148
2013-06-28 12:50:12 +00:00
Alexey Samsonov
6a5b0758ec
Demangle names using pluggable internal symbolizer if possible
...
llvm-svn: 185146
2013-06-28 12:30:24 +00:00
Evgeniy Stepanov
4aef0ee57d
[sanitizer] Fix an unfortunate typo and disable ptrace interception on Android.
...
llvm-svn: 185145
2013-06-28 12:16:03 +00:00
Alexey Samsonov
28e68f9f2f
Pass --default-arch flag to external symbolizer. Fix line lengths.
...
llvm-svn: 185144
2013-06-28 12:13:31 +00:00
Evgeniy Stepanov
dec0f76c14
[sanitizer] Intercept ptrace.
...
llvm-svn: 185142
2013-06-28 11:02:43 +00:00
Sergey Matveev
9450108430
[sanitizer] Support padding with spaces in Printf.
...
llvm-svn: 185082
2013-06-27 15:30:44 +00:00
Evgeniy Stepanov
815d3232a7
[sanitizer] Fix dirent interceptors.
...
The new version reads d_reclen for (struct dirent) size.
llvm-svn: 185067
2013-06-27 09:37:27 +00:00
Sergey Matveev
d109eb052b
[tsan] Move some suppressions-related code to common.
...
Factor out code to be reused in LSan. Also switch from linked list to vector.
llvm-svn: 184957
2013-06-26 15:37:14 +00:00
Evgeniy Stepanov
06d6c25141
[sanitizer] readdir and readdir_r interceptors.
...
llvm-svn: 184950
2013-06-26 15:00:53 +00:00
Evgeniy Stepanov
b598c0b527
[sanitizer] Reformat line >80 chars.
...
llvm-svn: 184926
2013-06-26 09:16:45 +00:00
Evgeniy Stepanov
2c7d4d379e
[sanitizer] Fix build with OSS4 kernel headers.
...
This fixes PR16453.
llvm-svn: 184925
2013-06-26 08:16:38 +00:00
Evgeniy Stepanov
982d56abb8
[sanitizer] Move log_path to common flag and use it in MSan.
...
llvm-svn: 184836
2013-06-25 13:50:44 +00:00
Evgeniy Stepanov
60d964d4f2
[sanitizer] Intercept sysinfo.
...
llvm-svn: 184739
2013-06-24 14:25:33 +00:00
Evgeniy Stepanov
02a7460d12
[sanitizer] Intercept inet_aton.
...
llvm-svn: 184735
2013-06-24 13:56:14 +00:00
Evgeniy Stepanov
0e8053af08
[sanitizer] Intercept readv, preadv, writev, pwritev.
...
llvm-svn: 184717
2013-06-24 10:43:23 +00:00
Sergey Matveev
b8cd986b5d
[lsan] Fix android build.
...
llvm-svn: 184704
2013-06-24 09:12:11 +00:00
Sergey Matveev
4e0215a71c
Revert to C-style callbacks for iteration over allocator chunks.
...
Also clean up LSan code, fix some comments and replace void* with uptr
to bring down the number of reinterpret_casts.
llvm-svn: 184700
2013-06-24 08:34:50 +00:00
Evgeniy Stepanov
57a40e5a94
[santizer] Disable several EVIOxxx ioctls on older kernels.
...
llvm-svn: 184539
2013-06-21 10:54:57 +00:00
Evgeniy Stepanov
673cf23d06
Fix unused function warning w/o changing compiler flags.
...
We have way too many different build systems.
llvm-svn: 184409
2013-06-20 09:45:36 +00:00
Evgeniy Stepanov
3ce228faf3
[sanitizer] Fix Mac build.
...
llvm-svn: 184407
2013-06-20 09:39:34 +00:00
Evgeniy Stepanov
d271563e5a
Remove an outdated comment.
...
llvm-svn: 184406
2013-06-20 09:21:25 +00:00
Evgeniy Stepanov
fbea5b95c6
[sanitizer] Handle EVIOxxxx ioctls.
...
llvm-svn: 184405
2013-06-20 09:19:28 +00:00
Sergey Matveev
7014179ccb
[lsan] Prevent inlining of WipeStack().
...
llvm-svn: 184312
2013-06-19 15:39:13 +00:00
Sergey Matveev
dac35c24c0
[lsan] Move symbolization and reporting out of StopTheWorld callback.
...
llvm-svn: 184303
2013-06-19 14:04:11 +00:00
Evgeniy Stepanov
49b4314cfd
[sanitizer] Fix struct ifconf definition on Mac and restore the size checks.
...
llvm-svn: 184296
2013-06-19 13:21:38 +00:00
Evgeniy Stepanov
41060fd728
[sanitizer] Fix Android build.
...
llvm-svn: 184293
2013-06-19 10:36:31 +00:00
Evgeniy Stepanov
f9cfe76526
[sanitizer] Fix build on RHEL 6.3, 6.4.
...
linux/if_ppp.h is broken in certain kernels.
llvm-svn: 184290
2013-06-19 08:55:28 +00:00
Kostya Serebryany
63d84f8149
[asan] fix a rare failure in fast unwinder, found by asan/clang bootstrap
...
llvm-svn: 184190
2013-06-18 14:47:40 +00:00
Evgeniy Stepanov
394b09b00f
[sanitizer] Fix Android build.
...
llvm-svn: 184187
2013-06-18 13:56:12 +00:00
Evgeniy Stepanov
fc3f61fcf0
[sanitizer] Remove a set of deprecated ioctls.
...
llvm-svn: 184185
2013-06-18 10:37:17 +00:00