forked from OSchip/llvm-project
put normal data into .data instead of .data.rel on elf systems.
llvm-svn: 77116
This commit is contained in:
parent
4aea2d97c8
commit
8e58bc9ed4
|
@ -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; }
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue