diff options
author | Kuba Mracek <mracek@apple.com> | 2019-04-18 00:15:44 +0000 |
---|---|---|
committer | Kuba Mracek <mracek@apple.com> | 2019-04-18 00:15:44 +0000 |
commit | e5e9a6be6a237b4d1965680b83acdede7544f709 (patch) | |
tree | e7af2a05245ec320933c5c36d4a7672f4cae6d63 /lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables | |
parent | 91a06bee788262a294527b815354f380d99dfa9b (diff) | |
download | bcm5719-llvm-e5e9a6be6a237b4d1965680b83acdede7544f709.tar.gz bcm5719-llvm-e5e9a6be6a237b4d1965680b83acdede7544f709.zip |
[lldb] Don't filter variable list when doing a lookup by mangled name in SymbolFileDWARF::FindGlobalVariables
Differential Revision: https://reviews.llvm.org/D60737
llvm-svn: 358629
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables')
3 files changed, 63 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/Makefile new file mode 100644 index 00000000000..314f1cb2f07 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../../../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/TestGlobalVariables.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/TestGlobalVariables.py new file mode 100644 index 00000000000..5e240b8ac63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/TestGlobalVariables.py @@ -0,0 +1,41 @@ +"""Test that C++ global variables can be inspected by name and also their mangled name.""" + +from __future__ import print_function + + +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class GlobalVariablesCppTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def setUp(self): + TestBase.setUp(self) + self.source = lldb.SBFileSpec('main.cpp') + + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764") + def test(self): + self.build() + + (target, _, _, _) = lldbutil.run_to_source_breakpoint(self, "// Set break point at this line.", self.source) + + # Check that we can access g_file_global_int by its name + self.expect("target variable g_file_global_int", VARIABLES_DISPLAYED_CORRECTLY, + substrs=['42']) + self.expect("target variable abc::g_file_global_int", VARIABLES_DISPLAYED_CORRECTLY, + substrs=['42']) + self.expect("target variable xyz::g_file_global_int", VARIABLES_DISPLAYED_CORRECTLY, + error=True, substrs=['can\'t find global variable']) + + # Check that we can access g_file_global_int by its mangled name + addr = target.EvaluateExpression("&abc::g_file_global_int").GetValueAsUnsigned() + self.assertTrue(addr != 0) + mangled = lldb.SBAddress(addr, target).GetSymbol().GetMangledName() + self.assertTrue(mangled != None) + gv = target.FindFirstGlobalVariable(mangled) + self.assertTrue(gv.IsValid()) + self.assertEqual(gv.GetName(), "abc::g_file_global_int") + self.assertEqual(gv.GetValueAsUnsigned(), 42) diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/main.cpp new file mode 100644 index 00000000000..0a164186e71 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/main.cpp @@ -0,0 +1,17 @@ +//===-- main.c --------------------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#include <stdio.h> + +namespace abc { + int g_file_global_int = 42; +} + +int main (int argc, char const *argv[]) +{ + return abc::g_file_global_int; // Set break point at this line. +} |