3254 Commits

Author SHA1 Message Date
Kamil Rytarowski
04d8dca7ab Remove XFAIL in get_module_and_offset_for_pc.cc for NetBSD-MSan
After updating GET_LINK_MAP_BY_DLOPEN_HANDLE() for recent NetBSD
this test no longer fails.

llvm-svn: 348378
2018-12-05 16:05:25 +00:00
David Carlier
f3233b2ff2 [Sanitizer] expand nl_langinfo interception to FreeBSD
Reviewers: krytarowski

Reviewed By: krytarowski

Differential Revision: https://reviews.llvm.org/D55327

llvm-svn: 348376
2018-12-05 16:01:22 +00:00
Kamil Rytarowski
fab764359f Add a new interceptor for nl_langinfo(3) from NetBSD
Summary:
nl_langinfo - gets locale information.

Add a dedicated test.

Reviewers: vitalybuka, joerg

Reviewed By: vitalybuka

Subscribers: kubamracek, llvm-commits, mgorny, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D55015

llvm-svn: 348369
2018-12-05 15:06:53 +00:00
Vitaly Buka
8076c57fd2 [asan] Add clang flag -fsanitize-address-use-odr-indicator
Reviewers: eugenis, m.ostapenko, ygribov

Subscribers: hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D55157

llvm-svn: 348327
2018-12-05 01:44:31 +00:00
Vitaly Buka
d6bab09b4b [asan] Split -asan-use-private-alias to -asan-use-odr-indicator
Reviewers: eugenis, m.ostapenko, ygribov

Subscribers: mehdi_amini, kubamracek, hiraditya, steven_wu, dexonsmith, llvm-commits

Differential Revision: https://reviews.llvm.org/D55156

llvm-svn: 348316
2018-12-04 23:17:41 +00:00
Vitaly Buka
10db3f4779 [asan] Remove use_odr_indicator runtime flag
Summary:
Flag was added for testing 3 years ago. Probably it's time
to simplify code and usage by removing it.

Reviewers: eugenis, m.ostapenko

Subscribers: mehdi_amini, kubamracek, steven_wu, dexonsmith, llvm-commits

Differential Revision: https://reviews.llvm.org/D55254

llvm-svn: 348315
2018-12-04 23:17:32 +00:00
David Carlier
f3c8a00760 Fix sanitizer unit test
llvm-svn: 348297
2018-12-04 19:49:19 +00:00
David Carlier
2330a24ca5 [Sanitizer] intercept part of sysctl Api
- Distringuish what FreeBSD/NetBSD can and NetBSD specifics.
- Fixing page size value collection.

Reviewers: krytarowski, vitalybuka

Reviewed By: krytarowski

Differential Revision: https://reviews.llvm.org/D55265	

llvm-svn: 348293
2018-12-04 19:00:38 +00:00
Kamil Rytarowski
5b8d585925 Add interceptors for the sysctl(3) API family from NetBSD
Summary:
Add new interceptors for:

 - sysctl
 - sysctlbyname
 - sysctlgetmibinfo
 - sysctlnametomib
 - asysctl
 - asysctlbyname

Cover the API with a new test file TestCases/NetBSD/sysctl.cc.

Reviewers: joerg, vitalybuka

Reviewed By: vitalybuka

Subscribers: devnexen, kubamracek, llvm-commits, mgorny, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D54076

llvm-svn: 348228
2018-12-04 01:51:06 +00:00
Kamil Rytarowski
175d2b8620 Add interceptors for the fts(3) API family from NetBSD
Summary:
fts(3) is API to traverse a file hierarchy.
Cover this interface with interceptors.

Add a test to validate the interface reading
the number of regular files in /etc.

Based on original work by Yang Zheng.

Reviewers: joerg, vitalybuka

Reviewed By: vitalybuka

Subscribers: tomsun.0.7, kubamracek, llvm-commits, mgorny, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D54247

llvm-svn: 348227
2018-12-04 01:45:52 +00:00
Kamil Rytarowski
145ac7940e Add new interceptor for regex(3) in NetBSD
Summary:
Add interceptors for the NetBSD style of regex(3) present inside libc:

 - regcomp
 - regexec
 - regerror
 - regfree
 - regnsub
 - regasub

Add a dedicated test verifying the installed interceptors.

Reviewers: vitalybuka, joerg

