summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ObjectYAML/COFFYAML.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2019-05-10 21:53:44 +0000
committerReid Kleckner <rnk@google.com>2019-05-10 21:53:44 +0000
commit7eb6b5ffc3c7c2a5c988dad209671bdaff452cc4 (patch)
tree73be0bb870c310044cf1d94e1a05332c4aee51a5 /llvm/lib/ObjectYAML/COFFYAML.cpp
parent114f763f3710f40a9c483ae62a2bff597d325f0a (diff)
downloadbcm5719-llvm-7eb6b5ffc3c7c2a5c988dad209671bdaff452cc4.tar.gz
bcm5719-llvm-7eb6b5ffc3c7c2a5c988dad209671bdaff452cc4.zip
[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
Diffstat (limited to 'llvm/lib/ObjectYAML/COFFYAML.cpp')
-rw-r--r--llvm/lib/ObjectYAML/COFFYAML.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/ObjectYAML/COFFYAML.cpp b/llvm/lib/ObjectYAML/COFFYAML.cpp
index f206e31b550..b5154467f11 100644
--- a/llvm/lib/ObjectYAML/COFFYAML.cpp
+++ b/llvm/lib/ObjectYAML/COFFYAML.cpp
@@ -578,6 +578,12 @@ void MappingTraits<COFFYAML::Section>::mapping(IO &IO, COFFYAML::Section &Sec) {
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);
}
OpenPOWER on IntegriCloud