Commit Graph

3831 Commits

Author SHA1 Message Date
Viktor Kutuzov 276fefb8d9 A fix for sanitizers' TLS support on FreeBSD
llvm-svn: 204595
2014-03-24 10:01:54 +00:00
Alexey Samsonov 1847401332 [CMake] Respect CMAKE_CXX_FLAGS in custom clang_compile commands
llvm-svn: 204593
2014-03-24 09:42:12 +00:00
Alexey Samsonov 8c956460d3 Make MSan unittest -Werror=sign-compare clean
llvm-svn: 204592
2014-03-24 09:41:11 +00:00
Evgeniy Stepanov ce002ad3b2 [asan] Disable setjmp/sigsetjmp tests.
Failing due to PR19207.

llvm-svn: 204590
2014-03-24 08:30:59 +00:00
Evgeniy Stepanov d7f06ee3c7 [asan] Fix a comment.
llvm-svn: 204589
2014-03-24 08:27:31 +00:00
Duncan P. N. Exon Smith 96cf6c3892 InstrProf: Indicate pointer size in raw profile
Since the profile can come from 32-bit machines, the reader needs to
check the pointer size.  Change the magic number to facilitate this.

<rdar://problem/16400648>

llvm-svn: 204556
2014-03-23 03:38:05 +00:00
David Blaikie 089b5c9174 Avoid GCC's "cast from pointer to integer of different size" warning.
This is a bit of a stab in the dark as I'm not sure I've got these
source files compiling correctly locally. (and the warning only
reproduces on a 32bit build anyway)

llvm-svn: 204521
2014-03-21 21:45:49 +00:00
Duncan P. N. Exon Smith 8d02a2ac21 InstrProf: Remove MSVC-specific logic
Apparently, MSVC has stdint.h now?  Let's see if the buildbots complain.
I'm not convinced that the build system is even set up for MSVC to build
this file, but...

llvm-svn: 204515
2014-03-21 20:59:08 +00:00
Duncan P. N. Exon Smith a128956243 InstrProf: Change magic number to have non-text characters
Include non-text characters in the magic number so that text files can't
match.

<rdar://problem/15950346>

llvm-svn: 204514
2014-03-21 20:42:40 +00:00
Duncan P. N. Exon Smith f1c9361326 InstrProf: __ => _ in header guards
llvm-svn: 204502
2014-03-21 18:47:23 +00:00
Duncan P. N. Exon Smith 812dcae09c InstrProf: Unify logic in two profile writers
<rdar://problem/15943240>

llvm-svn: 204500
2014-03-21 18:29:24 +00:00
Duncan P. N. Exon Smith 117cf2bd1f InstrProf: Write the __llvm_profile_write_buffer()
Write __llvm_profile_write_buffer(), which uses the same logic as
__llvm_profile_write_file(), but writes directly to a provided `char*`
buffer instead.

<rdar://problem/15943240>

llvm-svn: 204499
2014-03-21 18:29:22 +00:00
Duncan P. N. Exon Smith cf4bb960bd InstrProf: If libc is available, use it; no functionality change
It was misguided to plan to rely on __llvm_profile_write_buffer() in
__llvm_profile_write_file().  It's less complex to duplicate the writing
logic than to mmap the file.

Since it's here to stay, move `FILE*`-based writing logic into
InstrProfilingFile.c.

<rdar://problem/15943240>

llvm-svn: 204498
2014-03-21 18:29:19 +00:00
Duncan P. N. Exon Smith be0a5e176b InstrProf: Reorganize files; no functionality change
Move functions around to prepare for some other changes.

  - Merge InstrProfilingExtras.h with InstrProfiling.h.  There's no
    benefit to having these split.

  - Rename InstrProfilingExtras.c to InstrProfilingFile.c.

  - Split actual buffer writing code out of InstrProfiling.c into
    InstrProfilingBuffer.c.

  - Drive-by corrections of a couple of header comments.

<rdar://problem/15943240>

llvm-svn: 204497
2014-03-21 18:29:15 +00:00
Duncan P. N. Exon Smith 76e8731b09 InstrProf: Write raw binary profile from runtime
Write a raw binary profile from the runtime.

<rdar://problem/15950346>

llvm-svn: 204495
2014-03-21 18:25:56 +00:00
Alexander Potapenko 25e204e194 [libsanitizer] Add descriptions for the common flags.
Use new(allocator_for_flags) instead of allocator_for_flags.Allocate()
Fix the description output format a bit.

