diff options
author | Hiroshi Yamauchi <hjyamauchi@gmail.com> | 2023-08-03 15:57:28 -0700 |
---|---|---|
committer | Hiroshi Yamauchi <hjyamauchi@gmail.com> | 2023-08-04 13:38:30 -0700 |
commit | e9040e875d9252f726c41579f70663154718c3c6 (patch) | |
tree | 61003ff32967d1ea97a7d8267957839577e6bd61 /llvm/lib | |
parent | 2b1bdc9f0bc64af02204c746eead0dd304c128da (diff) | |
download | llvm-e9040e875d9252f726c41579f70663154718c3c6.zip llvm-e9040e875d9252f726c41579f70663154718c3c6.tar.gz llvm-e9040e875d9252f726c41579f70663154718c3c6.tar.bz2 |
[lldb][PECOFF] Exclude alignment padding when reading section data
There can be zero padding bytes at a section end for file alignment in
PECOFF. Exclude those padding bytes when reading the section data.
Differential Revision: https://reviews.llvm.org/D157059
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/ObjectYAML/COFFYAML.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/ObjectYAML/COFFYAML.cpp b/llvm/lib/ObjectYAML/COFFYAML.cpp index 3fe2ea5..cd1db24 100644 --- a/llvm/lib/ObjectYAML/COFFYAML.cpp +++ b/llvm/lib/ObjectYAML/COFFYAML.cpp @@ -689,11 +689,12 @@ void MappingTraits<COFFYAML::Section>::mapping(IO &IO, COFFYAML::Section &Sec) { return; } - // 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 && Sec.StructuredData.empty() && - NC->Characteristics & COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA) - IO.mapOptional("SizeOfRawData", Sec.Header.SizeOfRawData); + IO.mapOptional("SizeOfRawData", Sec.Header.SizeOfRawData, 0U); + + if (!Sec.StructuredData.empty() && Sec.Header.SizeOfRawData) { + IO.setError("StructuredData and SizeOfRawData can't be used together"); + return; + } IO.mapOptional("Relocations", Sec.Relocations); } |