Reviewed By: vitalybuka

Subscribers: kubamracek, llvm-commits, mgorny, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D54584

llvm-svn: 348224
2018-12-04 01:41:42 +00:00
Vedant Kumar
6b062cd694 [gcov/Darwin] Ensure external symbols are exported when using an export list
Make sure that symbols needed to implement runtime support for gcov are
exported when using an export list on Darwin.

Without the clang driver exporting these symbols, the linker hides them,
resulting in tapi verification failures.

rdar://45944768

Differential Revision: https://reviews.llvm.org/D55151

llvm-svn: 348187
2018-12-03 20:53:58 +00:00
Dan Liew
8bffb63497 Introduce a way to allow the ASan dylib on Darwin platforms to be loaded via dlopen().
Summary:

The purpose of this option is provide a way for the ASan dylib
to be loaded via `dlopen()` without triggering most initialization
steps (e.g. shadow memory set up) that normally occur when the
ASan dylib is loaded.

This new functionality is exposed by

- A `SANITIZER_SUPPORTS_INIT_FOR_DLOPEN` macro which indicates if the
  feature is supported. This only true for Darwin currently.
- A `HandleDlopenInit()` function which should return true if the library
  is being loaded via `dlopen()` and
  `SANITIZER_SUPPORTS_INIT_FOR_DLOPEN` is supported. Platforms that
  support this may perform any initialization they wish inside this
  function.

Although disabling initialization is something that could potentially
apply to other sanitizers it appears to be unnecessary for other
sanitizers so this patch only makes the change for ASan.

rdar://problem/45284065

Reviewers: kubamracek, george.karpenkov, kcc, eugenis, krytarowski

Subscribers: #sanitizers, llvm-commits

Differential Revision: https://reviews.llvm.org/D54469

llvm-svn: 348078
2018-12-01 15:45:42 +00:00
Vitaly Buka
a7b079534a [compiler-rt] Use "ColumnLimit: 0" instead of "clang-format off" in tests
Reviewers: eugenis, jfb

Subscribers: kubamracek, dberris, llvm-commits

Differential Revision: https://reviews.llvm.org/D55152

llvm-svn: 348061
2018-12-01 01:24:29 +00:00
Kamil Rytarowski
f130d111b6 Add a new interceptor for getvfsstat(2) from NetBSD
Summary:
getvfsstat - gets list of all mounted file systems.

Add a dedicated test.

Reviewers: vitalybuka, joerg

Reviewed By: vitalybuka

Subscribers: kubamracek, llvm-commits, mgorny, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D55014

llvm-svn: 348027
2018-11-30 19:43:53 +00:00
Reid Kleckner
63f084bd7a Revert r346560 "[winasan] Unpoison the stack in NtTerminateThread"
This reverts r343606 again. The NtTerminateThread interceptor is causing
problems in NaCl:
https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/CrWinAsan/1839

I reproduced the problem locally and tried my best to debug them, but
it's beyond me.

llvm-svn: 347933
2018-11-29 23:57:17 +00:00
Matt Morehouse
32c57553c3 [gcov] Disable instrprof-gcov-fork.test.
Test has been flaky for over a week and author hasn't fixed.

llvm-svn: 347779
2018-11-28 17:24:07 +00:00
David Carlier
0c81a62d9d [Sanitizer] Adding setvbuf in supported platforms and other stream buffer functions
- Enabling setvbuf interceptions for non NetBSD platforms.
- setbuf, setbuffer, setlinebuf as well.

Reviewers: vitalybuka, krytarowski	

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D54779

