MCSection.cpp revision 7c599d056a41262681aa7fcd771eeed53a8e0bd2
1//===- lib/MC/MCSection.cpp - Machine Code Section Representation ---------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "llvm/MC/MCSection.h" 11#include "llvm/MC/MCContext.h" 12using namespace llvm; 13 14MCSection::~MCSection() { 15} 16 17MCSection::MCSection(const StringRef &N, bool isDirective, SectionKind K, 18 MCContext &Ctx) 19 : Name(N), IsDirective(isDirective), Kind(K) { 20 MCSection *&Entry = Ctx.Sections[Name]; 21 assert(Entry == 0 && "Multiple sections with the same name created"); 22 Entry = this; 23} 24 25MCSection *MCSection:: 26Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx) { 27 return new (Ctx) MCSection(Name, IsDirective, K, Ctx); 28} 29 30 31MCSectionELF *MCSectionELF:: 32Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx) { 33 return new (Ctx) MCSectionELF(Name, IsDirective, K, Ctx); 34} 35 36 37MCSectionMachO *MCSectionMachO:: 38Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx) { 39 return new (Ctx) MCSectionMachO(Name, IsDirective, K, Ctx); 40} 41 42 43MCSectionCOFF *MCSectionCOFF:: 44Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx) { 45 return new (Ctx) MCSectionCOFF(Name, IsDirective, K, Ctx); 46} 47 48