[Lldb-commits] [lldb] r346505 - Resubmit "Fix bug in PE/COFF plugin."

Zachary Turner via lldb-commits lldb-commits at lists.llvm.org
Fri Nov 9 08:06:45 PST 2018


Author: zturner
Date: Fri Nov  9 08:06:44 2018
New Revision: 346505

URL: http://llvm.org/viewvc/llvm-project?rev=346505&view=rev
Log:
Resubmit "Fix bug in PE/COFF plugin."

The original commit was actually 2 unrelated bug fixes, but it turns
out the second bug fix wasn't quite correct, so the entire patch was
reverted.  Resubmitting this half of the patch by itself, then will
follow up with a new patch which fixes the rest of the issue in a
more appropriate way.

Added:
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-bss.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/globals-bss.cpp
Modified:
    lldb/trunk/lit/SymbolFile/NativePDB/ast-reconstruction.cpp
    lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-bss.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-bss.lldbinit?rev=346505&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-bss.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-bss.lldbinit Fri Nov  9 08:06:44 2018
@@ -0,0 +1,3 @@
+target variable GlobalVariable
+
+quit

Modified: lldb/trunk/lit/SymbolFile/NativePDB/ast-reconstruction.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/ast-reconstruction.cpp?rev=346505&r1=346504&r2=346505&view=diff
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/ast-reconstruction.cpp (original)
+++ lldb/trunk/lit/SymbolFile/NativePDB/ast-reconstruction.cpp Fri Nov  9 08:06:44 2018
@@ -90,15 +90,15 @@ Anonymous<A::B::C<int>>::D AnonABCVoidD;
 // CHECK: (TrivialS) TS = {}
 // CHECK: (TrivialU) TU = {}
 // CHECK: (TrivialE) TE = <Unable to determine byte size.>
-// CHECK: (A::B::C<int>) ABCInt = (ABCMember = <read memory from {{.*}} failed>)
-// CHECK: (A::B::C<float>) ABCFloat = (ABCMember = <read memory from {{.*}} failed>)
-// CHECK: (A::B::C<void>) ABCVoid = (ABCSpecializationMember = <read memory from {{.*}} failed>)
+// CHECK: (A::B::C<int>) ABCInt = (ABCMember = 0)
+// CHECK: (A::B::C<float>) ABCFloat = (ABCMember = 0)
+// CHECK: (A::B::C<void>) ABCVoid = (ABCSpecializationMember = 0x0000000000000000)
 // CHECK: (A::C<0>) AC0 = {}
 // CHECK: (A::C<-1>) ACNeg1 = {}
-// CHECK: (A::C<0>::D) AC0D = (ACDMember = <read memory from {{.*}} failed>, CPtr = <read memory from {{.*}} failed>)
-// CHECK: (A::C<-1>::D) ACNeg1D = (ACDMember = <read memory from {{.*}} failed>, CPtr = <read memory from {{.*}} failed>)
+// CHECK: (A::C<0>::D) AC0D = (ACDMember = 0, CPtr = 0x0000000000000000)
+// CHECK: (A::C<-1>::D) ACNeg1D = (ACDMember = 0, CPtr = 0x0000000000000000)
 // CHECK: (A::D) AD = {}
-// CHECK: (A::D::E) ADE = (ADDMember = <read memory from {{.*}} failed>)
+// CHECK: (A::D::E) ADE = (ADDMember = 0)
 // CHECK: Dumping clang ast for 1 modules.
 // CHECK: TranslationUnitDecl {{.*}}
 // CHECK: |-CXXRecordDecl {{.*}} class TrivialC definition

Added: lldb/trunk/lit/SymbolFile/NativePDB/globals-bss.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/globals-bss.cpp?rev=346505&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/globals-bss.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/globals-bss.cpp Fri Nov  9 08:06:44 2018
@@ -0,0 +1,35 @@
+// clang-format off
+// REQUIRES: lld
+
+// Make sure we can read variables from BSS
+// RUN: clang-cl /Z7 /GS- /GR- /c /Fo%t.obj -- %s
+// RUN: lld-link /DEBUG /nodefaultlib /entry:main /OUT:%t.exe /PDB:%t.pdb -- %t.obj
+// RUN: llvm-readobj -s %t.exe | FileCheck --check-prefix=BSS %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb -f %t.exe -s \
+// RUN:     %p/Inputs/globals-bss.lldbinit 2>&1 | FileCheck %s
+
+int GlobalVariable = 0;
+
+int main(int argc, char **argv) {
+  return 0;
+}
+
+// BSS:       Section {
+// BSS:         Number: 3
+// BSS:         Name: .data
+// BSS-NEXT:    VirtualSize: 0x4
+// BSS-NEXT:    VirtualAddress:
+// BSS-NEXT:    RawDataSize: 0
+// BSS-NEXT:    PointerToRawData: 0x0
+// BSS-NEXT:    PointerToRelocations: 0x0
+// BSS-NEXT:    PointerToLineNumbers: 0x0
+// BSS-NEXT:    RelocationCount: 0
+// BSS-NEXT:    LineNumberCount: 0
+// BSS-NEXT:    Characteristics [ (0xC0000040)
+// BSS-NEXT:      IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
+// BSS-NEXT:      IMAGE_SCN_MEM_READ (0x40000000)
+// BSS-NEXT:      IMAGE_SCN_MEM_WRITE (0x80000000)
+// BSS-NEXT:    ]
+// BSS-NEXT:  }
+
+// CHECK: (int) GlobalVariable = 0

Modified: lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp?rev=346505&r1=346504&r2=346505&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp (original)
+++ lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp Fri Nov  9 08:06:44 2018
@@ -710,7 +710,10 @@ void ObjectFilePECOFF::CreateSections(Se
                        llvm::COFF::IMAGE_SCN_CNT_INITIALIZED_DATA &&
                    ((const_sect_name == g_data_sect_name) ||
                     (const_sect_name == g_DATA_sect_name))) {
-          section_type = eSectionTypeData;
+          if (m_sect_headers[idx].size == 0 && m_sect_headers[idx].offset == 0)
+            section_type = eSectionTypeZeroFill;
+          else
+            section_type = eSectionTypeData;
         } else if (m_sect_headers[idx].flags &
                        llvm::COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA &&
                    ((const_sect_name == g_bss_sect_name) ||
@@ -1053,6 +1056,7 @@ ObjectFile::Type ObjectFilePECOFF::Calcu
 }
 
 ObjectFile::Strata ObjectFilePECOFF::CalculateStrata() { return eStrataUser; }
+
 //------------------------------------------------------------------
 // PluginInterface protocol
 //------------------------------------------------------------------




More information about the lldb-commits mailing list