diff options
Diffstat (limited to 'Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch')
-rw-r--r-- | Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch b/Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch new file mode 100644 index 000000000..63004eb1f --- /dev/null +++ b/Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch @@ -0,0 +1,281 @@ +commit 21bcdeb1d65b4be0d716693f3dcabd2e8a7c6386 +Author: Joerg Sonnenberger <joerg@bec.de> +Date: Tue Nov 25 13:37:55 2014 +0000 + + Reapply 222538 and update tests to explicitly request small code model + and PIC: + + 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 + + + git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222760 91177308-0d34-0410-b5e6-96231b3b80d8 + +diff --git a/lib/MC/MCObjectFileInfo.cpp b/lib/MC/MCObjectFileInfo.cpp +index 7886ab6..96929e5 100644 +--- a/lib/MC/MCObjectFileInfo.cpp ++++ b/lib/MC/MCObjectFileInfo.cpp +@@ -273,6 +273,17 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Triple T) { + case Triple::mips64el: + FDECFIEncoding = dwarf::DW_EH_PE_sdata8; + break; ++ case Triple::x86_64: ++ if (RelocM == Reloc::PIC_) { ++ FDECFIEncoding = dwarf::DW_EH_PE_pcrel | ++ ((CMModel == CodeModel::Small || CMModel == CodeModel::Medium) ++ ? dwarf::DW_EH_PE_sdata4 : dwarf::DW_EH_PE_sdata8); ++ } else { ++ FDECFIEncoding = ++ (CMModel == CodeModel::Small || CMModel == CodeModel::Medium) ++ ? dwarf::DW_EH_PE_udata4 : dwarf::DW_EH_PE_absptr; ++ } ++ break; + default: + FDECFIEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4; + break; +diff --git a/test/MC/ELF/cfi-adjust-cfa-offset.s b/test/MC/ELF/cfi-adjust-cfa-offset.s +index 9d639f7..f31a6b0 100644 +--- a/test/MC/ELF/cfi-adjust-cfa-offset.s ++++ b/test/MC/ELF/cfi-adjust-cfa-offset.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-advance-loc2.s b/test/MC/ELF/cfi-advance-loc2.s +index 98caa018..c11ccaf 100644 +--- a/test/MC/ELF/cfi-advance-loc2.s ++++ b/test/MC/ELF/cfi-advance-loc2.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + // test that this produces a correctly encoded cfi_advance_loc2 + +diff --git a/test/MC/ELF/cfi-def-cfa-offset.s b/test/MC/ELF/cfi-def-cfa-offset.s +index 59f7400..93158ce 100644 +--- a/test/MC/ELF/cfi-def-cfa-offset.s ++++ b/test/MC/ELF/cfi-def-cfa-offset.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-def-cfa-register.s b/test/MC/ELF/cfi-def-cfa-register.s +index 178ba32..8c55053 100644 +--- a/test/MC/ELF/cfi-def-cfa-register.s ++++ b/test/MC/ELF/cfi-def-cfa-register.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-def-cfa.s b/test/MC/ELF/cfi-def-cfa.s +index dfb0d4b..f0b4934 100644 +--- a/test/MC/ELF/cfi-def-cfa.s ++++ b/test/MC/ELF/cfi-def-cfa.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-escape.s b/test/MC/ELF/cfi-escape.s +index 5394ee4..3b76746 100644 +--- a/test/MC/ELF/cfi-escape.s ++++ b/test/MC/ELF/cfi-escape.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-offset.s b/test/MC/ELF/cfi-offset.s +index a65b4fc..02f31ba 100644 +--- a/test/MC/ELF/cfi-offset.s ++++ b/test/MC/ELF/cfi-offset.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-register.s b/test/MC/ELF/cfi-register.s +index 9441770..3433bef 100644 +--- a/test/MC/ELF/cfi-register.s ++++ b/test/MC/ELF/cfi-register.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-rel-offset.s b/test/MC/ELF/cfi-rel-offset.s +index 0dc69c8..f51b2d3 100644 +--- a/test/MC/ELF/cfi-rel-offset.s ++++ b/test/MC/ELF/cfi-rel-offset.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-rel-offset2.s b/test/MC/ELF/cfi-rel-offset2.s +index 360e7b0..0ce8d03 100644 +--- a/test/MC/ELF/cfi-rel-offset2.s ++++ b/test/MC/ELF/cfi-rel-offset2.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-remember.s b/test/MC/ELF/cfi-remember.s +index 3a38948..c98695a 100644 +--- a/test/MC/ELF/cfi-remember.s ++++ b/test/MC/ELF/cfi-remember.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-restore.s b/test/MC/ELF/cfi-restore.s +index e225797..99a74e7 100644 +--- a/test/MC/ELF/cfi-restore.s ++++ b/test/MC/ELF/cfi-restore.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-same-value.s b/test/MC/ELF/cfi-same-value.s +index 2d37f4d..b7329d1 100644 +--- a/test/MC/ELF/cfi-same-value.s ++++ b/test/MC/ELF/cfi-same-value.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-signal-frame.s b/test/MC/ELF/cfi-signal-frame.s +index 98deb0a..9558d7b 100644 +--- a/test/MC/ELF/cfi-signal-frame.s ++++ b/test/MC/ELF/cfi-signal-frame.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-undefined.s b/test/MC/ELF/cfi-undefined.s +index 568b315..09000c9 100644 +--- a/test/MC/ELF/cfi-undefined.s ++++ b/test/MC/ELF/cfi-undefined.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f: + .cfi_startproc +diff --git a/test/MC/ELF/cfi-window-save.s b/test/MC/ELF/cfi-window-save.s +index b083901..dd20164 100644 +--- a/test/MC/ELF/cfi-window-save.s ++++ b/test/MC/ELF/cfi-window-save.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + # Should use SPARC as the target to test this. However, SPARC does not + # use MC yet. +diff --git a/test/MC/ELF/cfi-zero-addr-delta.s b/test/MC/ELF/cfi-zero-addr-delta.s +index 8662839..61118ec 100644 +--- a/test/MC/ELF/cfi-zero-addr-delta.s ++++ b/test/MC/ELF/cfi-zero-addr-delta.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + // Test that we don't produce a DW_CFA_advance_loc 0 + +diff --git a/test/MC/ELF/cfi.s b/test/MC/ELF/cfi.s +index 21be615..42b0189 100644 +--- a/test/MC/ELF/cfi.s ++++ b/test/MC/ELF/cfi.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s ++// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -s -sr -sd | FileCheck %s + + f1: + .cfi_startproc +diff --git a/test/MC/ELF/pr19430.s b/test/MC/ELF/pr19430.s +index a1e5246..528193d 100644 +--- a/test/MC/ELF/pr19430.s ++++ b/test/MC/ELF/pr19430.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -filetype=obj -o - | llvm-readobj -r | FileCheck %s ++// RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -filetype=obj -o - \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-readobj -r | FileCheck %s + + // Test that we can use .cfi_startproc without a global symbol. + +diff --git a/test/MC/X86/fde-reloc.s b/test/MC/X86/fde-reloc.s +index 63ac976..9b5de15 100644 +--- a/test/MC/X86/fde-reloc.s ++++ b/test/MC/X86/fde-reloc.s +@@ -1,4 +1,6 @@ +-// RUN: llvm-mc -filetype=obj %s -o - -triple x86_64-pc-linux | llvm-objdump -r - | FileCheck --check-prefix=X86-64 %s ++// RUN: llvm-mc -filetype=obj %s -o - -triple x86_64-pc-linux \ ++// RUN: -relocation-model=pic -code-model=small \ ++// RUN: | llvm-objdump -r - | FileCheck --check-prefix=X86-64 %s + // RUN: llvm-mc -filetype=obj %s -o - -triple i686-pc-linux | llvm-objdump -r - | FileCheck --check-prefix=I686 %s + + // PR15448 |