Remove HasCrazyBSS and add a flag in TAI to indicate that '.section'

must be emitted for PowerPC-Linux '.bss' section


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78958 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bruno Cardoso Lopes
2009-08-13 23:30:21 +00:00
parent 0e275dc538
commit fdf229eda9
9 changed files with 39 additions and 27 deletions
+10 -9
View File
@@ -16,20 +16,21 @@ using namespace llvm;
MCSectionELF *MCSectionELF::
Create(const StringRef &Section, unsigned Type, unsigned Flags,
SectionKind K, bool hasCrazyBSS, bool isExplicit, MCContext &Ctx) {
SectionKind K, bool isExplicit, MCContext &Ctx) {
return new
(Ctx) MCSectionELF(Section, Type, Flags, K, hasCrazyBSS, isExplicit);
(Ctx) MCSectionELF(Section, Type, Flags, K, isExplicit);
}
// ShouldOmitSectionDirective - Decides whether a '.section' directive
// should be printed before the section name
bool MCSectionELF::ShouldOmitSectionDirective(const char *Name) const {
bool MCSectionELF::ShouldOmitSectionDirective(const char *Name,
const TargetAsmInfo &TAI) const {
// PPC/Linux doesn't support the .bss directive, it needs .section .bss.
// FIXME: Does .section .bss/.data/.text work everywhere??
if ((!HasCrazyBSS && strncmp(Name, ".bss", 4) == 0) ||
strncmp(Name, ".text", 5) == 0 ||
strncmp(Name, ".data", 5) == 0)
if (strncmp(Name, ".text", 5) == 0 ||
strncmp(Name, ".data", 5) == 0 ||
(strncmp(Name, ".bss", 4) == 0 &&
!TAI.usesELFSectionDirectiveForBSS()))
return true;
return false;
@@ -46,8 +47,8 @@ bool MCSectionELF::ShouldPrintSectionType(unsigned Ty) const {
void MCSectionELF::PrintSwitchToSection(const TargetAsmInfo &TAI,
raw_ostream &OS) const {
if (ShouldOmitSectionDirective(SectionName.c_str())) {
if (ShouldOmitSectionDirective(SectionName.c_str(), TAI)) {
OS << '\t' << getSectionName() << '\n';
return;
}