using namespace llvm;
using namespace llvm::dwarf;
-PPCTargetAsmInfo::PPCTargetAsmInfo(const PPCTargetMachine &TM) {
- bool isPPC64 = TM.getSubtargetImpl()->isPPC64();
-
- ZeroDirective = "\t.space\t";
- SetDirective = "\t.set";
- Data64bitsDirective = isPPC64 ? "\t.quad\t" : 0;
- AlignmentIsInBytes = false;
- LCOMMDirective = "\t.lcomm\t";
- InlineAsmStart = "# InlineAsm Start";
- InlineAsmEnd = "# InlineAsm End";
- AssemblerDialect = TM.getSubtargetImpl()->getAsmFlavor();
-}
-
PPCDarwinTargetAsmInfo::PPCDarwinTargetAsmInfo(const PPCTargetMachine &TM):
- PPCTargetAsmInfo(TM), DarwinTargetAsmInfo(TM) {
+ PPCTargetAsmInfo<DarwinTargetAsmInfo>(TM) {
PCSymbol = ".";
CommentString = ";";
GlobalPrefix = "_";
StaticCtorsSection = ".mod_init_func";
StaticDtorsSection = ".mod_term_func";
}
+ HasSingleParameterDotFile = false;
SwitchToSectionDirective = "\t.section ";
UsedDirective = "\t.no_dead_strip\t";
WeakDefDirective = "\t.weak_definition ";
return DW_EH_PE_absptr;
}
+const char *
+PPCDarwinTargetAsmInfo::getEHGlobalPrefix() const
+{
+ const PPCSubtarget* Subtarget = &TM.getSubtarget<PPCSubtarget>();
+ if (Subtarget->getDarwinVers() > 9)
+ return PrivateGlobalPrefix;
+ else
+ return "";
+}
PPCLinuxTargetAsmInfo::PPCLinuxTargetAsmInfo(const PPCTargetMachine &TM) :
- PPCTargetAsmInfo(TM), ELFTargetAsmInfo(TM) {
+ PPCTargetAsmInfo<ELFTargetAsmInfo>(TM) {
CommentString = "#";
GlobalPrefix = "";
- PrivateGlobalPrefix = "";
+ PrivateGlobalPrefix = ".L";
ConstantPoolSection = "\t.section .rodata.cst4\t";
JumpTableDataSection = ".section .rodata.cst4";
CStringSection = ".rodata.str";
// We really need to write something here.
return TargetAsmInfo::PreferredEHDataFormat(Reason, Global);
}
+
+// Instantiate default implementation.
+TEMPLATE_INSTANTIATION(class PPCTargetAsmInfo<TargetAsmInfo>);