forked from OSchip/llvm-project
MC: Explicitly check that only virtual fragments appear in virtual sections.
llvm-svn: 103663
This commit is contained in:
parent
597eb48168
commit
7cd309f7dc
|
@ -534,6 +534,9 @@ static void WriteFragmentData(const MCAssembler &Asm, const MCAsmLayout &Layout,
|
||||||
|
|
||||||
case MCFragment::FT_Fill: {
|
case MCFragment::FT_Fill: {
|
||||||
MCFillFragment &FF = cast<MCFillFragment>(F);
|
MCFillFragment &FF = cast<MCFillFragment>(F);
|
||||||
|
|
||||||
|
assert(FF.getValueSize() && "Invalid virtual align in concrete fragment!");
|
||||||
|
|
||||||
for (uint64_t i = 0, e = FF.getSize() / FF.getValueSize(); i != e; ++i) {
|
for (uint64_t i = 0, e = FF.getSize() / FF.getValueSize(); i != e; ++i) {
|
||||||
switch (FF.getValueSize()) {
|
switch (FF.getValueSize()) {
|
||||||
default:
|
default:
|
||||||
|
@ -578,6 +581,26 @@ void MCAssembler::WriteSectionData(const MCSectionData *SD,
|
||||||
// Ignore virtual sections.
|
// Ignore virtual sections.
|
||||||
if (getBackend().isVirtualSection(SD->getSection())) {
|
if (getBackend().isVirtualSection(SD->getSection())) {
|
||||||
assert(SectionFileSize == 0 && "Invalid size for section!");
|
assert(SectionFileSize == 0 && "Invalid size for section!");
|
||||||
|
|
||||||
|
// Check that contents are only things legal inside a virtual section.
|
||||||
|
for (MCSectionData::const_iterator it = SD->begin(),
|
||||||
|
ie = SD->end(); it != ie; ++it) {
|
||||||
|
switch (it->getKind()) {
|
||||||
|
default:
|
||||||
|
assert(0 && "Invalid fragment in virtual section!");
|
||||||
|
case MCFragment::FT_Align:
|
||||||
|
assert(!cast<MCAlignFragment>(it)->getValueSize() &&
|
||||||
|
"Invalid align in virtual section!");
|
||||||
|
break;
|
||||||
|
case MCFragment::FT_Fill:
|
||||||
|
assert(!cast<MCFillFragment>(it)->getValueSize() &&
|
||||||
|
"Invalid fill in virtual section!");
|
||||||
|
break;
|
||||||
|
case MCFragment::FT_ZeroFill:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue