[PATCH] D32652: Gracefully handle empty .drectve sections

Dave Lee via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon May 1 22:13:29 PDT 2017


kastiglione updated this revision to Diff 97389.
kastiglione added a comment.

Added a test covering the desired behavior.


https://reviews.llvm.org/D32652

Files:
  lib/Object/COFFObjectFile.cpp
  test/Object/Inputs/COFF/empty-drectve.yaml
  test/Object/coff-empty-drectve.test


Index: test/Object/coff-empty-drectve.test
===================================================================
--- /dev/null
+++ test/Object/coff-empty-drectve.test
@@ -0,0 +1,4 @@
+RUN: yaml2obj %p/Inputs/COFF/empty-drectve.yaml | llvm-readobj -coff-directives - | FileCheck %s
+
+CHECK: Directive(s):
+
Index: test/Object/Inputs/COFF/empty-drectve.yaml
===================================================================
--- /dev/null
+++ test/Object/Inputs/COFF/empty-drectve.yaml
@@ -0,0 +1,14 @@
+--- !COFF
+header:
+  Machine:           IMAGE_FILE_MACHINE_I386
+sections:
+  - Name:            .drectve
+    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
+    SectionData:     ''
+symbols:
+  - Name:            .drectve
+    Value:           0
+    SectionNumber:   1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
Index: lib/Object/COFFObjectFile.cpp
===================================================================
--- lib/Object/COFFObjectFile.cpp
+++ lib/Object/COFFObjectFile.cpp
@@ -1062,7 +1062,7 @@
   // In COFF, a virtual section won't have any in-file
   // content, so the file pointer to the content will be zero.
   if (Sec->PointerToRawData == 0)
-    return object_error::parse_failed;
+    return std::error_code();
   // The only thing that we need to verify is that the contents is contained
   // within the file bounds. We don't need to make sure it doesn't cover other
   // data, as there's nothing that says that is not allowed.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32652.97389.patch
Type: text/x-patch
Size: 1561 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170502/a06bf002/attachment.bin>


More information about the llvm-commits mailing list