1051 Commits

Author SHA1 Message Date
Mark Mentovai
2633708f84 android: Support mmap() with large file offsets and API < 21
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-1
https://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>
2017-10-06 21:07:47 +00:00
Mark Mentovai
10411266ed linux/android: List compat headers in compat.gyp
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>
2017-10-06 17:06:54 +00:00
Joshua Peraza
6de7ad8a22 Fix Android x86_64 build when using traditional headers
Bug: crashpad:30
Change-Id: I4b4e478bb3811fd5d9d66d98a4ecc811be3ea129
Reviewed-on: https://chromium-review.googlesource.com/703689
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-10-06 00:05:44 +00:00
Mark Mentovai
93c88d87f0 win: Don’t appear to be a client connecting in end_to_end_test.py
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>
2017-10-05 20:58:59 +00:00
Mark Mentovai
31df2acb12 win: Fix messages in ProcessInfo::LoggingRangeIsFullyReadable()
|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>
2017-10-05 20:55:32 +00:00
Mark Mentovai
e5896de993 win: Fix process_structs.h definition of RTL_USER_PROCESS_PARAMETERS
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>
2017-10-05 20:49:08 +00:00
Mark Mentovai
370e441962 win: Address late feedback after 90054edf6202
Bug: crashpad:197
Change-Id: I2b6758d46f3ee9562ce027d321cb6b506dc78269
Reviewed-on: https://chromium-review.googlesource.com/701214
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
2017-10-04 21:22:51 +00:00
Mark Mentovai
2e9282c9f9 Update buildtools, gtest, and gyp
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>
2017-10-04 20:25:16 +00:00
Mark Mentovai
90054edf62 win: De-flake hanging_program.exe
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>
2017-10-04 19:58:56 +00:00
Mark Mentovai
c6adcc2482 win: Make CrashpadClient::DumpAndCrashTargetProcess() less chatty
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>
2017-10-04 19:04:47 +00:00
Mark Mentovai
f6aebd8baf android: Fix build after 45de8bf76e32
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>
2017-10-04 18:42:35 +00:00
Mark Mentovai
78b6353e45 android: Build FakePtraceConnection on Android
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>
2017-10-04 18:08:46 +00:00
Dave Bort
6c9bd10a24 Use generic VM types in snapshot/elf
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>
2017-10-03 00:42:39 +00:00
Joshua Peraza
cea0671011 win: Add crashpad_handler_console as a dependency of crashpad_client_test
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>
2017-10-02 22:08:54 +00:00
Dave Bort
9e07a7148c Move linux/elf files to snapshot/elf
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>
2017-10-02 21:54:34 +00:00
Roman Margold
f3a8dbd671 net: Identify clients via URL parameters during report upload
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>
2017-09-28 17:15:40 +00:00
Dave Bort
45de8bf76e Add generic VMAddress-related types
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>
2017-09-26 17:45:38 +00:00
Dave Bort
a04edfad5c Accept a non-empty vdso name in linux/debug_rendezvous_test
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>
2017-09-25 22:47:44 +00:00
Joshua Peraza
59c5d848e5 linux: Refactor ptrace usage.
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>
2017-09-22 16:25:32 +00:00
Dave Bort
be7b8a509c Include stddef.h for offsetof() in cpuid_reader.cc
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>
2017-09-21 21:39:25 +00:00
Sigurdur Asgeirsson
20ed4146d3 Use StringPiece for key and value in SimpleStringDictionary interface.
Bug: crashpad:193
Change-Id: I22ffad0f76f5aec0397bf9ab797641ea0889af24
Reviewed-on: https://chromium-review.googlesource.com/638910
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Sigurður Ásgeirsson <siggi@chromium.org>
2017-09-06 13:01:04 +00:00
Robert Sesek
ad1b86535c Roll mini_chromium to 068fe690218f03a02c1cd34c9a0eb4bf3c814a6a
068fe690218f base/strings/string_util.h: Add strlcpy.

Bug: crashpad:192
Change-Id: I535082f5909f307b85a409e5a40c41c483bcd719
Reviewed-on: https://chromium-review.googlesource.com/621546
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Robert Sesek <rsesek@chromium.org>
2017-08-18 17:04:09 +00:00
Joshua Peraza
b953388b95 Add SystemSnapshotLinux
Bug: crashpad:30
Change-Id: Ic1162c6637708492a5a9903a221cdd9266d3fd97
Reviewed-on: https://chromium-review.googlesource.com/601028
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-08-08 22:31:46 +00:00
Robert Sesek
f16e4eb9ff Implement SleepNanoseconds() on Windows.
This uses the naïve implementation originally written
https://codereview.chromium.org/807973002/#ps180001.

Bug: crashpad:192
Change-Id: Id00908dafb8886d6163a8b17213d3b7c33b81963
Reviewed-on: https://chromium-review.googlesource.com/606998
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-08-08 22:11:42 +00:00
Xi Cheng
01110c0a3b win: Fix %u, %d, %x/DWORD printf mismatches
To enable clang-cl's printf format string mismatch checking, a few
mismatch errors need to be fixed where DWORD (unsigned long) is printed
with %u, %d or %x (an 'l' is needed).

Change-Id: I2cbfafe823a186bfe3a555aec3a7ca03e85466f8
Reviewed-on: https://chromium-review.googlesource.com/598651
Commit-Queue: Xi Cheng <chengx@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-08-02 22:04:13 +00:00
Joshua Peraza
edf4dde8ae linux: Add ExceptionSnapshotLinux
Bug: crashpad:30
Change-Id: I450d53a89af2995c0fd13b31821360e781fe015a
Reviewed-on: https://chromium-review.googlesource.com/589747
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-08-02 02:29:51 +00:00
Mark Mentovai
7f038ebbd2 #include "build/build_config.h" where necessary
Change-Id: Ifd58969ca39a2fda5d2bcf34c6442158548ad2ab
Reviewed-on: https://chromium-review.googlesource.com/593148
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2017-07-31 16:53:14 +00:00
Dirk Pranke
43a1e46a31 Tweak the README wording.
This is basically a whitespace change to ensure that the CQ
and waterfall is working properly again.

TBR=mark@chromium.org
BUG=748681

Change-Id: I87a368e3261f8fa0eddd1c302522140694524b92
Reviewed-on: https://chromium-review.googlesource.com/592536
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Dirk Pranke <dpranke@chromium.org>
2017-07-29 23:09:02 +00:00
Dirk Pranke
c9319008b6 Disable the win x86 tests in the CQ until they are swarmed.
R=mark@chromium.org
BUG=743139

Change-Id: I1c50807b31bbb3136b28407a4853ff6950df8c88
Reviewed-on: https://chromium-review.googlesource.com/585413
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-29 22:14:51 +00:00
Dirk Pranke
1d443b8223 Revert "Switch CQ to use the new swarmbucket (LUCI) builders."
This reverts commit a06ca92083f517843b05a0047d14c57002f417c1.

Reason for revert: Roll back to buildbot for now.

Original change's description:
> Switch CQ to use the new swarmbucket (LUCI) builders.
> 
> This updates the crashpad CQ config to use the builders
> configured in https://chromium-review.googlesource.com/c/580607/.
> 
> TBR=mark@chromium.org
> BUG=743139
> 
> Change-Id: I29ae95f9d29630ba4522467efefe058548da623b
> Reviewed-on: https://chromium-review.googlesource.com/592849
> Reviewed-by: Dirk Pranke <dpranke@chromium.org>

TBR=dpranke@chromium.org,mark@chromium.org

Change-Id: I7ea1d019f47c6cc3065fcbc7eed68f834a4f2b35
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 743139
Reviewed-on: https://chromium-review.googlesource.com/592792
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Dirk Pranke <dpranke@chromium.org>
2017-07-29 21:54:44 +00:00
Mark Mentovai
c332e7ffda Fix Doxygen usage in util/misc/lexing.h
Change-Id: Ifdef347426655df2ab54aed0eec0cfbe4bbd7cb1
Reviewed-on: https://chromium-review.googlesource.com/592696
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2017-07-29 21:11:33 +00:00
Mark Mentovai
3a5837c773 #include "build/build_config.h" where necessary
Change-Id: I982ec4f7a87fa92925d22267f948df6ca5febea7
Reviewed-on: https://chromium-review.googlesource.com/592693
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2017-07-29 21:11:31 +00:00
Dirk Pranke
a06ca92083 Switch CQ to use the new swarmbucket (LUCI) builders.
This updates the crashpad CQ config to use the builders
configured in https://chromium-review.googlesource.com/c/580607/.

