Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[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
- Loading branch information
1 parent
91a06be
commit e5e9a6b
Showing
4 changed files
with
66 additions
and
1 deletion.
There are no files selected for viewing
5 changes: 5 additions & 0 deletions
5
lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/Makefile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
LEVEL = ../../../make | ||
|
||
CXX_SOURCES := main.cpp | ||
|
||
include $(LEVEL)/Makefile.rules |
41 changes: 41 additions & 0 deletions
41
lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/TestGlobalVariables.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) |
17 changes: 17 additions & 0 deletions
17
lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/main.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters