From b9e7689c89acf9324fba9242e00a9a4b8a3a83a6 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Tue, 25 Aug 2009 20:21:17 +0000 Subject: [PATCH] Add a target asm info hook to specify that particular bits of data in the FDE 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 | 38 ++++++++++++++++++------------------- lib/MC/MCAsmInfo.cpp | 1 + lib/MC/MCAsmInfoDarwin.cpp | 1 + 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/include/llvm/MC/MCAsmInfo.h b/include/llvm/MC/MCAsmInfo.h index f788c368a1f..1fe6dbf8a20 100644 --- a/include/llvm/MC/MCAsmInfo.h +++ b/include/llvm/MC/MCAsmInfo.h @@ -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; } diff --git a/lib/MC/MCAsmInfo.cpp b/lib/MC/MCAsmInfo.cpp index 0653b19a568..6a1b0c2eee2 100644 --- a/lib/MC/MCAsmInfo.cpp +++ b/lib/MC/MCAsmInfo.cpp @@ -78,6 +78,7 @@ MCAsmInfo::MCAsmInfo() { DwarfRequiresFrameSection = true; DwarfUsesInlineInfoSection = false; Is_EHSymbolPrivate = true; + ForceEncodingOfFDETo32Bits = true; GlobalEHDirective = 0; SupportsWeakOmittedEHFrame = true; DwarfSectionOffsetDirective = 0; diff --git a/lib/MC/MCAsmInfoDarwin.cpp b/lib/MC/MCAsmInfoDarwin.cpp index 38b9e5b90b5..e2069b0038d 100644 --- a/lib/MC/MCAsmInfoDarwin.cpp +++ b/lib/MC/MCAsmInfoDarwin.cpp @@ -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; -- 2.34.1