diff options
author | Frederic Riss <friss@apple.com> | 2015-08-26 05:09:49 +0000 |
---|---|---|
committer | Frederic Riss <friss@apple.com> | 2015-08-26 05:09:49 +0000 |
commit | 74b9882ec3ecbda489d3d8862a7747490db61a14 (patch) | |
tree | ddd676a714afe2a9e544fa147c56d5fb6af6cac0 /llvm/lib/MC/MCAssembler.cpp | |
parent | 75c0c7050ad033d3feaf3fd5abcf4fa709377843 (diff) | |
download | bcm5719-llvm-74b9882ec3ecbda489d3d8862a7747490db61a14.tar.gz bcm5719-llvm-74b9882ec3ecbda489d3d8862a7747490db61a14.zip |
[MC] Split the layout part of MCAssembler::finish() into its own method. NFC.
Split a MCAssembler::layout() method out of MCAssembler::finish(). This allows
running the MCSections layout separately from the streaming of the output
file. This way if a client wants to use MC to generate section contents, but
emit something different than the standard relocatable object files it is
possible (llvm-dsymutil is such a client).
llvm-svn: 246008
Diffstat (limited to 'llvm/lib/MC/MCAssembler.cpp')
-rw-r--r-- | llvm/lib/MC/MCAssembler.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp index 09a27fec986..3f419b5b1e4 100644 --- a/llvm/lib/MC/MCAssembler.cpp +++ b/llvm/lib/MC/MCAssembler.cpp @@ -852,14 +852,11 @@ std::pair<uint64_t, bool> MCAssembler::handleFixup(const MCAsmLayout &Layout, return std::make_pair(FixedValue, IsPCRel); } -void MCAssembler::Finish() { +void MCAssembler::layout(MCAsmLayout &Layout) { DEBUG_WITH_TYPE("mc-dump", { llvm::errs() << "assembler backend - pre-layout\n--\n"; dump(); }); - // Create the layout object. - MCAsmLayout Layout(*this); - // Create dummy fragments and assign section ordinals. unsigned SectionIndex = 0; for (MCSection &Sec : *this) { @@ -896,8 +893,6 @@ void MCAssembler::Finish() { llvm::errs() << "assembler backend - final-layout\n--\n"; dump(); }); - uint64_t StartOffset = OS.tell(); - // Allow the object writer a chance to perform post-layout binding (for // example, to set the index fields in the symbol data). getWriter().executePostLayoutBinding(*this, Layout); @@ -931,6 +926,14 @@ void MCAssembler::Finish() { } } } +} + +void MCAssembler::Finish() { + // Create the layout object. + MCAsmLayout Layout(*this); + layout(Layout); + + uint64_t StartOffset = OS.tell(); // Write the object file. getWriter().writeObject(*this, Layout); |