Add .pdata and .xdata sections to the COFF TLOF implementation.
authorCharles Davis <cdavis@mines.edu>
Fri, 20 May 2011 22:13:55 +0000 (22:13 +0000)
committerCharles Davis <cdavis@mines.edu>
Fri, 20 May 2011 22:13:55 +0000 (22:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131763 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
include/llvm/Target/TargetLoweringObjectFile.h
lib/CodeGen/TargetLoweringObjectFileImpl.cpp

index 829f580df33d74bc9db16ce05cfa12daea9da029..c61cf399f82eba57a53c2bd988b24d83c4c57dea 100644 (file)
@@ -58,6 +58,8 @@ public:
   virtual void Initialize(MCContext &Ctx, const TargetMachine &TM);
 
   virtual const MCSection *getEHFrameSection() const;
+  virtual const MCSection *getWin64EHFuncTableSection() const { return NULL; }
+  virtual const MCSection *getWin64EHTableSection() const { return NULL; }
 
   virtual void emitPersonalityValue(MCStreamer &Streamer,
                                     const TargetMachine &TM,
@@ -133,6 +135,8 @@ public:
   virtual void Initialize(MCContext &Ctx, const TargetMachine &TM);
 
   virtual const MCSection *getEHFrameSection() const;
+  virtual const MCSection *getWin64EHFuncTableSection() const { return NULL; }
+  virtual const MCSection *getWin64EHTableSection() const { return NULL; }
 
   virtual const MCSection *
   SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
@@ -196,6 +200,8 @@ public:
 
 class TargetLoweringObjectFileCOFF : public TargetLoweringObjectFile {
   const MCSection *DrectveSection;
+  const MCSection *PDataSection;
+  const MCSection *XDataSection;
 public:
   TargetLoweringObjectFileCOFF() {}
   ~TargetLoweringObjectFileCOFF() {}
@@ -203,6 +209,10 @@ public:
   virtual void Initialize(MCContext &Ctx, const TargetMachine &TM);
 
   virtual const MCSection *getEHFrameSection() const;
+  virtual const MCSection *getWin64EHFuncTableSection() const {
+    return PDataSection;
+  }
+  virtual const MCSection *getWin64EHTableSection() const {return XDataSection;}
 
   virtual const MCSection *getDrectveSection() const { return DrectveSection; }
 
index ec814ff04482eb25c975f86e7a4e890593686559..78d49a96a6a099af5845d3271d180278e9358e3c 100644 (file)
@@ -155,6 +155,8 @@ public:
   const MCSection *getTLSExtraDataSection() const {
     return TLSExtraDataSection;
   }
+  virtual const MCSection *getWin64EHFuncTableSection() const = 0;
+  virtual const MCSection *getWin64EHTableSection() const = 0;
   
   /// shouldEmitUsedDirectiveFor - This hook allows targets to selectively
   /// decide not to emit the UsedDirective for some symbols in llvm.used.
index c1e1b76c56381db2594be46ef89122b6e56af45d..964919e7b3c6763241de9d6dbe5eeb7a40ed1f31 100644 (file)
@@ -941,6 +941,7 @@ void TargetLoweringObjectFileCOFF::Initialize(MCContext &Ctx,
                                 SectionKind::getMetadata());
   DwarfLineSection =
     getContext().getCOFFSection(".debug_line",
+                                SectionKind::getMetadata());
                                 COFF::IMAGE_SCN_MEM_DISCARDABLE |
                                 COFF::IMAGE_SCN_MEM_READ,
                                 SectionKind::getMetadata());
@@ -989,6 +990,20 @@ void TargetLoweringObjectFileCOFF::Initialize(MCContext &Ctx,
     getContext().getCOFFSection(".drectve",
                                 COFF::IMAGE_SCN_LNK_INFO,
                                 SectionKind::getMetadata());
+
+  PDataSection =
+    getContext().getCOFFSection(".pdata",
+                                COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
+                                COFF::IMAGE_SCN_MEM_READ |
+                                COFF::IMAGE_SCN_MEM_WRITE,
+                                SectionKind::getDataRel());
+
+  XDataSection =
+    getContext().getCOFFSection(".xdata",
+                                COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
+                                COFF::IMAGE_SCN_MEM_READ |
+                                COFF::IMAGE_SCN_MEM_WRITE,
+                                SectionKind::getDataRel());
 }
 
 const MCSection *TargetLoweringObjectFileCOFF::getEHFrameSection() const {