llvm-svn: 204484
2014-03-21 17:28:12 +00:00
Kostya Serebryany 3df5d87da4 [sanitizer] print threads in deadlock report
llvm-svn: 204461
2014-03-21 13:00:18 +00:00
Kostya Serebryany 7317d9499b [sanitizer] more human-readable deadlock reports
llvm-svn: 204454
2014-03-21 11:37:43 +00:00
Sergey Matveev fa76f3b3a5 [MSan] Add __msan_unpoison_string() to the public interface.
Using __msan_unpoison() on null-terminated strings is awkward because
strlen() can't be called on a poisoned string. This case warrants a special
interface function.

llvm-svn: 204448
2014-03-21 10:12:17 +00:00
Alexander Potapenko c6afaace15 [ASan] Move the flag descriptions from comments to ParseFlag arguments.
llvm-svn: 204440
2014-03-21 08:37:59 +00:00
Greg Fitzgerald 8288afb5fe fixed check_lint.sh in standalone build
Change-Id: I30d340bbe6b2028cc0f831399b62521912dcac60
llvm-svn: 204419
2014-03-21 00:45:21 +00:00
Duncan P. N. Exon Smith 4543aac96e PGO: Indicate errors in profile runtime API
Return 0 for success, non-0 for failure.

llvm-svn: 204415
2014-03-21 00:27:50 +00:00
Duncan P. N. Exon Smith e5edc8869b PGO: Substitute pid for %p in filename
Add logic to do a printf-style substitution of %p for the process pid in
the filename.

It's getting increasingly awkward to work on lib/profile without test
infrastructure.  This needs to be fixed!

<rdar://problem/16383358>

llvm-svn: 204414
2014-03-21 00:27:48 +00:00
Duncan P. N. Exon Smith 71704754d6 PGO: Declare zero-argument C functions as foo(void)
It turns out this is C code.  Specify foo(void).

<rdar://problem/15943240>

llvm-svn: 204396
2014-03-20 20:55:00 +00:00
Duncan P. N. Exon Smith 9edbae0f16 PGO: Change runtime prefix from pgo to profile
These functions are in the profile runtime.  PGO comes later.

Unfortunately, there's only room for 16 characters in a Darwin section,
so use __llvm_prf_ instead of __llvm_profile_ for section names.

<rdar://problem/15943240>

llvm-svn: 204391
2014-03-20 20:00:44 +00:00
Duncan P. N. Exon Smith bb8345b791 Add vim swap files to .gitignore
llvm-svn: 204387
2014-03-20 19:44:33 +00:00
Duncan P. N. Exon Smith f1212176ac PGO: Add function to reset counters at runtime
Adding __llvm_pgo_reset_counters(), which sets all the counters to 0.

<rdar://problem/15943240>

