Jac1494 added a comment. For some real life case like below we need debuginfo for declaration of global extern variable .
$cat shlib.c int var; int test() { return var++; } $cat test extern int test(); extern int var; int main() { var++; printf("%d\n",test()); } If we debug above case with gdb it is not giving types of variable var. Because of no variable DIE is there in executable. (gdb) b main Breakpoint 1 at 0x40063c: file test.c, line 5. (gdb) pt var type = <data variable, no debug info> To add variable debuginfo we need to merge below patch in code. diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h index 9a3bb98..df79d46 100644 - a/clang/include/clang/Basic/TargetInfo.h +++ b/clang/include/clang/Basic/TargetInfo.h @@ -1371,6 +1371,9 @@ public: virtual void setAuxTarget(const TargetInfo *Aux) {} + /// Whether target allows debuginfo types for decl only variables. + virtual bool allowDebugInfoForExternalVar() const { return true; } + protected: /// Copy type and layout related info. void copyAuxTarget(const TargetInfo *Aux); diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index a61c98e..92245c0 100644 - a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -158,7 +158,11 @@ DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE( if (!GV->isDefinition()) addFlag(*VariableDIE, dwarf::DW_AT_declaration); else + { + /*Added location */ + addLocationAttribute(VariableDIE, GV, GlobalExprs); addGlobalName(GV->getName(), *VariableDIE, DeclContext); + } if (uint32_t AlignInBytes = GV->getAlignInBytes()) addUInt(*VariableDIE, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata, @@ -167,9 +171,6 @@ DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE( if (MDTuple *TP = GV->getTemplateParams()) addTemplateParams(*VariableDIE, DINodeArray(TP)); - // Add location. - addLocationAttribute(VariableDIE, GV, GlobalExprs); - return VariableDIE; } Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70696/new/ https://reviews.llvm.org/D70696 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits