SectionStack.push_back(std::pair<MCSectionSubPair, MCSectionSubPair>());
}
-static const MCExpr *forceExpAbs(MCStreamer &OS, const MCExpr* Expr) {
- MCContext &Context = OS.getContext();
- assert(!isa<MCSymbolRefExpr>(Expr));
- if (Context.getAsmInfo()->hasAggressiveSymbolFolding())
- return Expr;
-
- MCSymbol *ABS = Context.CreateTempSymbol();
- OS.EmitAssignment(ABS, Expr);
- return MCSymbolRefExpr::Create(ABS, Context);
-}
-
raw_ostream &MCStreamer::GetCommentOS() {
// By default, discard comments.
return nulls();
(MAB ? MAB->generateCompactUnwindEncoding(FI.Instructions) : 0);
}
-void MCStreamer::EmitDwarfSetLineAddr(int64_t LineDelta,
- const MCSymbol *Label, int PointerSize) {
- // emit the sequence to set the address
- EmitIntValue(dwarf::DW_LNS_extended_op, 1);
- EmitULEB128IntValue(PointerSize + 1);
- EmitIntValue(dwarf::DW_LNE_set_address, 1);
- EmitSymbolValue(Label, PointerSize);
-
- // emit the sequence for the LineDelta (from 1) and a zero address delta.
- MCDwarfLineAddr::Emit(this, LineDelta, 0);
-}
-
/// EmitIntValue - Special case of EmitValue that avoids the client having to
/// pass in a MCExpr for constant integers.
void MCStreamer::EmitIntValue(uint64_t Value, unsigned Size) {
EmitBytes(OSE.str());
}
-void MCStreamer::EmitAbsValue(const MCExpr *Value, unsigned Size) {
- const MCExpr *ABS = forceExpAbs(*this, Value);
- EmitValue(ABS, Size);
-}
-
-
void MCStreamer::EmitValue(const MCExpr *Value, unsigned Size,
const SMLoc &Loc) {
EmitValueImpl(Value, Size, Loc);
TS->emitLabel(Symbol);
}
-void MCStreamer::EmitCompactUnwindEncoding(uint32_t CompactUnwindEncoding) {
- EnsureValidDwarfFrame();
- MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo();
- CurFrame->CompactUnwindEncoding = CompactUnwindEncoding;
-}
-
void MCStreamer::EmitCFISections(bool EH, bool Debug) {
assert(EH || Debug);
}