llvm-svn: 204386
2014-03-20 19:44:31 +00:00
Duncan P. N. Exon Smith c962cda1db PGO: Add missing file...
llvm-svn: 204384
2014-03-20 19:39:01 +00:00
Duncan P. N. Exon Smith 54cc0e2d81 PGO: Update interface for writing instrumentation data to file
__llvm_pgo_write_default_file() was a bad name, since it checked the
environment (it wasn't just a default file).

  - Change __llvm_pgo_write_file() to __llvm_pgo_write_file_with_name()
    and make it static.

  - Rename __llvm_pgo_write_default_file() to __llvm_pgo_write_file().

  - Add __llvm_pgo_set_filename(), which sets the filename for
    subsequent calls to __llvm_pgo_write_file().

<rdar://problem/15943240>

llvm-svn: 204381
2014-03-20 19:23:55 +00:00
Duncan P. N. Exon Smith 775c178a90 PGO: Add explicit static initialization
Instead of relying on explicit static initialization from translation
units, create a new file, InstrProfilingRuntime.cc, with an
__llvm_pgo_runtime variable.  After this commit (and its pair in clang),
the driver will create a use of this variable.  Unless the user defines
their own version, the new object file will get pulled in, including
that C++ static initialization that calls
__llvm_pgo_register_write_atexit.

The result is that, at least on Darwin, static initialization typically
consists of a single function call, which registers a writeout functino
atexit.  Furthermore, users can skip even this behaviour by defining
their own __llvm_pgo_runtime.

<rdar://problem/15943240>

llvm-svn: 204380
2014-03-20 19:23:53 +00:00
Duncan P. N. Exon Smith 9cee5e0e92 PGO: Moving files for clarity
<rdar://problem/15943240>

llvm-svn: 204373
2014-03-20 18:43:09 +00:00
Evgeniy Stepanov d17b061eed [msan] Use new -fsanitize-memory-track-origins= flag in MSan tests.
llvm-svn: 204347
2014-03-20 15:00:39 +00:00
Alexander Potapenko d23359c3e3 [libsanitizer] Implement IntrusiveList<T>::Iterator, use IntrusiveList in sanitizer_flags.cc
llvm-svn: 204342
2014-03-20 13:49:21 +00:00
Dmitry Vyukov 454abc0093 tsan: deflake test
llvm-svn: 204340
2014-03-20 13:27:11 +00:00
Alexander Potapenko 1296436cbf [libsanitizer] Introduce flag descriptions.
Extend ParseFlag to accept the |description| parameter, add dummy values for all existing flags.
As the flags are parsed their descriptions are stored in a global linked list.
The tool can later call __sanitizer::PrintFlagDescriptions() to dump all the flag names and their descriptions.
Add the 'help' flag and make ASan, TSan and MSan print the flags if 'help' is set to 1.

llvm-svn: 204339
2014-03-20 12:52:52 +00:00
Dmitry Vyukov d3466b9e5e tsan: remove unused function declarations
llvm-svn: 204328
2014-03-20 10:39:46 +00:00
Dmitry Vyukov c9e12aa323 tsan: deobfuscate global ctx variable
llvm-svn: 204327
2014-03-20 10:36:20 +00:00
Dmitry Vyukov 6e2557769c tsan: use stack depot for goroutine creation stacks (as C++ threads do)
llvm-svn: 204326
2014-03-20 10:19:02 +00:00
Dmitry Vyukov 9cf08c46a6 tsan: remove unused declaration
llvm-svn: 204324
2014-03-20 10:13:30 +00:00
Alexey Samsonov 6c3f7fcb8a Mark this test as 64-bit specific
llvm-svn: 204319
2014-03-20 07:37:45 +00:00
Duncan P. N. Exon Smith ecf2256dfe PGO: Implement Darwin linker magic for instrumentation
Use Darwin linker magic to find bounds of instrumentation data sections
at link time instead of runtime.

<rdar://problem/15943240>

llvm-svn: 204302
2014-03-20 03:57:33 +00:00
Duncan P. N. Exon Smith da0de8a237 PGO: Split out initialization of section bounds
Currently we register instrumentation data at runtime to determine the
bounds of the sections where the data lives.  Soon we'll implement
platform-specific linker magic to determine this at link time.

Move this logic to a separate file, so that our build system can choose
the correct platform-specific code.

No functionality change intended.

<rdar://problem/15943240>

llvm-svn: 204299
2014-03-20 03:23:10 +00:00
Duncan P. N. Exon Smith a84dae2c2c PGO: Constify references to instrumentation data
<rdar://problem/15943240>

llvm-svn: 204298
2014-03-20 03:19:15 +00:00
Duncan P. N. Exon Smith d1a3bebeeb PGO: Use past-the-end semantics for pointer range
llvm-svn: 204278
2014-03-19 22:45:28 +00:00
Duncan P. N. Exon Smith fb4447688f PGO: Appease buildbots after r204268
llvm-svn: 204276
2014-03-19 22:28:32 +00:00
Duncan P. N. Exon Smith 8353a26e85 PGO: Splitting implementation files; no functionality change
Split implementation files along a uses-libc/shouldn't-use-libc
boundary.

  - InstrProfiling.h is a shared header.

  - InstrProfiling.c provides an API to extract profiling data from the
    runtime, but avoids the use of libc.  Currently this is a lie:
    __llvm_pgo_write_buffer() uses `FILE*` and related functions.  It
    will be updated soon to write to a `char*` buffer instead.

  - InstrProfilingExtras.c provides a more convenient API for
    interfacing with the profiling runtime, but has logic that does (and
    will continue to) use libc.

<rdar://problem/15943240>

llvm-svn: 204268
2014-03-19 22:10:27 +00:00
Duncan P. N. Exon Smith 61c97335c6 PGO: Fix obviously wrong typedefs for MS
llvm-svn: 204267
2014-03-19 22:10:24 +00:00
Joerg Sonnenberger 0883e48f7e Sort. Fix missing NetBSD.
llvm-svn: 204249
2014-03-19 16:06:36 +00:00
Alexey Samsonov a7b8472397 One more attempt to fix Makefile build
llvm-svn: 204241
2014-03-19 15:26:54 +00:00
Dmitry Vyukov 1af191e1f4 tsan: add test for second_deadlock_stack flag
llvm-svn: 204240
2014-03-19 15:00:38 +00:00