diff options
author | Reid Kleckner <rnk@google.com> | 2019-05-10 21:53:44 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2019-05-10 21:53:44 +0000 |
commit | 7eb6b5ffc3c7c2a5c988dad209671bdaff452cc4 (patch) | |
tree | 73be0bb870c310044cf1d94e1a05332c4aee51a5 /llvm/lib/ObjectYAML/COFFYAML.cpp | |
parent | 114f763f3710f40a9c483ae62a2bff597d325f0a (diff) | |
download | bcm5719-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.cpp | 6 |
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); } |