llvm-svn: 347426
2018-11-21 21:17:46 +00:00
Roman Lebedev
1d0c7f563c [compiler-rt][UBSan] silence_unsigned_overflow: do *NOT* ignore *fatal* unsigned overflows
Summary:
D48660 / rL335762 added a `silence_unsigned_overflow` env flag for [[ https://github.com/google/oss-fuzz/pull/1717 | oss-fuzz needs ]],
that allows to silence the reports from unsigned overflows.
It makes sense, it is there because `-fsanitize=integer` sanitizer is not enabled on oss-fuzz,
so this allows to still use it as an interestingness signal, without getting the actual reports.

However there is a slight problem here.
All types of unsigned overflows are ignored.
Even if `-fno-sanitize-recover=unsigned` was used (which means the program will die after the report)
there will still be no report, the program will just silently die.

At the moment there are just two projects on oss-fuzz that care:
* [[ 8eeffa627f/projects/llvm_libcxx/build.sh (L18-L20) | libc++ ]]
* [[ 8eeffa627f/projects/librawspeed/build.sh | RawSpeed ]] (me)

I suppose this could be overridden there ^, but i really don't think this is intended behavior in any case..

Reviewers: kcc, Dor1s, #sanitizers, filcab, vsk, kubamracek

Reviewed By: Dor1s

Subscribers: dberris, mclow.lists, llvm-commits

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D54771

llvm-svn: 347415
2018-11-21 20:35:43 +00:00
Dmitry Vyukov
d0fb5d8b00 tsan: add pthread_tryjoin_np and pthread_timedjoin_np interceptors
Add pthread_tryjoin_np() and pthread_timedjoin_np() interceptors on Linux,
so that ThreadSanitizer can handle programs using these functions.

Author: Yuri Per (yuri)
Reviewed in: https://reviews.llvm.org/D54521

llvm-svn: 347383
2018-11-21 09:31:21 +00:00
Douglas Yung
5839abb2f9 Add header <atomic> which is needed to compile with some older library versions.
llvm-svn: 347382
2018-11-21 08:54:40 +00:00
Dean Michael Berris
2b95e3c5cf [XRay] Add a test for re-initialising FDR mode (NFC)
This change adds an end-to-end test that ensures FDR mode can be
re-initialised safely in the face of multiple threads being traced.

llvm-svn: 347368
2018-11-21 00:30:26 +00:00
David Carlier
d931c135f0 Revert "[Sanitizer] intercept setvbuf on other platforms where it is supported"
llvm-svn: 347358
2018-11-20 22:50:31 +00:00
David Carlier
a1ea566fbc [Sanitizer] Unbreak non NetBSD builds.
llvm-svn: 347357
2018-11-20 22:35:29 +00:00
David Carlier
5ffb47b3a1 [Sanitizer] intercept setvbuf on other platforms where it is supported
Unit tests enabled only in platform tested.

Reviewers: krytarowski, vitalybuka

Reviewed By: krytarowski, vitalybuka

Differential Revision: https://reviews.llvm.org/D54739

llvm-svn: 347355
2018-11-20 22:17:23 +00:00
Vitaly Buka
afedb893a6 [tsan] Add __cxa_guard_acquire hooks to support cooperative scheduling
Reviewers: dvyukov

Subscribers: krytarowski, kubamracek, llvm-commits

Differential Revision: https://reviews.llvm.org/D54664

llvm-svn: 347336
2018-11-20 18:21:42 +00:00
Kamil Rytarowski
74abaf8cdc Add interceptor for the setvbuf(3) from NetBSD
Summary:
setvbuf(3) is a routine to setup stream buffering.

Enable the interceptor for NetBSD.

Add dedicated tests for setvbuf(3) and functions
on top of this interface: setbuf, setbuffer, setlinebuf.

Based on original work by Yang Zheng.

Reviewers: joerg, vitalybuka

Reviewed By: vitalybuka

Subscribers: devnexen, tomsun.0.7, kubamracek, llvm-commits, mgorny, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D54548

llvm-svn: 347270
2018-11-19 22:44:26 +00:00
Kostya Serebryany
b5c1d69e40 [hwasan] make the heap-buffer-overflow.c test more robust and re-enable it. With malloc_align_right the relative offsets of heap chunks are less predictable to simply don't test for them.
llvm-svn: 347118
2018-11-17 00:40:34 +00:00
Kostya Serebryany
c265e7673d [hwasan] implement free_checks_tail_magic=1
Summary:
With free_checks_tail_magic=1 (default) HWASAN
writes magic bytes to the tail of every heap allocation
(last bytes of the last granule, if the last granule is not fully used)
and checks these bytes on free().

This feature will detect buffer overwires within the last granule
at the time of free().

This is an alternative to malloc_align_right=[1289] that should have
fewer compatibility issues. It is also weaker since it doesn't
detect read overflows and reports bugs at free() instead of at access.

Reviewers: eugenis

Subscribers: kubamracek, delcypher, #sanitizers, llvm-commits

Differential Revision: https://reviews.llvm.org/D54656

llvm-svn: 347116
2018-11-17 00:25:17 +00:00
Kostya Serebryany
31b6a14a99 [hwasan] use reads instead of writes in a test
llvm-svn: 347107
2018-11-16 23:01:42 +00:00
Kostya Serebryany
f5912d0ef2 [hwasan] disable one test line while investigating a bot failure
llvm-svn: 347091
2018-11-16 20:35:07 +00:00
Kamil Rytarowski
56ef906532 Add new interceptor for mi_vector_hash(3)
Summary:
mi_vector_hash(3) provides fast 32bit hash functions.

Add a test for this interface.

Enable the API for NetBSD.

Based on original work by Yang Zheng.

Reviewers: joerg, vitalybuka

Reviewed By: vitalybuka

Subscribers: tomsun.0.7, kubamracek, llvm-commits, mgorny, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D54530

llvm-svn: 347088
2018-11-16 19:54:13 +00:00
Kamil Rytarowski
47fb42e6c3 Add new interceptor for getmntinfo(3) from NetBSD
Summary:
getmntinfo gets information about mounted file systems.

Add a dedicated test for new interceptor.

Based on original work by Yang Zheng.

Reviewers: joerg, vitalybuka

Reviewed By: vitalybuka

Subscribers: tomsun.0.7, kubamracek, llvm-commits, mgorny, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D54611

llvm-svn: 347083
2018-11-16 19:47:42 +00:00
Kostya Serebryany
ba5c7169c5 [hwasan] optionally right-align heap allocations
Summary:
... so that we can find intra-granule buffer overflows.
The default is still to always align left.
It remains to be seen wether we can enable this mode at scale.

Reviewers: eugenis

Reviewed By: eugenis

Subscribers: jfb, dvyukov, kubamracek, delcypher, #sanitizers, llvm-commits

Differential Revision: https://reviews.llvm.org/D53789

llvm-svn: 347082
2018-11-16 19:38:48 +00:00
Reid Kleckner
6c0bb3758e Re-land r343606 "[winasan] Unpoison the stack in NtTerminateThread"
This change was reverted because it caused some nacl tests in chromium
to fail. I attempted to reproduce those problems locally, but I was
unable to. Let's reland this and let Chromium's test infrastructure
discover any problems.

llvm-svn: 346560
2018-11-09 22:06:59 +00:00
Evgeniy Stepanov
771d6d37ca [hwasan] Add entire report to abort message on Android.
Summary:
When reporting a fatal error, collect and add the entire report text to
android_set_abort_message so that it can be found in the tombstone.

Reviewers: kcc, vitalybuka

Subscribers: srhines, kubamracek, llvm-commits

Differential Revision: https://reviews.llvm.org/D54284

llvm-svn: 346557
2018-11-09 21:54:03 +00:00
Calixte Denizet
692b34790f [Profile] The test for gcov-fork seems to be ok on arm
Summary: Remove the XFAIL for arm since it seems to be ok

Reviewers: marco-c

Reviewed By: marco-c

Subscribers: javed.absar, kristof.beyls, delcypher, chrib, llvm-commits, #sanitizers, sylvestre.ledru

Differential Revision: https://reviews.llvm.org/D54263

llvm-svn: 346409
2018-11-08 16:16:04 +00:00
Calixte Denizet
db7f78a2cb [Profile] Mark gcov-fork test as failing for arm
Summary: instrprof-gcov-fork.test is failing with arm so mark it as XFAIL

Reviewers: marco-c

Reviewed By: marco-c

Subscribers: javed.absar, kristof.beyls, delcypher, chrib, llvm-commits, sylvestre.ledru, #sanitizers

Differential Revision: https://reviews.llvm.org/D54209

llvm-svn: 346329
2018-11-07 15:58:18 +00:00
Calixte Denizet
5e09c49499 [Profile] Fix fork test and add tests for execlp and execvp after patch https://reviews.llvm.org/D53593
Summary: This is a follow-up of patch https://reviews.llvm.org/D53593

Reviewers: marco-c

Reviewed By: marco-c

Subscribers: delcypher, llvm-commits, #sanitizers, sylvestre.ledru

Differential Revision: https://reviews.llvm.org/D54167

llvm-svn: 346314
2018-11-07 13:51:17 +00:00
Marco Castelluccio
ed4bb266c8 [GCOV] Close file mapping handle on Windows, so flushed gcda files can be removed while the process is in execution
llvm-svn: 346300
2018-11-07 09:38:26 +00:00
Evgeniy Stepanov
d657f109d7 [sanitizer] Only set soft coredump limit.
Summary: If user wants to raise it back, let them.

Reviewers: kcc, vitalybuka

Subscribers: llvm-commits, kubamracek

Differential Revision: https://reviews.llvm.org/D54190

llvm-svn: 346284
2018-11-07 01:03:26 +00:00
Jonathan Metzman
39b6ba9f33 [fuzzer] Read files as binary
Summary: Read corpus files as binary to avoid automatic conversions

Reviewers: Dor1s, morehouse

Reviewed By: Dor1s, morehouse

Differential Revision: https://reviews.llvm.org/D54180

llvm-svn: 346279
2018-11-06 23:25:25 +00:00
Vedant Kumar
9e41b5eb6e [Darwin] Export new weak external symbols when compiling with coverage
Some weak external symbols were added to the profile runtime in D49953,
and on Darwin, these need to be exported for tapi verification purposes.

I've tightened the test so that future breakages can be caught earlier.

rdar://45831054

llvm-svn: 346276
2018-11-06 22:25:00 +00:00
Kamil Rytarowski
37eefc07d0 Adapt UBSan integer truncation tests to NetBSD
Summary:
The NetBSD headers use internal indirect type for
standard *int*_t  definitions. The internal type is unrolled
inside the sanitizer into e.g. __int32_t from int32_t.

This symbol mangling causes pattern mismatch in
the interger truncation tests as they expect exact
types such as 'int32_t'.

Change the pattern rules so every acceptable internal
form of *int*_t will be accepted flawlessly.

Reviewers: lebedev.ri, vitalybuka, joerg

Reviewed By: lebedev.ri

Subscribers: kubamracek, dmgreen, llvm-commits, mgorny, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D54150

llvm-svn: 346228
2018-11-06 14:18:05 +00:00
Benjamin Kramer
178d26fa18 [sanitizer] Use AT_EXECFN in ReExec() if available
execve("/proc/self/exe") will not work if the binary relies on
$EXEC_ORIGIN in an rpath. Query AT_EXECFN instead, which will give the
same string that the current binary was exec'd with.

Differential Revision: https://reviews.llvm.org/D54113

llvm-svn: 346215
2018-11-06 08:53:38 +00:00
Dean Michael Berris
25f8d204b8 [XRay] Update XRayRecord to support Custom/Typed Events
Summary:
This change cuts across LLVM and compiler-rt to add support for
rendering custom events in the XRayRecord type, to allow for including
user-provided annotations in the output YAML (as raw bytes).

This work enables us to add custom event and typed event records into
the `llvm::xray::Trace` type for user-provided events. This can then be
programmatically handled through the C++ API and can be included in some
of the tooling as well. For now we support printing the raw data we
encounter in the custom events in the converted output.

Future work will allow us to start interpreting these custom and typed
events through a yet-to-be-defined API for extending the trace analysis
library.

Reviewers: mboerger

Subscribers: hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D54139

llvm-svn: 346214
2018-11-06 08:51:37 +00:00
Kamil Rytarowski
927c8803c1 Disable XRay test fork_basic_logging for NetBSD
This code has not been ported so far.

llvm-svn: 346196
2018-11-06 01:53:54 +00:00
George Karpenkov
fd68e3e2e3 [libFuzzer] Disable value-profile-cmp.test and fuzzer-oom.test on ARM64
value-profile-cmp was always flaky, and OOM fails to work in some environments.
counters.test fails when vectorization is enabled, and it is more likely
to kick in when compiling for ARM.

Differential Revision: https://reviews.llvm.org/D54004

llvm-svn: 346193
2018-11-06 01:15:51 +00:00
David Carlier
a7b4ae9d37 [UBsan] disable few tests for FreeBSD
Reviewers: krytarowsky, vitalybuka

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D54103

llvm-svn: 346145
2018-11-05 17:18:23 +00:00
Fangrui Song
342ca71145 [hwasan] Fix stack-uar.c after rCRT345110
Set -fno-discard-value-names so that the frame description string contains the variable name.

llvm-svn: 346120
2018-11-05 07:16:25 +00:00