diff options
-rw-r--r-- | lib/CodeGen/AsmPrinter.cpp | 12 | ||||
-rw-r--r-- | lib/CodeGen/DwarfWriter.cpp | 52 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCAsmPrinter.cpp | 10 | ||||
-rwxr-xr-x | lib/Target/X86/X86ATTAsmPrinter.cpp | 12 | ||||
-rw-r--r-- | lib/Target/X86/X86AsmPrinter.cpp | 12 | ||||
-rwxr-xr-x | lib/Target/X86/X86AsmPrinter.h | 4 | ||||
-rw-r--r-- | lib/Target/X86/X86ISelLowering.cpp | 4 | ||||
-rwxr-xr-x | lib/Target/X86/X86IntelAsmPrinter.cpp | 8 | ||||
-rw-r--r-- | lib/Target/X86/X86TargetAsmInfo.cpp | 18 |
9 files changed, 80 insertions, 52 deletions
diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp index bfd0e37924..05761d1647 100644 --- a/lib/CodeGen/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter.cpp @@ -96,7 +96,7 @@ bool AsmPrinter::doInitialization(Module &M) { << "\n" << TAI->getCommentString() << " End of file scope inline assembly\n"; - SwitchToDataSection("", 0); // Reset back to no section. + SwitchToDataSection(""); // Reset back to no section. if (MachineDebugInfo *DebugInfo = getAnalysisToUpdate<MachineDebugInfo>()) { DebugInfo->AnalyzeModule(M); @@ -160,7 +160,7 @@ void AsmPrinter::EmitConstantPool(unsigned Alignment, const char *Section, std::vector<std::pair<MachineConstantPoolEntry,unsigned> > &CP) { if (CP.empty()) return; - SwitchToDataSection(Section, 0); + SwitchToDataSection(Section); EmitAlignment(Alignment); for (unsigned i = 0, e = CP.size(); i != e; ++i) { O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << '_' @@ -203,7 +203,7 @@ void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI, if (TM.getRelocationModel() == Reloc::PIC_) { TargetLowering *LoweringInfo = TM.getTargetLowering(); if (LoweringInfo && LoweringInfo->usesGlobalOffsetTable()) { - SwitchToDataSection(TAI->getJumpTableDataSection(), 0); + SwitchToDataSection(TAI->getJumpTableDataSection()); if (TD->getPointerSize() == 8 && !JTEntryDirective) JTEntryDirective = TAI->getData64bitsDirective(); } else { @@ -213,7 +213,7 @@ void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI, SwitchToTextSection(getSectionForFunction(*F).c_str(), F); } } else { - SwitchToDataSection(TAI->getJumpTableDataSection(), 0); + SwitchToDataSection(TAI->getJumpTableDataSection()); if (TD->getPointerSize() == 8) JTEntryDirective = TAI->getData64bitsDirective(); } @@ -279,14 +279,14 @@ bool AsmPrinter::EmitSpecialLLVMGlobal(const GlobalVariable *GV) { } if (GV->getName() == "llvm.global_ctors" && GV->use_empty()) { - SwitchToDataSection(TAI->getStaticCtorsSection(), 0); + SwitchToDataSection(TAI->getStaticCtorsSection()); EmitAlignment(2, 0); EmitXXStructorList(GV->getInitializer()); return true; } if (GV->getName() == "llvm.global_dtors" && GV->use_empty()) { - SwitchToDataSection(TAI->getStaticDtorsSection(), 0); + SwitchToDataSection(TAI->getStaticDtorsSection()); EmitAlignment(2, 0); EmitXXStructorList(GV->getInitializer()); return true; diff --git a/lib/CodeGen/DwarfWriter.cpp b/lib/CodeGen/DwarfWriter.cpp index 983d8f5182..7bec4d3cc4 100644 --- a/lib/CodeGen/DwarfWriter.cpp +++ b/lib/CodeGen/DwarfWriter.cpp @@ -2176,30 +2176,30 @@ void Dwarf::EmitInitial() { // Dwarf sections base addresses. if (TAI->getDwarfRequiresFrameSection()) { - Asm->SwitchToDataSection(TAI->getDwarfFrameSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfFrameSection()); EmitLabel("section_frame", 0); } - Asm->SwitchToDataSection(TAI->getDwarfInfoSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfInfoSection()); EmitLabel("section_info", 0); - Asm->SwitchToDataSection(TAI->getDwarfAbbrevSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfAbbrevSection()); EmitLabel("section_abbrev", 0); - Asm->SwitchToDataSection(TAI->getDwarfARangesSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfARangesSection()); EmitLabel("section_aranges", 0); - Asm->SwitchToDataSection(TAI->getDwarfMacInfoSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfMacInfoSection()); EmitLabel("section_macinfo", 0); - Asm->SwitchToDataSection(TAI->getDwarfLineSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfLineSection()); EmitLabel("section_line", 0); - Asm->SwitchToDataSection(TAI->getDwarfLocSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfLocSection()); EmitLabel("section_loc", 0); - Asm->SwitchToDataSection(TAI->getDwarfPubNamesSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfPubNamesSection()); EmitLabel("section_pubnames", 0); - Asm->SwitchToDataSection(TAI->getDwarfStrSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfStrSection()); EmitLabel("section_str", 0); - Asm->SwitchToDataSection(TAI->getDwarfRangesSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfRangesSection()); EmitLabel("section_ranges", 0); - Asm->SwitchToTextSection(TAI->getTextSection(), 0); + Asm->SwitchToTextSection(TAI->getTextSection()); EmitLabel("text_begin", 0); - Asm->SwitchToDataSection(TAI->getDataSection(), 0); + Asm->SwitchToDataSection(TAI->getDataSection()); EmitLabel("data_begin", 0); // Emit common frame information. @@ -2408,7 +2408,7 @@ void Dwarf::EmitFrameMoves(const char *BaseLabel, unsigned BaseLabelID, /// void Dwarf::EmitDebugInfo() const { // Start debug info section. - Asm->SwitchToDataSection(TAI->getDwarfInfoSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfInfoSection()); // Process each compile unit. for (unsigned i = 0, N = CompileUnits.size(); i < N; ++i) { @@ -2444,7 +2444,7 @@ void Dwarf::EmitAbbreviations() const { // Check to see if it is worth the effort. if (!Abbreviations.empty()) { // Start the debug abbrev section. - Asm->SwitchToDataSection(TAI->getDwarfAbbrevSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfAbbrevSection()); EmitLabel("abbrev_begin", 0); @@ -2477,7 +2477,7 @@ void Dwarf::EmitDebugLines() const { const int MaxLineDelta = 255 + MinLineDelta; // Start the dwarf line section. - Asm->SwitchToDataSection(TAI->getDwarfLineSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfLineSection()); // Construct the section header. @@ -2636,7 +2636,7 @@ void Dwarf::EmitInitialDebugFrame() { TAI->getAddressSize() : -TAI->getAddressSize(); // Start the dwarf frame section. - Asm->SwitchToDataSection(TAI->getDwarfFrameSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfFrameSection()); EmitLabel("frame_common", 0); EmitDifference("frame_common_end", 0, @@ -2669,7 +2669,7 @@ void Dwarf::EmitFunctionDebugFrame() { return; // Start the dwarf frame section. - Asm->SwitchToDataSection(TAI->getDwarfFrameSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfFrameSection()); EmitDifference("frame_end", SubprogramCount, "frame_begin", SubprogramCount); @@ -2699,7 +2699,7 @@ void Dwarf::EmitFunctionDebugFrame() { /// void Dwarf::EmitDebugPubNames() { // Start the dwarf pubnames section. - Asm->SwitchToDataSection(TAI->getDwarfPubNamesSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfPubNamesSection()); // Process each compile unit. for (unsigned i = 0, N = CompileUnits.size(); i < N; ++i) { @@ -2746,7 +2746,7 @@ void Dwarf::EmitDebugStr() { // Check to see if it is worth the effort. if (!StringPool.empty()) { // Start the dwarf str section. - Asm->SwitchToDataSection(TAI->getDwarfStrSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfStrSection()); // For each of strings in the string pool. for (unsigned StringID = 1, N = StringPool.size(); @@ -2766,7 +2766,7 @@ void Dwarf::EmitDebugStr() { /// void Dwarf::EmitDebugLoc() { // Start the dwarf loc section. - Asm->SwitchToDataSection(TAI->getDwarfLocSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfLocSection()); O << "\n"; } @@ -2775,7 +2775,7 @@ void Dwarf::EmitDebugLoc() { /// void Dwarf::EmitDebugARanges() { // Start the dwarf aranges section. - Asm->SwitchToDataSection(TAI->getDwarfARangesSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfARangesSection()); // FIXME - Mock up #if 0 @@ -2816,7 +2816,7 @@ void Dwarf::EmitDebugARanges() { /// void Dwarf::EmitDebugRanges() { // Start the dwarf ranges section. - Asm->SwitchToDataSection(TAI->getDwarfRangesSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfRangesSection()); O << "\n"; } @@ -2825,7 +2825,7 @@ void Dwarf::EmitDebugRanges() { /// void Dwarf::EmitDebugMacInfo() { // Start the dwarf macinfo section. - Asm->SwitchToDataSection(TAI->getDwarfMacInfoSection(), 0); + Asm->SwitchToDataSection(TAI->getDwarfMacInfoSection()); O << "\n"; } @@ -2939,14 +2939,14 @@ void Dwarf::EndModule() { EOL("Dwarf End Module"); // Standard sections final addresses. - Asm->SwitchToTextSection(TAI->getTextSection(), 0); + Asm->SwitchToTextSection(TAI->getTextSection()); EmitLabel("text_end", 0); - Asm->SwitchToDataSection(TAI->getDataSection(), 0); + Asm->SwitchToDataSection(TAI->getDataSection()); EmitLabel("data_end", 0); // End text sections. for (unsigned i = 1, N = SectionMap.size(); i <= N; ++i) { - Asm->SwitchToTextSection(SectionMap[i].c_str(), 0); + Asm->SwitchToTextSection(SectionMap[i].c_str()); EmitLabel("section_end", i); } diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index 21c2f740af..aafc7825f4 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -577,7 +577,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) { for (std::set<std::string>::iterator i = FnStubs.begin(), e = FnStubs.end(); i != e; ++i) { SwitchToTextSection(".section __TEXT,__picsymbolstub1,symbol_stubs," - "pure_instructions,32", 0); + "pure_instructions,32"); EmitAlignment(4); O << "L" << *i << "$stub:\n"; O << "\t.indirect_symbol " << *i << "\n"; @@ -593,7 +593,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) { O << "\tlwzu r12,lo16(L" << *i << "$lazy_ptr-L0$" << *i << ")(r11)\n"; O << "\tmtctr r12\n"; O << "\tbctr\n"; - SwitchToDataSection(".lazy_symbol_pointer", 0); + SwitchToDataSection(".lazy_symbol_pointer"); O << "L" << *i << "$lazy_ptr:\n"; O << "\t.indirect_symbol " << *i << "\n"; if (isPPC64) @@ -605,7 +605,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) { for (std::set<std::string>::iterator i = FnStubs.begin(), e = FnStubs.end(); i != e; ++i) { SwitchToTextSection(".section __TEXT,__symbol_stub1,symbol_stubs," - "pure_instructions,16", 0); + "pure_instructions,16"); EmitAlignment(4); O << "L" << *i << "$stub:\n"; O << "\t.indirect_symbol " << *i << "\n"; @@ -616,7 +616,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) { O << "\tlwzu r12,lo16(L" << *i << "$lazy_ptr)(r11)\n"; O << "\tmtctr r12\n"; O << "\tbctr\n"; - SwitchToDataSection(".lazy_symbol_pointer", 0); + SwitchToDataSection(".lazy_symbol_pointer"); O << "L" << *i << "$lazy_ptr:\n"; O << "\t.indirect_symbol " << *i << "\n"; if (isPPC64) @@ -630,7 +630,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) { // Output stubs for external and common global variables. if (GVStubs.begin() != GVStubs.end()) { - SwitchToDataSection(".non_lazy_symbol_pointer", 0); + SwitchToDataSection(".non_lazy_symbol_pointer"); for (std::set<std::string>::iterator I = GVStubs.begin(), E = GVStubs.end(); I != E; ++I) { O << "L" << *I << "$non_lazy_ptr:\n"; diff --git a/lib/Target/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp index 42af5b69ac..d6199dc0e9 100755 --- a/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -52,7 +52,9 @@ std::string X86ATTAsmPrinter::getSectionForFunction(const Function &F) const { /// method to print assembly for each instruction. /// bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { - if (Subtarget->isTargetDarwin() || Subtarget->isTargetELF()) { + if (Subtarget->isTargetDarwin() || + Subtarget->isTargetELF() || + Subtarget->isTargetCygwin()) { // Let PassManager know we need debug information and relay // the MachineDebugInfo address on to DwarfWriter. DW.SetDebugInfo(&getAnalysis<MachineDebugInfo>()); @@ -111,7 +113,9 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { F->getLinkage() == Function::WeakLinkage)) O << "_llvm$workaround$fake$stub_" << CurrentFnName << ":\n"; - if (Subtarget->isTargetDarwin() || Subtarget->isTargetELF()) { + if (Subtarget->isTargetDarwin() || + Subtarget->isTargetELF() || + Subtarget->isTargetCygwin()) { // Emit pre-function debug information. DW.BeginFunction(&MF); } @@ -141,7 +145,9 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { if (TAI->hasDotTypeDotSizeDirective()) O << "\t.size " << CurrentFnName << ", .-" << CurrentFnName << "\n"; - if (Subtarget->isTargetDarwin() || Subtarget->isTargetELF()) { + if (Subtarget->isTargetDarwin() || + Subtarget->isTargetELF() || + Subtarget->isTargetCygwin()) { // Emit post-function debug information. DW.EndFunction(); } diff --git a/lib/Target/X86/X86AsmPrinter.cpp b/lib/Target/X86/X86AsmPrinter.cpp index 9ef0ad1027..41ce91a1a3 100644 --- a/lib/Target/X86/X86AsmPrinter.cpp +++ b/lib/Target/X86/X86AsmPrinter.cpp @@ -116,7 +116,7 @@ bool X86SharedAsmPrinter::doInitialization(Module &M) { // Emit initial debug information. DW.BeginModule(&M); - } else if (Subtarget->isTargetELF()) { + } else if (Subtarget->isTargetELF() || Subtarget->isTargetCygwin()) { // Emit initial debug information. DW.BeginModule(&M); } @@ -253,7 +253,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) { // Output linker support code for dllexported globals if (DLLExportedGVs.begin() != DLLExportedGVs.end()) { - SwitchToDataSection(".section .drectve", 0); + SwitchToDataSection(".section .drectve"); } for (std::set<std::string>::iterator i = DLLExportedGVs.begin(), @@ -263,7 +263,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) { } if (DLLExportedFns.begin() != DLLExportedFns.end()) { - SwitchToDataSection(".section .drectve", 0); + SwitchToDataSection(".section .drectve"); } for (std::set<std::string>::iterator i = DLLExportedFns.begin(), @@ -273,7 +273,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) { } if (Subtarget->isTargetDarwin()) { - SwitchToDataSection("", 0); + SwitchToDataSection(""); // Output stubs for dynamically-linked functions unsigned j = 1; @@ -291,7 +291,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) { // Output stubs for external and common global variables. if (GVStubs.begin() != GVStubs.end()) SwitchToDataSection( - ".section __IMPORT,__pointers,non_lazy_symbol_pointers", 0); + ".section __IMPORT,__pointers,non_lazy_symbol_pointers"); for (std::set<std::string>::iterator i = GVStubs.begin(), e = GVStubs.end(); i != e; ++i) { O << "L" << *i << "$non_lazy_ptr:\n"; @@ -308,7 +308,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) { // linker can safely perform dead code stripping. Since LLVM never // generates code that does this, it is always safe to set. O << "\t.subsections_via_symbols\n"; - } else if (Subtarget->isTargetELF()) { + } else if (Subtarget->isTargetELF() || Subtarget->isTargetCygwin()) { // Emit final debug information. DW.EndModule(); } diff --git a/lib/Target/X86/X86AsmPrinter.h b/lib/Target/X86/X86AsmPrinter.h index b2fbe0529c..3503e37c0b 100755 --- a/lib/Target/X86/X86AsmPrinter.h +++ b/lib/Target/X86/X86AsmPrinter.h @@ -67,7 +67,9 @@ struct VISIBILITY_HIDDEN X86SharedAsmPrinter : public AsmPrinter { void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); - if (Subtarget->isTargetDarwin() || Subtarget->isTargetELF()) { + if (Subtarget->isTargetDarwin() || + Subtarget->isTargetELF() || + Subtarget->isTargetCygwin()) { AU.addRequired<MachineDebugInfo>(); } MachineFunctionPass::getAnalysisUsage(AU); diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 6de5032ff3..96ab93949d 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -219,7 +219,9 @@ X86TargetLowering::X86TargetLowering(TargetMachine &TM) setOperationAction(ISD::LOCATION, MVT::Other, Expand); setOperationAction(ISD::DEBUG_LOC, MVT::Other, Expand); // FIXME - use subtarget debug flags - if (!Subtarget->isTargetDarwin() && !Subtarget->isTargetELF()) + if (!Subtarget->isTargetDarwin() && + !Subtarget->isTargetELF() && + !Subtarget->isTargetCygwin()) setOperationAction(ISD::DEBUG_LABEL, MVT::Other, Expand); // VASTART needs to be custom lowered to use the VarArgsFrameIndex diff --git a/lib/Target/X86/X86IntelAsmPrinter.cpp b/lib/Target/X86/X86IntelAsmPrinter.cpp index 11caea9dbe..7b2396345c 100755 --- a/lib/Target/X86/X86IntelAsmPrinter.cpp +++ b/lib/Target/X86/X86IntelAsmPrinter.cpp @@ -393,14 +393,14 @@ bool X86IntelAsmPrinter::doFinalization(Module &M) { switch (I->getLinkage()) { case GlobalValue::LinkOnceLinkage: case GlobalValue::WeakLinkage: - SwitchToDataSection("", 0); + SwitchToDataSection(""); O << name << "?\tsegment common 'COMMON'\n"; bCustomSegment = true; // FIXME: the default alignment is 16 bytes, but 1, 2, 4, and 256 // are also available. break; case GlobalValue::AppendingLinkage: - SwitchToDataSection("", 0); + SwitchToDataSection(""); O << name << "?\tsegment public 'DATA'\n"; bCustomSegment = true; // FIXME: the default alignment is 16 bytes, but 1, 2, 4, and 256 @@ -434,7 +434,7 @@ bool X86IntelAsmPrinter::doFinalization(Module &M) { // Output linker support code for dllexported globals if ((DLLExportedGVs.begin() != DLLExportedGVs.end()) || (DLLExportedFns.begin() != DLLExportedFns.end())) { - SwitchToDataSection("", 0); + SwitchToDataSection(""); O << "; WARNING: The following code is valid only with MASM v8.x and (possible) higher\n" << "; This version of MASM is usually shipped with Microsoft Visual Studio 2005\n" << "; or (possible) further versions. Unfortunately, there is no way to support\n" @@ -461,7 +461,7 @@ bool X86IntelAsmPrinter::doFinalization(Module &M) { // Bypass X86SharedAsmPrinter::doFinalization(). AsmPrinter::doFinalization(M); - SwitchToDataSection("", 0); + SwitchToDataSection(""); O << "\tend\n"; return false; // success } diff --git a/lib/Target/X86/X86TargetAsmInfo.cpp b/lib/Target/X86/X86TargetAsmInfo.cpp index 93596c04b4..229473c89c 100644 --- a/lib/Target/X86/X86TargetAsmInfo.cpp +++ b/lib/Target/X86/X86TargetAsmInfo.cpp @@ -90,6 +90,24 @@ X86TargetAsmInfo::X86TargetAsmInfo(const X86TargetMachine &TM) { HasDotTypeDotSizeDirective = false; StaticCtorsSection = "\t.section .ctors,\"aw\""; StaticDtorsSection = "\t.section .dtors,\"aw\""; + + // Set up DWARF directives + HasLEB128 = true; // Target asm supports leb128 directives (little-endian) + PrivateGlobalPrefix = "L"; // Prefix for private global symbols + DwarfRequiresFrameSection = false; + DwarfAbbrevSection = "\t.section\t.debug_abbrev,\"dr\""; + DwarfInfoSection = "\t.section\t.debug_info,\"dr\""; + DwarfLineSection = "\t.section\t.debug_line,\"dr\""; + DwarfFrameSection = "\t.section\t.debug_frame,\"dr\""; + DwarfPubNamesSection ="\t.section\t.debug_pubnames,\"dr\""; + DwarfPubTypesSection ="\t.section\t.debug_pubtypes,\"dr\""; + DwarfStrSection = "\t.section\t.debug_str,\"dr\""; + DwarfLocSection = "\t.section\t.debug_loc,\"dr\""; + DwarfARangesSection = "\t.section\t.debug_aranges,\"dr\""; + DwarfRangesSection = "\t.section\t.debug_ranges,\"dr\""; + DwarfMacInfoSection = "\t.section\t.debug_macinfo,\"dr\""; + break; + break; case X86Subtarget::isWindows: GlobalPrefix = "_"; |