[PATCH] D78920: [llvm-readobj] [COFF] Cope with debug directory payloads in unmapped areas

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 29 11:16:52 PDT 2020


This revision was automatically updated to reflect the committed changes.
mstorsjo marked an inline comment as done.
Closed by commit rG239fcda22dee: [llvm-readobj] [COFF] Cope with debug directory payloads in unmapped areas (authored by mstorsjo).

Changed prior to commit:
  https://reviews.llvm.org/D78920?vs=260581&id=260964#toc

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D78920

Files:
  llvm/test/tools/llvm-readobj/COFF/debug-directory-unmapped.test
  llvm/tools/llvm-readobj/COFFDumper.cpp


Index: llvm/tools/llvm-readobj/COFFDumper.cpp
===================================================================
--- llvm/tools/llvm-readobj/COFFDumper.cpp
+++ llvm/tools/llvm-readobj/COFFDumper.cpp
@@ -730,6 +730,10 @@
     W.printHex("SizeOfData", D.SizeOfData);
     W.printHex("AddressOfRawData", D.AddressOfRawData);
     W.printHex("PointerToRawData", D.PointerToRawData);
+    // Ideally, if D.AddressOfRawData == 0, we should try to load the payload
+    // using D.PointerToRawData instead.
+    if (D.AddressOfRawData == 0)
+      continue;
     if (D.Type == COFF::IMAGE_DEBUG_TYPE_CODEVIEW) {
       const codeview::DebugInfo *DebugInfo;
       StringRef PDBFileName;
Index: llvm/test/tools/llvm-readobj/COFF/debug-directory-unmapped.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-readobj/COFF/debug-directory-unmapped.test
@@ -0,0 +1,70 @@
+## Test that printing debug directories that aren't part of the runtime
+## mapped sections doesn't fail. Currently llvm-readobj only prints the
+## entry itself and not the payload. Note that there isn't currently any
+## meaningful data in this test input where it claims the debug entry
+## payload is.
+
+# RUN: yaml2obj %s -o %t.exe
+
+# RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck %s
+
+# CHECK:      DebugDirectory [
+# CHECK-NEXT:   DebugEntry {
+# CHECK-NEXT:     Characteristics: 0x0
+# CHECK-NEXT:     TimeDateStamp: 2019-01-17 21:06:10 (0x5C40EE42)
+# CHECK-NEXT:     MajorVersion: 0x0
+# CHECK-NEXT:     MinorVersion: 0x0
+# CHECK-NEXT:     Type: CodeView (0x2)
+# CHECK-NEXT:     SizeOfData: 0x19
+# CHECK-NEXT:     AddressOfRawData: 0x0
+# CHECK-NEXT:     PointerToRawData: 0x3E4
+# CHECK-NEXT:   }
+# CHECK-NEXT:   DebugEntry {
+# CHECK-NEXT:     Characteristics: 0x0
+# CHECK-NEXT:     TimeDateStamp: 2019-01-17 21:06:10 (0x5C40EE42)
+# CHECK-NEXT:     MajorVersion: 0x0
+# CHECK-NEXT:     MinorVersion: 0x0
+# CHECK-NEXT:     Type: ExtendedDLLCharacteristics (0x14)
+# CHECK-NEXT:     SizeOfData: 0x4
+# CHECK-NEXT:     AddressOfRawData: 0x0
+# CHECK-NEXT:     PointerToRawData: 0x3E0
+# CHECK-NEXT:   }
+# CHECK-NEXT: ]
+
+--- !COFF
+OptionalHeader:
+  AddressOfEntryPoint: 4096
+  ImageBase:       1073741824
+  SectionAlignment: 4096
+  FileAlignment:   512
+  MajorOperatingSystemVersion: 6
+  MinorOperatingSystemVersion: 0
+  MajorImageVersion: 0
+  MinorImageVersion: 0
+  MajorSubsystemVersion: 6
+  MinorSubsystemVersion: 0
+  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_CUI
+  DLLCharacteristics: [  ]
+  SizeOfStackReserve: 1048576
+  SizeOfStackCommit: 4096
+  SizeOfHeapReserve: 1048576
+  SizeOfHeapCommit: 4096
+  Debug:
+    RelativeVirtualAddress: 8192
+    Size:            56
+header:
+  Machine:         IMAGE_FILE_MACHINE_AMD64
+  Characteristics: [  ]
+sections:
+  - Name:            .text
+    Characteristics: [  ]
+    VirtualAddress:  4096
+    VirtualSize:     16
+    SectionData:     C3909090909090909090909090909090
+  - Name:            .buildid
+    Characteristics: [  ]
+    VirtualAddress:  8192
+    VirtualSize:     56
+    SectionData:     0000000042EE405C00000000020000001900000000000000E40300000000000042EE405C00000000140000000400000000000000E0030000
+symbols:
+...


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D78920.260964.patch
Type: text/x-patch
Size: 3258 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200429/848f0ac9/attachment.bin>


More information about the llvm-commits mailing list