forked from OSchip/llvm-project
				
			
							parent
							
								
									91a6705839
								
							
						
					
					
						commit
						8e7b93938d
					
				| 
						 | 
					@ -146,8 +146,7 @@ namespace llvm {
 | 
				
			||||||
    /// ReadOnlySection - This is the directive that is emitted to switch to a
 | 
					    /// ReadOnlySection - This is the directive that is emitted to switch to a
 | 
				
			||||||
    /// read-only section for constant data (e.g. data declared const,
 | 
					    /// read-only section for constant data (e.g. data declared const,
 | 
				
			||||||
    /// jump tables).
 | 
					    /// jump tables).
 | 
				
			||||||
    const char *ReadOnlySection;          // Defaults to NULL
 | 
					    const Section *ReadOnlySection;       // Defaults to NULL
 | 
				
			||||||
    const Section *ReadOnlySection_;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// SmallDataSection - This is the directive that is emitted to switch to a
 | 
					    /// SmallDataSection - This is the directive that is emitted to switch to a
 | 
				
			||||||
    /// small data section.
 | 
					    /// small data section.
 | 
				
			||||||
| 
						 | 
					@ -597,12 +596,9 @@ namespace llvm {
 | 
				
			||||||
    const Section *getBSSSection_() const {
 | 
					    const Section *getBSSSection_() const {
 | 
				
			||||||
      return BSSSection_;
 | 
					      return BSSSection_;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    const char *getReadOnlySection() const {
 | 
					    const Section *getReadOnlySection() const {
 | 
				
			||||||
      return ReadOnlySection;
 | 
					      return ReadOnlySection;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    const Section *getReadOnlySection_() const {
 | 
					 | 
				
			||||||
      return ReadOnlySection_;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    const Section *getSmallDataSection() const {
 | 
					    const Section *getSmallDataSection() const {
 | 
				
			||||||
      return SmallDataSection;
 | 
					      return SmallDataSection;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -72,7 +72,6 @@ ARMDarwinTargetAsmInfo::ARMDarwinTargetAsmInfo(const ARMTargetMachine &TM):
 | 
				
			||||||
  ProtectedDirective = NULL;
 | 
					  ProtectedDirective = NULL;
 | 
				
			||||||
  JumpTableDataSection = ".const";
 | 
					  JumpTableDataSection = ".const";
 | 
				
			||||||
  CStringSection = "\t.cstring";
 | 
					  CStringSection = "\t.cstring";
 | 
				
			||||||
  ReadOnlySection = "\t.const\n";
 | 
					 | 
				
			||||||
  HasDotTypeDotSizeDirective = false;
 | 
					  HasDotTypeDotSizeDirective = false;
 | 
				
			||||||
  NeedsIndirectEncoding = true;
 | 
					  NeedsIndirectEncoding = true;
 | 
				
			||||||
  if (TM.getRelocationModel() == Reloc::Static) {
 | 
					  if (TM.getRelocationModel() == Reloc::Static) {
 | 
				
			||||||
| 
						 | 
					@ -112,7 +111,6 @@ ARMELFTargetAsmInfo::ARMELFTargetAsmInfo(const ARMTargetMachine &TM):
 | 
				
			||||||
  HasLEB128 = true;
 | 
					  HasLEB128 = true;
 | 
				
			||||||
  AbsoluteDebugSectionOffsets = true;
 | 
					  AbsoluteDebugSectionOffsets = true;
 | 
				
			||||||
  CStringSection = ".rodata.str";
 | 
					  CStringSection = ".rodata.str";
 | 
				
			||||||
  ReadOnlySection = "\t.section\t.rodata\n";
 | 
					 | 
				
			||||||
  PrivateGlobalPrefix = ".L";
 | 
					  PrivateGlobalPrefix = ".L";
 | 
				
			||||||
  WeakRefDirective = "\t.weak\t";
 | 
					  WeakRefDirective = "\t.weak\t";
 | 
				
			||||||
  SetDirective = "\t.set\t";
 | 
					  SetDirective = "\t.set\t";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,12 +38,12 @@ DarwinTargetAsmInfo::DarwinTargetAsmInfo(const TargetMachine &TM) {
 | 
				
			||||||
  // there, if needed.
 | 
					  // there, if needed.
 | 
				
			||||||
  SixteenByteConstantSection = 0;
 | 
					  SixteenByteConstantSection = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ReadOnlySection_ = getUnnamedSection("\t.const\n", SectionFlags::None);
 | 
					  ReadOnlySection = getUnnamedSection("\t.const\n", SectionFlags::None);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TextCoalSection =
 | 
					  TextCoalSection =
 | 
				
			||||||
    getNamedSection("\t__TEXT,__textcoal_nt,coalesced,pure_instructions",
 | 
					    getNamedSection("\t__TEXT,__textcoal_nt,coalesced,pure_instructions",
 | 
				
			||||||
                    SectionFlags::Code);
 | 
					                    SectionFlags::Code);
 | 
				
			||||||
  ConstDataCoalSection = getBamedSection("\t__DATA,__const_coal,coalesced",
 | 
					  ConstDataCoalSection = getNamedSection("\t__DATA,__const_coal,coalesced",
 | 
				
			||||||
                                         SectionFlags::None);
 | 
					                                         SectionFlags::None);
 | 
				
			||||||
  ConstDataSection = getUnnamedSection(".const_data", SectionFlags::None);
 | 
					  ConstDataSection = getUnnamedSection(".const_data", SectionFlags::None);
 | 
				
			||||||
  DataCoalSection = getNamedSection("\t__DATA,__datacoal_nt,coalesced",
 | 
					  DataCoalSection = getNamedSection("\t__DATA,__datacoal_nt,coalesced",
 | 
				
			||||||
| 
						 | 
					@ -92,7 +92,7 @@ DarwinTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
 | 
				
			||||||
      return (isWeak ? DataCoalSection : DataSection);
 | 
					      return (isWeak ? DataCoalSection : DataSection);
 | 
				
			||||||
   case SectionKind::ROData:
 | 
					   case SectionKind::ROData:
 | 
				
			||||||
    return (isWeak ? ConstDataCoalSection :
 | 
					    return (isWeak ? ConstDataCoalSection :
 | 
				
			||||||
            (isNonStatic ? ConstDataSection : getReadOnlySection_()));
 | 
					            (isNonStatic ? ConstDataSection : getReadOnlySection()));
 | 
				
			||||||
   case SectionKind::RODataMergeStr:
 | 
					   case SectionKind::RODataMergeStr:
 | 
				
			||||||
    return (isWeak ?
 | 
					    return (isWeak ?
 | 
				
			||||||
            ConstDataCoalSection :
 | 
					            ConstDataCoalSection :
 | 
				
			||||||
| 
						 | 
					@ -122,7 +122,7 @@ DarwinTargetAsmInfo::MergeableStringSection(const GlobalVariable *GV) const {
 | 
				
			||||||
      return getCStringSection_();
 | 
					      return getCStringSection_();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return getReadOnlySection_();
 | 
					  return getReadOnlySection();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Section*
 | 
					const Section*
 | 
				
			||||||
| 
						 | 
					@ -144,7 +144,7 @@ DarwinTargetAsmInfo::MergeableConstSection(const Type *Ty) const {
 | 
				
			||||||
  else if (Size == 16 && SixteenByteConstantSection)
 | 
					  else if (Size == 16 && SixteenByteConstantSection)
 | 
				
			||||||
    return SixteenByteConstantSection;
 | 
					    return SixteenByteConstantSection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return getReadOnlySection_();
 | 
					  return getReadOnlySection();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Section*
 | 
					const Section*
 | 
				
			||||||
| 
						 | 
					@ -152,7 +152,7 @@ DarwinTargetAsmInfo::SelectSectionForMachineConst(const Type *Ty) const {
 | 
				
			||||||
  const Section* S = MergeableConstSection(Ty);
 | 
					  const Section* S = MergeableConstSection(Ty);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Handle weird special case, when compiling PIC stuff.
 | 
					  // Handle weird special case, when compiling PIC stuff.
 | 
				
			||||||
  if (S == getReadOnlySection_() &&
 | 
					  if (S == getReadOnlySection() &&
 | 
				
			||||||
      DTM->getRelocationModel() != Reloc::Static)
 | 
					      DTM->getRelocationModel() != Reloc::Static)
 | 
				
			||||||
    return ConstDataSection;
 | 
					    return ConstDataSection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@ ELFTargetAsmInfo::ELFTargetAsmInfo(const TargetMachine &TM) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  BSSSection_  = getUnnamedSection("\t.bss",
 | 
					  BSSSection_  = getUnnamedSection("\t.bss",
 | 
				
			||||||
                                   SectionFlags::Writeable | SectionFlags::BSS);
 | 
					                                   SectionFlags::Writeable | SectionFlags::BSS);
 | 
				
			||||||
  ReadOnlySection_ = getNamedSection("\t.rodata", SectionFlags::None);
 | 
					  ReadOnlySection = getNamedSection("\t.rodata", SectionFlags::None);
 | 
				
			||||||
  TLSDataSection = getNamedSection("\t.tdata",
 | 
					  TLSDataSection = getNamedSection("\t.tdata",
 | 
				
			||||||
                                   SectionFlags::Writeable | SectionFlags::TLS);
 | 
					                                   SectionFlags::Writeable | SectionFlags::TLS);
 | 
				
			||||||
  TLSBSSSection = getNamedSection("\t.tbss",
 | 
					  TLSBSSSection = getNamedSection("\t.tbss",
 | 
				
			||||||
| 
						 | 
					@ -70,7 +70,7 @@ ELFTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
 | 
				
			||||||
        return getBSSSection_();
 | 
					        return getBSSSection_();
 | 
				
			||||||
       case SectionKind::ROData:
 | 
					       case SectionKind::ROData:
 | 
				
			||||||
       case SectionKind::SmallROData:
 | 
					       case SectionKind::SmallROData:
 | 
				
			||||||
        return getReadOnlySection_();
 | 
					        return getReadOnlySection();
 | 
				
			||||||
       case SectionKind::RODataMergeStr:
 | 
					       case SectionKind::RODataMergeStr:
 | 
				
			||||||
        return MergeableStringSection(GVar);
 | 
					        return MergeableStringSection(GVar);
 | 
				
			||||||
       case SectionKind::RODataMergeConst:
 | 
					       case SectionKind::RODataMergeConst:
 | 
				
			||||||
| 
						 | 
					@ -116,7 +116,7 @@ ELFTargetAsmInfo::MergeableConstSection(const Type *Ty) const {
 | 
				
			||||||
                                                       Size));
 | 
					                                                       Size));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return getReadOnlySection_();
 | 
					  return getReadOnlySection();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Section*
 | 
					const Section*
 | 
				
			||||||
| 
						 | 
					@ -143,7 +143,7 @@ ELFTargetAsmInfo::MergeableStringSection(const GlobalVariable *GV) const {
 | 
				
			||||||
    return getNamedSection(Name.c_str(), Flags);
 | 
					    return getNamedSection(Name.c_str(), Flags);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return getReadOnlySection_();
 | 
					  return getReadOnlySection();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::string ELFTargetAsmInfo::printSectionFlags(unsigned flags) const {
 | 
					std::string ELFTargetAsmInfo::printSectionFlags(unsigned flags) const {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,6 @@ MipsTargetAsmInfo::MipsTargetAsmInfo(const MipsTargetMachine &TM):
 | 
				
			||||||
  PrivateGlobalPrefix         = "$";
 | 
					  PrivateGlobalPrefix         = "$";
 | 
				
			||||||
  JumpTableDataSection        = "\t.rdata";
 | 
					  JumpTableDataSection        = "\t.rdata";
 | 
				
			||||||
  CommentString               = "#";
 | 
					  CommentString               = "#";
 | 
				
			||||||
  ReadOnlySection             = "\t.rdata";
 | 
					 | 
				
			||||||
  ZeroDirective               = "\t.space\t";
 | 
					  ZeroDirective               = "\t.space\t";
 | 
				
			||||||
  BSSSection                  = "\t.section\t.bss";
 | 
					  BSSSection                  = "\t.section\t.bss";
 | 
				
			||||||
  CStringSection              = ".rodata.str";
 | 
					  CStringSection              = ".rodata.str";
 | 
				
			||||||
| 
						 | 
					@ -38,9 +37,10 @@ MipsTargetAsmInfo::MipsTargetAsmInfo(const MipsTargetMachine &TM):
 | 
				
			||||||
  if (!Subtarget->hasABICall()) {
 | 
					  if (!Subtarget->hasABICall()) {
 | 
				
			||||||
    JumpTableDirective = "\t.word\t";
 | 
					    JumpTableDirective = "\t.word\t";
 | 
				
			||||||
    SmallDataSection = getNamedSection("\t.sdata", SectionFlags::Writeable);
 | 
					    SmallDataSection = getNamedSection("\t.sdata", SectionFlags::Writeable);
 | 
				
			||||||
    SmallBSSSection = getNamedSection("\t.sbss", SectionFlags::Writeable | 
 | 
					    SmallBSSSection = getNamedSection("\t.sbss",
 | 
				
			||||||
 | 
					                                      SectionFlags::Writeable |
 | 
				
			||||||
                                      SectionFlags::BSS);
 | 
					                                      SectionFlags::BSS);
 | 
				
			||||||
  } else 
 | 
					  } else
 | 
				
			||||||
    JumpTableDirective = "\t.gpword\t";
 | 
					    JumpTableDirective = "\t.gpword\t";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,6 @@ PPCDarwinTargetAsmInfo::PPCDarwinTargetAsmInfo(const PPCTargetMachine &TM):
 | 
				
			||||||
  ConstantPoolSection = "\t.const\t";
 | 
					  ConstantPoolSection = "\t.const\t";
 | 
				
			||||||
  JumpTableDataSection = ".const";
 | 
					  JumpTableDataSection = ".const";
 | 
				
			||||||
  CStringSection = "\t.cstring";
 | 
					  CStringSection = "\t.cstring";
 | 
				
			||||||
  ReadOnlySection = "\t.const\n";
 | 
					 | 
				
			||||||
  if (TM.getRelocationModel() == Reloc::Static) {
 | 
					  if (TM.getRelocationModel() == Reloc::Static) {
 | 
				
			||||||
    StaticCtorsSection = ".constructor";
 | 
					    StaticCtorsSection = ".constructor";
 | 
				
			||||||
    StaticDtorsSection = ".destructor";
 | 
					    StaticDtorsSection = ".destructor";
 | 
				
			||||||
| 
						 | 
					@ -137,7 +136,6 @@ PPCLinuxTargetAsmInfo::PPCLinuxTargetAsmInfo(const PPCTargetMachine &TM) :
 | 
				
			||||||
  DwarfRangesSection =  "\t.section\t.debug_ranges,\"\",@progbits";
 | 
					  DwarfRangesSection =  "\t.section\t.debug_ranges,\"\",@progbits";
 | 
				
			||||||
  DwarfMacInfoSection = "\t.section\t.debug_macinfo,\"\",@progbits";
 | 
					  DwarfMacInfoSection = "\t.section\t.debug_macinfo,\"\",@progbits";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ReadOnlySection = "\t.section\t.rodata";
 | 
					 | 
				
			||||||
  PCSymbol = ".";
 | 
					  PCSymbol = ".";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Set up DWARF directives
 | 
					  // Set up DWARF directives
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,6 @@ TargetAsmInfo::TargetAsmInfo() :
 | 
				
			||||||
  BSSSection("\t.bss"),
 | 
					  BSSSection("\t.bss"),
 | 
				
			||||||
  BSSSection_(0),
 | 
					  BSSSection_(0),
 | 
				
			||||||
  ReadOnlySection(0),
 | 
					  ReadOnlySection(0),
 | 
				
			||||||
  ReadOnlySection_(0),
 | 
					 | 
				
			||||||
  SmallDataSection(0),
 | 
					  SmallDataSection(0),
 | 
				
			||||||
  SmallBSSSection(0),
 | 
					  SmallBSSSection(0),
 | 
				
			||||||
  SmallRODataSection(0),
 | 
					  SmallRODataSection(0),
 | 
				
			||||||
| 
						 | 
					@ -293,8 +292,8 @@ TargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
 | 
				
			||||||
      return getTextSection();
 | 
					      return getTextSection();
 | 
				
			||||||
    else if (isBSS(Kind) && getBSSSection_())
 | 
					    else if (isBSS(Kind) && getBSSSection_())
 | 
				
			||||||
      return getBSSSection_();
 | 
					      return getBSSSection_();
 | 
				
			||||||
    else if (getReadOnlySection_() && SectionKind::isReadOnly(Kind))
 | 
					    else if (getReadOnlySection() && SectionKind::isReadOnly(Kind))
 | 
				
			||||||
      return getReadOnlySection_();
 | 
					      return getReadOnlySection();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return getDataSection();
 | 
					  return getDataSection();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -150,8 +150,6 @@ X86DarwinTargetAsmInfo::X86DarwinTargetAsmInfo(const X86TargetMachine &TM):
 | 
				
			||||||
    SixteenByteConstantSection = getUnnamedSection("\t.literal16\n",
 | 
					    SixteenByteConstantSection = getUnnamedSection("\t.literal16\n",
 | 
				
			||||||
                                                   SectionFlags::Mergeable);
 | 
					                                                   SectionFlags::Mergeable);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  ReadOnlySection = "\t.const\n";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LCOMMDirective = "\t.lcomm\t";
 | 
					  LCOMMDirective = "\t.lcomm\t";
 | 
				
			||||||
  SwitchToSectionDirective = "\t.section ";
 | 
					  SwitchToSectionDirective = "\t.section ";
 | 
				
			||||||
  StringConstantPrefix = "\1LC";
 | 
					  StringConstantPrefix = "\1LC";
 | 
				
			||||||
| 
						 | 
					@ -229,7 +227,6 @@ X86DarwinTargetAsmInfo::PreferredEHDataFormat(DwarfEncoding::Target Reason,
 | 
				
			||||||
X86ELFTargetAsmInfo::X86ELFTargetAsmInfo(const X86TargetMachine &TM):
 | 
					X86ELFTargetAsmInfo::X86ELFTargetAsmInfo(const X86TargetMachine &TM):
 | 
				
			||||||
  X86TargetAsmInfo(TM), ELFTargetAsmInfo(TM) {
 | 
					  X86TargetAsmInfo(TM), ELFTargetAsmInfo(TM) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ReadOnlySection = ".rodata";
 | 
					 | 
				
			||||||
  CStringSection = ".rodata.str";
 | 
					  CStringSection = ".rodata.str";
 | 
				
			||||||
  PrivateGlobalPrefix = ".L";
 | 
					  PrivateGlobalPrefix = ".L";
 | 
				
			||||||
  WeakRefDirective = "\t.weak\t";
 | 
					  WeakRefDirective = "\t.weak\t";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue