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

Reply via email to