} // end anonymous namespace.
-/// Allow printing symbols directly to a raw_ostream with proper quoting.
-static inline raw_ostream &operator<<(raw_ostream &os, const MCSymbol *S) {
- S->print(os);
- return os;
-}
-
-/// Allow printing values directly to a raw_ostream.
-static inline raw_ostream &operator<<(raw_ostream &os, const MCExpr &Value) {
- Value.print(os);
- return os;
-}
-
static inline int64_t truncateToSize(int64_t Value, unsigned Bytes) {
assert(Bytes && "Invalid size!");
return Value & ((uint64_t) (int64_t) -1 >> (64 - Bytes * 8));
assert(Symbol->isUndefined() && "Cannot define a symbol twice!");
assert(CurSection && "Cannot emit before setting section!");
- OS << Symbol << ":\n";
+ Symbol->print(OS, &MAI);
+ OS << ":\n";
Symbol->setSection(*CurSection);
}
assert((Symbol->isUndefined() || Symbol->isAbsolute()) &&
"Cannot define a symbol twice!");
- OS << Symbol << " = " << *Value << '\n';
+ Symbol->print(OS, &MAI);
+ OS << " = ";
+ Value->print(OS, &MAI);
+ OS << '\n';
}
void MCAsmStreamer::EmitSymbolAttribute(MCSymbol *Symbol,
case WeakReference: OS << ".weak_reference"; break;
}
- OS << ' ' << Symbol << '\n';
+ OS << ' ';
+ Symbol->print(OS, &MAI);
+ OS << '\n';
}
void MCAsmStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {
- OS << ".desc" << ' ' << Symbol << ',' << DescValue << '\n';
+ OS << ".desc" << ' ';
+ Symbol->print(OS, &MAI);
+ OS << ',' << DescValue << '\n';
}
void MCAsmStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
unsigned ByteAlignment) {
- OS << ".comm";
- OS << ' ' << Symbol << ',' << Size;
+ OS << ".comm ";
+ Symbol->print(OS, &MAI);
+ OS << ',' << Size;
if (ByteAlignment != 0)
OS << ',' << Log2_32(ByteAlignment);
OS << '\n';
OS << MOSection->getSegmentName() << "," << MOSection->getSectionName();
if (Symbol != NULL) {
- OS << ',' << Symbol << ',' << Size;
+ OS << ',';
+ Symbol->print(OS, &MAI);
+ OS << ',' << Size;
if (ByteAlignment != 0)
OS << ',' << Log2_32(ByteAlignment);
}
case 8: OS << ".quad"; break;
}
- OS << ' ' << *truncateToSize(Value, Size) << '\n';
+ OS << ' ';
+ truncateToSize(Value, Size)->print(OS, &MAI);
+ OS << '\n';
}
void MCAsmStreamer::EmitValueToAlignment(unsigned ByteAlignment, int64_t Value,
OS << Log2_32(ByteAlignment);
if (Value || MaxBytesToEmit) {
- OS << ", " << truncateToSize(Value, ValueSize);
+ OS << ", 0x";
+ OS.write_hex(truncateToSize(Value, ValueSize));
if (MaxBytesToEmit)
OS << ", " << MaxBytesToEmit;
void MCAsmStreamer::EmitValueToOffset(const MCExpr *Offset,
unsigned char Value) {
// FIXME: Verify that Offset is associated with the current section.
- OS << ".org " << *Offset << ", " << (unsigned) Value << '\n';
+ OS << ".org ";
+ Offset->print(OS, &MAI);
+ OS << ", " << (unsigned) Value << '\n';
}
void MCAsmStreamer::EmitInstruction(const MCInst &Inst) {
// Otherwise fall back to a structural printing for now. Eventually we should
// always have access to the target specific printer.
- Inst.print(OS);
+ Inst.print(OS, &MAI);
OS << '\n';
}