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