diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-09-26 22:32:16 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-09-26 22:32:16 +0000 |
commit | dac39857d6545e32f20f0735a04b934f36b6c1d9 (patch) | |
tree | a969577804c80a12810628209ad39403b5edd65b /llvm/lib/Object/COFFObjectFile.cpp | |
parent | b774a0e75071f4b32e741297b4e017615b01a8a9 (diff) | |
download | llvm-dac39857d6545e32f20f0735a04b934f36b6c1d9.zip llvm-dac39857d6545e32f20f0735a04b934f36b6c1d9.tar.gz llvm-dac39857d6545e32f20f0735a04b934f36b6c1d9.tar.bz2 |
Object: BSS/virtual sections don't have contents
Users of getSectionContents shouldn't try to pass in BSS or virtual
sections. In all instances, this is a bug in the code calling this
routine.
N.B. Some COFF implementations (like CL) will mark their BSS sections as
taking space on disk. This would confuse COFFObjectFile into thinking
the section is larger than the file.
llvm-svn: 218549
Diffstat (limited to 'llvm/lib/Object/COFFObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/COFFObjectFile.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp index 7daef06..45de434 100644 --- a/llvm/lib/Object/COFFObjectFile.cpp +++ b/llvm/lib/Object/COFFObjectFile.cpp @@ -840,6 +840,10 @@ std::error_code COFFObjectFile::getSectionName(const coff_section *Sec, std::error_code COFFObjectFile::getSectionContents(const coff_section *Sec, ArrayRef<uint8_t> &Res) const { + // PointerToRawData and SizeOfRawData won't make sense for BSS sections, don't + // do anything interesting for them. + assert((Sec->Characteristics & COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA) == 0 && + "BSS sections don't have contents!"); // The only thing that we need to verify is that the contents is contained // within the file bounds. We don't need to make sure it doesn't cover other // data, as there's nothing that says that is not allowed. |