[COFF] Fix .bss section size bug in obj2yaml / yaml2obj

We need to serialize SizeOfRawData through even when there is no data,
as in a .bss section.

Fixes PR41836

llvm-svn: 360473
diff --git a/llvm/lib/ObjectYAML/COFFYAML.cpp b/llvm/lib/ObjectYAML/COFFYAML.cpp
index f206e31..b515446 100644
--- a/llvm/lib/ObjectYAML/COFFYAML.cpp
+++ b/llvm/lib/ObjectYAML/COFFYAML.cpp
@@ -578,6 +578,12 @@
   else if (Sec.Name == ".debug$H")
     IO.mapOptional("GlobalHashes", Sec.DebugH);
 
+  // Uninitialized sections, such as .bss, typically have no data, but the size
+  // is carried in SizeOfRawData, even though PointerToRawData is zero.
+  if (Sec.SectionData.binary_size() == 0 &&
+      NC->Characteristics & COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA)
+    IO.mapOptional("SizeOfRawData", Sec.Header.SizeOfRawData);
+
   IO.mapOptional("Relocations", Sec.Relocations);
 }