diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-02-13 09:28:43 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-02-13 09:28:43 +0000 |
commit | 0bcf074867d4d366f7988a219c7a53265fcb4f23 (patch) | |
tree | b6a6bb081c18faca14f7a8ed903687aa4da4d380 /lib/MC/MCAssembler.cpp | |
parent | a4766d7af91b7e25151b3e97a0831b3615d2abc3 (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.cpp | 33 |
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() { |