mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
DebugInfo: Support for compressed debug info sections
1) When creating a .debug_* section and instead create a .zdebug_ section. 2) When creating a fragment in a .zdebug_* section, make it a compressed fragment. 3) When computing the size of a compressed section, compress the data and use the size of the compressed data. 4) Emit the compressed bytes. Also, check that only if a section has a compressed fragment, then that is the only fragment in the section. Assert-fail if the fragment's data is modified after it is compressed. Initial review on llvm-commits by Eric Christopher and Rafael Espindola. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204958 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#include "llvm/MC/MCSection.h"
|
||||
#include "llvm/MC/MCSymbol.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/MC/MCSectionELF.h"
|
||||
using namespace llvm;
|
||||
|
||||
MCObjectStreamer::MCObjectStreamer(MCContext &Context, MCAsmBackend &TAB,
|
||||
@@ -63,7 +64,11 @@ MCDataFragment *MCObjectStreamer::getOrCreateDataFragment() const {
|
||||
// When bundling is enabled, we don't want to add data to a fragment that
|
||||
// already has instructions (see MCELFStreamer::EmitInstToData for details)
|
||||
if (!F || (Assembler->isBundlingEnabled() && F->hasInstructions())) {
|
||||
F = new MCDataFragment();
|
||||
const auto *Sec = dyn_cast<MCSectionELF>(&getCurrentSectionData()->getSection());
|
||||
if (Sec && Sec->getSectionName().startswith(".zdebug_"))
|
||||
F = new MCCompressedFragment();
|
||||
else
|
||||
F = new MCDataFragment();
|
||||
insert(F);
|
||||
}
|
||||
return F;
|
||||
|
||||
Reference in New Issue
Block a user