MipsTargetStreamer.cpp revision 15602d786beee8308af765ade2e6debde2b81ad2
17242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci//===-- MipsTargetStreamer.cpp - Mips Target Streamer Methods -------------===//
27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci//
37242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci//                     The LLVM Compiler Infrastructure
47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci//
57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// This file is distributed under the University of Illinois Open Source
67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// License. See LICENSE.TXT for details.
77242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci//
87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci//===----------------------------------------------------------------------===//
97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci//
107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// This file provides Mips specific target streamer methods.
117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci//
127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci//===----------------------------------------------------------------------===//
137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "MipsTargetStreamer.h"
157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "llvm/MC/MCELF.h"
167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "llvm/MC/MCSymbol.h"
177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "llvm/Support/CommandLine.h"
187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "llvm/Support/ErrorHandling.h"
197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "llvm/Support/FormattedStream.h"
207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciusing namespace llvm;
227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// pin vtable to this file
247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid MipsTargetStreamer::anchor() {}
257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciMipsTargetAsmStreamer::MipsTargetAsmStreamer() {}
277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid MipsTargetAsmStreamer::emitMipsHackELFFlags(unsigned Flags) {
297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci  return;
307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid MipsTargetAsmStreamer::emitSymSTO(MCSymbol *Sym, unsigned Val) {
337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci  return;
347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciMipsTargetELFStreamer::MipsTargetELFStreamer() {}
387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciMCELFStreamer &MipsTargetELFStreamer::getStreamer() {
407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci  return static_cast<MCELFStreamer &>(*Streamer);
417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid MipsTargetELFStreamer::emitMipsHackELFFlags(unsigned Flags) {
447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci  MCAssembler &MCA = getStreamer().getAssembler();
457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci  MCA.setELFHeaderEFlags(Flags);
467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Set a symbol's STO flags
497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid MipsTargetELFStreamer::emitSymSTO(MCSymbol *Sym, unsigned Val) {
507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci  MCSymbolData &Data = getStreamer().getOrCreateSymbolData(Sym);
517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci  // The "other" values are stored in the last 6 bits of the second byte
527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci  // The traditional defines for STO values assume the full byte and thus
537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci  // the shift to pack it.
547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci  MCELF::setOther(Data, Val >> 2);
557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci