From 859cc77963d4d3a477abebe62b1ff15e4d849e19 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Wed, 29 Jul 2009 00:59:34 +0000 Subject: [PATCH] Change the "PreferredEHDataFormat" from "absptr" if we're on a Darwin system > Leopard. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77414 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/PPCTargetAsmInfo.cpp | 14 +++++++++----- lib/Target/X86/X86TargetAsmInfo.cpp | 14 +++++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/lib/Target/PowerPC/PPCTargetAsmInfo.cpp b/lib/Target/PowerPC/PPCTargetAsmInfo.cpp index 39c8d21bbf1..68fa73ea5a8 100644 --- a/lib/Target/PowerPC/PPCTargetAsmInfo.cpp +++ b/lib/Target/PowerPC/PPCTargetAsmInfo.cpp @@ -41,12 +41,16 @@ PPCDarwinTargetAsmInfo::PPCDarwinTargetAsmInfo(const PPCTargetMachine &TM) : unsigned PPCDarwinTargetAsmInfo::PreferredEHDataFormat(DwarfEncoding::Target Reason, bool Global) const { - if ((Reason == DwarfEncoding::Data || Reason == DwarfEncoding::Functions) - && Global) - return DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4; + const PPCSubtarget *Subtarget = &TM.getSubtarget(); - if (Reason == DwarfEncoding::CodeLabels || !Global) - return DW_EH_PE_pcrel; + if (Subtarget->getDarwinVers() > 9) { + if ((Reason == DwarfEncoding::Data || Reason == DwarfEncoding::Functions) + && Global) + return DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4; + + if (Reason == DwarfEncoding::CodeLabels || !Global) + return DW_EH_PE_pcrel; + } return DW_EH_PE_absptr; } diff --git a/lib/Target/X86/X86TargetAsmInfo.cpp b/lib/Target/X86/X86TargetAsmInfo.cpp index 277c3cbba73..3223f3cb72f 100644 --- a/lib/Target/X86/X86TargetAsmInfo.cpp +++ b/lib/Target/X86/X86TargetAsmInfo.cpp @@ -94,12 +94,16 @@ X86DarwinTargetAsmInfo::X86DarwinTargetAsmInfo(const X86TargetMachine &TM): unsigned X86DarwinTargetAsmInfo::PreferredEHDataFormat(DwarfEncoding::Target Reason, bool Global) const { - if ((Reason == DwarfEncoding::Data || Reason == DwarfEncoding::Functions) - && Global) - return DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4; + const X86Subtarget *Subtarget = &TM.getSubtarget(); - if (Reason == DwarfEncoding::CodeLabels || !Global) - return DW_EH_PE_pcrel; + if (Subtarget->getDarwinVers() > 9) { + if ((Reason == DwarfEncoding::Data || Reason == DwarfEncoding::Functions) + && Global) + return DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4; + + if (Reason == DwarfEncoding::CodeLabels || !Global) + return DW_EH_PE_pcrel; + } return DW_EH_PE_absptr; }