brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · b356cd8 Raw
79 lines · cpp
1//===-- StackFrameRecognizerTest.cpp --------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "lldb/Target/StackFrameRecognizer.h"10#include "Plugins/Platform/Linux/PlatformLinux.h"11#include "lldb/Core/Debugger.h"12#include "lldb/Host/FileSystem.h"13#include "lldb/Host/HostInfo.h"14#include "lldb/lldb-enumerations.h"15#include "lldb/lldb-forward.h"16#include "lldb/lldb-private-enumerations.h"17#include "lldb/lldb-private.h"18#include "llvm/Support/FormatVariadic.h"19#include "gtest/gtest.h"20 21using namespace lldb_private;22using namespace lldb;23 24namespace {25class StackFrameRecognizerTest : public ::testing::Test {26public:27  void SetUp() override {28    FileSystem::Initialize();29    HostInfo::Initialize();30 31    // Pretend Linux is the host platform.32    platform_linux::PlatformLinux::Initialize();33    ArchSpec arch("powerpc64-pc-linux");34    Platform::SetHostPlatform(35        platform_linux::PlatformLinux::CreateInstance(true, &arch));36  }37 38  void TearDown() override {39    platform_linux::PlatformLinux::Terminate();40    HostInfo::Terminate();41    FileSystem::Terminate();42  }43};44 45class DummyStackFrameRecognizer : public StackFrameRecognizer {46public:47  std::string GetName() override { return "Dummy StackFrame Recognizer"; }48};49 50void RegisterDummyStackFrameRecognizer(StackFrameRecognizerManager &manager) {51  RegularExpressionSP module_regex_sp = nullptr;52  RegularExpressionSP symbol_regex_sp(new RegularExpression("boom"));53 54  StackFrameRecognizerSP dummy_recognizer_sp(new DummyStackFrameRecognizer());55 56  manager.AddRecognizer(dummy_recognizer_sp, module_regex_sp, symbol_regex_sp,57                        Mangled::NamePreference::ePreferDemangled, false);58}59 60} // namespace61 62TEST_F(StackFrameRecognizerTest, NullModuleRegex) {63  DebuggerSP debugger_sp = Debugger::CreateInstance();64  ASSERT_TRUE(debugger_sp);65 66  StackFrameRecognizerManager manager;67 68  RegisterDummyStackFrameRecognizer(manager);69 70  bool any_printed = false;71  manager.ForEach([&any_printed](uint32_t recognizer_id, bool enabled,72                                 std::string name, std::string function,73                                 llvm::ArrayRef<ConstString> symbols,74                                 Mangled::NamePreference symbol_mangling,75                                 bool regexp) { any_printed = true; });76 77  EXPECT_TRUE(any_printed);78}79