summaryrefslogtreecommitdiff
path: root/lib/asan/scripts
Commit message (Collapse)AuthorAgeFilesLines
* [asan_symbolize] Fix broken pipe handling for python 2.7Alexander Richardson2019-08-271-3/+9
| | | | | | | | I D65322 I added a check for BrokenPipeError. However, python 2.7 doesn't have BrokenPipeError. To be python 2.7 and 3 compatible we need to catch IOError instead and check for errno == errno.EPIPE. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@370025 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Attempt to fix build-bot failure after latest changeAlexander Richardson2019-08-261-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@369929 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Avoid blocking when llvm-symbolizer is installed as addr2lineAlexander Richardson2019-08-261-3/+25
| | | | | | | | | | | | | | | | | | | | | | Summary: Currently, llvm-symbolizer will print -1 when presented with -1 and not print a second line. In that case we will block for ever trying to read the file name. This also happens for non-existent files, in which case GNU addr2line exits immediate, but llvm-symbolizer does not (see https://llvm.org/PR42754). While touching these lines, I also added some more debug logging to help diagnose this and potential future issues. Reviewers: kcc, eugenis, glider, samsonov Reviewed By: eugenis Subscribers: kubamracek, #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D65322 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@369924 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Fix bug where the frame counter was not incremented.Dan Liew2019-08-121-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This bug occurred when a plug-in requested that a binary not be symbolized while the script is trying to symbolize a stack frame. In this case `self.frame_no` would not be incremented. This would cause subsequent stack frames that are symbolized to be incorrectly numbered. To fix this `get_symbolized_lines()` has been modified to take an argument that indicates whether the stack frame counter should incremented. In `process_line_posix()` `get_symbolized_lines(None, ...)` is now used in in the case where we don't want to symbolize a line so that we can keep the frame counter increment in a single function. A test case is included. The test uses a dummy plugin that always asks `asan_symbolize.py` script to not symbolize the first binary that the script asks about. Prior to the patch this would cause the output to script to look something like ``` #0 0x0 #0 0x0 in do_access #1 0x0 in main ``` This is the second attempt at landing this patch. The first (r368373) failed due to failing some android bots and so was reverted in r368472. The new test is now disabled for Android. It turns out that the patch also fails for iOS too so it is also disabled for that family of platforms too. rdar://problem/49476995 Reviewers: kubamracek, yln, samsonov, dvyukov, vitalybuka Subscribers: #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D65495 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@368603 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "[asan_symbolize] Fix bug where the frame counter was not incremented."Mitch Phillips2019-08-091-9/+4
| | | | | | | | | This reverts commit 52a36fae2a3f8560a5be690a67304db5edafc3fe. This commit broke the sanitizer_android buildbot. See comments at https://reviews.llvm.org/rL368373 for more details. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@368472 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Fix bug where the frame counter was not incremented.Dan Liew2019-08-091-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This bug occurred when a plug-in requested that a binary not be symbolized while the script is trying to symbolize a stack frame. In this case `self.frame_no` would not be incremented. This would cause subsequent stack frames that are symbolized to be incorrectly numbered. To fix this `get_symbolized_lines()` has been modified to take an argument that indicates whether the stack frame counter should incremented. In `process_line_posix()` `get_symbolized_lines(None, ...)` is now used in in the case where we don't want to symbolize a line so that we can keep the frame counter increment in a single function. A test case is included. The test uses a dummy plugin that always asks `asan_symbolize.py` script to not symbolize the first binary that the script asks about. Prior to the patch this would cause the output to script to look something like ``` #0 0x0 #0 0x0 in do_access #1 0x0 in main ``` rdar://problem/49476995 Reviewers: kubamracek, yln, samsonov, dvyukov, vitalybuka Subscribers: #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D65495 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@368373 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove a few straggler ".cc"s in compiler-rt/libNico Weber2019-08-011-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@367589 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] More debugging outputDan Liew2019-07-311-0/+1
| | | | | | | | | When a line fails to match the stackframe regex we now report it in the log. rdar://problem/49476995 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@367380 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Add `--skip-uuid-validation` option to `ModuleMapPlugIn`.Dan Liew2019-07-311-10/+26
| | | | | | | | | This option disables the validation of binary UUIDs. This is useful in environments where the `otool` binary is not available. rdar://problem/49476995 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@367379 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Provide better error message when extracting the UUID of a ↵Dan Liew2019-07-311-1/+3
| | | | | | | | binary fails rdar://problem/49476995 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@367378 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Teach `asan_symbolize.py` to symbolicate partially ↵Dan Liew2019-06-181-2/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | symbolicated ASan reports. Summary: The use case here is to be able symbolicate ASan reports that might be partially symbolicated, in particular where the function name is known but no source location is available. This can be caused by missing debug info. Previously we would only try to symbolicate completely unsymbolicated reports. The code currently contains an unfortunate quirk to handle a darwin specific bug (rdar://problem/49784442) in the way partially symbolicated reports are emitted when the source location is missing. rdar://problem/49476995 Reviewers: kubamracek, yln, samsonov, dvyukov, vitalybuka Subscribers: aprantl, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D60533 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@363639 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Teach `asan_symbolize.py` to symbolicate using a module mapDan Liew2019-04-261-0/+243
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The use case here is to be able get the UUIDs of the modules that need to be symbolicated so that external plugins can see them. This information can be extracted from ASan reports if the `print_module_map` ASan option is enabled. Currently printing of the module map is only implemented on Darwin and so this is effectively a Darwin only feature right now. The module map hooks into symbolization using the new plugin infrastructure. A new hook in `AsanSymbolizerPlugInProxy` (and in `AsanSymbolizerPlugIn`) is also provided to allow external plugins to hook into the module look up process. This will allow external plugins to look up modules with knowledge of their UUID. The new plug-in is currently stored in the `asan_symbolize.py` script. We could potentially move this into a separate file in the future (to reduce clutter) if we can come up with a policy for where to search for plugins that should always get loaded. rdar://problem/49476995 Reviewers: kubamracek, yln, samsonov, dvyukov, vitalybuka Subscribers: #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D60531 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@359322 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Workaround bug in old Python 2 versions.Dan Liew2019-04-181-2/+7
| | | | | | | | | | | | | | | | | | | | | The change landed in r358657 broke some of the buildbots because they use an older version of Python 2 that raises this error. ``` File "/Volumes/data/dev/llvm/upstream/master/src/projects/compiler-rt/lib/asan/scripts/asan_symbolize.py", line 509 exec(f.read(), globals_space, None) SyntaxError: unqualified exec is not allowed in function 'load_plugin_from_file' it contains a nested function with free variables ``` I can reproduce this problem when using Python 2.7.6. To workaround this some indirection has been added to prevent the broken (the line at fault would never be executed) SyntaxError error in old Python versions from being raised. rdar://problem/49476995 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@358682 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Add a simple plugin architectureDan Liew2019-04-181-48/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This change adds a simple plugin architecture to `asan_symbolize.py`. The motivation here is that sometimes it's necessary to perform extra work to figure out where binaries with debug symbols can actually be found. For example it might be the case that a remote service needs to be queried for binaries and then copied to the local system. This "extra work" can be extremely site-specific such that adding the code directly into the `asan_symbolize.py` would just clutter the code for a very niche use case. To avoid this, the `asan_symbolize.py` can now load external code via a new `--plugins` command line option. These plugins are loaded before main command line argument parsing so that they can add their own command line options. Right now the only hook into the behaviour of symbolization is the `filter_binary_path()` function which assumes a very similar role to the `binary_name_filter` function that was previously in the code. We can add more hooks as necessary. Code in the `asan_symbolize.py` script does not call plugin code directly. Instead it uses a `AsanSymbolizerPlugInProxy` object. This object * Loads plugins from files. * Manages the lifetime of the plugins. * Provides an interface for calling into plugin functions and handles calling into multiple plugins. To unify the way binary paths are filtered the old `sysroot_path_filter` function (and associated code) has been turned into a simple plugin (`SysRootFilterPlugIn`) that is always loaded. The plugin unloads itself if the `-s` option is not present on the command line. Users should not see any functional change relating to this command line option. Some simple tests are provided to illustrate what plugin code looks like and also to check the functionality continues to work. rdar://problem/49476995 Reviewers: kubamracek, yln, samsonov, dvyukov, vitalybuka Subscribers: srhines, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D60529 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@358657 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Move argument parser epilog text into script doc comment.Dan Liew2019-04-091-3/+5
| | | | | | | | | | | | | | | | | | Summary: This will make it easier to expand on the documentation in the future that avoids cluttering the code. rdar://problem/49476995 Reviewers: kubamracek, yln, samsonov, dvyukov, vitalybuka Subscribers: #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D60398 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@357978 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan_symbolize] Use proper logging infrastructure.Dan Liew2019-04-081-14/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The previous logging infrastructure had several problems: * Debugging output was emitted to standard output which is also where the symbolized output would go. Interleaving these two separate bits of information makes inspecting the output difficult and could potentially break tests. * Enabling debugging output requires modifying the script which is not very conveninent. * When debugging it isn't immediately obvious where the output is coming from. This patch uses the Python standard library logging infrastructure which fixes all of the above problems. Logging is controlled using two new options. * `--log-level` - Sets the logging level, default is `info`. * `--log-dest` - Set the logging destination, default is standard error. Some simple test cases for the feature are included. rdar://problem/49476995 Reviewers: kubamracek, yln, samsonov, dvyukov, vitalybuka Subscribers: #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D60343 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@357951 91177308-0d34-0410-b5e6-96231b3b80d8
* Update the file headers across all of the LLVM projects in the monorepoChandler Carruth2019-01-192-8/+6
| | | | | | | | | | | | | | | | | to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@351636 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix bug where we'd try symbolize a second time with the same arguments.Dan Liew2018-12-111-1/+1
| | | | | | | | | | | | | | | | | Summary: Fix bug where we'd try symbolize a second time with the same arguments even though symbolization failed the first time. This looks like a long standing typo given that the guard for trying symbolization again is to only try it if symbolization failed using `binary` and `original_binary != binary`. Reviewers: kubamracek, glider, samsonov Subscribers: #sanitizers, llvm-commits Differential Revision: https://reviews.llvm.org/D55504 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@348841 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix IOError exception being raised in `asan_symbolize.py`crash whenDan Liew2018-12-071-0/+4
| | | | | | | | | using `atos` symbolizer on Darwin when the binaries don't exist. For now we just produce an unsymbolicated stackframe when the binary doesn't exist. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@348659 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Remove malloc_context_size=0 from asan_device_setup.Evgeniy Stepanov2018-04-121-1/+1
| | | | | | | | This line was added in r243679 - [asan] Support arm64 devices in asan_device_setup without any good reason. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@329962 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Restore asan_device_setup compatibility with older libraries.Evgeniy Stepanov2018-01-021-0/+7
| | | | | | | | | | | | | | | | Summary: This way new asan_device_setup, which knows about the quirks of recent releases of Android, can be used with older ASan runtime library (say, from an NDK release). The library is version locked to the compiler, and is often hard or impossible to update. Reviewers: vitalybuka Subscribers: srhines, kubamracek, llvm-commits Differential Revision: https://reviews.llvm.org/D41679 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@321677 91177308-0d34-0410-b5e6-96231b3b80d8
* [Sanitizers, CMake] Basic sanitizer Solaris support (PR 33274)Alex Shlyapnikov2017-12-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch, on top of https://reviews.llvm.org/D40898, contains the build system changes necessary to enable the Solaris/x86 sanitizer port. The only issue of note is the libclang_rt.sancov_{begin, end} libraries: clang relies on the linker automatically defining __start_SECNAME and __stop_SECNAME labels for sections whose names are valid C identifiers. This is a GNU ld extension not present in the ELF gABI, also implemented by gold and lld, but not by Solaris ld. To work around this, I automatically link the sancov_{begin,end} libraries into every executable for now. There seems to be now way to build individual startup objects like crtbegin.o/crtend.o, so I've followed the lead of libclang_rt.asan-preinit which also contains just a single object. Reviewers: kcc, alekseyshl Reviewed By: alekseyshl Subscribers: srhines, kubamracek, mgorny, fedor.sergeev, llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D40899 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@321373 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Fix asan_device_setup on KitKat.Evgeniy Stepanov2017-11-171-3/+6
| | | | | | "ln" from toybox does not understand -f (force) flag. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@318573 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove ld.config.txt for Android O.Evgeniy Stepanov2017-09-051-6/+20
| | | | | | | | | | ld.config.txt defines linker namespaces in a way that is incompatible with ASan. Remove the file when installing ASan on an Android O (8.0.x) device. Patch by Jiyong Park. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@312581 91177308-0d34-0410-b5e6-96231b3b80d8
* Finalize ASAN/NetBSDKamil Rytarowski2017-08-301-1/+1
| | | | | | | | | | | | | | | | | | | Summary: This revision contains various cleanups. Sponsored by <The NetBSD Foundation> Reviewers: kcc, vitalybuka, joerg, eugenis Reviewed By: kcc Subscribers: emaste, srhines, llvm-commits, kubamracek, mgorny, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D37244 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@312188 91177308-0d34-0410-b5e6-96231b3b80d8
* Reland r311842 - [cmake] Remove i686 target that is duplicate to i386Michal Gorny2017-08-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Remove the explicit i686 target that is completely duplicate to the i386 target, with the latter being used more commonly. 1. The runtime built for i686 will be identical to the one built for i386. 2. Supporting both -i386 and -i686 suffixes causes unnecessary confusion on the clang end which has to expect either of them. 3. The checks are based on wrong assumption that __i686__ is defined for all newer x86 CPUs. In fact, it is only declared when -march=i686 is explicitly used. It is not available when a more specific (or newer) -march is used. Curious enough, if CFLAGS contain -march=i686, the runtime will be built both for i386 and i686. For any other value, only i386 variant will be built. Differential Revision: https://reviews.llvm.org/D26764 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@311924 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert r311842 - [cmake] Remove i686 target that is duplicate to i386Michal Gorny2017-08-271-1/+1
| | | | | | | The required change in clang is being reverted because of the Android build bot failure. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@311859 91177308-0d34-0410-b5e6-96231b3b80d8
* [cmake] Remove i686 target that is duplicate to i386Michal Gorny2017-08-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Remove the explicit i686 target that is completely duplicate to the i386 target, with the latter being used more commonly. 1. The runtime built for i686 will be identical to the one built for i386. 2. Supporting both -i386 and -i686 suffixes causes unnecessary confusion on the clang end which has to expect either of them. 3. The checks are based on wrong assumption that __i686__ is defined for all newer x86 CPUs. In fact, it is only declared when -march=i686 is explicitly used. It is not available when a more specific (or newer) -march is used. Curious enough, if CFLAGS contain -march=i686, the runtime will be built both for i386 and i686. For any other value, only i386 variant will be built. Differential Revision: https://reviews.llvm.org/D26764 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@311842 91177308-0d34-0410-b5e6-96231b3b80d8
* Add NetBSD support in asan_symbolize.pyKamil Rytarowski2017-08-081-2/+2
| | | | | | | | | | | | | | | | | | | Summary: Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas. Sponsored by <The NetBSD Foundation> Reviewers: joerg, filcab, vitalybuka, kcc, fjricci Reviewed By: fjricci Subscribers: kubamracek, llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36484 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@310413 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Fix asan_device_setup --use-su mode on Android 7.x.Evgeniy Stepanov2017-07-111-1/+1
| | | | | | | mount command does not accept -o remount,rw flag on some versions of Android. mount -o rw,remount works everywhere. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@307685 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Fix android setup script to overwrite the symlink.Evgeniy Stepanov2017-06-191-3/+3
| | | | | | | This fixes asan_device_setup failing to update an existing asan installation. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@305746 91177308-0d34-0410-b5e6-96231b3b80d8
* [compiler-rt] Change default of allow_user_segv_handler to trueVitaly Buka2017-05-251-5/+0
| | | | | | | | | | Reviewers: eugenis Subscribers: srhines, kubamracek, llvm-commits Differential Revision: https://reviews.llvm.org/D32443 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@303842 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "[compiler-rt] Change default of allow_user_segv_handler to true"Vitaly Buka2017-05-241-0/+5
| | | | | | | | Breaks sanitizer-x86_64-linux-fuzzer bot. This reverts commit r303729. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@303795 91177308-0d34-0410-b5e6-96231b3b80d8
* [compiler-rt] Change default of allow_user_segv_handler to trueVitaly Buka2017-05-241-5/+0
| | | | | | | | | | Reviewers: eugenis Subscribers: srhines, kubamracek, llvm-commits Differential Revision: https://reviews.llvm.org/D32443 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@303729 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "[compiler-rt] Change default of allow_user_segv_handler to true"Vitaly Buka2017-05-201-0/+5
| | | | | | | | Failed libFuzzer tests on Windows. This reverts commit r303476. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@303481 91177308-0d34-0410-b5e6-96231b3b80d8
* [compiler-rt] Change default of allow_user_segv_handler to trueVitaly Buka2017-05-201-5/+0
| | | | | | | | | | Reviewers: eugenis Subscribers: srhines, kubamracek, llvm-commits Differential Revision: https://reviews.llvm.org/D32443 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@303476 91177308-0d34-0410-b5e6-96231b3b80d8
* asan_symbolize.py: [Py3] Get rid of "print" statement. Use print() or ↵NAKAMURA Takumi2017-02-081-11/+11
| | | | | | | | write() instead. Differential Revision: https://reviews.llvm.org/D27404 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@294450 91177308-0d34-0410-b5e6-96231b3b80d8
* asan_symbolize.py: [Py3] Use text mode with universal_newlines=True for Popen.NAKAMURA Takumi2017-02-071-2/+6
| | | | | | | | | | With universal_newlines, readline() stalls to fill the buffer. Therefore, let the pipe unbuffered. This is part of https://reviews.llvm.org/D27404 FIXME: Use Popen.communicate() git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@294303 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Teach asan_symbolize.py to use :arch with atos and llvm-symbolizer on ↵Kuba Mracek2017-01-061-26/+51
| | | | | | | | | | | | Darwin This patch teaches asan_symbolize.py to read an architecture suffix on module names (e.g. ":x86_64") and pass that option to atos and llvm-symbolizer. Differential Revision: https://reviews.llvm.org/D27378 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@291280 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Fix asan-rt bitness issues in asan_device_setup on Android.Evgeniy Stepanov2016-11-081-9/+18
| | | | | | | | | | | | | asan_device_setup script is using LD_PRELOAD to inject the ASan runtime library into the Zygote process. This breaks when the Zygote or any of its descendants spawn a process with different bitness due to the fact that the ASan-RT library name includes the target architecture. The fix is to preload the library through a symlink which has the same name in lib and lib64. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@286188 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] alloc_dealloc_mismatch=0 by default on Android.Evgeniy Stepanov2016-09-131-3/+1
| | | | | | | All known (to me) Android deployments are disabling this flag anyway. The in-tree script (asan_device_setup) does that, too. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@281410 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Workaround LD_PRELOAD bug in the Android linker.Evgeniy Stepanov2016-05-241-1/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@270616 91177308-0d34-0410-b5e6-96231b3b80d8
* For the asan_symbolize.py script, use addr2line as the default systemDimitry Andric2015-12-291-1/+1
| | | | | | | | symbolizer on FreeBSD too. This allows the asan-symbolize-bad-path.cc test to succeed. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@256578 91177308-0d34-0410-b5e6-96231b3b80d8
* Check multilib dir for asan_device_setup.Dan Albert2015-12-041-2/+7
| | | | | | | | | | Reviewers: eugenis Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D15247 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@254789 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Fix asan_device_setup script on KitKat.Evgeniy Stepanov2015-10-281-0/+2
| | | | | | | | | app_process32, when started via a shell script wrapper, needs a different security context to satisty SELinux. Patch by Abhishek Arya. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@251572 91177308-0d34-0410-b5e6-96231b3b80d8
* asan_symbolize.py: Call llvm-symbolizer with --functions=linkage instead of ↵Alexey Samsonov2015-10-261-1/+1
| | | | | | --functions=short. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@251356 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Fix asan_symbolize.py handling of non-existing pathsEvgeniy Stepanov2015-09-301-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@248962 91177308-0d34-0410-b5e6-96231b3b80d8
* Support inline functions symbolization in Addr2Line symbolizer.Alexey Samsonov2015-09-141-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch by Maxim Ostapenko! Summary: Right now, Addr2Line symbolizer in asan_symbolize.py doesn't support inline functions symbolization. This might be a useful feature for using ASan on embedded systems. Test results: $ cat test.c static inline void FooBarBaz() { __sanitizer_print_stack_trace(); } int main() { FooBarBaz(); return 0; } $ clang test.c -fsanitize=address -g -O2 -o test.x && ./test.x &> /tmp/test.log $ ./projects/compiler-rt/lib/asan/scripts/asan_symbolize.py -l /tmp/test.log #0 0x42095e in __sanitizer_print_stack_trace _asan_rtl_ #1 0x4cec07 in FooBarBaz /home/max/build/llvm/asan/test.c:4 #2 0x4cec07 in main /home/max/build/llvm/asan/test.c:8 #3 0x7f89f0891ec4 in __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287 Reviewers: glider, samsonov Subscribers: jevinskie, llvm-commits, ygribov Differential Revision: http://reviews.llvm.org/D12153 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@247642 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Support arm64 devices in asan_device_setup.Evgeniy Stepanov2015-07-301-46/+128
| | | | git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@243679 91177308-0d34-0410-b5e6-96231b3b80d8
* [asan] Support per-application flags in the Android setup script.Evgeniy Stepanov2015-07-281-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@243494 91177308-0d34-0410-b5e6-96231b3b80d8