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)