[llvm] r222897 - Commit back the correct bits of r222760 (was r222538).
Rafael Espindola
rafael.espindola at gmail.com
Thu Nov 27 09:13:56 PST 2014
Author: rafael
Date: Thu Nov 27 11:13:56 2014
New Revision: 222897
URL: http://llvm.org/viewvc/llvm-project?rev=222897&view=rev
Log:
Commit back the correct bits of r222760 (was r222538).
I also added a test.
Original message:
Allow FDE references outside the +/-2GB range supported by PC relative
offsets for code models other than small/medium. For JIT application,
memory layout is less controlled and can result in truncations
otherwise.
Patch from Akos Kiss.
Differential Revision: http://reviews.llvm.org/D6079
Added:
llvm/trunk/test/MC/ELF/cfi-large-model.s
Modified:
llvm/trunk/lib/MC/MCObjectFileInfo.cpp
Modified: llvm/trunk/lib/MC/MCObjectFileInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCObjectFileInfo.cpp?rev=222897&r1=222896&r2=222897&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCObjectFileInfo.cpp (original)
+++ llvm/trunk/lib/MC/MCObjectFileInfo.cpp Thu Nov 27 11:13:56 2014
@@ -273,6 +273,12 @@ void MCObjectFileInfo::InitELFMCObjectFi
case Triple::mips64el:
FDECFIEncoding = dwarf::DW_EH_PE_sdata8;
break;
+ case Triple::x86_64:
+ FDECFIEncoding = dwarf::DW_EH_PE_pcrel |
+ ((CMModel == CodeModel::Large) ? dwarf::DW_EH_PE_sdata8
+ : dwarf::DW_EH_PE_sdata4);
+
+ break;
default:
FDECFIEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4;
break;
Added: llvm/trunk/test/MC/ELF/cfi-large-model.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/cfi-large-model.s?rev=222897&view=auto
==============================================================================
--- llvm/trunk/test/MC/ELF/cfi-large-model.s (added)
+++ llvm/trunk/test/MC/ELF/cfi-large-model.s Thu Nov 27 11:13:56 2014
@@ -0,0 +1,27 @@
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -code-model=large %s \
+// RUN: -o - | llvm-readobj -s -sd | FileCheck %s
+
+// CHECK: Section {
+// CHECK: Index:
+// CHECK: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 56
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 |.........zR..x..|
+// CHECK-NEXT: 0010: 1C0C0708 90010000 1C000000 1C000000 |................|
+// CHECK-NEXT: 0020: 00000000 00000000 00000000 00000000 |................|
+// CHECK-NEXT: 0030: 00000000 00000000 |........|
+// CHECK-NEXT: )
+
+f:
+ .cfi_startproc
+ .cfi_endproc
More information about the llvm-commits
mailing list