aboutsummaryrefslogtreecommitdiff
path: root/lib/MC/MCAssembler.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-02-13 09:28:43 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-02-13 09:28:43 +0000
commit0bcf074867d4d366f7988a219c7a53265fcb4f23 (patch)
treeb6a6bb081c18faca14f7a8ed903687aa4da4d380 /lib/MC/MCAssembler.cpp
parenta4766d7af91b7e25151b3e97a0831b3615d2abc3 (diff)
MCAssembler: Sink fixup list into MCDataFragment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96093 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCAssembler.cpp')
-rw-r--r--lib/MC/MCAssembler.cpp33
1 files changed, 18 insertions, 15 deletions
diff --git a/lib/MC/MCAssembler.cpp b/lib/MC/MCAssembler.cpp
index 7f3930cddf..2875730dd3 100644
--- a/lib/MC/MCAssembler.cpp
+++ b/lib/MC/MCAssembler.cpp
@@ -455,7 +455,7 @@ public:
}
}
- void ComputeRelocationInfo(MCAssembler &Asm, MCFragment &Fragment,
+ void ComputeRelocationInfo(MCAssembler &Asm, MCDataFragment &Fragment,
MCAsmFixup &Fixup,
DenseMap<const MCSymbol*,MCSymbolData*> &SymbolMap,
std::vector<MachRelocationEntry> &Relocs) {
@@ -780,9 +780,10 @@ public:
unsigned NumRelocsStart = RelocInfos.size();
for (MCSectionData::reverse_iterator it2 = SD.rbegin(),
ie2 = SD.rend(); it2 != ie2; ++it2)
- for (unsigned i = 0, e = it2->fixup_size(); i != e; ++i)
- ComputeRelocationInfo(Asm, *it2, it2->getFixups()[e - i - 1],
- SymbolMap, RelocInfos);
+ if (MCDataFragment *DF = dyn_cast<MCDataFragment>(&*it2))
+ for (unsigned i = 0, e = DF->fixup_size(); i != e; ++i)
+ ComputeRelocationInfo(Asm, *DF, DF->getFixups()[e - i - 1],
+ SymbolMap, RelocInfos);
unsigned NumRelocs = RelocInfos.size() - NumRelocsStart;
uint64_t SectionStart = SectionDataStart + SD.getAddress();
@@ -1198,16 +1199,6 @@ void MCFragment::dump() {
OS << "<MCFragment " << (void*) this << " Offset:" << Offset
<< " FileSize:" << FileSize;
- if (!Fixups.empty()) {
- OS << "\n";
- OS << " Fixups:[";
- for (fixup_iterator it = fixup_begin(), ie = fixup_end(); it != ie; ++it) {
- if (it != fixup_begin()) OS << ",\n ";
- OS << *it;
- }
- OS << "]";
- }
-
OS << ">";
}
@@ -1233,7 +1224,19 @@ void MCDataFragment::dump() {
if (i) OS << ",";
OS << hexdigit((Contents[i] >> 4) & 0xF) << hexdigit(Contents[i] & 0xF);
}
- OS << "]>";
+ OS << "]";
+
+ if (!getFixups().empty()) {
+ OS << ",\n ";
+ OS << " Fixups:[";
+ for (fixup_iterator it = fixup_begin(), ie = fixup_end(); it != ie; ++it) {
+ if (it != fixup_begin()) OS << ",\n ";
+ OS << *it;
+ }
+ OS << "]";
+ }
+
+ OS << ">";
}
void MCFillFragment::dump() {