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