[llvm-commits] [llvm] r126425 - in /llvm/trunk: include/llvm/MC/ lib/CodeGen/AsmPrinter/ lib/MC/ lib/Target/PTX/ lib/Target/X86/

Devang Patel dpatel at apple.com
Fri Feb 25 08:42:34 PST 2011


On Feb 25, 2011, at 4:16 AM, Cameron Zwarich wrote:

> There are some Dwarf-related failures on the bots at around the point this landed. I'm going to have to roll it out tomorrow and see if that fixes things.

OK, feel free.
-
Devang
> 
> Sent from my iPhone
> 
> On Feb 24, 2011, at 1:04 PM, Devang Patel <dpatel at apple.com> wrote:
> 
>> Author: dpatel
>> Date: Thu Feb 24 15:04:00 2011
>> New Revision: 126425
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=126425&view=rev
>> Log:
>> Enable DebugInfo support for COFF object files.
>> Patch by Nathan Jeffords!
>> 
>> 
>> Modified:
>>   llvm/trunk/include/llvm/MC/MCStreamer.h
>>   llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
>>   llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp
>>   llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h
>>   llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>>   llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
>>   llvm/trunk/lib/MC/MCAsmInfoCOFF.cpp
>>   llvm/trunk/lib/MC/MCAsmStreamer.cpp
>>   llvm/trunk/lib/MC/MCELFStreamer.cpp
>>   llvm/trunk/lib/MC/MCLoggingStreamer.cpp
>>   llvm/trunk/lib/MC/MCMachOStreamer.cpp
>>   llvm/trunk/lib/MC/MCNullStreamer.cpp
>>   llvm/trunk/lib/MC/MCPureStreamer.cpp
>>   llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp
>>   llvm/trunk/lib/MC/WinCOFFStreamer.cpp
>>   llvm/trunk/lib/Target/PTX/PTXMCAsmStreamer.cpp
>>   llvm/trunk/lib/Target/X86/X86AsmBackend.cpp
>>   llvm/trunk/lib/Target/X86/X86FixupKinds.h
>>   llvm/trunk/lib/Target/X86/X86MCAsmInfo.cpp
>> 
>> Modified: llvm/trunk/include/llvm/MC/MCStreamer.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCStreamer.h?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/MC/MCStreamer.h (original)
>> +++ llvm/trunk/include/llvm/MC/MCStreamer.h Thu Feb 24 15:04:00 2011
>> @@ -239,6 +239,11 @@
>>    /// EndCOFFSymbolDef - Marks the end of the symbol definition.
>>    virtual void EndCOFFSymbolDef() = 0;
>> 
>> +    /// EmitCOFFSecRel32 - Emits a COFF section relative relocation.
>> +    ///
>> +    /// @param Symbol - Symbol the section relative realocation should point to.
>> +    virtual void EmitCOFFSecRel32(MCSymbol const *Symbol) = 0;
>> +
>>    /// EmitELFSize - Emit an ELF .size directive.
>>    ///
>>    /// This corresponds to an assembler statement such as:
>> 
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp Thu Feb 24 15:04:00 2011
>> @@ -178,8 +178,7 @@
>>                                   const MCSymbol *SectionLabel) const {
>>  // On COFF targets, we have to emit the special .secrel32 directive.
>>  if (const char *SecOffDir = MAI->getDwarfSectionOffsetDirective()) {
>> -    // FIXME: MCize.
>> -    OutStreamer.EmitRawText(SecOffDir + Twine(Label->getName()));
>> +    OutStreamer.EmitCOFFSecRel32(Label);
>>    return;
>>  }
>> 
>> 
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp Thu Feb 24 15:04:00 2011
>> @@ -277,6 +277,29 @@
>> #endif
>> 
>> //===----------------------------------------------------------------------===//
>> +// DIESectionOffset Implementation
>> +//===----------------------------------------------------------------------===//
>> +
>> +/// EmitValue - Emit label value.
>> +///
>> +void DIESectionOffset::EmitValue(AsmPrinter *AP, unsigned Form) const {
>> +  AP->EmitSectionOffset (Label, Label);
>> +}
>> +
>> +/// SizeOf - Determine size of label value in bytes.
>> +///
>> +unsigned DIESectionOffset::SizeOf(AsmPrinter *AP, unsigned Form) const {
>> +  if (Form == dwarf::DW_FORM_data4) return 4;
>> +  return AP->getTargetData().getPointerSize();
>> +}
>> +
>> +#ifndef NDEBUG
>> +void DIESectionOffset::print(raw_ostream &O) {
>> +  O << "SecRelLbl: " << Label->getName();
>> +}
>> +#endif
>> +
>> +//===----------------------------------------------------------------------===//
>> // DIEDelta Implementation
>> //===----------------------------------------------------------------------===//
>> 
>> 
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h Thu Feb 24 15:04:00 2011
>> @@ -333,6 +333,36 @@
>>  };
>> 
>>  //===--------------------------------------------------------------------===//
>> +  /// DIESectionOffset - A section relative label expression DIE.
>> +  //
>> +  class DIESectionOffset : public DIEValue {
>> +    const MCSymbol *Label;
>> +  public:
>> +    explicit DIESectionOffset(const MCSymbol *L) : DIEValue(isSectionOffset),
>> +      Label(L) {}
>> +
>> +    /// EmitValue - Emit label value.
>> +    ///
>> +    virtual void EmitValue(AsmPrinter *AP, unsigned Form) const;
>> +
>> +    /// getValue - Get MCSymbol.
>> +    ///
>> +    const MCSymbol *getValue()       const { return Label; }
>> +
>> +    /// SizeOf - Determine size of label value in bytes.
>> +    ///
>> +    virtual unsigned SizeOf(AsmPrinter *AP, unsigned Form) const;
>> +
>> +    // Implement isa/cast/dyncast.
>> +    static bool classof(const DIELabel *)  { return true; }
>> +    static bool classof(const DIEValue *L) { return L->getType() == isSectionOffset; }
>> +
>> +#ifndef NDEBUG
>> +    virtual void print(raw_ostream &O);
>> +#endif
>> +  };
>> +
>> +  //===--------------------------------------------------------------------===//
>>  /// DIEDelta - A simple label difference DIE.
>>  ///
>>  class DIEDelta : public DIEValue {
>> 
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Thu Feb 24 15:04:00 2011
>> @@ -481,6 +481,15 @@
>>  Die->addValue(Attribute, Form, Value);
>> }
>> 
>> +/// addSectionOffset - Add a Dwarf section relative label attribute data and
>> +/// value.
>> +///
>> +void DwarfDebug::addSectionOffset(DIE *Die, unsigned Attribute, unsigned Form,
>> +                          const MCSymbol *Label) {
>> +  DIEValue *Value = new (DIEValueAllocator) DIESectionOffset(Label);
>> +  Die->addValue(Attribute, Form, Value);
>> +}
>> +
>> /// addDelta - Add a label delta attribute data and value.
>> ///
>> void DwarfDebug::addDelta(DIE *Die, unsigned Attribute, unsigned Form,
>> @@ -1904,8 +1913,8 @@
>>  // DW_AT_stmt_list is a offset of line number information for this
>>  // compile unit in debug_line section.
>>  if (Asm->MAI->doesDwarfUsesAbsoluteLabelForStmtList())
>> -    addLabel(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_addr,
>> -             Asm->GetTempSymbol("section_line"));
>> +    addSectionOffset(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_addr,
>> +                     Asm->GetTempSymbol("section_line"));
>>  else
>>    addUInt(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4, 0);
>> 
>> 
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h Thu Feb 24 15:04:00 2011
>> @@ -280,6 +280,12 @@
>>  void addLabel(DIE *Die, unsigned Attribute, unsigned Form,
>>                const MCSymbol *Label);
>> 
>> +  /// addSectionOffset - Add a Dwarf section relative label attribute data and
>> +  /// value.
>> +  ///
>> +  void addSectionOffset(DIE *Die, unsigned Attribute, unsigned Form,
>> +                const MCSymbol *Label);
>> +
>>  /// addDelta - Add a label delta attribute data and value.
>>  ///
>>  void addDelta(DIE *Die, unsigned Attribute, unsigned Form,
>> 
>> Modified: llvm/trunk/lib/MC/MCAsmInfoCOFF.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmInfoCOFF.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/MC/MCAsmInfoCOFF.cpp (original)
>> +++ llvm/trunk/lib/MC/MCAsmInfoCOFF.cpp Thu Feb 24 15:04:00 2011
>> @@ -33,5 +33,6 @@
>>  HasLEB128 = true;  // Target asm supports leb128 directives (little-endian)
>>  SupportsDebugInformation = true;
>>  DwarfSectionOffsetDirective = "\t.secrel32\t";
>> +  DwarfUsesAbsoluteLabelForStmtList = false;
>>  HasMicrosoftFastStdCallMangling = true;
>> }
>> 
>> Modified: llvm/trunk/lib/MC/MCAsmStreamer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmStreamer.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/MC/MCAsmStreamer.cpp (original)
>> +++ llvm/trunk/lib/MC/MCAsmStreamer.cpp Thu Feb 24 15:04:00 2011
>> @@ -135,6 +135,7 @@
>>  virtual void EmitCOFFSymbolStorageClass(int StorageClass);
>>  virtual void EmitCOFFSymbolType(int Type);
>>  virtual void EndCOFFSymbolDef();
>> +  virtual void EmitCOFFSecRel32(MCSymbol const *Symbol);
>>  virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value);
>>  virtual void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
>>                                unsigned ByteAlignment);
>> @@ -384,6 +385,11 @@
>>  EmitEOL();
>> }
>> 
>> +void MCAsmStreamer::EmitCOFFSecRel32(MCSymbol const *Symbol) {
>> +  OS << "\t.secrel32\t" << *Symbol << '\n';
>> +  EmitEOL();
>> +}
>> +
>> void MCAsmStreamer::EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {
>>  assert(MAI.hasDotTypeDotSizeDirective());
>>  OS << "\t.size\t" << *Symbol << ", " << *Value << '\n';
>> 
>> Modified: llvm/trunk/lib/MC/MCELFStreamer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCELFStreamer.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/MC/MCELFStreamer.cpp (original)
>> +++ llvm/trunk/lib/MC/MCELFStreamer.cpp Thu Feb 24 15:04:00 2011
>> @@ -108,6 +108,10 @@
>>    assert(0 && "ELF doesn't support this directive");
>>  }
>> 
>> +  virtual void EmitCOFFSecRel32(MCSymbol const *Symbol) {
>> +    assert(0 && "ELF doesn't support this directive");
>> +  }
>> +
>>  virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {
>>     MCSymbolData &SD = getAssembler().getOrCreateSymbolData(*Symbol);
>>     SD.setSize(Value);
>> 
>> Modified: llvm/trunk/lib/MC/MCLoggingStreamer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCLoggingStreamer.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/MC/MCLoggingStreamer.cpp (original)
>> +++ llvm/trunk/lib/MC/MCLoggingStreamer.cpp Thu Feb 24 15:04:00 2011
>> @@ -120,6 +120,11 @@
>>    return Child->EndCOFFSymbolDef();
>>  }
>> 
>> +  virtual void EmitCOFFSecRel32(MCSymbol const *Symbol) {
>> +    LogCall("EndCOFFSymbolDef");
>> +    return Child->EmitCOFFSecRel32(Symbol);
>> +  }
>> +
>>  virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {
>>    LogCall("EmitELFSize");
>>    return Child->EmitELFSize(Symbol, Value);
>> 
>> Modified: llvm/trunk/lib/MC/MCMachOStreamer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCMachOStreamer.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/MC/MCMachOStreamer.cpp (original)
>> +++ llvm/trunk/lib/MC/MCMachOStreamer.cpp Thu Feb 24 15:04:00 2011
>> @@ -63,6 +63,9 @@
>>  virtual void EndCOFFSymbolDef() {
>>    assert(0 && "macho doesn't support this directive");
>>  }
>> +  virtual void EmitCOFFSecRel32(MCSymbol const *Symbol) {
>> +    assert(0 && "macho doesn't support this directive");
>> +  }
>>  virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {
>>    assert(0 && "macho doesn't support this directive");
>>  }
>> 
>> Modified: llvm/trunk/lib/MC/MCNullStreamer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCNullStreamer.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/MC/MCNullStreamer.cpp (original)
>> +++ llvm/trunk/lib/MC/MCNullStreamer.cpp Thu Feb 24 15:04:00 2011
>> @@ -54,6 +54,7 @@
>>    virtual void EmitCOFFSymbolStorageClass(int StorageClass) {}
>>    virtual void EmitCOFFSymbolType(int Type) {}
>>    virtual void EndCOFFSymbolDef() {}
>> +    virtual void EmitCOFFSecRel32(MCSymbol const *Symbol) {}
>> 
>>    virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {}
>>    virtual void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
>> 
>> Modified: llvm/trunk/lib/MC/MCPureStreamer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCPureStreamer.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/MC/MCPureStreamer.cpp (original)
>> +++ llvm/trunk/lib/MC/MCPureStreamer.cpp Thu Feb 24 15:04:00 2011
>> @@ -83,6 +83,9 @@
>>  virtual void EndCOFFSymbolDef() {
>>    report_fatal_error("unsupported directive in pure streamer");
>>  }
>> +  virtual void EmitCOFFSecRel32(MCSymbol const *Symbol) {
>> +    report_fatal_error("unsupported directive in pure streamer");
>> +  }
>>  virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {
>>    report_fatal_error("unsupported directive in pure streamer");
>>  }
>> 
>> Modified: llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp (original)
>> +++ llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp Thu Feb 24 15:04:00 2011
>> @@ -705,6 +705,10 @@
>>    else
>>      llvm_unreachable("unsupported relocation type");
>>    break;
>> +  case X86::reloc_coff_secrel32:
>> +    Reloc.Data.Type = Is64Bit ? COFF::IMAGE_REL_AMD64_SREL32
>> +                              : COFF::IMAGE_REL_I386_SECREL;
>> +    break;
>>  default:
>>    llvm_unreachable("unsupported relocation type");
>>  }
>> 
>> Modified: llvm/trunk/lib/MC/WinCOFFStreamer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WinCOFFStreamer.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/MC/WinCOFFStreamer.cpp (original)
>> +++ llvm/trunk/lib/MC/WinCOFFStreamer.cpp Thu Feb 24 15:04:00 2011
>> @@ -31,6 +31,9 @@
>> #include "llvm/Support/Debug.h"
>> #include "llvm/Support/ErrorHandling.h"
>> #include "llvm/Support/raw_ostream.h"
>> +
>> +#include "../Target/X86/X86FixupKinds.h"
>> +
>> using namespace llvm;
>> 
>> namespace {
>> @@ -59,6 +62,7 @@
>>  virtual void EmitCOFFSymbolStorageClass(int StorageClass);
>>  virtual void EmitCOFFSymbolType(int Type);
>>  virtual void EndCOFFSymbolDef();
>> +  virtual void EmitCOFFSecRel32(MCSymbol const *Symbol);
>>  virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value);
>>  virtual void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
>>                                unsigned ByteAlignment);
>> @@ -290,6 +294,16 @@
>>  CurSymbol = NULL;
>> }
>> 
>> +void WinCOFFStreamer::EmitCOFFSecRel32(MCSymbol const *Symbol)
>> +{
>> +  MCDataFragment *DF = getOrCreateDataFragment();
>> +
>> +  DF->addFixup(MCFixup::Create(DF->getContents().size(),
>> +                               MCSymbolRefExpr::Create (Symbol, getContext ()),
>> +                               (MCFixupKind)X86::reloc_coff_secrel32));
>> +  DF->getContents().resize(DF->getContents().size() + 4, 0);
>> +}
>> +
>> void WinCOFFStreamer::EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {
>>  llvm_unreachable("not implemented");
>> }
>> @@ -368,6 +382,10 @@
>> 
>>  getCurrentSectionData()->setHasInstructions(true);
>> 
>> +  // Now that a machine instruction has been assembled into this section, make
>> +  // a line entry for any .loc directive that has been seen.
>> +  MCLineEntry::Make(this, getCurrentSection());
>> +
>>  MCInstFragment *Fragment =
>>    new MCInstFragment(Instruction, getCurrentSectionData());
>> 
>> 
>> Modified: llvm/trunk/lib/Target/PTX/PTXMCAsmStreamer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/PTXMCAsmStreamer.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/PTX/PTXMCAsmStreamer.cpp (original)
>> +++ llvm/trunk/lib/Target/PTX/PTXMCAsmStreamer.cpp Thu Feb 24 15:04:00 2011
>> @@ -124,6 +124,7 @@
>>  virtual void EmitCOFFSymbolStorageClass(int StorageClass);
>>  virtual void EmitCOFFSymbolType(int Type);
>>  virtual void EndCOFFSymbolDef();
>> +  virtual void EmitCOFFSecRel32(MCSymbol const *Symbol);
>>  virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value);
>>  virtual void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
>>                                unsigned ByteAlignment);
>> @@ -277,6 +278,8 @@
>> 
>> void PTXMCAsmStreamer::EndCOFFSymbolDef() {}
>> 
>> +void PTXMCAsmStreamer::EmitCOFFSecRel32(MCSymbol const *Symbol) {}
>> +
>> void PTXMCAsmStreamer::EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {}
>> 
>> void PTXMCAsmStreamer::EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
>> 
>> Modified: llvm/trunk/lib/Target/X86/X86AsmBackend.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86AsmBackend.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86AsmBackend.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86AsmBackend.cpp Thu Feb 24 15:04:00 2011
>> @@ -40,6 +40,7 @@
>>  case X86::reloc_riprel_4byte_movq_load:
>>  case X86::reloc_signed_4byte:
>>  case X86::reloc_global_offset_table:
>> +  case X86::reloc_coff_secrel32:
>>  case FK_Data_4: return 2;
>>  case FK_PCRel_8:
>>  case FK_Data_8: return 3;
>> @@ -69,7 +70,8 @@
>>      { "reloc_riprel_4byte", 0, 4 * 8, MCFixupKindInfo::FKF_IsPCRel },
>>      { "reloc_riprel_4byte_movq_load", 0, 4 * 8, MCFixupKindInfo::FKF_IsPCRel},
>>      { "reloc_signed_4byte", 0, 4 * 8, 0},
>> -      { "reloc_global_offset_table", 0, 4 * 8, 0}
>> +      { "reloc_global_offset_table", 0, 4 * 8, 0},
>> +      { "reloc_coff_secrel32", 0, 4 * 8, 0}
>>    };
>> 
>>    if (Kind < FirstTargetFixupKind)
>> 
>> Modified: llvm/trunk/lib/Target/X86/X86FixupKinds.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FixupKinds.h?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86FixupKinds.h (original)
>> +++ llvm/trunk/lib/Target/X86/X86FixupKinds.h Thu Feb 24 15:04:00 2011
>> @@ -23,6 +23,8 @@
>>  reloc_global_offset_table,                 // 32-bit, relative to the start
>>                                             // of the instruction. Used only
>>                                             // for _GLOBAL_OFFSET_TABLE_.
>> +  reloc_coff_secrel32,                       // PE-COFF section relative 32
>> +                                             // (only valid for win32 COFF)
>>  // Marker
>>  LastTargetFixupKind,
>>  NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
>> 
>> Modified: llvm/trunk/lib/Target/X86/X86MCAsmInfo.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86MCAsmInfo.cpp?rev=126425&r1=126424&r2=126425&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86MCAsmInfo.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86MCAsmInfo.cpp Thu Feb 24 15:04:00 2011
>> @@ -113,4 +113,7 @@
>>  AssemblerDialect = AsmWriterFlavor;
>> 
>>  TextAlignFillValue = 0x90;
>> +  
>> +  // Debug Information
>> +  SupportsDebugInformation = true;
>> }
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list