136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===-------- MipsELFStreamer.h - ELF Object Output -----------------------===//
236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//                     The LLVM Compiler Infrastructure
436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This file is distributed under the University of Illinois Open Source
636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// License. See LICENSE.TXT for details.
736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===//
936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
1036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This is a custom MCELFStreamer which allows us to insert some hooks before
1136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// emitting data into an actual object file.
1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===//
1436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#ifndef MIPSELFSTREAMER_H
1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#define MIPSELFSTREAMER_H
1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/MC/MCELFStreamer.h"
1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/Support/raw_ostream.h"
2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesnamespace llvm {
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCAsmBackend;
2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCCodeEmitter;
2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCContext;
2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCSubtargetInfo;
2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MipsELFStreamer : public MCELFStreamer {
2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinespublic:
3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  MipsELFStreamer(MCContext &Context, MCAsmBackend &MAB, raw_ostream &OS,
3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                  MCCodeEmitter *Emitter, const MCSubtargetInfo &STI)
3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      : MCELFStreamer(Context, MAB, OS, Emitter) {}
3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  virtual ~MipsELFStreamer() {}
3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines};
3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesMCELFStreamer *createMipsELFStreamer(MCContext &Context, MCAsmBackend &MAB,
3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                     raw_ostream &OS, MCCodeEmitter *Emitter,
3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                     const MCSubtargetInfo &STI, bool RelaxAll,
4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                     bool NoExecStack);
4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} // namespace llvm.
4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#endif
43