summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2011-02-24 21:04:00 +0000
committerDevang Patel <dpatel@apple.com>2011-02-24 21:04:00 +0000
commitb037383a35660151cc2a8814c0854a6b65039925 (patch)
tree917246738524d5a8dd6edd4b8705bab59b2b11e2 /llvm/lib/Target
parent502f1b943f54728efdae52362b4b1a46dba57d7b (diff)
downloadbcm5719-llvm-b037383a35660151cc2a8814c0854a6b65039925.tar.gz
bcm5719-llvm-b037383a35660151cc2a8814c0854a6b65039925.zip
Enable DebugInfo support for COFF object files.
Patch by Nathan Jeffords! llvm-svn: 126425
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/PTX/PTXMCAsmStreamer.cpp3
-rw-r--r--llvm/lib/Target/X86/X86AsmBackend.cpp4
-rw-r--r--llvm/lib/Target/X86/X86FixupKinds.h2
-rw-r--r--llvm/lib/Target/X86/X86MCAsmInfo.cpp3
4 files changed, 11 insertions, 1 deletions
diff --git a/llvm/lib/Target/PTX/PTXMCAsmStreamer.cpp b/llvm/lib/Target/PTX/PTXMCAsmStreamer.cpp
index 0886ba8008f..da62ebf39b5 100644
--- a/llvm/lib/Target/PTX/PTXMCAsmStreamer.cpp
+++ b/llvm/lib/Target/PTX/PTXMCAsmStreamer.cpp
@@ -124,6 +124,7 @@ public:
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::EmitCOFFSymbolType (int Type) {}
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,
diff --git a/llvm/lib/Target/X86/X86AsmBackend.cpp b/llvm/lib/Target/X86/X86AsmBackend.cpp
index da5f5b182ce..6a0b059ca5a 100644
--- a/llvm/lib/Target/X86/X86AsmBackend.cpp
+++ b/llvm/lib/Target/X86/X86AsmBackend.cpp
@@ -40,6 +40,7 @@ static unsigned getFixupKindLog2Size(unsigned Kind) {
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 @@ public:
{ "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)
diff --git a/llvm/lib/Target/X86/X86FixupKinds.h b/llvm/lib/Target/X86/X86FixupKinds.h
index 17d242ab761..d6cb39ae9a7 100644
--- a/llvm/lib/Target/X86/X86FixupKinds.h
+++ b/llvm/lib/Target/X86/X86FixupKinds.h
@@ -23,6 +23,8 @@ enum Fixups {
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
diff --git a/llvm/lib/Target/X86/X86MCAsmInfo.cpp b/llvm/lib/Target/X86/X86MCAsmInfo.cpp
index 6686214e06f..75bc1ed2bee 100644
--- a/llvm/lib/Target/X86/X86MCAsmInfo.cpp
+++ b/llvm/lib/Target/X86/X86MCAsmInfo.cpp
@@ -113,4 +113,7 @@ X86MCAsmInfoCOFF::X86MCAsmInfoCOFF(const Triple &Triple) {
AssemblerDialect = AsmWriterFlavor;
TextAlignFillValue = 0x90;
+
+ // Debug Information
+ SupportsDebugInformation = true;
}
OpenPOWER on IntegriCloud