From a1180834422617404474c8c67d3565fa1994f64c Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 23 Jun 2014 15:13:23 +0000 Subject: [PATCH] Stop producing func.eh symbols on Darwin. According Nick Kledzik (http://llvm.org/bugs/show_bug.cgi?id=19430#c2): "... mach-o no longer needs names in the __eh_frame section (and has not for years)." Iain Sandoe confirms it is also unnecessary for their old darwin support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211500 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/MC/MCObjectFileInfo.h | 9 --------- lib/MC/MCDwarf.cpp | 7 ------- lib/MC/MCObjectFileInfo.cpp | 2 -- test/MC/MachO/eh-frame-reloc.s | 2 +- test/MC/MachO/eh-symbols.s | 25 ------------------------- 5 files changed, 1 insertion(+), 44 deletions(-) delete mode 100644 test/MC/MachO/eh-symbols.s diff --git a/include/llvm/MC/MCObjectFileInfo.h b/include/llvm/MC/MCObjectFileInfo.h index 75294b5d732..4d1715eccf5 100644 --- a/include/llvm/MC/MCObjectFileInfo.h +++ b/include/llvm/MC/MCObjectFileInfo.h @@ -33,12 +33,6 @@ protected: /// weak_definition of constant 0 for an omitted EH frame. bool SupportsWeakOmittedEHFrame; - /// IsFunctionEHFrameSymbolPrivate - This flag is set to true if the - /// "EH_frame" symbol for EH information should be an assembler temporary (aka - /// private linkage, aka an L or .L label) or false if it should be a normal - /// non-.globl label. This defaults to true. - bool IsFunctionEHFrameSymbolPrivate; - /// SupportsCompactUnwindWithoutEHFrame - True if the target object file /// supports emitting a compact unwind section without an associated EH frame /// section. @@ -201,9 +195,6 @@ public: void InitMCObjectFileInfo(StringRef TT, Reloc::Model RM, CodeModel::Model CM, MCContext &ctx); - bool isFunctionEHFrameSymbolPrivate() const { - return IsFunctionEHFrameSymbolPrivate; - } bool getSupportsWeakOmittedEHFrame() const { return SupportsWeakOmittedEHFrame; } diff --git a/lib/MC/MCDwarf.cpp b/lib/MC/MCDwarf.cpp index c38eb045b94..8f348528cbb 100644 --- a/lib/MC/MCDwarf.cpp +++ b/lib/MC/MCDwarf.cpp @@ -1459,13 +1459,6 @@ MCSymbol *FrameEmitterImpl::EmitFDE(MCObjectStreamer &streamer, const MCObjectFileInfo *MOFI = context.getObjectFileInfo(); bool verboseAsm = streamer.isVerboseAsm(); - if (IsEH && frame.Function && !MOFI->isFunctionEHFrameSymbolPrivate()) { - MCSymbol *EHSym = - context.GetOrCreateSymbol(frame.Function->getName() + Twine(".eh")); - streamer.EmitEHSymAttributes(frame.Function, EHSym); - streamer.EmitLabel(EHSym); - } - // Length const MCExpr *Length = MakeStartMinusEndExpr(streamer, *fdeStart, *fdeEnd, 0); if (verboseAsm) streamer.AddComment("FDE Length"); diff --git a/lib/MC/MCObjectFileInfo.cpp b/lib/MC/MCObjectFileInfo.cpp index b9ba011a673..b602656e0e3 100644 --- a/lib/MC/MCObjectFileInfo.cpp +++ b/lib/MC/MCObjectFileInfo.cpp @@ -41,7 +41,6 @@ static bool useCompactUnwind(const Triple &T) { void MCObjectFileInfo::InitMachOMCObjectFileInfo(Triple T) { // MachO - IsFunctionEHFrameSymbolPrivate = false; SupportsWeakOmittedEHFrame = false; if (T.isOSDarwin() && @@ -802,7 +801,6 @@ void MCObjectFileInfo::InitMCObjectFileInfo(StringRef T, Reloc::Model relocm, // Common. CommDirectiveSupportsAlignment = true; SupportsWeakOmittedEHFrame = true; - IsFunctionEHFrameSymbolPrivate = true; SupportsCompactUnwindWithoutEHFrame = false; PersonalityEncoding = LSDAEncoding = FDECFIEncoding = TTypeEncoding = diff --git a/test/MC/MachO/eh-frame-reloc.s b/test/MC/MachO/eh-frame-reloc.s index 66ff571eac8..4b2822404de 100644 --- a/test/MC/MachO/eh-frame-reloc.s +++ b/test/MC/MachO/eh-frame-reloc.s @@ -24,7 +24,7 @@ _bar: // OLD64: Relocations [ // OLD64-NEXT: Section __eh_frame { -// OLD64-NEXT: 0x20 0 3 1 X86_64_RELOC_SUBTRACTOR 0 _bar.eh +// OLD64-NEXT: 0x20 0 3 0 X86_64_RELOC_SUBTRACTOR 0 // OLD64-NEXT: 0x20 0 3 1 X86_64_RELOC_UNSIGNED 0 _bar // OLD64-NEXT: } // OLD64-NEXT: ] diff --git a/test/MC/MachO/eh-symbols.s b/test/MC/MachO/eh-symbols.s deleted file mode 100644 index 6adca56cdbe..00000000000 --- a/test/MC/MachO/eh-symbols.s +++ /dev/null @@ -1,25 +0,0 @@ -// RUN: llvm-mc -filetype=obj -triple i686-apple-darwin %s -o - | llvm-readobj -t | FileCheck %s - -// Make sure that the exception handling data has the same visibility as the -// function it's generated for. - - .private_extern _main - .globl _main -_main: - .cfi_startproc - retl - .cfi_endproc - -"_-[NSString(local) isNullOrNil]": - .cfi_startproc - retl - .cfi_endproc - -// CHECK: Name: _-[NSString(local) isNullOrNil].eh - -// CHECK: Name: _main -// CHECK-NEXT: PrivateExtern - -// CHECK: Name: _main.eh -// CHECK-NEXT: PrivateExtern -