Add a target asm info hook to specify that particular bits of data in the FDE
authorBill Wendling <isanbard@gmail.com>
Tue, 25 Aug 2009 20:21:17 +0000 (20:21 +0000)
committerBill Wendling <isanbard@gmail.com>
Tue, 25 Aug 2009 20:21:17 +0000 (20:21 +0000)
should be forced to 32-bits (.long) even on 64-bit architectures. Darwin wants
these bits to be 64-bits (.quad). However, other platforms may disagree.

This is just the info right now and is part of a work-in-progress which needs
this. We'll add the actual *use* of this soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80024 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCAsmInfo.h
lib/MC/MCAsmInfo.cpp
lib/MC/MCAsmInfoDarwin.cpp

index f788c368a1f86025ec7baa806db850d89719e6fd..1fe6dbf8a20d4fef7835c3d24de60ca64a5cf783 100644 (file)
@@ -254,52 +254,49 @@ namespace llvm {
     //===--- Dwarf Emission Directives -----------------------------------===//
 
     /// AbsoluteDebugSectionOffsets - True if we should emit abolute section
-    /// offsets for debug information. Defaults to false.
-    bool AbsoluteDebugSectionOffsets;
+    /// offsets for debug information.
+    bool AbsoluteDebugSectionOffsets;        // Defaults to false.
 
     /// AbsoluteEHSectionOffsets - True if we should emit abolute section
     /// offsets for EH information. Defaults to false.
     bool AbsoluteEHSectionOffsets;
 
     /// HasLEB128 - True if target asm supports leb128 directives.
-    ///
-    bool HasLEB128; // Defaults to false.
+    bool HasLEB128;                          // Defaults to false.
 
     /// hasDotLocAndDotFile - True if target asm supports .loc and .file
     /// directives for emitting debugging information.
-    ///
-    bool HasDotLocAndDotFile; // Defaults to false.
+    bool HasDotLocAndDotFile;                // Defaults to false.
 
     /// SupportsDebugInformation - True if target supports emission of debugging
     /// information.
-    bool SupportsDebugInformation;
+    bool SupportsDebugInformation;           // Defaults to false.
 
-    /// SupportsExceptionHandling - True if target supports
-    /// exception handling.
-    ///
-    // Defaults to None
-    ExceptionHandling::ExceptionsType ExceptionsType;
+    /// SupportsExceptionHandling - True if target supports exception handling.
+    ExceptionHandling::ExceptionsType ExceptionsType; // Defaults to None
 
     /// RequiresFrameSection - true if the Dwarf2 output needs a frame section
-    ///
-    bool DwarfRequiresFrameSection; // Defaults to true.
+    bool DwarfRequiresFrameSection;          // Defaults to true.
 
     /// DwarfUsesInlineInfoSection - True if DwarfDebugInlineSection is used to
     /// encode inline subroutine information.
-    bool DwarfUsesInlineInfoSection; // Defaults to false.
+    bool DwarfUsesInlineInfoSection;         // Defaults to false.
 
     /// Is_EHSymbolPrivate - If set, the "_foo.eh" is made private so that it
     /// doesn't show up in the symbol table of the object file.
-    bool Is_EHSymbolPrivate;                // Defaults to true.
+    bool Is_EHSymbolPrivate;                 // Defaults to true.
+
+    /// ForceEncodingOfFDETo32Bits - If set, the encoding of some of the FDE
+    /// data is forced to 32-bit.
+    bool ForceEncodingOfFDETo32Bits;         // Defaults to true.
 
     /// GlobalEHDirective - This is the directive used to make exception frame
     /// tables globally visible.
-    ///
-    const char *GlobalEHDirective;          // Defaults to NULL.
+    const char *GlobalEHDirective;           // Defaults to NULL.
 
     /// SupportsWeakEmptyEHFrame - True if target assembler and linker will
     /// handle a weak_definition of constant 0 for an omitted EH frame.
-    bool SupportsWeakOmittedEHFrame;  // Defaults to true.
+    bool SupportsWeakOmittedEHFrame;         // Defaults to true.
 
     /// DwarfSectionOffsetDirective - Special section offset directive.
     const char* DwarfSectionOffsetDirective; // Defaults to NULL
@@ -508,6 +505,9 @@ namespace llvm {
     bool is_EHSymbolPrivate() const {
       return Is_EHSymbolPrivate;
     }
+    bool forceEncodingOfFDETo32Bits() const {
+      return ForceEncodingOfFDETo32Bits;
+    }
     const char *getGlobalEHDirective() const {
       return GlobalEHDirective;
     }
index 0653b19a568b30c8cbb48d616911ce2e555ce2d3..6a1b0c2eee2804c2cfebf8109317182a4aaabc9c 100644 (file)
@@ -78,6 +78,7 @@ MCAsmInfo::MCAsmInfo() {
   DwarfRequiresFrameSection = true;
   DwarfUsesInlineInfoSection = false;
   Is_EHSymbolPrivate = true;
+  ForceEncodingOfFDETo32Bits = true;
   GlobalEHDirective = 0;
   SupportsWeakOmittedEHFrame = true;
   DwarfSectionOffsetDirective = 0;
index 38b9e5b90b5f73da73ac21dae073df2f8e5c238b..e2069b0038dc9398064d12b96b1b3d211298a0f7 100644 (file)
@@ -52,6 +52,7 @@ MCAsmInfoDarwin::MCAsmInfoDarwin() {
   // doesn't hurt anything.
   // FIXME: I need to get this from Triple.
   Is_EHSymbolPrivate = false;
+  ForceEncodingOfFDETo32Bits = false;
   GlobalEHDirective = "\t.globl\t";
   SupportsWeakOmittedEHFrame = false;