diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-04-01 13:05:24 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-04-01 13:05:24 +0200 |
commit | ff2f287f82630ab3887d7d5c1e64e5b888ea0beb (patch) | |
tree | 4e96cb32aa2320a327024942d247c6b56ef8c199 /toolkit/crashreporter/google-breakpad/src/processor/stackwalker_address_list_unittest.cc | |
parent | bfc97728065cbbc7f6bbc281b654a2d1e079b48d (diff) | |
download | UXP-ff2f287f82630ab3887d7d5c1e64e5b888ea0beb.tar UXP-ff2f287f82630ab3887d7d5c1e64e5b888ea0beb.tar.gz UXP-ff2f287f82630ab3887d7d5c1e64e5b888ea0beb.tar.lz UXP-ff2f287f82630ab3887d7d5c1e64e5b888ea0beb.tar.xz UXP-ff2f287f82630ab3887d7d5c1e64e5b888ea0beb.zip |
Remove crashreporter toolkit files.
Resolves #20
Diffstat (limited to 'toolkit/crashreporter/google-breakpad/src/processor/stackwalker_address_list_unittest.cc')
-rw-r--r-- | toolkit/crashreporter/google-breakpad/src/processor/stackwalker_address_list_unittest.cc | 197 |
1 files changed, 0 insertions, 197 deletions
diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_address_list_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_address_list_unittest.cc deleted file mode 100644 index ab4e9c088..000000000 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_address_list_unittest.cc +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright (c) 2013, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// stackwalker_address_list_unittest.cc: Unit tests for the -// StackwalkerAddressList class. -// -// Author: Chris Hamilton <chrisha@chromium.org> - -#include <string> -#include <vector> - -#include "breakpad_googletest_includes.h" -#include "common/using_std_string.h" -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/basic_source_line_resolver.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/code_module.h" -#include "google_breakpad/processor/source_line_resolver_interface.h" -#include "google_breakpad/processor/stack_frame.h" -#include "processor/stackwalker_unittest_utils.h" -#include "processor/stackwalker_address_list.h" - -using google_breakpad::BasicSourceLineResolver; -using google_breakpad::CallStack; -using google_breakpad::CodeModule; -using google_breakpad::StackFrameSymbolizer; -using google_breakpad::StackFrame; -using google_breakpad::Stackwalker; -using google_breakpad::StackwalkerAddressList; -using std::vector; -using testing::_; -using testing::AnyNumber; -using testing::Return; -using testing::SetArgumentPointee; - -#define arraysize(f) (sizeof(f) / sizeof(*f)) - -// Addresses and sizes of a couple dummy modules. -uint64_t kModule1Base = 0x40000000; -uint64_t kModule1Size = 0x10000; -uint64_t kModule2Base = 0x50000000; -uint64_t kModule2Size = 0x10000; - -// A handful of addresses that lie within the modules above. -const uint64_t kDummyFrames[] = { - 0x50003000, 0x50002000, 0x50001000, 0x40002000, 0x40001000 }; - -class StackwalkerAddressListTest : public testing::Test { - public: - StackwalkerAddressListTest() - : // Give the two modules reasonable standard locations and names - // for tests to play with. - module1(kModule1Base, kModule1Size, "module1", "version1"), - module2(kModule2Base, kModule2Size, "module2", "version2") { - // Create some modules with some stock debugging information. - modules.Add(&module1); - modules.Add(&module2); - - // By default, none of the modules have symbol info; call - // SetModuleSymbols to override this. - EXPECT_CALL(supplier, GetCStringSymbolData(_, _, _, _, _)) - .WillRepeatedly(Return(MockSymbolSupplier::NOT_FOUND)); - - // Avoid GMOCK WARNING "Uninteresting mock function call - returning - // directly" for FreeSymbolData(). - EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber()); - } - - // Set the Breakpad symbol information that supplier should return for - // MODULE to INFO. - void SetModuleSymbols(MockCodeModule *module, const string &info) { - size_t buffer_size; - char *buffer = supplier.CopySymbolDataAndOwnTheCopy(info, &buffer_size); - EXPECT_CALL(supplier, GetCStringSymbolData(module, NULL, _, _, _)) - .WillRepeatedly(DoAll(SetArgumentPointee<3>(buffer), - SetArgumentPointee<4>(buffer_size), - Return(MockSymbolSupplier::FOUND))); - } - - void CheckCallStack(const CallStack& call_stack) { - const std::vector<StackFrame*>* frames = call_stack.frames(); - ASSERT_EQ(arraysize(kDummyFrames), frames->size()); - for (size_t i = 0; i < arraysize(kDummyFrames); ++i) { - ASSERT_EQ(kDummyFrames[i], frames->at(i)->instruction); - ASSERT_EQ(StackFrame::FRAME_TRUST_PREWALKED, frames->at(i)->trust); - } - ASSERT_EQ(static_cast<const CodeModule*>(&module2), frames->at(0)->module); - ASSERT_EQ(static_cast<const CodeModule*>(&module2), frames->at(1)->module); - ASSERT_EQ(static_cast<const CodeModule*>(&module2), frames->at(2)->module); - ASSERT_EQ(static_cast<const CodeModule*>(&module1), frames->at(3)->module); - ASSERT_EQ(static_cast<const CodeModule*>(&module1), frames->at(4)->module); - } - - MockCodeModule module1; - MockCodeModule module2; - MockCodeModules modules; - MockSymbolSupplier supplier; - BasicSourceLineResolver resolver; -}; - -TEST_F(StackwalkerAddressListTest, ScanWithoutSymbols) { - StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); - StackwalkerAddressList walker(kDummyFrames, arraysize(kDummyFrames), - &modules, &frame_symbolizer); - - CallStack call_stack; - vector<const CodeModule*> modules_without_symbols; - vector<const CodeModule*> modules_with_corrupt_symbols; - ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols, - &modules_with_corrupt_symbols)); - - // The stack starts in module2, so we expect that to be the first module - // found without symbols. - ASSERT_EQ(2U, modules_without_symbols.size()); - ASSERT_EQ("module2", modules_without_symbols[0]->debug_file()); - ASSERT_EQ("module1", modules_without_symbols[1]->debug_file()); - ASSERT_EQ(0u, modules_with_corrupt_symbols.size()); - - ASSERT_NO_FATAL_FAILURE(CheckCallStack(call_stack)); -} - -TEST_F(StackwalkerAddressListTest, ScanWithSymbols) { - // File : FILE number(dex) name - // Function: FUNC address(hex) size(hex) parameter_size(hex) name - // Line : address(hex) size(hex) line(dec) filenum(dec) - SetModuleSymbols(&module2, - "FILE 1 module2.cc\n" - "FUNC 3000 100 10 mod2func3\n" - "3000 10 1 1\n" - "FUNC 2000 200 10 mod2func2\n" - "FUNC 1000 300 10 mod2func1\n"); - SetModuleSymbols(&module1, - "FUNC 2000 200 10 mod1func2\n" - "FUNC 1000 300 10 mod1func1\n"); - - StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); - StackwalkerAddressList walker(kDummyFrames, arraysize(kDummyFrames), - &modules, &frame_symbolizer); - - CallStack call_stack; - vector<const CodeModule*> modules_without_symbols; - vector<const CodeModule*> modules_with_corrupt_symbols; - ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols, - &modules_with_corrupt_symbols)); - - ASSERT_EQ(0u, modules_without_symbols.size()); - ASSERT_EQ(0u, modules_with_corrupt_symbols.size()); - - ASSERT_NO_FATAL_FAILURE(CheckCallStack(call_stack)); - - const std::vector<StackFrame*>* frames = call_stack.frames(); - - // We have full file/line information for the first function call. - ASSERT_EQ("mod2func3", frames->at(0)->function_name); - ASSERT_EQ(0x50003000u, frames->at(0)->function_base); - ASSERT_EQ("module2.cc", frames->at(0)->source_file_name); - ASSERT_EQ(1, frames->at(0)->source_line); - ASSERT_EQ(0x50003000u, frames->at(0)->source_line_base); - - ASSERT_EQ("mod2func2", frames->at(1)->function_name); - ASSERT_EQ(0x50002000u, frames->at(1)->function_base); - - ASSERT_EQ("mod2func1", frames->at(2)->function_name); - ASSERT_EQ(0x50001000u, frames->at(2)->function_base); - - ASSERT_EQ("mod1func2", frames->at(3)->function_name); - ASSERT_EQ(0x40002000u, frames->at(3)->function_base); - - ASSERT_EQ("mod1func1", frames->at(4)->function_name); - ASSERT_EQ(0x40001000u, frames->at(4)->function_base); -} |