[Lldb-commits] [PATCH] D52678: DWARFExpression: Resolve file addresses in the linked module

Greg Clayton via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Sun Sep 30 11:39:46 PDT 2018


clayborg added a comment.

See SymbolFileDWARF::ParseVariableDIE. It has code that links up the DW_OP_addr:

  if (is_static_lifetime) {
    if (is_external)
      scope = eValueTypeVariableGlobal;
    else
      scope = eValueTypeVariableStatic;
  
    if (debug_map_symfile) {
      // When leaving the DWARF in the .o files on darwin, when we have a
      // global variable that wasn't initialized, the .o file might not
      // have allocated a virtual address for the global variable. In
      // this case it will have created a symbol for the global variable
      // that is undefined/data and external and the value will be the
      // byte size of the variable. When we do the address map in
      // SymbolFileDWARFDebugMap we rely on having an address, we need to
      // do some magic here so we can get the correct address for our
      // global variable. The address for all of these entries will be
      // zero, and there will be an undefined symbol in this object file,
      // and the executable will have a matching symbol with a good
      // address. So here we dig up the correct address and replace it in
      // the location for the variable, and set the variable's symbol
      // context scope to be that of the main executable so the file
      // address will resolve correctly.

This is what needs to be fixed.


https://reviews.llvm.org/D52678





More information about the lldb-commits mailing list