TBR=mark@chromium.org
BUG=743139

Change-Id: I29ae95f9d29630ba4522467efefe058548da623b
Reviewed-on: https://chromium-review.googlesource.com/592849
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
2017-07-29 21:03:11 +00:00
Mark Mentovai
b653f86153 Fix Windows build after 8f0636288a0e
Clang, GCC, and MSVS 2017 were fine with a “constexpr” definition
corresponding to a class-scope “static const” declaration, but MSVS 2015
is not.

Change-Id: I8c80c6e62d1a312bad161db98e584be225b70bbf
Reviewed-on: https://chromium-review.googlesource.com/592644
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-29 01:25:34 +00:00
Mark Mentovai
8f0636288a Use constexpr at namespace scope
This is essentially based on a search for “^const .*=”.

Change-Id: I9332c1f0cf7c891ba1ae373dc537f700f9a1d956
Reviewed-on: https://chromium-review.googlesource.com/585452
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
2017-07-29 01:06:52 +00:00
Mark Mentovai
6dac7ecdf5 Use constexpr at function scope
This is essentially based on a search for “^ *const [^*&]*=[^(]*$”

Change-Id: Id571119d0b9a64c6f387eccd51cea7c9eb530e13
Reviewed-on: https://chromium-review.googlesource.com/585555
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
2017-07-29 00:50:40 +00:00
Mark Mentovai
7e6a0145b1 mac handler: Record the number of open files in the handler process
The "file-limit" annotation has shown that the system as a whole is not
likely to be out of file descriptors globally. It’s possible that a file
descriptor leak in crashpad_handler itself is responsible for certain
crashes. Add a count of the number of open files in the handler process
to this annotation to test this theory.

Bug: crashpad:180
Change-Id: If6f2304fdabddd29636ba4ac5a7d1e0fff7f4b61
Reviewed-on: https://chromium-review.googlesource.com/585852
Reviewed-by: Robert Sesek <rsesek@chromium.org>
2017-07-26 17:21:45 +00:00
Mark Mentovai
281be63d00 Standardize on static constexpr for arrays when possible
This uses “static” at function scope to avoid making local copies, even
in cases where the compiler can’t see that the local copy is
unnecessary. “constexpr” adds additional safety in that it prevents
global state from being initialized from any runtime dependencies, which
would be undesirable.

At namespace scope, “constexpr” is also used where appropriate.

For the most part, this was a mechanical transformation for things
matching '(^| )const [^=]*\['.

Similar transformations could be applied to non-arrays in some cases,
but there’s limited practical impact in most non-array cases relative to
arrays, there are far more use sites, and much more manual intervention
would be required.

Change-Id: I3513b739ee8b0be026f8285475cddc5f9cc81152
Reviewed-on: https://chromium-review.googlesource.com/583997
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
2017-07-25 17:40:51 +00:00
Joshua Peraza
01b347732e linux: Collect CPU times in ProcStatReader and use in ProcessReader
Bug: crashpad:30
Change-Id: I6d4020220031670937acad12d0b7878c1ae0fae7
Reviewed-on: https://chromium-review.googlesource.com/583952
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-25 04:15:32 +00:00
Mark Mentovai
90e4649f0d linux: Sort alphabetically in util .gyp files
Bug: crashpad:30
Change-Id: Iea992cd9eef1029c046cb354f7c1c0173b6f0675
Reviewed-on: https://chromium-review.googlesource.com/583767
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2017-07-24 18:51:31 +00:00
Joshua Peraza
9299d409ab linux: Refactor reading start time from the stat file
Bug: crashpad:30
Change-Id: Ie8137db2a5b6f2d4947df108d1fb5bdd9f8ab391
Reviewed-on: https://chromium-review.googlesource.com/580448
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-24 18:41:15 +00:00
Joshua Peraza
37f20f7b14 Add ThreadSnapshotLinux
Bug: crashpad:30
Change-Id: Iee8eaecadc4b8d61d3975a79fbc7f80dbb39a134
Reviewed-on: https://chromium-review.googlesource.com/580207
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-20 19:55:21 +00:00
Joshua Peraza
bde35ca918 Add MemorySnapshotLinux
Bug: crashpad:30
Change-Id: Iddd100c3806178f6d20dd903e3f41926904696d4
Reviewed-on: https://chromium-review.googlesource.com/577977
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-20 18:45:12 +00:00
Joshua Peraza
7be6b8ea1d Add functions to convert native x86 contexts to Crashpad CPUContexts
Debug registers are currently initialized to 0 until methods are added
to ThreadInfo to collect them.

Bug: crashpad:30
Change-Id: Ic1aab1151dcd4bed48eca8a60b76fb0d8d613418
Reviewed-on: https://chromium-review.googlesource.com/579889
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-20 18:16:11 +00:00
Joshua Peraza
6b5f139d88 linux: Add ProcessReader
ProcessReader is responsible for collecting information needed to build
a snapshot of the target process, independent of the Snapshot
interface. This CL includes implementation and tests for collecting
thread information, but does not yet collect module information.

Bug: crashpad:30
Change-Id: I911f155c953129a5fa8c031e923c0de2bd740ce0
Reviewed-on: https://chromium-review.googlesource.com/488162
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-19 18:16:09 +00:00
Joshua Peraza
5536baff13 linux: Use PTRACE_GET_THREAD_AREA for x86 ThreadInfo.GetThreadArea
Linux supports TLS on x86 by allocating slots in the GDT, accessible
via the system calls get/set_thread_area. This allows segment
registers (%gs on x86) to be used to quickly access the TLS.

Previously, we used PTRACE_GETREGSET with the NT_386_TLS regset. This
"register set" provides access to the subarray of the GDT used for TLS.
However, there are multiple slots provided and we don't know which one
is being used by the threading library for the current thread's TLS.
Previously, we were just using the first one, which worked for x86 on
64-bit kernels, but not 32-bit kernels. On 32-bit kernels, the first
slot ended up pointing to the TLS of the main thread.

The authoritative index of the current thread's TLS in the GDT is
given by bits 3-15 of %gs. However, this index cannot be used with
PTRACE_GETREGSET+NT386_TLS because we don't know the location of the
TLS slots in the GDT. PTRACE_GET_THREAD_AREA, however, accepts an
index from the start of the GDT similarly to get/set_thread_area.

Bug: crashpad:30
Change-Id: Ie6dfbdd088c6816fad409812a1a97037d4b38fd7
Reviewed-on: https://chromium-review.googlesource.com/575318
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-19 16:42:19 +00:00
Mark Mentovai
6ab73e0ad8 linux: #include appropriate headers for ElfImageReader
Bug: crashpad:30
Change-Id: I749a3493ec6a76dac904b36676330c5e487f356d
Reviewed-on: https://chromium-review.googlesource.com/571956
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2017-07-14 20:24:25 +00:00
Joshua Peraza
041a50d75c linux: Add DebugRendezvous to read dynamic linker data structures
Dynamic linkers use `struct r_debug` and `struct link_map` (defined in
`<link.h>`) to communicate lists of loaded modules to debuggers.

Bug: crashpad:30
Change-Id: Id903a1c199288dd85c34e38710cdb4c6b5fedb5b
Reviewed-on: https://chromium-review.googlesource.com/534853
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-14 19:07:05 +00:00
Joshua Peraza
a79791969d linux: Add MemoryMap::FindFileMmapStart
ELF executables and libraries may be loaded into memory in several
mappings, possibly with holes containing anonymous mappings
or mappings of other files. This method takes an input mapping and
attempts to find the mapping for file offset 0 of the same file.

Bug: crashpad:30
Change-Id: I79abf060b015d58ef0eba54a399a74315d7d2d77
Reviewed-on: https://chromium-review.googlesource.com/565223
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2017-07-11 16:19:48 +00:00
Joshua Peraza
4224be41d7 linux: Add ElfImageReader to read ELF images via ProcessMemory
Bug: crashpad:30
Change-Id: Id2a6a1868103b0f4374816e58aab365a977b010d
Reviewed-on: https://chromium-review.googlesource.com/508836
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
2017-07-06 16:51:29 +00:00