diff options
author | Dale Johannesen <dalej@apple.com> | 2008-01-10 02:03:30 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2008-01-10 02:03:30 +0000 |
commit | f09b5999df8d9cbbd69dad7fb5cd61271c0a8000 (patch) | |
tree | 66443ca4484e5f02b8e33323cfe31c7f0ce6fa69 /lib/Target | |
parent | ab9a00c3bfe31c58a5f96897a8f5764b9dd41008 (diff) | |
download | external_llvm-f09b5999df8d9cbbd69dad7fb5cd61271c0a8000.zip external_llvm-f09b5999df8d9cbbd69dad7fb5cd61271c0a8000.tar.gz external_llvm-f09b5999df8d9cbbd69dad7fb5cd61271c0a8000.tar.bz2 |
Emit unused EH frames for weak definitions on Darwin,
because assembler/linker can't cope with weak absolutes.
PR 1880.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45811 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/PowerPC/PPCTargetAsmInfo.cpp | 7 | ||||
-rw-r--r-- | lib/Target/TargetAsmInfo.cpp | 1 | ||||
-rw-r--r-- | lib/Target/X86/X86TargetAsmInfo.cpp | 7 |
3 files changed, 9 insertions, 6 deletions
diff --git a/lib/Target/PowerPC/PPCTargetAsmInfo.cpp b/lib/Target/PowerPC/PPCTargetAsmInfo.cpp index 016a755..0cb2fe4 100644 --- a/lib/Target/PowerPC/PPCTargetAsmInfo.cpp +++ b/lib/Target/PowerPC/PPCTargetAsmInfo.cpp @@ -51,8 +51,8 @@ DarwinTargetAsmInfo::DarwinTargetAsmInfo(const PPCTargetMachine &TM) StaticDtorsSection = ".mod_term_func"; } UsedDirective = "\t.no_dead_strip\t"; - WeakDefDirective = "\t.weak_definition\t"; - WeakRefDirective = "\t.weak_reference\t"; + WeakDefDirective = "\t.weak_definition "; + WeakRefDirective = "\t.weak_reference "; HiddenDirective = "\t.private_extern\t"; SupportsExceptionHandling = true; NeedsIndirectEncoding = true; @@ -62,12 +62,13 @@ DarwinTargetAsmInfo::DarwinTargetAsmInfo(const PPCTargetMachine &TM) DwarfEHFrameSection = ".section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support"; DwarfExceptionSection = ".section __DATA,__gcc_except_tab"; + GlobalEHDirective = "\t.globl\t"; + SupportsWeakOmittedEHFrame = false; DwarfAbbrevSection = ".section __DWARF,__debug_abbrev,regular,debug"; DwarfInfoSection = ".section __DWARF,__debug_info,regular,debug"; DwarfLineSection = ".section __DWARF,__debug_line,regular,debug"; DwarfFrameSection = ".section __DWARF,__debug_frame,regular,debug"; - GlobalEHDirective = "\t.globl\t"; DwarfPubNamesSection = ".section __DWARF,__debug_pubnames,regular,debug"; DwarfPubTypesSection = ".section __DWARF,__debug_pubtypes,regular,debug"; DwarfStrSection = ".section __DWARF,__debug_str,regular,debug"; diff --git a/lib/Target/TargetAsmInfo.cpp b/lib/Target/TargetAsmInfo.cpp index d7769bf..b87abaf 100644 --- a/lib/Target/TargetAsmInfo.cpp +++ b/lib/Target/TargetAsmInfo.cpp @@ -86,6 +86,7 @@ TargetAsmInfo::TargetAsmInfo() : SupportsExceptionHandling(false), DwarfRequiresFrameSection(true), GlobalEHDirective(0), + SupportsWeakOmittedEHFrame(true), DwarfSectionOffsetDirective(0), DwarfAbbrevSection(".debug_abbrev"), DwarfInfoSection(".debug_info"), diff --git a/lib/Target/X86/X86TargetAsmInfo.cpp b/lib/Target/X86/X86TargetAsmInfo.cpp index 6bfc326..a872778 100644 --- a/lib/Target/X86/X86TargetAsmInfo.cpp +++ b/lib/Target/X86/X86TargetAsmInfo.cpp @@ -76,8 +76,8 @@ X86TargetAsmInfo::X86TargetAsmInfo(const X86TargetMachine &TM) { SetDirective = "\t.set"; PCSymbol = "."; UsedDirective = "\t.no_dead_strip\t"; - WeakDefDirective = "\t.weak_definition\t"; - WeakRefDirective = "\t.weak_reference\t"; + WeakDefDirective = "\t.weak_definition "; + WeakRefDirective = "\t.weak_reference "; HiddenDirective = "\t.private_extern\t"; // In non-PIC modes, emit a special label before jump tables so that the @@ -93,7 +93,6 @@ X86TargetAsmInfo::X86TargetAsmInfo(const X86TargetMachine &TM) { DwarfInfoSection = ".section __DWARF,__debug_info,regular,debug"; DwarfLineSection = ".section __DWARF,__debug_line,regular,debug"; DwarfFrameSection = ".section __DWARF,__debug_frame,regular,debug"; - GlobalEHDirective = "\t.globl\t"; DwarfPubNamesSection = ".section __DWARF,__debug_pubnames,regular,debug"; DwarfPubTypesSection = ".section __DWARF,__debug_pubtypes,regular,debug"; DwarfStrSection = ".section __DWARF,__debug_str,regular,debug"; @@ -105,6 +104,8 @@ X86TargetAsmInfo::X86TargetAsmInfo(const X86TargetMachine &TM) { // Exceptions handling if (!Subtarget->is64Bit()) SupportsExceptionHandling = true; + GlobalEHDirective = "\t.globl\t"; + SupportsWeakOmittedEHFrame = false; AbsoluteEHSectionOffsets = false; DwarfEHFrameSection = ".section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support"; |