From 8ddb569d8a1831f0e061e2f490d61bccd4166ec4 Mon Sep 17 00:00:00 2001 From: Anton Korobeynikov Date: Wed, 9 Sep 2009 08:41:20 +0000 Subject: [PATCH] Whitespace cleanup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81321 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/TargetLoweringObjectFile.cpp | 325 ++++++++++++------------ 1 file changed, 162 insertions(+), 163 deletions(-) diff --git a/lib/Target/TargetLoweringObjectFile.cpp b/lib/Target/TargetLoweringObjectFile.cpp index b2ee95501fd..61bf5b03575 100644 --- a/lib/Target/TargetLoweringObjectFile.cpp +++ b/lib/Target/TargetLoweringObjectFile.cpp @@ -61,23 +61,23 @@ TargetLoweringObjectFile::~TargetLoweringObjectFile() { static bool isSuitableForBSS(const GlobalVariable *GV) { Constant *C = GV->getInitializer(); - + // Must have zero initializer. if (!C->isNullValue()) return false; - + // Leave constant zeros in readonly constant sections, so they can be shared. if (GV->isConstant()) return false; - + // If the global has an explicit section specified, don't put it in BSS. if (!GV->getSection().empty()) return false; - + // If -nozero-initialized-in-bss is specified, don't ever use BSS. if (NoZerosInBSS) return false; - + // Otherwise, put it in BSS! return true; } @@ -87,7 +87,7 @@ static bool isSuitableForBSS(const GlobalVariable *GV) { /// nul value and contains no other nuls in it. static bool IsNullTerminatedString(const Constant *C) { const ArrayType *ATy = cast(C->getType()); - + // First check: is we have constant array of i8 terminated with zero if (const ConstantArray *CVA = dyn_cast(C)) { if (ATy->getNumElements() == 0) return false; @@ -96,7 +96,7 @@ static bool IsNullTerminatedString(const Constant *C) { dyn_cast(CVA->getOperand(ATy->getNumElements()-1)); if (Null == 0 || Null->getZExtValue() != 0) return false; // Not null terminated. - + // Verify that the null doesn't occur anywhere else in the string. for (unsigned i = 0, e = ATy->getNumElements()-1; i != e; ++i) // Reject constantexpr elements etc. @@ -122,14 +122,14 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalValue *GV, const TargetMachine &TM){ assert(!GV->isDeclaration() && !GV->hasAvailableExternallyLinkage() && "Can only be used for global definitions"); - + Reloc::Model ReloModel = TM.getRelocationModel(); - + // Early exit - functions should be always in text sections. const GlobalVariable *GVar = dyn_cast(GV); if (GVar == 0) return SectionKind::getText(); - + // Handle thread-local data first. if (GVar->isThreadLocal()) { if (isSuitableForBSS(GVar)) @@ -142,7 +142,7 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalValue *GV, return SectionKind::getBSS(); Constant *C = GVar->getInitializer(); - + // If the global is marked constant, we can put it into a mergable section, // a mergable string section, or general .data if it contains relocations. if (GVar->isConstant()) { @@ -155,7 +155,7 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalValue *GV, // If initializer is a null-terminated string, put it in a "cstring" // section of the right width. if (const ArrayType *ATy = dyn_cast(C->getType())) { - if (const IntegerType *ITy = + if (const IntegerType *ITy = dyn_cast(ATy->getElementType())) { if ((ITy->getBitWidth() == 8 || ITy->getBitWidth() == 16 || ITy->getBitWidth() == 32) && @@ -164,13 +164,13 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalValue *GV, return SectionKind::getMergeable1ByteCString(); if (ITy->getBitWidth() == 16) return SectionKind::getMergeable2ByteCString(); - + assert(ITy->getBitWidth() == 32 && "Unknown width"); return SectionKind::getMergeable4ByteCString(); } } } - + // Otherwise, just drop it into a mergable constant section. If we have // a section for this size, use it, otherwise use the arbitrary sized // mergable section. @@ -180,7 +180,7 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalValue *GV, case 16: return SectionKind::getMergeableConst16(); default: return SectionKind::getMergeableConst(); } - + case Constant::LocalRelocation: // In static relocation model, the linker will resolve all addresses, so // the relocation entries will actually be constants by the time the app @@ -189,11 +189,11 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalValue *GV, // merge entries in the section. if (ReloModel == Reloc::Static) return SectionKind::getReadOnly(); - + // Otherwise, the dynamic linker needs to fix it up, put it in the // writable data.rel.local section. return SectionKind::getReadOnlyWithRelLocal(); - + case Constant::GlobalRelocations: // In static relocation model, the linker will resolve all addresses, so // the relocation entries will actually be constants by the time the app @@ -202,7 +202,7 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalValue *GV, // merge entries in the section. if (ReloModel == Reloc::Static) return SectionKind::getReadOnly(); - + // Otherwise, the dynamic linker needs to fix it up, put it in the // writable data.rel section. return SectionKind::getReadOnlyWithRel(); @@ -237,8 +237,8 @@ SectionForGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, // Select section name. if (GV->hasSection()) return getExplicitSectionGlobal(GV, Kind, Mang, TM); - - + + // Use default section depending on the 'type' of global return SelectSectionForGlobal(GV, Kind, Mang, TM); } @@ -251,13 +251,13 @@ TargetLoweringObjectFile::SelectSectionForGlobal(const GlobalValue *GV, Mangler *Mang, const TargetMachine &TM) const{ assert(!Kind.isThreadLocal() && "Doesn't support TLS"); - + if (Kind.isText()) return getTextSection(); - + if (Kind.isBSS() && BSSSection != 0) return BSSSection; - + if (Kind.isReadOnly() && ReadOnlySection != 0) return ReadOnlySection; @@ -271,7 +271,7 @@ const MCSection * TargetLoweringObjectFile::getSectionForConstant(SectionKind Kind) const { if (Kind.isReadOnly() && ReadOnlySection != 0) return ReadOnlySection; - + return DataSection; } @@ -293,11 +293,11 @@ getELFSection(StringRef Section, unsigned Type, unsigned Flags, if (UniquingMap == 0) UniquingMap = new ELFUniqueMapTy(); ELFUniqueMapTy &Map = *(ELFUniqueMapTy*)UniquingMap; - + // Do the lookup, if we have a hit, return it. const MCSectionELF *&Entry = Map[Section]; if (Entry) return Entry; - + return Entry = MCSectionELF::Create(Section, Type, Flags, Kind, IsExplicit, getContext()); } @@ -308,73 +308,73 @@ void TargetLoweringObjectFileELF::Initialize(MCContext &Ctx, ((ELFUniqueMapTy*)UniquingMap)->clear(); TargetLoweringObjectFile::Initialize(Ctx, TM); - BSSSection = + BSSSection = getELFSection(".bss", MCSectionELF::SHT_NOBITS, MCSectionELF::SHF_WRITE | MCSectionELF::SHF_ALLOC, SectionKind::getBSS()); - - TextSection = + + TextSection = getELFSection(".text", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_EXECINSTR | MCSectionELF::SHF_ALLOC, SectionKind::getText()); - DataSection = + DataSection = getELFSection(".data", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_WRITE | MCSectionELF::SHF_ALLOC, SectionKind::getDataRel()); - ReadOnlySection = - getELFSection(".rodata", MCSectionELF::SHT_PROGBITS, - MCSectionELF::SHF_ALLOC, + ReadOnlySection = + getELFSection(".rodata", MCSectionELF::SHT_PROGBITS, + MCSectionELF::SHF_ALLOC, SectionKind::getReadOnly()); - TLSDataSection = + TLSDataSection = getELFSection(".tdata", MCSectionELF::SHT_PROGBITS, - MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_TLS | + MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_TLS | MCSectionELF::SHF_WRITE, SectionKind::getThreadData()); - - TLSBSSSection = + + TLSBSSSection = getELFSection(".tbss", MCSectionELF::SHT_NOBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_TLS | MCSectionELF::SHF_WRITE, SectionKind::getThreadBSS()); - DataRelSection = + DataRelSection = getELFSection(".data.rel", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE, SectionKind::getDataRel()); - DataRelLocalSection = + DataRelLocalSection = getELFSection(".data.rel.local", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE, SectionKind::getDataRelLocal()); - DataRelROSection = + DataRelROSection = getELFSection(".data.rel.ro", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE, SectionKind::getReadOnlyWithRel()); - DataRelROLocalSection = + DataRelROLocalSection = getELFSection(".data.rel.ro.local", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE, SectionKind::getReadOnlyWithRelLocal()); - - MergeableConst4Section = + + MergeableConst4Section = getELFSection(".rodata.cst4", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_MERGE, SectionKind::getMergeableConst4()); - MergeableConst8Section = + MergeableConst8Section = getELFSection(".rodata.cst8", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_MERGE, SectionKind::getMergeableConst8()); - MergeableConst16Section = + MergeableConst16Section = getELFSection(".rodata.cst16", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_MERGE, SectionKind::getMergeableConst16()); StaticCtorSection = - getELFSection(".ctors", MCSectionELF::SHT_PROGBITS, + getELFSection(".ctors", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE, SectionKind::getDataRel()); @@ -382,9 +382,9 @@ void TargetLoweringObjectFileELF::Initialize(MCContext &Ctx, getELFSection(".dtors", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE, SectionKind::getDataRel()); - + // Exception Handling Sections. - + // FIXME: We're emitting LSDA info into a readonly section on ELF, even though // it contains relocatable pointers. In PIC mode, this is probably a big // runtime hit for C++ apps. Either the contents of the LSDA need to be @@ -393,70 +393,70 @@ void TargetLoweringObjectFileELF::Initialize(MCContext &Ctx, getELFSection(".gcc_except_table", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC, SectionKind::getReadOnly()); EHFrameSection = - getELFSection(".eh_frame", MCSectionELF::SHT_PROGBITS, + getELFSection(".eh_frame", MCSectionELF::SHT_PROGBITS, MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE, SectionKind::getDataRel()); - + // Debug Info Sections. - DwarfAbbrevSection = - getELFSection(".debug_abbrev", MCSectionELF::SHT_PROGBITS, 0, + DwarfAbbrevSection = + getELFSection(".debug_abbrev", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); - DwarfInfoSection = - getELFSection(".debug_info", MCSectionELF::SHT_PROGBITS, 0, + DwarfInfoSection = + getELFSection(".debug_info", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); - DwarfLineSection = - getELFSection(".debug_line", MCSectionELF::SHT_PROGBITS, 0, + DwarfLineSection = + getELFSection(".debug_line", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); - DwarfFrameSection = - getELFSection(".debug_frame", MCSectionELF::SHT_PROGBITS, 0, + DwarfFrameSection = + getELFSection(".debug_frame", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); - DwarfPubNamesSection = - getELFSection(".debug_pubnames", MCSectionELF::SHT_PROGBITS, 0, + DwarfPubNamesSection = + getELFSection(".debug_pubnames", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); - DwarfPubTypesSection = - getELFSection(".debug_pubtypes", MCSectionELF::SHT_PROGBITS, 0, + DwarfPubTypesSection = + getELFSection(".debug_pubtypes", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); - DwarfStrSection = + DwarfStrSection = getELFSection(".debug_str", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); - DwarfLocSection = - getELFSection(".debug_loc", MCSectionELF::SHT_PROGBITS, 0, + DwarfLocSection = + getELFSection(".debug_loc", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); - DwarfARangesSection = - getELFSection(".debug_aranges", MCSectionELF::SHT_PROGBITS, 0, + DwarfARangesSection = + getELFSection(".debug_aranges", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); - DwarfRangesSection = - getELFSection(".debug_ranges", MCSectionELF::SHT_PROGBITS, 0, + DwarfRangesSection = + getELFSection(".debug_ranges", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); - DwarfMacroInfoSection = - getELFSection(".debug_macinfo", MCSectionELF::SHT_PROGBITS, 0, + DwarfMacroInfoSection = + getELFSection(".debug_macinfo", MCSectionELF::SHT_PROGBITS, 0, SectionKind::getMetadata()); } -static SectionKind +static SectionKind getELFKindForNamedSection(const char *Name, SectionKind K) { if (Name[0] != '.') return K; - + // Some lame default implementation based on some magic section names. if (strncmp(Name, ".gnu.linkonce.b.", 16) == 0 || strncmp(Name, ".llvm.linkonce.b.", 17) == 0 || strncmp(Name, ".gnu.linkonce.sb.", 17) == 0 || strncmp(Name, ".llvm.linkonce.sb.", 18) == 0) return SectionKind::getBSS(); - + if (strcmp(Name, ".tdata") == 0 || strncmp(Name, ".tdata.", 7) == 0 || strncmp(Name, ".gnu.linkonce.td.", 17) == 0 || strncmp(Name, ".llvm.linkonce.td.", 18) == 0) return SectionKind::getThreadData(); - + if (strcmp(Name, ".tbss") == 0 || strncmp(Name, ".tbss.", 6) == 0 || strncmp(Name, ".gnu.linkonce.tb.", 17) == 0 || strncmp(Name, ".llvm.linkonce.tb.", 18) == 0) return SectionKind::getThreadBSS(); - + return K; } @@ -486,16 +486,16 @@ getELFSectionFlags(SectionKind K) { if (!K.isMetadata()) Flags |= MCSectionELF::SHF_ALLOC; - + if (K.isText()) Flags |= MCSectionELF::SHF_EXECINSTR; - + if (K.isWriteable()) Flags |= MCSectionELF::SHF_WRITE; - + if (K.isThreadLocal()) Flags |= MCSectionELF::SHF_TLS; - + // K.isMergeableConst() is left out to honour PR4650 if (K.isMergeableCString() || K.isMergeableConst4() || K.isMergeableConst8() || K.isMergeableConst16()) @@ -509,31 +509,31 @@ getELFSectionFlags(SectionKind K) { const MCSection *TargetLoweringObjectFileELF:: -getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind, +getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, const TargetMachine &TM) const { const char *SectionName = GV->getSection().c_str(); // Infer section flags from the section name if we can. Kind = getELFKindForNamedSection(SectionName, Kind); - - return getELFSection(SectionName, - getELFSectionType(SectionName, Kind), + + return getELFSection(SectionName, + getELFSectionType(SectionName, Kind), getELFSectionFlags(Kind), Kind, true); } static const char *getSectionPrefixForUniqueGlobal(SectionKind Kind) { if (Kind.isText()) return ".gnu.linkonce.t."; if (Kind.isReadOnly()) return ".gnu.linkonce.r."; - + if (Kind.isThreadData()) return ".gnu.linkonce.td."; if (Kind.isThreadBSS()) return ".gnu.linkonce.tb."; - + if (Kind.isBSS()) return ".gnu.linkonce.b."; if (Kind.isDataNoRel()) return ".gnu.linkonce.d."; if (Kind.isDataRelLocal()) return ".gnu.linkonce.d.rel.local."; if (Kind.isDataRel()) return ".gnu.linkonce.d.rel."; if (Kind.isReadOnlyWithRelLocal()) return ".gnu.linkonce.d.rel.ro.local."; - + assert(Kind.isReadOnlyWithRel() && "Unknown section kind"); return ".gnu.linkonce.d.rel.ro."; } @@ -541,31 +541,31 @@ static const char *getSectionPrefixForUniqueGlobal(SectionKind Kind) { const MCSection *TargetLoweringObjectFileELF:: SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, const TargetMachine &TM) const { - + // If this global is linkonce/weak and the target handles this by emitting it // into a 'uniqued' section name, create and return the section now. if (GV->isWeakForLinker()) { const char *Prefix = getSectionPrefixForUniqueGlobal(Kind); std::string Name = Mang->makeNameProper(GV->getNameStr()); - return getELFSection((Prefix+Name).c_str(), - getELFSectionType((Prefix+Name).c_str(), Kind), - getELFSectionFlags(Kind), + return getELFSection((Prefix+Name).c_str(), + getELFSectionType((Prefix+Name).c_str(), Kind), + getELFSectionFlags(Kind), Kind); } - + if (Kind.isText()) return TextSection; - + if (Kind.isMergeable1ByteCString() || Kind.isMergeable2ByteCString() || Kind.isMergeable4ByteCString()) { - + // We also need alignment here. // FIXME: this is getting the alignment of the character, not the // alignment of the global! - unsigned Align = + unsigned Align = TM.getTargetData()->getPreferredAlignment(cast(GV)); - + const char *SizeSpec = ".rodata.str1."; if (Kind.isMergeable2ByteCString()) SizeSpec = ".rodata.str2."; @@ -573,16 +573,16 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, SizeSpec = ".rodata.str4."; else assert(Kind.isMergeable1ByteCString() && "unknown string width"); - - + + std::string Name = SizeSpec + utostr(Align); - return getELFSection(Name.c_str(), MCSectionELF::SHT_PROGBITS, - MCSectionELF::SHF_ALLOC | - MCSectionELF::SHF_MERGE | - MCSectionELF::SHF_STRINGS, + return getELFSection(Name.c_str(), MCSectionELF::SHT_PROGBITS, + MCSectionELF::SHF_ALLOC | + MCSectionELF::SHF_MERGE | + MCSectionELF::SHF_STRINGS, Kind); } - + if (Kind.isMergeableConst()) { if (Kind.isMergeableConst4() && MergeableConst4Section) return MergeableConst4Section; @@ -592,19 +592,19 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, return MergeableConst16Section; return ReadOnlySection; // .const } - + if (Kind.isReadOnly()) return ReadOnlySection; - + if (Kind.isThreadData()) return TLSDataSection; if (Kind.isThreadBSS()) return TLSBSSSection; - + if (Kind.isBSS()) return BSSSection; - + if (Kind.isDataNoRel()) return DataSection; if (Kind.isDataRelLocal()) return DataRelLocalSection; if (Kind.isDataRel()) return DataRelSection; if (Kind.isReadOnlyWithRelLocal()) return DataRelROLocalSection; - + assert(Kind.isReadOnlyWithRel() && "Unknown section kind"); return DataRelROSection; } @@ -622,7 +622,7 @@ getSectionForConstant(SectionKind Kind) const { return MergeableConst16Section; if (Kind.isReadOnly()) return ReadOnlySection; - + if (Kind.isReadOnlyWithRelLocal()) return DataRelROLocalSection; assert(Kind.isReadOnlyWithRel() && "Unknown section kind"); return DataRelROSection; @@ -647,18 +647,18 @@ getMachOSection(const StringRef &Segment, const StringRef &Section, // We unique sections by their segment/section pair. The returned section // may not have the same flags as the requested section, if so this should be // diagnosed by the client as an error. - + // Create the map if it doesn't already exist. if (UniquingMap == 0) UniquingMap = new MachOUniqueMapTy(); MachOUniqueMapTy &Map = *(MachOUniqueMapTy*)UniquingMap; - + // Form the name to look up. SmallString<64> Name; Name += Segment; Name.push_back(','); Name += Section; - + // Do the lookup, if we have a hit, return it. const MCSectionMachO *&Entry = Map[Name.str()]; if (Entry) return Entry; @@ -674,14 +674,14 @@ void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx, if (UniquingMap != 0) ((MachOUniqueMapTy*)UniquingMap)->clear(); TargetLoweringObjectFile::Initialize(Ctx, TM); - + TextSection // .text = getMachOSection("__TEXT", "__text", MCSectionMachO::S_ATTR_PURE_INSTRUCTIONS, SectionKind::getText()); DataSection // .data = getMachOSection("__DATA", "__data", 0, SectionKind::getDataRel()); - + CStringSection // .cstring = getMachOSection("__TEXT", "__cstring", MCSectionMachO::S_CSTRING_LITERALS, SectionKind::getMergeable1ByteCString()); @@ -694,7 +694,7 @@ void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx, EightByteConstantSection // .literal8 = getMachOSection("__TEXT", "__literal8", MCSectionMachO::S_8BYTE_LITERALS, SectionKind::getMergeableConst8()); - + // ld_classic doesn't support .literal16 in 32-bit mode, and ld64 falls back // to using it in -static mode. SixteenByteConstantSection = 0; @@ -703,10 +703,10 @@ void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx, SixteenByteConstantSection = // .literal16 getMachOSection("__TEXT", "__literal16",MCSectionMachO::S_16BYTE_LITERALS, SectionKind::getMergeableConst16()); - + ReadOnlySection // .const = getMachOSection("__TEXT", "__const", 0, SectionKind::getReadOnly()); - + TextCoalSection = getMachOSection("__TEXT", "__textcoal_nt", MCSectionMachO::S_COALESCED | @@ -725,7 +725,7 @@ void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx, = getMachOSection("__DATA","__datacoal_nt", MCSectionMachO::S_COALESCED, SectionKind::getDataRel()); - + LazySymbolPointerSection = getMachOSection("__DATA", "__la_symbol_ptr", MCSectionMachO::S_LAZY_SYMBOL_POINTERS, @@ -734,7 +734,7 @@ void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx, = getMachOSection("__DATA", "__nl_symbol_ptr", MCSectionMachO::S_NON_LAZY_SYMBOL_POINTERS, SectionKind::getMetadata()); - + if (TM.getRelocationModel() == Reloc::Static) { StaticCtorSection = getMachOSection("__TEXT", "__constructor", 0,SectionKind::getDataRel()); @@ -746,11 +746,11 @@ void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx, MCSectionMachO::S_MOD_INIT_FUNC_POINTERS, SectionKind::getDataRel()); StaticDtorSection - = getMachOSection("__DATA", "__mod_term_func", + = getMachOSection("__DATA", "__mod_term_func", MCSectionMachO::S_MOD_TERM_FUNC_POINTERS, SectionKind::getDataRel()); } - + // Exception Handling. LSDASection = getMachOSection("__DATA", "__gcc_except_tab", 0, SectionKind::getDataRel()); @@ -763,46 +763,46 @@ void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx, SectionKind::getReadOnly()); // Debug Information. - DwarfAbbrevSection = + DwarfAbbrevSection = getMachOSection("__DWARF", "__debug_abbrev", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfInfoSection = + DwarfInfoSection = getMachOSection("__DWARF", "__debug_info", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfLineSection = + DwarfLineSection = getMachOSection("__DWARF", "__debug_line", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfFrameSection = + DwarfFrameSection = getMachOSection("__DWARF", "__debug_frame", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfPubNamesSection = + DwarfPubNamesSection = getMachOSection("__DWARF", "__debug_pubnames", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfPubTypesSection = + DwarfPubTypesSection = getMachOSection("__DWARF", "__debug_pubtypes", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfStrSection = + DwarfStrSection = getMachOSection("__DWARF", "__debug_str", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfLocSection = + DwarfLocSection = getMachOSection("__DWARF", "__debug_loc", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfARangesSection = + DwarfARangesSection = getMachOSection("__DWARF", "__debug_aranges", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfRangesSection = + DwarfRangesSection = getMachOSection("__DWARF", "__debug_ranges", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfMacroInfoSection = + DwarfMacroInfoSection = getMachOSection("__DWARF", "__debug_macinfo", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); - DwarfDebugInlineSection = + DwarfDebugInlineSection = getMachOSection("__DWARF", "__debug_inlined", MCSectionMachO::S_ATTR_DEBUG, SectionKind::getMetadata()); } const MCSection *TargetLoweringObjectFileMachO:: -getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind, +getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, const TargetMachine &TM) const { // Parse the section specifier and create it if valid. StringRef Segment, Section; @@ -818,11 +818,11 @@ getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind, // Fall back to dropping it into the data section. return DataSection; } - + // Get the section. const MCSectionMachO *S = getMachOSection(Segment, Section, TAA, StubSize, Kind); - + // Okay, now that we got the section, verify that the TAA & StubSize agree. // If the user declared multiple globals with different section flags, we need // to reject it here. @@ -832,7 +832,7 @@ getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind, "' section type or attributes does not match previous" " section specifier"); } - + return S; } @@ -840,10 +840,10 @@ const MCSection *TargetLoweringObjectFileMachO:: SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, const TargetMachine &TM) const { assert(!Kind.isThreadLocal() && "Darwin doesn't support TLS"); - + if (Kind.isText()) return GV->isWeakForLinker() ? TextCoalSection : TextSection; - + // If this is weak/linkonce, put this in a coalescable section, either in text // or data depending on if it is writable. if (GV->isWeakForLinker()) { @@ -851,7 +851,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, return ConstTextCoalSection; return DataCoalSection; } - + // FIXME: Alignment check should be handled by section classifier. if (Kind.isMergeable1ByteCString() || Kind.isMergeable2ByteCString()) { @@ -863,7 +863,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, return UStringSection; } } - + if (Kind.isMergeableConst()) { if (Kind.isMergeableConst4()) return FourByteConstantSection; @@ -882,7 +882,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, // linker needs to write to it, put it in the data segment. if (Kind.isReadOnlyWithRel()) return ConstDataSection; - + // Otherwise, just drop the variable in the normal data section. return DataSection; } @@ -893,7 +893,7 @@ TargetLoweringObjectFileMachO::getSectionForConstant(SectionKind Kind) const { // segment, not in the text segment. if (Kind.isDataRel()) return ConstDataSection; - + if (Kind.isMergeableConst4()) return FourByteConstantSection; if (Kind.isMergeableConst8()) @@ -911,7 +911,7 @@ shouldEmitUsedDirectiveFor(const GlobalValue *GV, Mangler *Mang) const { /// On Darwin, internally linked data beginning with "L" or "l" does not have /// the directive emitted (this occurs in ObjC metadata). if (!GV) return false; - + // Check whether the mangled name has the "Private" or "LinkerPrivate" prefix. if (GV->hasLocalLinkage() && !isa(GV)) { // FIXME: ObjC metadata is currently emitted as internal symbols that have @@ -921,7 +921,7 @@ shouldEmitUsedDirectiveFor(const GlobalValue *GV, Mangler *Mang) const { if (Name[0] == 'L' || Name[0] == 'l') return false; } - + return true; } @@ -943,11 +943,11 @@ getCOFFSection(const char *Name, bool isDirective, SectionKind Kind) const { if (UniquingMap == 0) UniquingMap = new MachOUniqueMapTy(); COFFUniqueMapTy &Map = *(COFFUniqueMapTy*)UniquingMap; - + // Do the lookup, if we have a hit, return it. const MCSectionCOFF *&Entry = Map[Name]; if (Entry) return Entry; - + return Entry = MCSectionCOFF::Create(Name, isDirective, Kind, getContext()); } @@ -962,7 +962,7 @@ void TargetLoweringObjectFileCOFF::Initialize(MCContext &Ctx, getCOFFSection(".ctors", false, SectionKind::getDataRel()); StaticDtorSection = getCOFFSection(".dtors", false, SectionKind::getDataRel()); - + // FIXME: We're emitting LSDA info into a readonly section on COFF, even // though it contains relocatable pointers. In PIC mode, this is probably a // big runtime hit for C++ apps. Either the contents of the LSDA need to be @@ -971,19 +971,19 @@ void TargetLoweringObjectFileCOFF::Initialize(MCContext &Ctx, getCOFFSection(".gcc_except_table", false, SectionKind::getReadOnly()); EHFrameSection = getCOFFSection(".eh_frame", false, SectionKind::getDataRel()); - + // Debug info. // FIXME: Don't use 'directive' mode here. - DwarfAbbrevSection = + DwarfAbbrevSection = getCOFFSection("\t.section\t.debug_abbrev,\"dr\"", true, SectionKind::getMetadata()); - DwarfInfoSection = + DwarfInfoSection = getCOFFSection("\t.section\t.debug_info,\"dr\"", true, SectionKind::getMetadata()); - DwarfLineSection = + DwarfLineSection = getCOFFSection("\t.section\t.debug_line,\"dr\"", true, SectionKind::getMetadata()); - DwarfFrameSection = + DwarfFrameSection = getCOFFSection("\t.section\t.debug_frame,\"dr\"", true, SectionKind::getMetadata()); DwarfPubNamesSection = @@ -992,25 +992,25 @@ void TargetLoweringObjectFileCOFF::Initialize(MCContext &Ctx, DwarfPubTypesSection = getCOFFSection("\t.section\t.debug_pubtypes,\"dr\"", true, SectionKind::getMetadata()); - DwarfStrSection = + DwarfStrSection = getCOFFSection("\t.section\t.debug_str,\"dr\"", true, SectionKind::getMetadata()); - DwarfLocSection = + DwarfLocSection = getCOFFSection("\t.section\t.debug_loc,\"dr\"", true, SectionKind::getMetadata()); - DwarfARangesSection = + DwarfARangesSection = getCOFFSection("\t.section\t.debug_aranges,\"dr\"", true, SectionKind::getMetadata()); - DwarfRangesSection = + DwarfRangesSection = getCOFFSection("\t.section\t.debug_ranges,\"dr\"", true, SectionKind::getMetadata()); - DwarfMacroInfoSection = + DwarfMacroInfoSection = getCOFFSection("\t.section\t.debug_macinfo,\"dr\"", true, SectionKind::getMetadata()); } const MCSection *TargetLoweringObjectFileCOFF:: -getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind, +getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, const TargetMachine &TM) const { return getCOFFSection(GV->getSection().c_str(), false, Kind); } @@ -1028,7 +1028,7 @@ const MCSection *TargetLoweringObjectFileCOFF:: SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, const TargetMachine &TM) const { assert(!Kind.isThreadLocal() && "Doesn't support TLS"); - + // If this global is linkonce/weak and the target handles this by emitting it // into a 'uniqued' section name, create and return the section now. if (GV->isWeakForLinker()) { @@ -1036,10 +1036,9 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, std::string Name = Mang->makeNameProper(GV->getNameStr()); return getCOFFSection((Prefix+Name).c_str(), false, Kind); } - + if (Kind.isText()) return getTextSection(); - + return getDataSection(); } -