mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-21 03:00:45 +00:00
merge the common darwin settings from the X86/PPC/ARM targets
into DarwinTargetAsmInfo.cpp. The remaining differences should be evaluated. It seems strange that x86/arm has .zerofill but ppc doesn't, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73742 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f4a481505e
commit
4e0f25b603
@ -23,7 +23,7 @@ namespace llvm {
|
||||
class Type;
|
||||
class Mangler;
|
||||
|
||||
struct DarwinTargetAsmInfo: public TargetAsmInfo {
|
||||
struct DarwinTargetAsmInfo : public TargetAsmInfo {
|
||||
const Section* TextCoalSection;
|
||||
const Section* ConstTextCoalSection;
|
||||
const Section* ConstDataCoalSection;
|
||||
|
@ -130,7 +130,6 @@ namespace llvm {
|
||||
private:
|
||||
mutable StringMap<Section> Sections;
|
||||
mutable SectionFlags::FlagsStringsMapType FlagsStrings;
|
||||
void fillDefaultValues();
|
||||
protected:
|
||||
/// TM - The current TargetMachine.
|
||||
const TargetMachine &TM;
|
||||
@ -312,8 +311,7 @@ namespace llvm {
|
||||
/// directives for various sizes and non-default address spaces.
|
||||
virtual const char *getASDirective(unsigned size,
|
||||
unsigned AS) const {
|
||||
assert (AS > 0
|
||||
&& "Dont know the directives for default addr space");
|
||||
assert(AS > 0 && "Dont know the directives for default addr space");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -47,52 +47,11 @@ ARMDarwinTargetAsmInfo::ARMDarwinTargetAsmInfo(const ARMTargetMachine &TM):
|
||||
ARMTargetAsmInfo<DarwinTargetAsmInfo>(TM) {
|
||||
Subtarget = &TM.getSubtarget<ARMSubtarget>();
|
||||
|
||||
GlobalPrefix = "_";
|
||||
PrivateGlobalPrefix = "L";
|
||||
LessPrivateGlobalPrefix = "l";
|
||||
StringConstantPrefix = "\1LC";
|
||||
BSSSection = 0; // no BSS section
|
||||
ZeroDirective = "\t.space\t";
|
||||
ZeroFillDirective = "\t.zerofill\t"; // Uses .zerofill
|
||||
SetDirective = "\t.set\t";
|
||||
WeakRefDirective = "\t.weak_reference\t";
|
||||
WeakDefDirective = "\t.weak_definition ";
|
||||
HiddenDirective = "\t.private_extern\t";
|
||||
ProtectedDirective = NULL;
|
||||
JumpTableDataSection = ".const";
|
||||
CStringSection = "\t.cstring";
|
||||
HasDotTypeDotSizeDirective = false;
|
||||
HasSingleParameterDotFile = false;
|
||||
NeedsIndirectEncoding = true;
|
||||
AllowQuotesInName = true;
|
||||
|
||||
if (TM.getRelocationModel() == Reloc::Static) {
|
||||
StaticCtorsSection = ".constructor";
|
||||
StaticDtorsSection = ".destructor";
|
||||
} else {
|
||||
StaticCtorsSection = ".mod_init_func";
|
||||
StaticDtorsSection = ".mod_term_func";
|
||||
}
|
||||
|
||||
// In non-PIC modes, emit a special label before jump tables so that the
|
||||
// linker can perform more accurate dead code stripping.
|
||||
// Emit a local label that is preserved until the linker runs.
|
||||
// We do not check the relocation model here since it can be overridden
|
||||
// later.
|
||||
JumpTableSpecialLabelPrefix = "l";
|
||||
|
||||
NeedsSet = true;
|
||||
DwarfAbbrevSection = ".section __DWARF,__debug_abbrev,regular,debug";
|
||||
DwarfInfoSection = ".section __DWARF,__debug_info,regular,debug";
|
||||
DwarfLineSection = ".section __DWARF,__debug_line,regular,debug";
|
||||
DwarfFrameSection = ".section __DWARF,__debug_frame,regular,debug";
|
||||
DwarfPubNamesSection = ".section __DWARF,__debug_pubnames,regular,debug";
|
||||
DwarfPubTypesSection = ".section __DWARF,__debug_pubtypes,regular,debug";
|
||||
DwarfStrSection = ".section __DWARF,__debug_str,regular,debug";
|
||||
DwarfLocSection = ".section __DWARF,__debug_loc,regular,debug";
|
||||
DwarfARangesSection = ".section __DWARF,__debug_aranges,regular,debug";
|
||||
DwarfRangesSection = ".section __DWARF,__debug_ranges,regular,debug";
|
||||
DwarfMacroInfoSection = ".section __DWARF,__debug_macinfo,regular,debug";
|
||||
}
|
||||
|
||||
ARMELFTargetAsmInfo::ARMELFTargetAsmInfo(const ARMTargetMachine &TM):
|
||||
|
@ -26,8 +26,7 @@ namespace llvm {
|
||||
|
||||
template <class BaseTAI>
|
||||
struct ARMTargetAsmInfo : public BaseTAI {
|
||||
explicit ARMTargetAsmInfo(const ARMTargetMachine &TM):
|
||||
BaseTAI(TM) {
|
||||
explicit ARMTargetAsmInfo(const ARMTargetMachine &TM) : BaseTAI(TM) {
|
||||
BaseTAI::AsmTransCBE = arm_asm_table;
|
||||
|
||||
BaseTAI::AlignmentIsInBytes = false;
|
||||
|
@ -50,6 +50,53 @@ DarwinTargetAsmInfo::DarwinTargetAsmInfo(const TargetMachine &TM)
|
||||
ConstDataSection = getUnnamedSection(".const_data", SectionFlags::None);
|
||||
DataCoalSection = getNamedSection("\t__DATA,__datacoal_nt,coalesced",
|
||||
SectionFlags::Writeable);
|
||||
|
||||
|
||||
// Common settings for all Darwin targets.
|
||||
// Syntax:
|
||||
GlobalPrefix = "_";
|
||||
PrivateGlobalPrefix = "L";
|
||||
LessPrivateGlobalPrefix = "l"; // Marker for some ObjC metadata
|
||||
StringConstantPrefix = "\1LC";
|
||||
NeedsSet = true;
|
||||
NeedsIndirectEncoding = true;
|
||||
AllowQuotesInName = true;
|
||||
HasSingleParameterDotFile = false;
|
||||
|
||||
// In non-PIC modes, emit a special label before jump tables so that the
|
||||
// linker can perform more accurate dead code stripping. We do not check the
|
||||
// relocation model here since it can be overridden later.
|
||||
JumpTableSpecialLabelPrefix = "l";
|
||||
|
||||
// Directives:
|
||||
WeakDefDirective = "\t.weak_definition ";
|
||||
WeakRefDirective = "\t.weak_reference ";
|
||||
HiddenDirective = "\t.private_extern ";
|
||||
|
||||
// Sections:
|
||||
CStringSection = "\t.cstring";
|
||||
JumpTableDataSection = "\t.const\n";
|
||||
BSSSection = 0;
|
||||
|
||||
if (TM.getRelocationModel() == Reloc::Static) {
|
||||
StaticCtorsSection = ".constructor";
|
||||
StaticDtorsSection = ".destructor";
|
||||
} else {
|
||||
StaticCtorsSection = ".mod_init_func";
|
||||
StaticDtorsSection = ".mod_term_func";
|
||||
}
|
||||
|
||||
DwarfAbbrevSection = ".section __DWARF,__debug_abbrev,regular,debug";
|
||||
DwarfInfoSection = ".section __DWARF,__debug_info,regular,debug";
|
||||
DwarfLineSection = ".section __DWARF,__debug_line,regular,debug";
|
||||
DwarfFrameSection = ".section __DWARF,__debug_frame,regular,debug";
|
||||
DwarfPubNamesSection = ".section __DWARF,__debug_pubnames,regular,debug";
|
||||
DwarfPubTypesSection = ".section __DWARF,__debug_pubtypes,regular,debug";
|
||||
DwarfStrSection = ".section __DWARF,__debug_str,regular,debug";
|
||||
DwarfLocSection = ".section __DWARF,__debug_loc,regular,debug";
|
||||
DwarfARangesSection = ".section __DWARF,__debug_aranges,regular,debug";
|
||||
DwarfRangesSection = ".section __DWARF,__debug_ranges,regular,debug";
|
||||
DwarfMacroInfoSection = ".section __DWARF,__debug_macinfo,regular,debug";
|
||||
}
|
||||
|
||||
/// emitUsedDirectiveFor - On Darwin, internally linked data beginning with
|
||||
|
@ -19,59 +19,19 @@
|
||||
using namespace llvm;
|
||||
using namespace llvm::dwarf;
|
||||
|
||||
PPCDarwinTargetAsmInfo::PPCDarwinTargetAsmInfo(const PPCTargetMachine &TM):
|
||||
PPCDarwinTargetAsmInfo::PPCDarwinTargetAsmInfo(const PPCTargetMachine &TM) :
|
||||
PPCTargetAsmInfo<DarwinTargetAsmInfo>(TM) {
|
||||
PCSymbol = ".";
|
||||
CommentString = ";";
|
||||
GlobalPrefix = "_";
|
||||
PrivateGlobalPrefix = "L";
|
||||
LessPrivateGlobalPrefix = "l";
|
||||
StringConstantPrefix = "\1LC";
|
||||
ConstantPoolSection = "\t.const\t";
|
||||
JumpTableDataSection = ".const";
|
||||
CStringSection = "\t.cstring";
|
||||
if (TM.getRelocationModel() == Reloc::Static) {
|
||||
StaticCtorsSection = ".constructor";
|
||||
StaticDtorsSection = ".destructor";
|
||||
} else {
|
||||
StaticCtorsSection = ".mod_init_func";
|
||||
StaticDtorsSection = ".mod_term_func";
|
||||
}
|
||||
HasSingleParameterDotFile = false;
|
||||
SwitchToSectionDirective = "\t.section ";
|
||||
UsedDirective = "\t.no_dead_strip\t";
|
||||
WeakDefDirective = "\t.weak_definition ";
|
||||
WeakRefDirective = "\t.weak_reference ";
|
||||
HiddenDirective = "\t.private_extern ";
|
||||
SupportsExceptionHandling = true;
|
||||
NeedsIndirectEncoding = true;
|
||||
AllowQuotesInName = true;
|
||||
NeedsSet = true;
|
||||
BSSSection = 0;
|
||||
|
||||
DwarfEHFrameSection =
|
||||
".section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support";
|
||||
".section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support";
|
||||
DwarfExceptionSection = ".section __DATA,__gcc_except_tab";
|
||||
GlobalEHDirective = "\t.globl\t";
|
||||
SupportsWeakOmittedEHFrame = false;
|
||||
|
||||
DwarfAbbrevSection = ".section __DWARF,__debug_abbrev,regular,debug";
|
||||
DwarfInfoSection = ".section __DWARF,__debug_info,regular,debug";
|
||||
DwarfLineSection = ".section __DWARF,__debug_line,regular,debug";
|
||||
DwarfFrameSection = ".section __DWARF,__debug_frame,regular,debug";
|
||||
DwarfPubNamesSection = ".section __DWARF,__debug_pubnames,regular,debug";
|
||||
DwarfPubTypesSection = ".section __DWARF,__debug_pubtypes,regular,debug";
|
||||
DwarfStrSection = ".section __DWARF,__debug_str,regular,debug";
|
||||
DwarfLocSection = ".section __DWARF,__debug_loc,regular,debug";
|
||||
DwarfARangesSection = ".section __DWARF,__debug_aranges,regular,debug";
|
||||
DwarfRangesSection = ".section __DWARF,__debug_ranges,regular,debug";
|
||||
DwarfMacroInfoSection = ".section __DWARF,__debug_macinfo,regular,debug";
|
||||
|
||||
// In non-PIC modes, emit a special label before jump tables so that the
|
||||
// linker can perform more accurate dead code stripping.
|
||||
// We do not check the relocation model here since it can be overridden
|
||||
// later.
|
||||
JumpTableSpecialLabelPrefix = "l";
|
||||
}
|
||||
|
||||
/// PreferredEHDataFormat - This hook allows the target to select data
|
||||
|
@ -24,10 +24,10 @@
|
||||
#include "llvm/Support/Dwarf.h"
|
||||
#include <cctype>
|
||||
#include <cstring>
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
void TargetAsmInfo::fillDefaultValues() {
|
||||
TargetAsmInfo::TargetAsmInfo(const TargetMachine &tm)
|
||||
: TM(tm) {
|
||||
BSSSection = "\t.bss";
|
||||
BSSSection_ = 0;
|
||||
ReadOnlySection = 0;
|
||||
@ -126,11 +126,6 @@ void TargetAsmInfo::fillDefaultValues() {
|
||||
DataSection = getUnnamedSection("\t.data", SectionFlags::Writeable);
|
||||
}
|
||||
|
||||
TargetAsmInfo::TargetAsmInfo(const TargetMachine &tm)
|
||||
: TM(tm) {
|
||||
fillDefaultValues();
|
||||
}
|
||||
|
||||
TargetAsmInfo::~TargetAsmInfo() {
|
||||
}
|
||||
|
||||
|
@ -44,40 +44,25 @@ X86DarwinTargetAsmInfo::X86DarwinTargetAsmInfo(const X86TargetMachine &TM):
|
||||
|
||||
AlignmentIsInBytes = false;
|
||||
TextAlignFillValue = 0x90;
|
||||
GlobalPrefix = "_";
|
||||
|
||||
|
||||
if (!is64Bit)
|
||||
Data64bitsDirective = 0; // we can't emit a 64-bit unit
|
||||
ZeroDirective = "\t.space\t"; // ".space N" emits N zeros.
|
||||
PrivateGlobalPrefix = "L"; // Marker for constant pool idxs
|
||||
LessPrivateGlobalPrefix = "l"; // Marker for some ObjC metadata
|
||||
BSSSection = 0; // no BSS section.
|
||||
ZeroFillDirective = "\t.zerofill\t"; // Uses .zerofill
|
||||
if (TM.getRelocationModel() != Reloc::Static)
|
||||
ConstantPoolSection = "\t.const_data";
|
||||
else
|
||||
ConstantPoolSection = "\t.const\n";
|
||||
JumpTableDataSection = "\t.const\n";
|
||||
CStringSection = "\t.cstring";
|
||||
// FIXME: Why don't always use this section?
|
||||
if (is64Bit) {
|
||||
// FIXME: Why don't we always use this section?
|
||||
if (is64Bit)
|
||||
SixteenByteConstantSection = getUnnamedSection("\t.literal16\n",
|
||||
SectionFlags::Mergeable);
|
||||
}
|
||||
LCOMMDirective = "\t.lcomm\t";
|
||||
SwitchToSectionDirective = "\t.section ";
|
||||
StringConstantPrefix = "\1LC";
|
||||
// Leopard and above support aligned common symbols.
|
||||
COMMDirectiveTakesAlignment = (Subtarget->getDarwinVers() >= 9);
|
||||
HasDotTypeDotSizeDirective = false;
|
||||
HasSingleParameterDotFile = false;
|
||||
NonLocalEHFrameLabel = true;
|
||||
if (TM.getRelocationModel() == Reloc::Static) {
|
||||
StaticCtorsSection = ".constructor";
|
||||
StaticDtorsSection = ".destructor";
|
||||
} else {
|
||||
StaticCtorsSection = ".mod_init_func";
|
||||
StaticDtorsSection = ".mod_term_func";
|
||||
}
|
||||
if (is64Bit) {
|
||||
PersonalityPrefix = "";
|
||||
PersonalitySuffix = "+4@GOTPCREL";
|
||||
@ -85,41 +70,18 @@ X86DarwinTargetAsmInfo::X86DarwinTargetAsmInfo(const X86TargetMachine &TM):
|
||||
PersonalityPrefix = "L";
|
||||
PersonalitySuffix = "$non_lazy_ptr";
|
||||
}
|
||||
NeedsIndirectEncoding = true;
|
||||
AllowQuotesInName = true;
|
||||
InlineAsmStart = "## InlineAsm Start";
|
||||
InlineAsmEnd = "## InlineAsm End";
|
||||
CommentString = "##";
|
||||
SetDirective = "\t.set";
|
||||
PCSymbol = ".";
|
||||
UsedDirective = "\t.no_dead_strip\t";
|
||||
WeakDefDirective = "\t.weak_definition ";
|
||||
WeakRefDirective = "\t.weak_reference ";
|
||||
HiddenDirective = "\t.private_extern ";
|
||||
ProtectedDirective = "\t.globl\t";
|
||||
|
||||
// In non-PIC modes, emit a special label before jump tables so that the
|
||||
// linker can perform more accurate dead code stripping.
|
||||
// Emit a local label that is preserved until the linker runs.
|
||||
// We do not check the relocation model here since it can be overridden
|
||||
// later.
|
||||
JumpTableSpecialLabelPrefix = "l";
|
||||
|
||||
SupportsDebugInformation = true;
|
||||
NeedsSet = true;
|
||||
DwarfAbbrevSection = ".section __DWARF,__debug_abbrev,regular,debug";
|
||||
DwarfInfoSection = ".section __DWARF,__debug_info,regular,debug";
|
||||
DwarfLineSection = ".section __DWARF,__debug_line,regular,debug";
|
||||
DwarfFrameSection = ".section __DWARF,__debug_frame,regular,debug";
|
||||
DwarfPubNamesSection = ".section __DWARF,__debug_pubnames,regular,debug";
|
||||
DwarfPubTypesSection = ".section __DWARF,__debug_pubtypes,regular,debug";
|
||||
|
||||
DwarfDebugInlineSection = ".section __DWARF,__debug_inlined,regular,debug";
|
||||
DwarfUsesInlineInfoSection = true;
|
||||
DwarfStrSection = ".section __DWARF,__debug_str,regular,debug";
|
||||
DwarfLocSection = ".section __DWARF,__debug_loc,regular,debug";
|
||||
DwarfARangesSection = ".section __DWARF,__debug_aranges,regular,debug";
|
||||
DwarfRangesSection = ".section __DWARF,__debug_ranges,regular,debug";
|
||||
DwarfMacroInfoSection = ".section __DWARF,__debug_macinfo,regular,debug";
|
||||
|
||||
// Exceptions handling
|
||||
SupportsExceptionHandling = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user