[yaml2obj] - Allow overriding the sh_size field.

There is no way to set broken sh_size field currently
for sections. It can be usefull for writing the
test cases. 

Differential revision: https://reviews.llvm.org/D64401

llvm-svn: 365766
diff --git a/llvm/tools/yaml2obj/yaml2elf.cpp b/llvm/tools/yaml2obj/yaml2elf.cpp
index 735057f..e821c64 100644
--- a/llvm/tools/yaml2obj/yaml2elf.cpp
+++ b/llvm/tools/yaml2obj/yaml2elf.cpp
@@ -270,9 +270,13 @@
   else
     return false;
 
-  // Override the sh_offset field if requested.
-  if (YAMLSec && YAMLSec->ShOffset)
-    Header.sh_offset = *YAMLSec->ShOffset;
+  // Override the sh_offset/sh_size fields if requested.
+  if (YAMLSec) {
+    if (YAMLSec->ShOffset)
+      Header.sh_offset = *YAMLSec->ShOffset;
+    if (YAMLSec->ShSize)
+      Header.sh_size = *YAMLSec->ShSize;
+  }
 
   return true;
 }
@@ -364,9 +368,13 @@
     } else
       llvm_unreachable("Unknown section type");
 
-    // Override the sh_offset field if requested.
-    if (Sec && Sec->ShOffset)
-      SHeader.sh_offset = *Sec->ShOffset;
+    // Override the sh_offset/sh_size fields if requested.
+    if (Sec) {
+      if (Sec->ShOffset)
+        SHeader.sh_offset = *Sec->ShOffset;
+      if (Sec->ShSize)
+        SHeader.sh_size = *Sec->ShSize;
+    }
   }
 
   return true;