As the crashing function runs inside GoogleTests SEH handler,
I think it, or something in the OS may be interfering with the
exception dispatch somehow. In any case, if this flakes, we have
no one to blame but ourselves.
Bug: crashpad:773569
Change-Id: I2230d02735be4a71b688e1acc94d0ae6f082d9bd
Reviewed-on: https://chromium-review.googlesource.com/739464
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Sigurður Ásgeirsson <siggi@chromium.org>
Rather than having the 64-bit build assume that it lives in
out\{Debug,Release}_x64 and that it can find 32-bit build output in
out\{Debug,Release}, require the location of 32-bit build output to be
provided explicitly via the CRASHPAD_TEST_32_BIT_OUTPUT environment
variable. If this variable is not set, 64-bit tests that require 32-bit
test build output will dynamically disable themselves at runtime.
In order for this to work, a new DISABLED_TEST() macro is added to
support dynamically disabled tests. gtest does not have its own
first-class support for this
(https://groups.google.com/d/topic/googletestframework/Nwh3u7YFuN4,
https://github.com/google/googletest/issues/490) so this local solution
is used instead.
For tests via Crashpad’s own build\run_tests.py, which is how Crashpad’s
own buildbots and trybots invoke tests, CRASHPAD_TEST_32_BIT_OUTPUT is
set to a locaton compatible with the paths expected for the GYP-based
build. No test coverage is lost on Crashpad’s own buildbots and trybots.
For Crashpad tests in Chromium’s buildbots and trybots, this environment
variable will not be set, causing these tests to be dynamically
disabled.
Bug: crashpad:203, chromium:743139, chromium:777924
Change-Id: I3c0de2bf4f835e13ed5a4adda5760d6fed508126
Reviewed-on: https://chromium-review.googlesource.com/739795
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
This introduces the Annotation object, used to declare typed
annotations, and the AnnotationList object, used to reference these. The
AnnotationList is referenced by the CrashpadInfo structure. Currently
nothing reads these.
The AnnotationList implements a lock-free linked list, into which
Annotation objects are added exactly once, when they are first set.
Clearing an Annotation merely marks it internally as such, rather than
removing it from the list.
Bug: crashpad:192
Change-Id: I72414b1f83d624c4ae323e09ecea8cfb69a68c5e
Reviewed-on: https://chromium-review.googlesource.com/547135
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Robert Sesek <rsesek@chromium.org>
There’s no reason for ProcessReader to own its ProcessMemoryLinux via
std::unique_ptr<>.
This was discovered in a trunk Clang build, during which a
-Wdelete-non-virtual-dtor warning was produced (since Clang r312167).
The warning is not produced by earlier Clang versions or by GCC because
the “delete” happens in a system header, <memory>, when performed by
std::unique_ptr<>. Although ownership via std::unique_ptr<> is no longer
used, ProcessMemoryLinux is marked “final” because it ought to be.
In file included from ../../snapshot/linux/process_reader.cc:15:
In file included from ../../snapshot/linux/process_reader.h:21:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/../../include/c++/7.2.0/memory:80:
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/../../include/c++/7.2.0/bits/unique_ptr.h:78:2: error: delete called on non-final 'crashpad::ProcessMemoryLinux' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
delete __ptr;
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/../../include/c++/7.2.0/bits/unique_ptr.h:268:4: note: in instantiation of member function 'std::default_delete<crashpad::ProcessMemoryLinux>::operator()' requested here
get_deleter()(__ptr);
^
../../snapshot/linux/process_reader.cc:169:16: note: in instantiation of member function 'std::unique_ptr<crashpad::ProcessMemoryLinux, std::default_delete<crashpad::ProcessMemoryLinux> >::~unique_ptr' requested here
ProcessReader::ProcessReader()
^
1 error generated.
Change-Id: Ibe9671db429262aca12bbfdf457c8f72cad2f358
Reviewed-on: https://chromium-review.googlesource.com/738530
Reviewed-by: Dave Bort <dbort@google.com>
Commit-Queue: Mark Mentovai <mark@chromium.org>
P0012R1, accepted into C++17, makes a function’s “noexcept” (or
“throw()”) specification part of its signature. GCC 7.2 provides a
warning, -Wnoexcept-type, that is triggered when a function pointer type
with an exception specification is used in pre-C++17 code in such a way
as to pose an ABI incompatibility with C++17 code.
https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/C_002b_002b-Dialect-Options.html#index-Wnoexcept-type
Warnings are of the form:
In file included from ../../util/misc/from_pointer_cast_test.cc:15:0:
../../util/misc/from_pointer_cast.h:64:1: error: mangled name for ‘typename std::enable_if<(std::is_pointer<From>::value && std::is_pointer<_Tp>::value), To>::type crashpad::FromPointerCast(From) [with To = const volatile void*; From = void* (*)(long unsigned int) throw ()]’ will change in C++17 because the exception specification is part of a function type [-Werror=noexcept-type]
FromPointerCast(From from) {
^~~~~~~~~~~~~~~
../../util/misc/from_pointer_cast.h:64:1: error: mangled name for ‘typename std::enable_if<(std::is_pointer<From>::value && std::is_pointer<_Tp>::value), To>::type crashpad::FromPointerCast(From) [with To = volatile void*; From = void* (*)(long unsigned int) throw ()]’ will change in C++17 because the exception specification is part of a function type [-Werror=noexcept-type]
In Crashpad, this warning is triggered by the two FromPointerCast<>()
variants that accept function pointer “From” arguments. This occurs when
using glibc as the standard C library, since glibc declares its
functions as “throw()”. FromPointerCast<>() is used with pointers to
glibc functions such as malloc() and getpid().
The warning is disabled for the FromPointerCast<>() variants that would
trigger it. The warning is not useful or actionable in this internal
Crashpad code where ABI changes due to language version (including
mangling changes) are not a concern.
Clang 4.0 has the similar -Wc++1z-compat-mangling option (also available
as -Wc++17-compat-mangling and the GCC-compatible -Wnoexcept-type in
Clang 5.0) but it is not triggered by this pattern.
Change-Id: Id293db3954be415f67a55476ca72bfb7d399aa3b
Reviewed-on: https://chromium-review.googlesource.com/738292
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
This reverts 55133d332b6c and adds a broken dummy SafeTerminateProcess()
for cross builds instead. It’s similar to 2f4516f93838, which was for
CaptureContext().
This upstreams
af5f31ed61
(slightly modified).
The dummy implementation in the “broken” file affords no protection
against third-party code patching TerminateProcess() badly. The “broken”
file is not used by Crashpad anywhere at all, and is only used by
Crashpad in Chromium during a cross build targeting Windows without the
benefit of Microsoft’s ml.exe assembler. Strictly speaking, this file
does not need to be checked in to the Crashpad repository, but since
Chromium needs it to unblock its not-production-ready cross build for
Windows, it’s being landed here to avoid Chromium’s copy of Crashpad
appearing as modified or “dirty” relative to this upstream copy.
Bug: chromium:762167, chromium:777924
Change-Id: Iba68c0cab142fbe9541ea254a9a856b8263e4c70
Reviewed-on: https://chromium-review.googlesource.com/735078
Reviewed-by: Mark Mentovai <mark@chromium.org>
An #include was missing from 59c5d848e5c5.
Change-Id: Ib0074aefbc8dc231a097c2edd3ef3047f5cff32e
Reviewed-on: https://chromium-review.googlesource.com/734232
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
From edf4dde8ae10: one #include was missing, and another was sorted
incorrectly.
Change-Id: I77825f3909ae81ebf965f8c5527b44c95af29945
Reviewed-on: https://chromium-review.googlesource.com/734229
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
While the kernel formats device major and minor numbers as %02x:%02x,
they are not restricted to 8 bits apiece. Crashpad was requiring that
the hexadecimal representations be exactly two characters, rather than
at least two characters.
The proper way to reconstruct a dev_t from major and minor numbers in
user space is to use makedev() from <sys/sysmacros.h>. MKDEV() from
<linux/kdev_t.h> interfaces with an older (pre-Linux 2.6) format which
actually did use 8-bit major and minor numbers. makedev() places the
major number at bits 8-19, and splits the minor number into two groups
at bits 0-7 and 20-31. This is the correct user space view of device
numbers. (Note that this is distinct from the kernel’s view: the kernel
uses MKDEV() from a distinct internal <linux/kdev_t.h> which places the
minor number at bits 0-19 and the major number at bits 20-31.)
Bionic for 32-bit platforms uses a 32-bit user space dev_t while a
64-bit version is used elsewhere, and a comment in Bionic’s
<sys/types.h> calls this a “historical accident”. However, due to the
kernel’s use of only 32 bits for device numbers, this accident does not
have any ill effect.
Bug: crashpad:30
Test: crashpad_util_test, crashpad_snapshot_test
Change-Id: Ic343454393d7399f598f9eba169a9e5f5630e601
Reviewed-on: https://chromium-review.googlesource.com/733863
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
This upstreams
fc1ac734b0
(slightly modified).
This dummy implementation is not used by Crashpad anywhere at all, and
is only used by Crashpad in Chromium during a cross build targeting
Windows without the benefit of Microsoft’s ml.exe/ml64.exe assembler.
Strictly speaking, this file does not need to be checked in to the
Crashpad repository, but since Chromium needs it to unblock its
not-production-ready cross build for Windows, it’s being landed here to
avoid Chromium’s copy of Crashpad appearing as modified or “dirty”
relative to this upstream copy. (Even though this file is really dirty.)
Bug: chromium:762167
Change-Id: Ibfdc316c1f5fe81d4b3a1d86f4032adccac467e5
Reviewed-on: https://chromium-review.googlesource.com/734102
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
This is a step towards a database which gives out FileReaders in Report
objects instead of FilePaths.
Change-Id: I59704da65fc5521e5d47019416bf962c215d13bc
Reviewed-on: https://chromium-review.googlesource.com/721978
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
This change also adds functions to create directories, remove files and
directories, and check for the existence of files and directories.
Change-Id: I62b78219ae2b277d6976d2d90ec86fcabd0ef073
Reviewed-on: https://chromium-review.googlesource.com/696132
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Only a Linux implementation for now, but similar code for other
OSes can move behind it in the future.
Bug: crashpad:196
Change-Id: I05966db1599a9cac3146d2a3d964e7ad8629d616
Reviewed-on: https://chromium-review.googlesource.com/685408
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Dave Bort <dbort@google.com>
The Crashpad representation of the TEB struct had an incorrect PVOID
reserved of len 397. This should be 402 once we calculate that the other
members occupy 40/80 (32 vs 64) bytes.
Wine has a well documented copy
4df0162caf/include/winternl.h (L309)
that shows the offsets TlsSlots should be at. This patch makes that
change. TlsSlots is now at offset 3600 on 32-bit and offset 5248 on
64-bit.
Change-Id: I4ea4c44b1e49d3ea02d433f386f164703a373dab
Reviewed-on: https://chromium-review.googlesource.com/717040
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
Update mini_chromium to 7d6697ceb5cb5ca02fde3813496f48b9b1d76d0c
47ff9691450e Switch the language standard to C++14
7d6697ceb5cb Remove base/memory/ptr_util.h and base::WrapUnique
base::WrapUnique and std::make_unique are similar, but the latter is
standardized and preferred.
Most of the mechanical changes were made with this sed:
for f in $(git grep -l base::WrapUnique | uniq); do
sed -E \
-e 's%base::WrapUnique\(new ([^(]+)\((.*)\)\);%std::make_unique<\1>(\2);%g' \
-e 's%base::WrapUnique\(new ([^(]+)\);%std::make_unique<\1>();%g' \
-e 's%^#include "base/memory/ptr_util.h"$%#include <memory>%' \
-i '' "${f}"
done
Several uses of base::WrapUnique that did not fit on a single line and
were not matched by this sed were adjusted manually. All #include
changes were audited manually, to at least move <memory> into the
correct section. Where <memory> was already #included by a file (or its
corresponding header), the extra #include was removed. Where <memory>
should have been #included by a header, it was added. Other similar
adjustments to other #includes were also made.
Change-Id: Id4e0baad8b3652646bede4c3f30f41fcabfdbd4f
Reviewed-on: https://chromium-review.googlesource.com/714658
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
This corresponds to Windows 10 version 1709 (Fall Creators Update,
“Redstone 3”).
While compiling util/win/nt_internals.cc:
…\crashpad\crashpad\util\win\nt_internals.cc(22): error C2371: 'CLIENT_ID': redefinition; different basic types
c:\program files (x86)\windows kits\10\include\10.0.16299.0\um\winternl.h(83): note: see declaration of 'CLIENT_ID'
The CLIENT_ID structure, which should have been part of the SDK to begin
with, has been added. Provide a compatible definition in <winternl.h>.
Bug: chromium:773476
Change-Id: Iafc77f8cffd06d1194fc909bad587f1ffd1687a2
Reviewed-on: https://chromium-review.googlesource.com/711415
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
A step towards making these files usable by non-Linux systems.
Bug: crashpad:196
Change-Id: Iaa8bfae1c325735c320e502698a61e4851777649
Reviewed-on: https://chromium-review.googlesource.com/685407
Commit-Queue: Dave Bort <dbort@google.com>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
A step towards making these files usable by non-Linux systems.
Bug: crashpad:196
Change-Id: I71323b29e46208b3992055722e4622d79409c44c
Reviewed-on: https://chromium-review.googlesource.com/685406
Commit-Queue: Dave Bort <dbort@google.com>
Reviewed-by: Mark Mentovai <mark@chromium.org>
readdir_r() is a thread-safe version of readdir(), although readdir() is
not particularly thread-unsafe with most usage. The dirent* returned by
readdir() can only be invalidated by a subsequent readdir() or
closedir() on the same DIR*. In typical usage, where a returned dirent*
is used exclusively within a loop around readdir() and is not expected
to outlive that loop, there are no lifetime or thread-safety issues with
the use of readdir().
readdir_r() may be harmful in certain situations because its buffer is
not explicitly sized, and attempts to provide a suitably sized buffer
dynamically (which, incidentally, our code did not do) are subject to a
race condition.
https://elliotth.blogspot.com/2012/10/how-not-to-use-readdirr3.htmlhttps://womble.decadent.org.uk/readdir_r-advisory.html
glibc has already deprecated readdir_r(), and all Linux (including
Android) code was already using readdir(). This change eliminates
variant codepaths. It delegates buffer sizing (which we weren’t doing
correctly) to the C library, which also has more options at its disposal
to avoid races in sizing that buffer.
Change-Id: I4fca8948454116360180ad0017f226d06727ef81
Reviewed-on: https://chromium-review.googlesource.com/705756
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Chrome (and therefore mini_chromium) has always built with
_FILE_OFFSET_BITS=64, which is intended to enable a 64-bit off_t even
for 32-bit programs. However, support was never present in Android with
NDK traditional headers.
The new NDK unified headers do recognize _FILE_OFFSET_BITS=64 and enable
a 64-bit off_t, along with corresponding functions and system call
wrappers. However, no mmap() wrapper supporting a 64-bit off_t for
32-bit programs was available prior to API 21 (Android 5.0 “Lollipop”),
so when targeting older API levels, NDK headers do not proivde an mmap()
declaration. This avoids silently truncating 64-bit off_t values to 32
bits. NDK r15b did make such an mmap() wrapper available
(https://android.googlesource.com/platform/bionic/+/785b249df024), and
it did silently truncate, but this was removed for r15c
(https://android.googlesource.com/platform/bionic/+/00fedf587917).
How should this work if _FILE_OFFSET_BITS is set to 64 and recent
unified headers are in use?
The strategy employed here is to provide an mmap() declaration in
compat, with a 64-bit off_t. That mmap() will call to Bionic’s mmap64()
wrapper if available (it’s available since Android 5.0 “Lollipop”). If
unavailable, it implements the same logic that mmap64() does directly,
which predominantly involves calling the __mmap2() system call. Bionic
has always provided wrappers for __mmap2().
Additional reading:
https://android.googlesource.com/platform/bionic/+/0bfcbaf4d069/docs/32-bit-abi.md#is-32_bit-1https://github.com/android-ndk/ndk/issues/442
Bug: crashpad:30
Change-Id: I98c10e2eda773cb6f3d9eb8db9b8bfde43c885e7
Reviewed-on: https://chromium-review.googlesource.com/705674
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
One more for Windows too: compat/win/sys/time.h.
Bug: crashpad:30
Change-Id: I1f11933a5937a65db10774d0710d44dc85f8586a
Reviewed-on: https://chromium-review.googlesource.com/705278
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
end_to_end_test.py was producing these error messages 6 times (32-bit
x86) and 7 times (x86_64) per run:
[pid:tid:yyyymmdd,hhmmss.mmm:ERROR file_io.cc:89] ReadExactly: expected
36, observed 0
These messages were being produced by crashpad_handler, in the
LoggingReadFileExactly() call in
ExceptionHandlerServer::ServiceClientConnection().
sizeof(ClientToServerMessage) is 36. crashpad_handler believed that a
client was connecting, but the client sent no data.
This was tracked down to the use of os.path.exists() in
end_to_end_test.py to wait for crashpad_handler’s named pipe to be
created. Checking named pipe existence in this way appeared to be a
client connecting to the the pipe server in crashpad_handler, although
of course no real client was connecting and no message was forthcoming.
I found that running “dir” on the named pipe’s path produced the same
result.
Using WaitNamedPipe() is an alternative that can be used to signal when
the named pipe’s path exists. Furthermore, it tests more than mere
creation, it indicates that the pipe server has become ready to service
clients. That’s not necessary in this case as proper clients already
need to deal with this on their own, but checking it in
end_to_end_test.py should be harmless.
Test: end_to_end_test.py
Change-Id: Ida29a3d2325368f58930cdf8fb053449f621ea52
Reviewed-on: https://chromium-review.googlesource.com/703276
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
|ranges| is a coalesced list of committed and accessible memory ranges
trimmed to reflect only those that overlap |range|. |range| is only
fully unreadable if |ranges| is empty. If |ranges| contains more than
one element, it indicates that |range| is sparse (since |ranges| is
coalesced, there must be a “hole”). This should be treated as partially
unreadable, the same as when |ranges[0]| doesn’t begin or end where
|range| does.
Test: self_destroying_test_program.exe (via end_to_end_test.py)
Change-Id: I55fc2b201089113f2b07395e352704b99d212801
Reviewed-on: https://chromium-review.googlesource.com/702535
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
In the 64-bit version of the structure, padding is needed between
ShowWindowFlags and WindowTitle.
The CurrentDirectores (yes, that’s how it’s spelled) members would have
been interpreted incorrectly because STRING was defined incorrectly. The
length fields are USHORT, not DWORD. In the 64-bit version of the
structure, a padding member ensured that the structure was at least the
correct size. In the 32-bit version of the structure, this caused the
structure size to be inflated, so all but the first CurrentDirectores
element and any struct member that followed would appear at incorrect
offsets, and the overall struct size being read was larger than
appropriate.
This resolves crashpad_handler logging (usually) three errors while
handling a 64-bit process crash, such as:
[pid:tid:yyyymmdd,hhmmss.mmm:ERROR process_info.cc:632] range at
0x780f24de00000000, size 0x275 fully unreadable
[pid:tid:yyyymmdd,hhmmss.mmm:ERROR process_info.cc:632] range at
0x780f24fe00000000, size 0x275 fully unreadable
[pid:tid:yyyymmdd,hhmmss.mmm:ERROR process_info.cc:632] range at 0x0,
size 0x275 fully unreadable
Bug: crashpad:198
Test: end_to_end_test.py
Change-Id: I1655101de01cf46b4b50eda45a11f8d0f3bca8b3
Reviewed-on: https://chromium-review.googlesource.com/701736
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Update buildtools to f6d165d9d842ddd29056c127a5f3a3c5d8e0d2e3
df898926221f Fix "Updating clang-format" wiki link
99df659c6e57 Update clang-format binaries and scripts for all platforms
a2ace8b013bd Revert "Update clang-format binaries and scripts for all
platforms."
c302711306f1 Update clang-format binaries and scripts for all platforms
(take 2)
97eb757d4590 Revert "Update clang-format binaries and scripts for all
platforms (take 2)."
4ca3556cb709 Dependancy check for .proto files is added
ce4239e50192 Revert "Dependancy check for .proto files is added."
cf493f8b1ae5 Update the buildtools README with more information
7e53759cf4e5 Update clang-format binaries and scripts for all platforms
94cdccbebc7a Update clang-format binaries and scripts for all platforms
a114b81a60af Proto checkdeps added ignoring partial paths
b3771b1935ea Update clang-format binaries and scripts for all platforms
95345544a058 Roll gn d8754536ca..5dd3a2137b (r446079:r456385)
e6b510a9daf8 Roll gn 5dd3a2137b..c3cb4770dc (r456385:r456551)
d30744485416 Move DEPS file docs into a README.md
88811f48a6b7 Roll gn c3cb4770dc..71aff04f37 (r456551:r464797)
64a8bb0b92ba Roll gn 71aff04f37..4e41fe9e35 (r464797:r465181)
98f00fa10dba Roll gn 71aff04f37..7c9bd5f020 (r464797:r465654)
896bb2648fce Sanitizers: Roll in 16 months of libcxx and libcxxabi
changes
57c94085e893 libc++: change default symbol visibility to hidden
0c52ccb37d2e libc++(abi): Remove *.gyp files
104574186c17 Roll libcxx and libcxxabi
3b8de5198d78 Statically link libc++ on non-component builds
7d436d145657 Make libc++ a shared_library on sanitizer builds
31d4daad5d9a Make libc++abi a static library on mac
6870c1817e36 Merge configs needed to disable libstdc++ in
third_party/libc++
b7a35318665f Remove some no-longer-needed workarounds in libc++abi
b53a03df323e Fix typo in libc++abi
ee9c3a70889f Update clang-format binaries and scripts for all platforms
9a65473a7e8f Make operator new/delete symbols have default visibility
8921af0a0c50 Fix libc++ ARM build
b92ff913082a Remove stdlib_new_delete.cpp from libc++abi
5012a0f43c56 Remove //buildtools/third_party/libc++:link_helper
7f2cacbbe274 Only link against libunwind when the current toolchain is
ARM
38477c2e103c Roll gn 7c9bd5f020..bedb4b202b (r465654:r481731)
f3de35865149 Roll gn 7c9bd5f020..bb4aa4a793 (r465654:r482028)
7a6ba5710007 Roll gn 7c9bd5f020..c5323f29dd (r465654:r482038)
6d2512767b06 Fix linux gn.sha1
1dcd1bdbe934 Ensure libunwind symbols are hidden
3d2d34dde457 Only enable shared libc++ for ASan, MSan and TSan builds
b43e28d067fa Move c++ configs from buildtools to build/config/c++
[buildtools-side change]
c2827ae578be Revert "Only enable shared libc++ for ASan, MSan and TSan
builds."
5ad14542a6a7 Move libcpp_is_static into //build/config/c++ [buildtools
changes]
afba46cd46ef Roll gn c5323f29dd..b1573039b7 (r482038:r486916)
27f253f9a92f Roll gn c5323f29dd..b1573039b7 (r482038:r486916)
66439712f75e Upload buildtools changes to Gerrit by default
335548b45d17 fuchsia: Build libunwind on Fuchsia too
838f29772283 Revert "Roll gn c5323f29dd..b1573039b7 (r482038:r486916)"
d511e4d53d6f Omit compilation of cxa_thread_atexit.cpp on Linux
275b8c481615 Only disable export of libunwind symbols when libcpp is
static
abaf2ba54948 Don't leak libc++ symbols across modules
f4bcb07d88cd Merge "Don't leak libc++ symbols across modules"
ceb050498e43 Roll gn c5323f29dd..b1573039b7 (r482038:r486916) (RELAND)
f90f6a5af3e8 Roll gn b1573039b7..8d5e7fb9a6 (r486916:r494532)
d36e2d975b59 Roll gn 8d5e7fb9..c9126ec9 (r494532..r495172)
5af0a3a8b898 Roll gn ab2028c1af..d44036c154 (r495181:r495657)
84fdc9924305 Roll gn ab2028c1af..08098c4188 (r495181:r495718)
cbc33b9c0a9d Roll gn 7a152fc8b6..fc561c033e (r495682:r498655)
26b7e66950e9 Roll gn fc561c033e..cf557ff016 (r498655:r502818)
f6d165d9d842 Roll gn cf557ff016..87530f977a (r502818:r503394)
Update gtest to 7b6561c56e353100aca8458d7bc49c4e0119bae8
ff7263226a13 Fix typo in AdvancedGuide.md
62b167e40981 Fix: Markdown in V1_7_Primer.md
407b0aaf856a Add missing headers to Xcode framework target
d254052f7fe6 Update C++ language and library settings to match SDK
projects
c88525f3f0d9 added related open source project
1d1b306dd4a4 made capitalization more consistent with other projects
266a185a528b remove duplicated words
a7ab054f2b77 Issue 709: Fix Cmake policy 0048
08d76be4cc59 Performance fixes reported by cppcheck
1cff1460d191 Add links to IRC channel and Google Group
68f19facc26a Moved the ignoring of *.pyc files to top level for also
covering googlemock python scripts
82396f2d544a Update Primer.md
f700442db332 Clarifying language
194e3c810299 Fix WhenSorted() documentation example
7fbc5986cc49 enable null detection on Solaris Studio 12u4+
0b6d9475170a Update Primer.md
96977463eeff Fix the link to the float comparison article
21ccd6108dc8 update README.md with tiny-dnn
bef93f32c1d2 Fix small typo SeArrayArgument
75b683df4695 Fix or condition typo ( '|' -> '||' )
0fdf78b9667b Fix a few documentation nits in the mock dummies guide
3ec005239feb Fix a typo
53c478d639b8 Annotate ColoredPrintf with the format attribute and fix
bugs
2eaab21554e9 added link to sample 6 in the documentation of typed test
9655b9f53da3 fix typo /GTEST_ATTRIBUTE_UNUSED/GTEST_ATTRIBUTE_UNUSED_/
51d92b2ccb97 Replace html entities with their equivalents
fa892afcb953 Wrong version reported (1.7.0 should be 1.8.0)
b74070cfd90c googlemock version must be changed as well
51143d5b6252 Merge pull request #996 from srz-zumix/fix-error
ba638689e40f Remove /tree/ from Readme.md links
aa148eb2b7f7 Merge pull request #1029 from google/BillyDonahue-patch-3
a2451c74038f Fixed some typos
518e0519ca49 Minimal changes to fix build failures on Microsoft Visual
Studio 2015
b2521c890a8c Update README.md
b6c4d434dbf4 Update README.md
81bc87652d40 Added explicit gtest library dependency
5ff680577d3e Again rewrote everything
a6418a4dd19e Merge remote-tracking branch 'github_google/master' into
master-github_frosteyes
611e8a99de2b Changes to make TempDir() public
69c6db249af5 Merge pull request #1077 from gennadiycivil/make-temp-dir-
public-issue-1076
0ad83afdaa33 Merge pull request #1034 from dankegel/master
b7cf4414d9c2 Pick up GTEST_API_ definition in gtest/internal/custom
/gtest-port.h
fac0dfbe738e Add NetBSD support
887d569eb0ba Merge pull request #965 from davidben/format-attr
8c7f93fedaca Merge pull request #1078 from pwnall/gtest_api_port
294f72bc773c Merge pull request #725 from donhuff/xcode-headers
6c0c8a7ea5e2 Fixing typo in documentation
b2cbbec04c14 Fix -Wmicrosoft-cast warnings when using gtest with clang
on Windows
09fd5b3ebfaa Use std::string and ::string explicitly in gtest and gmock
code
e1466ba4fe56 Gender-neutralize comments in gtest.h
2a5d67ccaded Merge pull request #1092 from nico/comment
078d5d930ad8 Merge pull request #1090 from nico/typo
7cc548dcbf26 Merge pull request #1089 from nico/stdstring
76491b74de24 Changes add ability to overwrite TempDir(), issue
https://github.com/google/googletest/issues/1093
59c795ce08be Merge pull request #1096 from gennadiycivil/add-ability-
for-custom-temdir-1093
42bc671f47b1 Merge pull request #1091 from nico/wmicro
dca9d5fc51ec Remove unnecessary 'the'
00ed9b566ee2 Fixing float comparison broken link
a44bbab9bdb2 Merge pull request #1113 from jorgehb/patch-1
c2d90bddc6a2 Create gtest-internal.h
24054ff07378 Fixed misspelling in assertion message
41ad243d930e Fix typo in gmock-actions.h
38ec2a1df69f docs: fix broken link from dummies guide to cook book
649aa2955238 Fix background color in ColoredPrintf
365df11427eb Add background_mask instead of using magic number
19cace28735c Colouring in help text
271fb8ff5ed8 Fix a problem when bg_color == fg_color
f050aff0c202 Merge pull request #1129 from Chris-Sharpe/master
4bab34d20842 Merge pull request #1081 from krytarowski/netbsd-1
26b7ac3b1888 Add helper functions for text color calculation
6a75e3c169d2 Remove unnecessary const
280b22708c01 Fix table formatting
1dde1eed381a Fix typos too s/destoyed/destroyed/
f20797bd8dd1 Same fixes for "current" version
2fcbc0c1ab48 Remove silly claim that C++ lacks lambdas
0ffd8629c9ee More tables that did not render correctly
4568374a6e84 Fixes a typo in FAQ.md
1b39c3dcdf77 Add gtest-parallel to open-source projects
a6b146dfddb9 Fix assumption for foreground bit offset
2960aa54e219 Remove duplicate code
7c3496c4ae8b Merge pull request #1126 from junr03/fix-broken-link
b9427ca47731 Merge pull request #1143 from nyibbang/patch-1
5c279131db71 docs: fix broken link
75bb586b60e5 Merge pull request #1158 from junr03/fix-link
6527ee0624b2 Merge pull request #1107 from lipk/patch-1
e5b88b227e6a Merge pull request #1137 from coryan/master
f6ac9a30a4ba remove obsolete reference to SVN trunk
b3908406e65b remove doc of former versions
58b42274c0fc remove obsolete reference to SVN trunk and fix link to pump
manual
6b8967748151 remove doc of former versions
ec19d455bc12 fix links to Google C++ Style Guide
623616a50a32 Fixed typo
f08b1c350a66 Merge pull request #1165 from aninf-wo/hethi/fix-doc-links
7755e5d241d1 Merge pull request #1167 from krizalys/fix-typo
f63e2a14a21a WIP
b3edada29070 WIP
e2e37c94320b Merge pull request #1147 from pbos/gtest_parallel_link
6615f7df11c8 WIP
aa31cb67c2a9 WIP
d966d5fbe005 Merge pull request #968 from
nicolacavallini/link_typed_test_docs
032baa0da319 Merge pull request #998 from dawikur/patch-1
73f321590a7f Merge pull request #962 from klimkin/klimkin-patch-typo
0cb2eeb5f18e Merge pull request #764 from flyd1005/wip-fix-typo
683fcf596947 Merge pull request #782 from Manozco/709-cmake-policy-
project-version
e1f3d8d17549 Merge pull request #671 from mehagar/patch-1
d655d0989db0 Merge pull request #867 from marzojr/patch-1
b68f1e769c7a Fix policy issue with old cmakes
fa388e9f94e2 Merge pull request #1170 from
Manozco/1169_fix_old_cmake_issue
28bb854cefba Merge pull request #1042 from danilcha/patch-1
568958e94000 Fixed cmake policy issue
50f3bafb1aef Merge pull request #1172 from joelypoley/joelypoley-patch-1
ca102b1f9d1f Merge pull request #1030 from vpfautz/master
deb99a9d268b Use wider types to prevent unsigned overflow diagnostics
aac403334d57 Correct some typos in a comment
212f4d793e5f fix small typo in comment
0f702cebb0e6 add note about different definitions of Test Case
52a9c14c48ed Samples changes upstreaming
aecea3842c3a Samples changes upstreaming
eb261b4dce67 Merge pull request #1176 from aninf-wo/hethi/typo
7890f7215e35 Merge pull request #1180 from aconverse/master
22d1a7a1a70a Merge pull request #909 from AsturaPhoenix/patch-1
f8d909d095ec Merge pull request #1173 from shlomif/correct-typo
40aa72c7dcfd Merge pull request #675 from theHacker/master
6ae9cc7894ad Merge pull request #925 from edgarriba/patch-1
8815087cfa12 WIP
c75de0aa924d WIP, windows testing
a2006b2ab034 WIP, windows testing
40a909b4e543 WIP, windows testing
e66b6bc86805 WIP, win testing
ab8f2b0d09eb WIP, win testing
aadf53d2a2c1 Merge pull request #1122 from chromy/upstream-146491438
461713fec460 Merge pull request #1123 from chromy/upstream-141765019
e022dcded846 Merge branch 'master' into hethi/remove-old-docs
67fcf00703aa Punctuation
b322d1d91d92 Merge pull request #1185 from eduherminio/master
33edcaed8995 be more specific on Test Case
ac885f3ab2a5 WIP
4f5c01b4c969 Added googlemock tests
5a5e3c17bbec Added googlemock tests
484ec91c2274 Infinite Loop when calling a mock function that takes
boost::filesystem::path as parameter #521: Add is_same type
trait
71ca4bae1085 Infinite Loop when calling a mock function that takes
boost::filesystem::path as parameter #521: Add is_same type
trait and prevent infinite loops for recursive containers
2606c7a670fd Merge branch 'master' of github.com:Dani-Hub/googletest
66a036959f09 WIP
0e8e0e07d6c4 Fix library install destinations
c09e9e646de8 clarify distinction regarding Test Case
75f0723c4522 Merge pull request #1178 from aninf-wo/hethi/testsuite-hint
6e1970e2376c Adding a flag option to change the default mock type
b98e30b42704 Initial Revision, review 164634031
cb5b05436dfc Added Copyright
854b28f19903 Minor style fixes
dc7214f222a8 say "former version" instead of "released version"
4e284ee657ff Update WORKSPACE
07bba78a5fc9 Merge branch 'master' of github.com:Dani-Hub/googletest
b11b2e403e9d Merge branch 'master' of github.com:Dani-Hub/googletest
c3f65335b79f Addressing comments
97a8498873ba Addressing Comments
e5781865289e Merge pull request #1191 from gennadiycivil/master
cfab28d59448 Merge pull request #1192 from eduherminio/master
1579064390bd Merge pull request #1127 from zulkarnine/patch-1
c822c85659d5 Merge pull request #1164 from aninf-wo/hethi/remove-old-
docs
4283f264d6ee Merge pull request #957 from sglass68/sim
c523461f3ae8 Merge pull request #937 from srz-zumix/fix-gtest-port-typo
c81be0f6fc06 Merge pull request #871 from tommyleo2/master
e3bd4cbeaeef Merge pull request #1160 from mwoehlke-kitware/honor-
lib_suffix
e533ff4bd33c Merge pull request #926 from bartshappee/patch-1
052df998c46b Merge pull request #749 from nholthaus/patch-1
c7f4849c0b71 Merge pull request #919 from delaitre/patch-1
9816b96a6ddc Merge pull request #857 from KindDragon/patch-1
673c975a963f Merge pull request #905 from iignatev/master
8604c4adac40 Add support for pkgconfig
9cacce4e5ca0 Add documentation for pkg-config
8f04622cc150 Use GTEST_LOG instead of printf
0c3c81116453 Merge remote-tracking branch 'origin/master' into
user_logger_instead_of_printf
e0fc65c5fbfe Merge pull request #1197 from SoapGentoo/pkgconfig
ca76206f4268 Removed extra colon in error log
a4121dd54b58 Change AppVeyor Status Badge to point to new AppVeyor
Project Location
3f3a3ada2022 Change AppVeyor Status Badge to point to new AppVeyor
Project Location
08b1a1f73cec Merge branch 'master' into master
5ed471caec6f Merge pull request #1204 from gennadiycivil/master
9469fb687d04 Fix problem installing gtest when gmock enabled
5b4166f05fbc Add function name to exception if there's no default action
a2803bc37daf Handling invalid flag values
b7e8a993b412 Merge pull request #1205 from mwoehlke-kitware/fix-gtest-
install
8f233a74ebe1 Merge branch 'master' into methodname-in-exception
1fe692ce49f1 Update README.md
1183503d11f9 Merge branch 'master' into methodname-in-exception
95f18d99383c adds test for NiceMock with unknown return value
cc99900036ae Fix test if exceptions are not supported
36777251c077 Switch return type to class without default constructor
b0ed43e72447 Change tabs to spaces in test case
5518a1d350d5 Adding CMake visibility policy setting
780bae0facea Merge pull request #1215 from henryiii/patch-1
35737ac7ac1a Merge branch 'master' into methodname-in-exception
026735daf34c Proposing these changes, please review
3cf65b5d86d4 Added "explicit" as per compiler suggestion
1ee807965158 Remove unused variable
675686a139a7 Merge pull request #1206 from ShadowIce/methodname-in-
exception
96f7ba83cb22 Merge branch 'master' into wrong-version-reported
8304d06199bd Merge branch 'master' into master
966b549c8803 Support ref-qualified member functions in Property()
6404d45a9252 Merge branch 'master' of github.com:Dani-Hub/googletest
fa3bb1a77973 Merge branch 'master' of github.com:Dani-Hub/googletest
d93ce9d6fb8e Merge branch 'master' of github.com:Dani-Hub/googletest
f8514b8da353 Merge branch 'master' of github.com:Dani-Hub/googletest
88269cd365fa Support x64 configuration for old VS2010 projects
863e02644b57 Merge pull request #1220 from romkatv/property-matcher
f4abce46093d Merge branch 'master' into vs-projects-fix
ebc7b01d8956 Merge branch 'master' into master
c38baf985831 Merge pull request #1219 from KindDragon/vs-projects-fix
87327b12e9b1 Merge branch 'master' into master
eabd5c908d27 Merge pull request #1186 from Dani-Hub/master
45287f3dffa4 Remove gtest VS2005 projects
cb8ebf5c9a04 Support x64 configuration for old VS2015 projects
f25921565bbf Merge pull request #1221 from KindDragon/vs-projects-fix2
a7eeb6971fdf Merge branch 'master' into vs-projects-fix3
b43bfcf49166 Merge pull request #1222 from KindDragon/vs-projects-fix3
c00373320db8 Merge branch 'refs/heads/master' into flag-default
fa5d3b3845aa Applying lint checks from upstream google3
daaed2b6cb7b fix typo in comment and string (SetUpTestCase)
b567aadd1b3e remove unused TestCase import
fe760e9c6d92 fix typo: xUnit
96f3745e73d5 Merge pull request #1189 from alyssawilk/flag-default
30c1e00afbc0 Merge branch 'master' into hethi/typo-xUnit
8364718500da remove non-existing gmock_build_samples switch
4a451575895d switch on verbose make
d33861dca6fa run combined build only
29c07aa9dbeb remove Yob's comma mentioned in issue #1105
bb8399e1baf9 use plural verb as mentioned in issue #1105
c3d1d3356046 Detect Fuchsia, and set GTEST_HAS_PTHREAD on
GTEST_OS_FUCHSIA
24ceb4f4f552 Merge pull request #1231 from aninf-wo/heth/travis-verbose-
make
c4126e0463a8 Merge pull request #1232 from aninf-wo/hethi/travis-reduce-
buildjobs
58fd184c7f7a Merge branch 'master' into hethi/typo-xUnit
b46755be30f9 Merge pull request #1229 from aninf-wo/hethi/typo-xUnit
298cd5e9c423 Merge pull request #1233 from aninf-wo/hethi/typo-
issue-1105
5bd8e832177f Merge branch 'master' into hethi/fix-typo
71e2858f3290 Merge pull request #1226 from aninf-wo/hethi/fix-typo
c780e0e2c4e6 Merge branch 'master' into hethi/travis-unused-cmake
d6562b5a57ec Merge branch 'master' into hethi/unused-import
cc246ecb5675 use build type set in .travis.yml
dae044d4b986 use upper-case build type
f0c72bfe09af fix SetUp/TearDownTestCase() in AdvancedGuide
7529c8aa05c2 remove obsolete comment regarding python tests on linux
73d58dd4c838 ask cmake for per-configuration output subdir
5d431c650f9c Merge pull request #1236 from aninf-wo/hethi/issue-1087
-fix-advancedguide
47ad2993b682 Revert "ask cmake for per-configuration output subdir"
4db9a748e3bb Merge branch 'master' into hethi/unused-import
c4ec2ac04de2 Merge branch 'master' into hethi/travis-unused-cmake
9ba7946bde63 create different python based tests for single and multi
configuration build generators
bb1c4af48702 Merge branch 'master' into master
0eb49f4d6b59 Note that it is preferable for Googlers to create a CL
internally first
c4e01616af01 removed internal link ( not allowed in OSS)
fa70b84ab51e Removed "Trivial"
cfcc89a84a6f Merge branch 'master' into hethi/issue-1175-cmake-build-
type
7f8fefabedf2 Merge pull request #1237 from sgraham/update-docs-3
5dde668e0931 AppVeyor MinGW-w64 test build
16bfba08e2c6 Merge pull request #1230 from aninf-wo/hethi/travis-unused-
cmake
d6c46ebd04e2 Merge branch 'master' into hethi/issue-1175-cmake-build-
type
1a8ba67414be Merge branch 'master' into hethi/unused-import
34355c0e870e Merge remote-tracking branch 'github_google/master' into
master-github_frosteyes
a430e9c176bd Merge pull request #865 from frosteyes/master
14cf7f574a4f fix example's comment
84bd72ba3cc7 Merge branch 'master' into hethi/fix-faq-example-comment
7f27d8bdd1f4 Merge branch 'master' into hethi/issue-1175-cmake-build-
type
92e920730dae Merge pull request #1240 from aninf-wo/hethi/fix-faq-
example-comment
e033d8c73de8 change links from former code.google.com to current github
repository
2a720ac1bbd6 Merge branch 'master' into hethi/issue-1175-cmake-build-
type
8282229d4f9d Merge branch 'master' into mingw64-appveyour
836c194a8102 Merge pull request #1241 from aninf-wo/hethi/issue-635-old-
links
633488a76325 Merge branch 'master' into mingw64-appveyour
69e794ca75e6 Merge pull request #870 from KindDragon/mingw64-appveyour
ee53b281ba16 Merge branch 'master' into user_logger_instead_of_printf
b3a1f87f0c5f Merge pull request #1235 from aninf-wo/hethi/issue-1175
-cmake-build-type
e4f6c0b358a4 Merge pull request #1011 from zeitounator/wrong-version-
reported
52b6ca3428ee Merge pull request #783 from tobbi/cppcheck_perf_fixes
1a62d1b08806 CMake: use threads if allowed and found, not just if found
7c6353d29a14 Merge pull request #900 from Gallaecio/patch-1
d15b8b452406 switch one build to Release mode
520ad96b7817 treat all warnings as errors for GCC (-Werror)
e7c9e80e63e5 Allow macros inside of parametrized test names
86e5f0083e52 Add a non-parametrized test
8abacca52eeb avoid -Wshadow warning on GCC
55fd999adf5a avoid warning about unused variable
48b06628803c cache ccache
d96a038e8b2b set MAKEFLAGS to use multiple processors on Travis CI
98f2f152539e install ccache on travis osx build slave
fe97312e24ef limit processors to use in Travis build to 4
88b76525dd27 Merge branch 'master' into hethi/unused-import
e8c6942ac157 remove obsolete link_directories command
9a8794faed3c add a cast
83d8dd0e9c5e call clang via ccache on Linux
56f8222a148d show ccache statistics in log
dd8e4a635893 reset ccache statistics at install
beca85ff4afb drop unused valgrind package from installation
857ddeadebe4 Merge pull request #975 from LebedevRI/respect-option
be94bf501e64 remove unused variables from travis environment
a92c362cfbc6 Merge branch 'master' into 2017_09_04_parametrized
8a3ccc3ee363 Merge pull request #1247 from aninf-wo/hethi/enable-
parallel-builds
a33b6b091999 Merge pull request #1246 from aninf-wo/hethi/enable-travis-
gcc-cache
bc60b5a82704 Merge branch 'master' into hethi/travis-release-build
f6dde80e94b9 Removed flush scopes around GTEST_LOG(FATAL) and exit call
since FATAL is expected to abort()
900cc4bca597 Merge commit 'a33b6b091999d44f771761be03beb64d3af2350a'
into user_logger_instead_of_printf
e43a5948d51e Merge branch 'master' into master
6c0146fd0075 use GTEST_ATTRIBUTE_UNUSED_ instead of dummy function
f3500ce23a0e Merge pull request #1243 from aninf-wo/hethi/travis-
release-build
894cdb82cb2a Merge pull request #1251 from aninf-wo/hethi/drop-valgrind-
installation-on-travis
8620328bcae4 Merge branch 'master' into hethi/cleanup-travis-environment
1b5b246ff9f1 Merge branch 'master' into hethi/unused-import
6508a66622b4 Merge branch 'master' into master
803ab9a86069 Merge branch 'master' into hethi/remove-linker-warning-on-
non-existing-path
def0b32119e1 Merge pull request #1254 from aninf-wo/hethi/cleanup-
travis-environment
4f68ab5b84dd Fix ellipsis position in examples
3663d671708e Merge pull request #1203 from
eidosmontreal/user_logger_instead_of_printf
eb695b0f1162 Merge branch 'master' into hethi/unused-import
ecc5182dbd6e Merge pull request #1250 from aninf-wo/hethi/remove-linker-
warning-on-non-existing-path
61330388862c Merge pull request #1227 from aninf-wo/hethi/unused-import
834baf336231 Merge branch 'master' into patch-1
c9cf07a8ba4d Make the failure messages from EXPECT_EQ and friends
actually symmetric,
20e62ad24cc7 Merge pull request #1242 from DarthGandalf/expect
31b6155d7d46 Merge branch 'master' into patch-1
9681b4c8e6aa Add explicit `CMAKE_DEBUG_POSTFIX` option
b1dd47c278a7 Merge pull request #1255 from yursha/patch-1
b55abc3fe08a Merge branch 'master' into patch-1
deace2546ef4 Merge pull request #1259 from ly2048/patch-1
d4af64ca1317 Remove redundant declaration
cf512a099cd5 Swap reinterpret_cast for static_cast
43863938377a Merge pull request #1265 from bkircher/redundant-decl
ff6796877fcb Merge pull request #1245 from
sheepmaster/2017_09_04_parametrized
d30a37e743e4 Revert "Allow macros inside of parametrized test names."
bfc0ffc8a698 Merge pull request #1271 from
google/revert-1245-2017_09_04_parametrized
89f45180e02c Merge branch 'master' into master
f1a87d73fc60 Merge pull request #1249 from stkhapugin/master
b70cf1a663ad Use gender-neutral pronouns in comments and docs
7b6561c56e35 Merge pull request #1275 from jwakely/pr/1273
Update gyp to f72586209ecbf70b71ce690f2182ebe51669cbb3
a478c1ab51ea win: mkdir even when copying directory
d61a9397e668 mac_tool.py: Handle non-zero ibtool return code
4801a5331ae6 gyp: update xml string encoding conversion
324dd166b7c0 gyp: show descriptive Windows SDK detection error
dd0eafbde598 Support z/OS platform
c6f471687407 make,ninja: Add support for an LDFLAGS_host environment
variable
30a29189f489 Change z/OS platform flavor name based on python 2.7.13
44ad5a0ab869 Add LIBS to the link command on z/OS
f72586209ecb Provide backward compatibility for python 2.7.6 on z/OS
Change-Id: I910b36f3166e51391d51b9ce5a4050651a5e50ea
Reviewed-on: https://chromium-review.googlesource.com/700429
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
hanging_program.exe is used by crash_other_program.exe, which is in turn
used by end_to_end_test.py. It hangs by loading loader_lock_dll.dll,
which squats in its entry point function while the loader lock is held.
hanging_program.exe needs to do some work in its Thread1() before the
loader lock is taken (a SetThreadPriority() call), and needs to do some
work in its main thread once the loader lock is held (it needs to signal
crash_other_program.exe that it’s successfully wedged itself).
Previously, proper synchronization was not provided. A 1-second Sleep()
was used to wait for the loader lock to be taken. Thread1() pre-work was
only achieved before the loader lock was taken by sheer luck. Things
didn’t always work out so nicely.
This uses an event handle to provide synchronization. An environment
variable is used to pass the handle to loader_lock_dll.dll, because
there aren’t many better options available. This eliminates both flake
and the unnecessary 1-second delay in hanging_program.exe, and since
this program runs twice during end_to_end_test.py, it improves that
test’s runtime by 2 seconds.
Bug: crashpad:197
Test: end_to_end_test.py
Change-Id: Ib9883215ef96bed7571464cc68e09b6ab6310ae6
Reviewed-on: https://chromium-review.googlesource.com/700076
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
CrashpadClient::DumpAndCrashTargetProcess() suspends the target process
and injects a thread to raise an exception. The injected thread is not
suspended, and may proceed to the point that the system recognizes the
process as terminating by the time the overall process suspension is
lifted. Previously, if this happened, an extraneous error was logged for
the attempt to resume a terminating process.
This introduces “termination tolerance” to ScopedProcessSuspend, which
allows an object to be configured to ignore this error and not log any
messages when this condition is expected.
This resolves log messages such as this one, produced frequently during
calls to CrashpadClient::DumpAndCrashTargetProcess() (including in
end_to_end_test.py):
> [pid:tid:yyyymmdd,hhmmss.mmm:ERROR scoped_process_suspend.cc:39]
> NtResumeProcess: An attempt was made to access an exiting process.
> (0xc000010a)
0xc000010a = STATUS_PROCESS_IS_TERMINATING
Test: end_to_end_test.py
Change-Id: Iab4c50fb21adce5502080ad25a6f734ec566d65c
Reviewed-on: https://chromium-review.googlesource.com/700715
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
OS_LINUX is not defined on Android. Chromium made this call and we can’t
revisit it here and now.
Change-Id: I70fd6ac35ba9731e2fd06792bf8cae332e2b360c
Reviewed-on: https://chromium-review.googlesource.com/700655
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
filename_rules.gypi doesn’t treat Android as Linux, so Crashpad’s .gyp
files are peppered throughout with this custom filename rule. This broke
in 59c5d848e5c5 when FakePtraceConnection was introduced.
Bug: crashpad:30
Change-Id: I524d32887d243541634d9a0803c7f46afd6d45e6
Reviewed-on: https://chromium-review.googlesource.com/700425
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
A step towards making these files usable by non-Linux systems.
Bug: crashpad:196
Change-Id: I2497fd7e3bcb5390ae1e6ae22902ab6f56b59dff
Reviewed-on: https://chromium-review.googlesource.com/685405
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Dave Bort <dbort@google.com>
The binary crashpad_handler.com is used by crashpad_client_win_test.cc,
but is not currently built when building crashpad_client_test.
Bug: crashpad:
Change-Id: I7a440774e49be9e821bca57c154a67b968a4bfbd
Reviewed-on: https://chromium-review.googlesource.com/695832
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
A step towards making these files usable by non-Linux systems.
Bug: crashpad:196
Change-Id: I1dc4304b1376a3a5e45228cf40b23f0367d3efa8
Reviewed-on: https://chromium-review.googlesource.com/685404
Commit-Queue: Dave Bort <dbort@google.com>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
During crash report upload, the client now provides the product
name, version, and client id via URL parameters to the crash
reporting service.
Also added percent-encoding function and a test.
Change-Id: I62f3a646d4ab6029543bd80938b79de28b1f20e4
Test: crashpad_util_test URLEncode.Empty
Test: crashpad_util_test URLEncode.ReservedCharacters
Test: crashpad_util_test URLEncode.UnreservedCharacters
Test: crashpad_util_test URLEncode.SimpleAddress
Reviewed-on: https://chromium-review.googlesource.com/493917
Commit-Queue: Roman Margold <rmargold@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
This will allow sharing code that is currently hard-coded to use (e.g.)
LinuxVMAddress or mach_vm_size_t.
Change-Id: I7bf20600c73d4ec7d2a029754f9043a236a38e5a
Reviewed-on: https://chromium-review.googlesource.com/677142
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Dave Bort <dbort@google.com>
Some versions of glibc (e.g., Debian GLIBC 2.24-11+deb9u1) do set a name
for the vdso mapping.
Change-Id: I342a55e95f649d5aaf1e35f1afab53d89f4ba0fc
Reviewed-on: https://chromium-review.googlesource.com/679858
Commit-Queue: Dave Bort <dbort@google.com>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
1) Add PtraceConnection which serves as the base class for specific
types of connections Crashpad uses to trace processes.
2) Add DirectPtraceConnection which is used when the handler process
has `ptrace` capabilities for the target process.
3) Move `ptrace` logic into Ptracer. This class isolates `ptrace` call
logic for use by various PtraceConnection implementations.
Bug: crashpad:30
Change-Id: I98083134a9f7d9f085e4cc816d2b85ffd6d73162
Reviewed-on: https://chromium-review.googlesource.com/671659
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Fixes the build for x86_64-linux-gnu-g++-6 6.3.0 20170516
on a recent Debian Testing system [Debian GNU/Linux 9.0 (stretch)].
Change-Id: Ibaa7b314723d41259703d723cbdd326982aaf159
Reviewed-on: https://chromium-review.googlesource.com/675576
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Commit-Queue: Dave Bort <dbort@google.com>