aboutsummaryrefslogtreecommitdiff
path: root/src/processor
Commit message (Collapse)AuthorAgeFilesLines
* Fixed leak of unloaded module lists.Joshua Peraza2017-02-072-2/+6
| | | | | | | | BUG= Change-Id: I6d03820082f793a2eac3c3c2abd184b4acf66aa4 Reviewed-on: https://chromium-review.googlesource.com/438755 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* Revert "Several fixes for broken Mac build"Roman Margold2017-02-012-4/+4
| | | | This reverts commit 5c521532fc0a1b65f42c0d61d2da206eadf318b8.
* Several fixes for broken Mac buildRoman Margold2017-02-012-4/+4
|
* Fixed a bug where cv record size was not correctly checked.Joshua Peraza2017-01-301-4/+6
| | | | | | | | BUG= Change-Id: I6c1d78cfe344c7b90a03f6df35193d67623bfd89 Reviewed-on: https://chromium-review.googlesource.com/434094 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* Populate stack frames with unloaded module info.Joshua Peraza2017-01-1910-9/+138
| | | | | | | | | | | | | | | | | | | This CL hits lots of source files because: 1. An update to the CodeModule virtual class. I added an is_loaded method to specify whether the module is loaded. There were several mocks/test classes that needed to be updated with an implementation. An alternative to this route would be to modify MinidumpUnloadedModule::code_file to prepend "Unloaded_" to the module name. 2. Added an unloaded_modules parameter to StackFrameSymbolizer::FillSourceLineInfo. BUG= Change-Id: Ic9c7f7c7b7e932a154a5d4ccf292c1527d8da09f Reviewed-on: https://chromium-review.googlesource.com/430241 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* Added classes to support reading unloaded module lists in minidumps.Joshua Peraza2016-12-164-1/+558
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The implementations of Module/UnloadedModule and ModuleList/UnloadedModuleList are very similar. They have been made separate classes because they operate on different structs, complicating factoring code into a base class and have sufficiently different implementation that templates would not be suitable. When unloaded modules have partially overlapping ranges, the module shrink down feature is used to move the start of the higher range to the end of the lower range. If two unloaded modules overlap identically, the second module will not be added to the range map and the failure ignored. Places where MinidumpUnloadedModule differs from MinidumpModule: code_identifier: the android/linux case is deleted since cv_records never exist. debug_file/debug_identifier/version: always return empty strings. Read: an expected size is provided as opposed to MD_MODULE_SIZE. A seek is used if there are extra, unused bytes. Places where MinidumpUnloadedModuleList differs from MinidumpModuleList: Read: entry and header size is provided in the header in addition to count. This changes the checks and handling of padding. Failures from StoreRange are ignored. GetMainModule: always returns NULL. BUG= Change-Id: I52e93d3ccc38483f50a6418fede8b506ec879aaa Reviewed-on: https://chromium-review.googlesource.com/421566 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
* Remove comparison of this with nullptrOrgad Shaneh2016-12-062-13/+9
| | | | | | | | GCC6 optimizes it out, leading to crash. Change-Id: I8425d456c1364929d135ce3860121b8098bab1f7 Reviewed-on: https://chromium-review.googlesource.com/413120 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* microdump_stackwalk_test: fix bashism in testMike Frysinger2016-11-252-2/+2
| | | | | | | | | These are /bin/sh scripts, and `source` is a bash-specific command. Switch to the portable `.` command instead. Change-Id: I51d8253b26aa61c130bb5fdc4789f8d623c6d9db Reviewed-on: https://chromium-review.googlesource.com/414524 Reviewed-by: Primiano Tucci <primiano@chromium.org>
* Update linksOrgad Shaneh2016-11-182-5/+5
| | | | | | | | | | code.google.com is obsolete. Fix all broken markdown links while at it. Change-Id: I6a337bf4b84eacd5f5c749a4ee61331553279009 Reviewed-on: https://chromium-review.googlesource.com/411800 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Add a crash reason string for the simulated crashpad exception codePierre-Antoine Manzagol2016-11-101-0/+6
| | | | | | | | BUG= Change-Id: I19a1abf1d00f208943db1c362cc426ca8bd2068e Reviewed-on: https://chromium-review.googlesource.com/409632 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Allow compiling the google-breakpad code using a global ::string class ↵Ivan Penkov2016-11-083-3/+3
| | | | | | | | | | | | instead of std::string. For more details take a look at common/using_std_string.h BUG= Change-Id: Ifebfc57f691ef3a3bef8cfed7106c567985edffc Reviewed-on: https://chromium-review.googlesource.com/399738 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Generate reason for bad function table exceptionMike Wittman2016-10-271-0/+3
| | | | | | | | | | This exception is being seen in Chrome during stack unwinding. BUG= Change-Id: Ica3f721ca605dff835ffc3814c60bab9f6f9b192 Reviewed-on: https://chromium-review.googlesource.com/404332 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Fix iterating over the MDXStateFeature entries on 32-bit hostsGabriele Svelto2016-10-181-1/+1
| | | | | | | | | | | On 32-bit hosts the new code for dumping version 5 of the MDRawMiscInfo structure uses a 32-bit left shift to select flags corresponding to the entries in the MDXStateFeature array. Since the array is made of 64 element this automatically skipped half of it. Change-Id: Ic4e3beaf6c56083524b33da9a396c14eec0d2bd2 Reviewed-on: https://chromium-review.googlesource.com/396107 Reviewed-by: Ted Mielczarek <ted@mielczarek.org>
* Provide initial EBX value to FPO frame data evaluatorScott Graham2016-10-142-6/+153
| | | | | | | | | | | | | EBX is sometimes used in "WIN FRAME 4" programs. Not providing the initial value was causing the evaluation in some frames of ntdll, resulting in a fallback to scanning and a failed stack walk. R=mark@chromium.org BUG=chromium:651453 Change-Id: I94a8184e1eed72b0d0e3212fe323fbdd10d56da5 Reviewed-on: https://chromium-review.googlesource.com/398059 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Fix a win32 build error by moving a #include out of an #ifndef _WIN32Ted Mielczarek2016-09-201-1/+2
|
* This change allows compiling the google-breakpad code using a global ↵Ivan Penkov2016-08-304-10/+13
| | | | | | | | | | | | ::string class instead of std::string. For more details take a look at common/using_std_string.h BUG= Change-Id: I11f1ce697be23e13f12ea8f0468bbe02fa63c967 Reviewed-on: https://chromium-review.googlesource.com/378159 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Updating ExploitabilityLinux to check memory mapping names against a prefixBen Scarlato2016-08-293-8/+15
| | | | | | | | | | | instead of a specific name. This will prevent false positives on systems which use a format such as “[stack:69616]” for stack memory mapping names. Change-Id: I51aeda2fe856c1f37f0d18ac06cce69fec2fffa2 Reviewed-on: https://chromium-review.googlesource.com/377086 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Update MDRawMiscInfo to support version 5 of the MINIDUMP_MISC_INFO_N structure.Gabriele Svelto2016-08-191-7/+80
| | | | | | | | The routines used to read from the structure were also modified to accomodate for unknown future versions by skipping over the unsupported part instead of failing. R=ted.mielczarek@gmail.com Review URL: https://codereview.chromium.org/2109063004/ .
* Add new exception code for OOM generated from Chromium.Will Harris2016-07-191-0/+3
| | | | | | | | | See also https://codereview.chromium.org/2130293003/ for Chromium-side change and go/internal_cl_for_2130293003 for internal change. BUG=chromium:614440 R=mark@chromium.org Review URL: https://codereview.chromium.org/2160373002 .
* Server-side workaround to handle overlapping modules.Ivan Penkov2016-06-2012-36/+158
| | | | | | | | | | | | | | This change is resolving an issue that was caused by the combination of: - Android system libraries being relro packed in N+. - Breakpad dealing with relro packed libraries in a hack way. This is a fix for http://crbug/611824. I also found an use-after-free issue (bug in Minidump::SeekToStreamType). I disallowed the MinidumpStreamInfo copy and assign constructors and the compiler detected another similar issue in Minidump::Print. Then I disabled the copy and assign constructors for most classes in minidump.h (just in case). There are a couple of classes where I couldn't disallow them (since assign is used). This will require a small refactor so I left it out of this CL. R=mark@chromium.org Review URL: https://codereview.chromium.org/2060663002 .
* Fix a trivial parsing bug caught by static analysisNicholas Nethercote2016-06-101-1/+1
| | | | R=ted
* Update symbol file documentation links.Ralph Giles2016-06-102-2/+2
| | | | | | | These locations have changed since the move from Google Code. R=ted.mielczarek@gmail.com BUG=https://bugzilla.mozilla.org/show_bug.cgi?id=1275630
* Adding support for overlapping ranges to RangeMap.Ivan Penkov2016-06-0510-89/+531
| | | | | | | | | | When enabled, adding of a new range that overlaps with an existing one can be a successful operation. The range which ends at the higher address will be shrunk down by moving its start position to a higher address so that it does not overlap anymore. This change is required to fix http://crbug/611824. The actual fix will come in a separate CL. R=mmandlis@chromium.org Review URL: https://codereview.chromium.org/2029953003 .
* fix signed warning errors in unittestsMike Frysinger2016-05-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | A bunch of gtest assert statements fail due to signed warnings as unadorned constants are treated as signed integers. Mark them all unsigned to avoid that. One example (focus on the "[with ...]" blocks that show the types): In file included from src/breakpad_googletest_includes.h:33:0, from src/common/memory_unittest.cc:30: src/testing/gtest/include/gtest/gtest.h: In instantiation of 'testing::AssertionResult testing::internal::CmpHelperEQ(const char*, const char*, const T1&, const T2&) [with T1 = int; T2 = long unsigned int]': src/testing/gtest/include/gtest/gtest.h:1524:23: required from 'static testing::AssertionResult testing::internal::EqHelper<true>::Compare(const char*, const char*, const T1&, const T2&, typename testing::internal::EnableIf<(! testing::internal::is_pointer<T2>::value)>::type*) [with T1 = int; T2 = long unsigned int; typename testing::internal::EnableIf<(! testing::internal::is_pointer<T2>::value)>::type = void]' src/common/memory_unittest.cc:41:246: required from here src/testing/gtest/include/gtest/gtest.h:1448:16: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] if (expected == actual) { ^ cc1plus: some warnings being treated as errors Makefile:5180: recipe for target 'src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o' failed make[2]: *** [src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o] Error 1 R=ted.mielczarek@gmail.com Review URL: https://codereview.chromium.org/2013893003 .
* [MIPS] Rename variable mips to mips32Veljko Mihailovic2016-05-251-5/+5
| | | | | | | | | | | | Renaming variable mips to mips32 since mips is already defined by the toolchain. BUG=Compile error in Chromium R=mark@chromium.org Review URL: https://codereview.chromium.org/2006393004 . Patch from Veljko Mihailovic <veljko.mihailovic@imgtec.com>.
* Revert "Write adjusted range back to module"Tao Bai2016-05-131-8/+0
| | | | | | | | | | | | | This is no right fix, we shouldn't allow module overlap. This reverts commit 4f417c8c0ffceb6c2516c6ef00cd91ca5746d852. BUG=606972 R=mark@chromium.org Review URL: https://codereview.chromium.org/1976683004 . Patch from Tao Bai <michaelbai@chromium.org>.
* Write adjusted range back to moduleTao Bai2016-05-031-0/+8
| | | | | | | | | | | | | | | | | In Android, the mmap could be overlapped by /dev/ashmem, we adjusted the range in https://breakpad.appspot.com/9744002/, but adjusted range isn't written back to module, this caused the corresponding module be dropped in BasicCodeModules copy constructor. This also fix a lot of 'unable to store module' warnings when dumping Android's minidump. BUG=606972 R=mark@chromium.org, wfh@chromium.org Review URL: https://codereview.chromium.org/1939333002 . Patch from Tao Bai <michaelbai@chromium.org>.
* Make x86-64 frame pointer unwinding stricterTed Mielczarek2016-04-192-51/+169
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The x86-64 frame pointer-based unwind method will accept values that aren't valid for the frame pointer register and the return address. This fixes it to reject non-8-byte-aligned frame pointers, as well as non-canonical addresses for the return address it finds. A colleague of mine asked me why Breakpad gave a bad stack for a crash in our crash-stats system: https://crash-stats.mozilla.com/report/index/a472c842-2c7b-4ca7-a267-478cf2160405 Digging in, it turns out that the function in frame 0 is a leaf function, so MSVC doesn't generate an entry in the unwind table for it, so dump_syms doesn't produce a STACK CFI entry for it in the symbol file. The stackwalker tries frame pointer unwinding, and %rbp is set to a value that sort-of works, so it produces a garbage frame 1 and then is lost. Either of the two checks in this patch would have stopped the stackwalker from using the frame pointer. It's possible we could do something smarter on the dump_syms side, like enumerating all functions and outputing some default STACK CFI rule for those that don't have unwind info, but that wouldn't fix crashes from existing builds without re-dumping symbols for them. In any event, these checks should always pass for valid frame pointer-using functions. R=mark@chromium.org BUG=https://bugzilla.mozilla.org/show_bug.cgi?id=1263001 Review URL: https://codereview.chromium.org/1902783002 .
* Bump MinidumpMemoryRegion::max_bytes to 2MBTed Mielczarek2016-04-141-1/+1
| | | | | | | BUG=https://bugs.chromium.org/p/google-breakpad/issues/detail?id=694 R=mark@chromium.org Review URL: https://codereview.chromium.org/1883253002 .
* Add some new stream types to MDStreamTypeTed Mielczarek2016-04-131-0/+8
| | | | | | | | | | | | | | I ran minidump_dump on a dump from Firefox on my Windows 10 machine and noticed some streams that Breakpad didn't have names for. Looking in minidumpapiset.h in the Windows 10 SDK finds these values in MINIDUMP_STREAM_TYPE. There are also struct definitions for the stream data for some of them (all but JavaScriptData), but I don't have a particular need for those currently. R=mark@chromium.org BUG= Review URL: https://codereview.chromium.org/1884943002 .
* Remove unreferenced local variable which breaks build.Yunxiao Ma2016-04-051-3/+2
| | | | | | | | | | | | | Depending on compiler's setting, the unreferenced local variable may cause build break. modified: src/processor/minidump.cc R=mark@chromium.org Review URL: https://codereview.chromium.org/1866533002 . Patch from Yunxiao Ma <yxma@google.com>.
* Rename stdio.h wrapper file to stdio_wrapper.h.Yunxiao Ma2016-04-056-6/+6
| | | | | | | | | | | | | | | | | | | | Some projects will get build break because the comipler is confused when searches for the standard stdio.h. Rename the wrapper file to avoid that. renamed: src/common/stdio.h -> src/common/stdio_wrapper.h modified: src/processor/minidump.cc modified: src/processor/dump_context.cc modified: src/processor/logging.cc modified: src/processor/minidump.cc modified: src/processor/minidump_processor.cc modified: src/processor/stackwalk_common.cc modified: src/processor/symbolic_constants_win.cc R=mark@chromium.org, labath@google.com Review URL: https://codereview.chromium.org/1864603002 . Patch from Yunxiao Ma <yxma@google.com>.
* Switch the Linux minidump writer to use MDCVInfoELF for CV data.Ted Mielczarek2016-04-051-0/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | This preserves full build ids in minidumps, which are useful for tracking down the right version of system libraries from Linux distributions. The default build id produced by GNU binutils' ld is a 160-bit SHA-1 hash of some parts of the binary, which is exactly 20 bytes: https://sourceware.org/binutils/docs-2.26/ld/Options.html#index-g_t_002d_002dbuild_002did-292 The bulk of the changes here are to change the signatures of the FileID methods to use a wasteful_vector instead of raw pointers, since build ids can be of arbitrary length. The previous change that added support for this in the processor code preserved the return value of `Minidump::debug_identifier()` as the current `GUID+age` treatment for backwards-compatibility, and exposed the full build id from `Minidump::code_identifier()`, which was previously stubbed out for Linux dumps. This change keeps the debug ID in the `dump_syms` output the same to match. R=mark@chromium.org, thestig@chromium.org BUG= Review URL: https://codereview.chromium.org/1688743002 .
* Support processing microdump for mips architectureVeljko Mihailovic2016-04-016-6/+252
| | | | | | | | | | Based on changes for ARM, ARM64 and X86, the support for MIPS and MIPS64 is added in microdump. TEST=microdump_stackwalk ~/microdump-mips32.dmp symbols/ BUG=microdump_stackwalk failing for mips architectures Review URL: https://codereview.chromium.org/1731923002/
* Add the TID to the CallStack.Sebastien Marchand2016-04-013-0/+3
| | | | | | R=ivanpe@chromium.org Review URL: https://codereview.chromium.org/1849933002 .
* Make EXC_BAD_ACCESS / EXC_I386_GPFLT print nicely in the processorTed Mielczarek2016-03-291-5/+21
| | | | | | | | | | | | | | | | | | | | | Currently EXC_BAD_ACCESS doesn't support EXC_I386_GPFLT as exception_flags for pretty-printing in the processor, but this happens for a lot of things: http://opensource.apple.com/source/xnu/xnu-2050.24.15/osfmk/i386/trap.c (search for EXC_I386_GPFLT). And we get a lot of these in the wild: https://crash-stats.mozilla.com/search/?reason=%3DEXC_BAD_ACCESS+%2F+0x0000000d&cpu_name=amd64&_facets=signature&_facets=address&_columns=date&_columns=signature&_columns=product&_columns=version&_columns=build_id&_columns=platform&_columns=address#crash-reports This patch makes them show up with a nice name instead of the current "EXC_BAD_ACCESS / 0x0000000d". Additionally, this patch fixes some other cases where x86-64 wasn't being handled in the same way as x86, and fixes some x86-specific exception flags to be stringified with I386 in the output. R=mark@chromium.org BUG= Review URL: https://codereview.chromium.org/1833123002 .
* Explicitly call non-sized delete on dynamically sized memory for correct ↵Ivan Penkov2016-03-111-1/+1
| | | | | | | | | | | | | | | | behavior under sized-delete. The code as it stands allocates a chunk of memory of arbitrary size and places an object into it. It stores a pointer to that object and memory into a list telling the compiler that it is a pointer to a char. When the compiler deletes the objects in the list it thinks that the list contains pointers to chars - not pointers to arbitrarily sized regions of memory. This is fixing an issue that will reproduces when the following optimization (C++ sized dealocation) is enabled: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3536.html The fix is to explicitly call the non-sized delete operator, and the library code that supports malloc/free/new/delete will figure out the size of the block of memory from the pointer being passed in. Patch provided by Darryl Gove. R=mark@chromium.org Review URL: https://codereview.chromium.org/1788473002 .
* Handle multiple microdumps in system log.Maria Mandlis2016-02-263-4/+211
| | | | | | | | Properly handle microdump processing, when the system_log file contains an incomplete microdump section at the top. The processor will process the first complete microdump section. R=primiano@chromium.org Review URL: https://codereview.chromium.org/1742843002 .
* Support processing microdumps for x86 architecture.Maria Mandlis2016-02-183-6/+215
| | | | | | | BUG=587536 R=primiano@chromium.org Review URL: https://codereview.chromium.org/1704243002 .
* Fix buffer overrun in MinidumpModule::debug_identifier with MDCVInfoELFTed Mielczarek2016-02-171-1/+3
|
* Fixing a flaky Linux exploitability unittest.Ivan Penkov2016-02-163-15/+81
| | | | | | | BUG=https://code.google.com/p/chromium/issues/detail?id=584174 R=mmandlis@chromium.org Review URL: https://codereview.chromium.org/1697963002 .
* Parse additional line introduced in the microdump format and containing the ↵Maria Mandlis2016-02-1110-0/+47
| | | | | | | | | | | | | | | GPU infromation in the following format: G GL_VERSION|GL_VENDOR|GL_RENDERER. The GPU version, vendor and renderer are extracted during microdump parsing and populated in the appropriate fields in the SystemInfo struct. This is to match the changes introduced in crrev.com/1343713002 and crrev.com/1334473003 BUG=chromium:536769 R=primiano@chromium.org Review URL: https://codereview.chromium.org/1678463002 .
* Revert "Added a switch to dump minidump modules in minidump_stackwalk."Lei Zhang2016-02-103-30/+5
| | | | | | | | | | | This reverts commit cb936a0243c97ae9cd2d4bb19d95dde0421fed6d. A=dyen@chromium.org Original Review: https://codereview.chromium.org/1672773002/ R=dyen@chromium.org Review URL: https://codereview.chromium.org/1688493003 .
* Change MDCVInfoELF into something usable.Ted Mielczarek2016-02-102-39/+290
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch changes MDCVInfoELF (which is currently unused, apparently a vestigal bit of code landed as part of Solaris support) into a supported CodeView format that simply contains a build id as raw bytes. Modern ELF toolchains support build ids nicely: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Developer_Guide/compiling-build-id.html It would be useful to have the original build ids of loaded modules in Linux minidumps, since tools like Fedora's darkserver allow querying by build id and the current Breakpad code truncates the build id to the size of a GUID, which loses information: https://darkserver.fedoraproject.org/ A follow-up patch will change the Linux minidump generation code to produce MDCVInfoELF in minidumps instead of MDCVInfoPDB70. This patch should be landed first to ensure that crash processors are able to handle this format before dumps are generated containing it. The full build id is exposed as the return value of Minidump::code_identifier(), which currently just returns "id" for modules in Linux dumps. For backwards-compatibility, Minidump::debug_identifier() continues to treat the build id as a GUID, so debug identifiers for existing modules will not change. BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1675413002 .
* [mips64] Support for mips n64Mike Frysinger2016-02-069-130/+1027
| | | | | | | | | | Adding remaining mips n64 support including stackwalker. BUG=None TEST=manually tested on Linux/Android R=vapier@chromium.org Review URL: https://codereview.chromium.org/1418453011 .
* Added a switch to dump minidump modules in minidump_stackwalk.Lei Zhang2016-01-293-5/+30
| | | | | | | | | | | | In order to figure out what symbols we need associated to a minidump, it is useful to be able to dump all the modules the minidump contains. A=dyen@chromium.org Original Review: https://codereview.chromium.org/1651593002/ BUG=563716 R=dyen@chromium.org Review URL: https://codereview.chromium.org/1650713002 .
* Improvements to GYP buildPavel Labath2016-01-291-3/+2
| | | | | | | | | | | | | | | | | | | | | | This updates the GYP build for the processor component (on windows). - adds/removes references to files which were added or removed from the repository - includes build/common.gypi in the gyp files: needed to correctly detect the OS (I think, the generated MSVC solutions were broken without it) - conditionally compiles code platform-specific code for the given platform After this minidump processor nearly compiles with VS2013: the generated project is correct, but some files still have compilation errors. Disclaimer: I have not tested the GYP changes on non-windows platform, as there does not seem to be anyone using it there. BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1643633004 .
* exploitability_unittest: fix warningsMike Frysinger2016-01-211-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The std::getline function always returns its first arg (which is an iostream object) and cannot return anything else. Thus, testing its value is pointless, and even leads to build errors w/at least gcc-5 due to gtest ASSERT_TRUE funcs only taking bool types: .../exploitability_unittest.cc: In member function 'virtual void {anonymous}::ExploitabilityLinuxUtilsTest_DisassembleBytesTest_Test::TestBody()': .../exploitability_unittest.cc:200:136: error: no matching function for call to 'testing::AssertionResult::AssertionResult(std::basic_istream<char>&)' In file included from .../breakpad_googletest_includes.h:33:0, from .../exploitability_unittest.cc:35: .../gtest.h:262:12: note: candidate: testing::AssertionResult::AssertionResult(bool) Since we know this never fails, simply drop the ASSERT_TRUE usage. The next line already checks the content of the buffer we read. Further on in the file, we hit some signed warnings: In file included from .../breakpad_googletest_includes.h:33:0, from .../exploitability_unittest.cc:35: .../gtest.h: In instantiation of 'testing::AssertionResult testing::internal::CmpHelperEQ(const char*, const char*, const T1&, const T2&) [with T1 = long unsigned int; T2 = int]': .../gtest.h:1484:23: required from 'static testing::AssertionResult testing::internal::EqHelper<lhs_is_null_literal>::Compare(const char*, const char*, const T1&, const T2&) [with T1 = long unsigned int; T2 = int; bool lhs_is_null_literal = false]' .../exploitability_unittest.cc:241:289: required from here .../gtest.h:1448:16: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] if (expected == actual) { This is because we compare the register value (a uint64_t) directly to an integer constant, and those are signed by default. Stick a U suffix on them to fix things up. BUG=chromium:579384 TEST=`make check` passes R=ivanpe@chromium.org Review URL: https://codereview.chromium.org/1611763002 .
* Fix usage of snprintf for MSVCPavel Labath2016-01-196-17/+7
| | | | | | | | | | | | | | Older versions of MSVC don't have a snprintf functions. Some files were already working around that, but not all of them. Instead of copying the logic into every file, I centralize it into a new stdio.h wrapper file and make other files include that. BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1602563003 . Patch from Pavel Labath <labath@google.com>.
* breakpad: fix unittest failure when building with clang.Mike Frysinger2016-01-151-1/+1
| | | | | | | | | | | | | | | In C/C++, the result of signed integer overflow is undefined. The expression "base + size - 1" is parsed as "(base + size) - 1", and "base + size" can overflow even if "base + (size - 1)" <= INT_MAX. See http://g/c-compiler-chrome/461JohPKakE/JI3rEBg6FwAJ for more. BUG=None TEST='CC=clang CXX=clang++ ./configure && make check' R=vapier@chromium.org Review URL: https://codereview.chromium.org/1591793002 .