clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

You changed the API to return a pointer which can be NULL so we either need to 
check all returns for this or change the API to return a reference to a default 
constructed UnwindTable. I like the latter option, but I will leave that up to 
you. Since we are moving functionality into symbol files, we might want to opt 
for the latter to allow us to populate the UnwindTable as needed from any 
source when ever that source becomes available (like adding a symbol file to a 
module after the fact).



================
Comment at: include/lldb/Core/Module.h:709
+  //------------------------------------------------------------------
+  UnwindTable *GetUnwindTable();
+
----------------
I would vote to return a "UnwindTable&" and make a const and non const version 
of this. Otherwise we have to NULL check any call to this API.


================
Comment at: include/lldb/Core/Module.h:1108-1110
+  llvm::Optional<UnwindTable> m_unwind_table; /// < Table of FuncUnwinders
+                                              /// objects created for this
+                                              /// Module's functions
----------------
Why not just make this an instance to avoid having to null check all accessor 
calls?:

```
UnwindTable m_unwind_table;
```


================
Comment at: source/Commands/CommandObjectTarget.cpp:3536-3537
       FuncUnwindersSP func_unwinders_sp(
-          sc.module_sp->GetObjectFile()
-              ->GetUnwindTable()
-              .GetUncachedFuncUnwindersContainingAddress(start_addr, sc));
+          sc.module_sp->GetUnwindTable()
+              ->GetUncachedFuncUnwindersContainingAddress(start_addr, sc));
       if (!func_unwinders_sp)
----------------
Either NULL check or change the API?


================
Comment at: source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp:2865-2866
 
-    DWARFCallFrameInfo *eh_frame = GetUnwindTable().GetEHFrameInfo();
-    if (eh_frame) {
+    if (DWARFCallFrameInfo *eh_frame =
+            GetModule()->GetUnwindTable()->GetEHFrameInfo()) {
       if (m_symtab_ap == nullptr)
----------------
Either NULL check or change the API?


================
Comment at: source/Plugins/Process/Utility/RegisterContextLLDB.cpp:242-243
       func_unwinders_sp =
-          pc_module_sp->GetObjectFile()
-              ->GetUnwindTable()
-              .GetFuncUnwindersContainingAddress(m_current_pc, m_sym_ctx);
+          pc_module_sp->GetUnwindTable()->GetFuncUnwindersContainingAddress(
+              m_current_pc, m_sym_ctx);
     }
----------------
Either NULL check or change the API?


================
Comment at: source/Plugins/Process/Utility/RegisterContextLLDB.cpp:674-675
   FuncUnwindersSP func_unwinders_sp(
-      pc_module_sp->GetObjectFile()
-          ->GetUnwindTable()
-          .GetFuncUnwindersContainingAddress(m_current_pc, m_sym_ctx));
+      pc_module_sp->GetUnwindTable()->GetFuncUnwindersContainingAddress(
+          m_current_pc, m_sym_ctx));
   if (!func_unwinders_sp)
----------------
Either NULL check or change the API?


================
Comment at: source/Plugins/Process/Utility/RegisterContextLLDB.cpp:776-777
     func_unwinders_sp =
-        pc_module_sp->GetObjectFile()
-            ->GetUnwindTable()
-            .GetFuncUnwindersContainingAddress(m_current_pc, m_sym_ctx);
+        pc_module_sp->GetUnwindTable()->GetFuncUnwindersContainingAddress(
+            m_current_pc, m_sym_ctx);
   }
----------------
Either NULL check or change the API?


================
Comment at: source/Plugins/Process/Utility/RegisterContextLLDB.cpp:795
     DWARFCallFrameInfo *eh_frame =
-        pc_module_sp->GetObjectFile()->GetUnwindTable().GetEHFrameInfo();
+        pc_module_sp->GetUnwindTable()->GetEHFrameInfo();
     if (eh_frame) {
----------------
Either NULL check or change the API?


================
Comment at: source/Plugins/Process/Utility/RegisterContextLLDB.cpp:805
     ArmUnwindInfo *arm_exidx =
-        pc_module_sp->GetObjectFile()->GetUnwindTable().GetArmUnwindInfo();
+        pc_module_sp->GetUnwindTable()->GetArmUnwindInfo();
     if (arm_exidx) {
----------------
Either NULL check or change the API?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58129/new/

https://reviews.llvm.org/D58129



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to