fallkrum updated this revision to Diff 301796. fallkrum added a comment. make types extern. @jingham please commit this patch to check if it will fix DWO issue, the rest of your recommendations will add later.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D88483/new/ https://reviews.llvm.org/D88483 Files: lldb/test/API/functionalities/type_get_module/TestTypeGetModule.py lldb/test/API/functionalities/type_get_module/compile_unit1.c lldb/test/API/functionalities/type_get_module/compile_unit2.c lldb/test/API/functionalities/type_get_module/main.c lldb/test/API/functionalities/type_get_module/type_definitions.h
Index: lldb/test/API/functionalities/type_get_module/type_definitions.h =================================================================== --- /dev/null +++ lldb/test/API/functionalities/type_get_module/type_definitions.h @@ -0,0 +1,9 @@ +struct compile_unit1_type { + int x; + int y; +}; + +struct compile_unit2_type { + int x; + int y; +}; Index: lldb/test/API/functionalities/type_get_module/main.c =================================================================== --- lldb/test/API/functionalities/type_get_module/main.c +++ lldb/test/API/functionalities/type_get_module/main.c @@ -1 +1,11 @@ -int main() { return 0; } +#include "type_definitions.h" + +extern struct compile_unit1_type compile_unit1_var; +extern struct compile_unit2_type compile_unit2_var; + +int main() { + compile_unit1_var.x = 5; + compile_unit2_var.y = 10; + + return 0; +} Index: lldb/test/API/functionalities/type_get_module/compile_unit2.c =================================================================== --- lldb/test/API/functionalities/type_get_module/compile_unit2.c +++ lldb/test/API/functionalities/type_get_module/compile_unit2.c @@ -1,6 +1,3 @@ -struct compile_unit2_type { - int x; - int y; -}; +#include "type_definitions.h" struct compile_unit2_type compile_unit2_var = {2, 2}; Index: lldb/test/API/functionalities/type_get_module/compile_unit1.c =================================================================== --- lldb/test/API/functionalities/type_get_module/compile_unit1.c +++ lldb/test/API/functionalities/type_get_module/compile_unit1.c @@ -1,6 +1,3 @@ -struct compile_unit1_type { - int x; - int y; -}; +#include "type_definitions.h" struct compile_unit1_type compile_unit1_var = {1, 1}; Index: lldb/test/API/functionalities/type_get_module/TestTypeGetModule.py =================================================================== --- lldb/test/API/functionalities/type_get_module/TestTypeGetModule.py +++ lldb/test/API/functionalities/type_get_module/TestTypeGetModule.py @@ -13,10 +13,56 @@ mydir = TestBase.compute_mydir(__file__) + def find_module(self, target, name): + num_modules = target.GetNumModules() + index = 0 + result = lldb.SBModule() + + while index < num_modules: + module = target.GetModuleAtIndex(index) + if module.GetFileSpec().GetFilename() == name: + result = module + break + + index += 1 + + return result + + def find_comp_unit(self, exe_module, name): + num_comp_units = exe_module.GetNumCompileUnits() + index = 0 + result = lldb.SBCompileUnit() + + while index < num_comp_units: + comp_unit = exe_module.GetCompileUnitAtIndex(index) + if comp_unit.GetFileSpec().GetFilename() == name: + result = comp_unit + break + + index += 1 + + return result + + def find_type(self, type_list, name): + num_types = type_list.GetSize() + index = 0 + result = lldb.SBType() + + while index < num_types: + type = type_list.GetTypeAtIndex(index) + if type.GetName() == name: + result = type + break + + index += 1 + + return result + def test(self): self.build() target = lldbutil.run_to_breakpoint_make_target(self) - exe_module = target.GetModuleAtIndex(0) + exe_module = self.find_module(target, 'a.out') + self.assertTrue(exe_module.IsValid()) type1_name = 'compile_unit1_type' type2_name = 'compile_unit2_type' @@ -24,13 +70,19 @@ num_comp_units = exe_module.GetNumCompileUnits() self.assertEqual(num_comp_units, 3) - comp_unit = exe_module.GetCompileUnitAtIndex(1) - type_name = comp_unit.GetTypes().GetTypeAtIndex(0).GetName() - self.assertEqual(type_name, type1_name) + comp_unit = self.find_comp_unit(exe_module, 'compile_unit1.c') + self.assertTrue(comp_unit.IsValid()) + + cu_type = self.find_type(comp_unit.GetTypes(), type1_name) + self.assertTrue(cu_type.IsValid()) + self.assertEqual(cu_type.GetName(), type1_name) + + comp_unit = self.find_comp_unit(exe_module, 'compile_unit2.c') + self.assertTrue(comp_unit.IsValid()) - comp_unit = exe_module.GetCompileUnitAtIndex(2) - type_name = comp_unit.GetTypes().GetTypeAtIndex(0).GetName() - self.assertEqual(type_name, type2_name) + cu_type = self.find_type(comp_unit.GetTypes(), type2_name) + self.assertTrue(cu_type.IsValid()) + self.assertEqual(cu_type.GetName(), type2_name) type1 = target.FindFirstType(type1_name) self.assertTrue(type1.IsValid())
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits