diff options
author | Chris Lattner <sabre@nondot.org> | 2009-07-17 20:46:40 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-07-17 20:46:40 +0000 |
commit | e79b2bc088755e55948d2cc950135809983c14de (patch) | |
tree | c0df7b693d704a5f2be64f805ff0eee618298c04 /llvm/lib/Target | |
parent | 71475775b9149cb0421f6983a912ba64830bb96a (diff) | |
download | bcm5719-llvm-e79b2bc088755e55948d2cc950135809983c14de.tar.gz bcm5719-llvm-e79b2bc088755e55948d2cc950135809983c14de.zip |
Untangle a snarl that I discovered when updating the mangler,
starting in getCurrentFunctionEHName. Among other problems,
we would try to privative a "foo.eh" label, but end up emitting
the label as _Lfoo.eh instead of L_foo.eh on darwin. This is really
bad, and the linker has always tolerated these labels existing.
For now, just emit them as _foo.eh.
This patch also fixes problems with ".eh" labels on unnamed
functions and eliminates two strangely defined TargetAsmInfo
hooks.
llvm-svn: 76231
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/DarwinTargetAsmInfo.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/Target/TargetAsmInfo.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86TargetAsmInfo.cpp | 3 |
3 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Target/DarwinTargetAsmInfo.cpp b/llvm/lib/Target/DarwinTargetAsmInfo.cpp index 7ab3967c0d1..3eb3d535954 100644 --- a/llvm/lib/Target/DarwinTargetAsmInfo.cpp +++ b/llvm/lib/Target/DarwinTargetAsmInfo.cpp @@ -86,6 +86,11 @@ DarwinTargetAsmInfo::DarwinTargetAsmInfo(const TargetMachine &TM) StaticDtorsSection = ".mod_term_func"; } + // _foo.eh symbols are currently always exported so that the linker knows + // about them. This may not strictly be necessary on 10.6 and later, but it + // doesn't hurt anything. + Is_EHSymbolPrivate = false; + DwarfAbbrevSection = ".section __DWARF,__debug_abbrev,regular,debug"; DwarfInfoSection = ".section __DWARF,__debug_info,regular,debug"; DwarfLineSection = ".section __DWARF,__debug_line,regular,debug"; diff --git a/llvm/lib/Target/TargetAsmInfo.cpp b/llvm/lib/Target/TargetAsmInfo.cpp index 8bc436819a0..5b7ddbfa4a7 100644 --- a/llvm/lib/Target/TargetAsmInfo.cpp +++ b/llvm/lib/Target/TargetAsmInfo.cpp @@ -106,7 +106,7 @@ TargetAsmInfo::TargetAsmInfo(const TargetMachine &tm) SupportsExceptionHandling = false; DwarfRequiresFrameSection = true; DwarfUsesInlineInfoSection = false; - NonLocalEHFrameLabel = false; + Is_EHSymbolPrivate = true; GlobalEHDirective = 0; SupportsWeakOmittedEHFrame = true; DwarfSectionOffsetDirective = 0; diff --git a/llvm/lib/Target/X86/X86TargetAsmInfo.cpp b/llvm/lib/Target/X86/X86TargetAsmInfo.cpp index c33b765316f..9f114e69f6b 100644 --- a/llvm/lib/Target/X86/X86TargetAsmInfo.cpp +++ b/llvm/lib/Target/X86/X86TargetAsmInfo.cpp @@ -64,8 +64,7 @@ X86DarwinTargetAsmInfo::X86DarwinTargetAsmInfo(const X86TargetMachine &TM): // Leopard and above support aligned common symbols. COMMDirectiveTakesAlignment = (Subtarget->getDarwinVers() >= 9); HasDotTypeDotSizeDirective = false; - NonLocalEHFrameLabel = true; - + if (is64Bit) { PersonalityPrefix = ""; PersonalitySuffix = "+4@GOTPCREL"; |