MCSection.cpp revision af76e592c7f9deff0e55c13dbb4a34f07f1c7f64
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===- lib/MC/MCSection.cpp - Machine Code Section Representation ---------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/MC/MCSection.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/MC/MCContext.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/MC/MCAsmInfo.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Support/raw_ostream.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using namespace llvm; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// MCSection 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MCSection::~MCSection() { 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// MCSectionCOFF 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MCSectionCOFF *MCSectionCOFF:: 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx) { 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new (Ctx) MCSectionCOFF(Name, IsDirective, K); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MCSectionCOFF::PrintSwitchToSection(const MCAsmInfo &TAI, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) raw_ostream &OS) const { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (isDirective()) { 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) OS << getName() << '\n'; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OS << "\t.section\t" << getName() << ",\""; 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (getKind().isText()) 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OS << 'x'; 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (getKind().isWriteable()) 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OS << 'w'; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OS << "\"\n"; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)