put normal data into .data instead of .data.rel on elf systems.

llvm-svn: 77116
This commit is contained in:
Chris Lattner 2009-07-26 03:06:11 +00:00
parent 4aea2d97c8
commit 8e58bc9ed4
3 changed files with 28 additions and 23 deletions

View File

@ -55,7 +55,7 @@ namespace llvm {
/// Thread local data.
ThreadData, ///< Initialized TLS data objects
ThreadBSS ///< Uninitialized TLS data objects
} K; // This is private.
} K : 8; // This is private.
// FIXME: Eliminate.
Kind getKind() const { return K; }

View File

@ -49,34 +49,24 @@ ELFTargetAsmInfo::ELFTargetAsmInfo(const TargetMachine &TM)
const Section*
ELFTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV,
SectionKind Kind) const {
if (isa<Function>(GV))
return TextSection;
const GlobalVariable *GVar = cast<GlobalVariable>(GV);
switch (Kind.getKind()) {
default: llvm_unreachable("Unsuported section kind for global");
case SectionKind::BSS:
return getBSSSection_();
case SectionKind::Data:
case SectionKind::DataRel:
return DataRelSection;
case SectionKind::DataRelLocal:
return DataRelLocalSection;
case SectionKind::DataRelRO:
return DataRelROSection;
case SectionKind::DataRelROLocal:
return DataRelROLocalSection;
case SectionKind::ROData:
return getReadOnlySection();
default: llvm_unreachable("Unknown section kind");
case SectionKind::Text: return TextSection;
case SectionKind::BSS: return getBSSSection_();
case SectionKind::Data: return DataSection;
case SectionKind::DataRel: return DataRelSection;
case SectionKind::DataRelLocal: return DataRelLocalSection;
case SectionKind::DataRelRO: return DataRelROSection;
case SectionKind::DataRelROLocal: return DataRelROLocalSection;
case SectionKind::ROData: return getReadOnlySection();
case SectionKind::RODataMergeStr:
return MergeableStringSection(GVar);
return MergeableStringSection(cast<GlobalVariable>(GV));
case SectionKind::RODataMergeConst: {
const Type *Ty = GVar->getInitializer()->getType();
const Type *Ty = cast<GlobalVariable>(GV)->getInitializer()->getType();
const TargetData *TD = TM.getTargetData();
return getSectionForMergableConstant(TD->getTypeAllocSize(Ty), 0);
}
case SectionKind::ThreadData:
// ELF targets usually support TLS stuff
return TLSDataSection;
case SectionKind::ThreadBSS:
return TLSBSSSection;

View File

@ -39,4 +39,19 @@
; DARWIN: .const
; DARWIN: _G4:
; .long 34
; DARWIN: .long 34
; int G5 = 47;
@G5 = global i32 47
; LINUX: .data
; LINUX: .globl G5
; LINUX: G5:
; LINUX: .long 47
; DARWIN: .data
; DARWIN: .globl _G5
; DARWIN: _G5:
; DARWIN: .long 47