summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2016-10-14 12:04:07 (GMT)
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-11-08 23:47:13 (GMT)
commit191666022aec6105296a7cead4ee5dc892c288cd (patch)
tree3bc9f80ac9390c283694dabf5126c2f76f7b82d8
parent53766fb01f3ca4b61a0a07a186728427723e6127 (diff)
downloadpoky-191666022aec6105296a7cead4ee5dc892c288cd.tar.gz
binutils: Fix gas error with cfi_section inconsistencies
This error is visible when using clang but not when using gcc this has been reported and fixed upstream. llvm bug https://llvm.org/bugs/show_bug.cgi?id=29017 binutils bug https://sourceware.org/bugzilla/show_bug.cgi?id=20648 (From OE-Core rev: e5a81575f11dc2a0ec9ee4184514750d2dbd09aa) (From OE-Core rev: e299ac7d5b1e7af7940766e1232f6e425029fab6) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> hand merged to apply against 2.26 Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.26.inc1
-rw-r--r--meta/recipes-devtools/binutils/binutils/0015-Refine-.cfi_sections-check-to-only-consider-compact-.patch97
2 files changed, 98 insertions, 0 deletions
diff --git a/meta/recipes-devtools/binutils/binutils-2.26.inc b/meta/recipes-devtools/binutils/binutils-2.26.inc
index 4b33b04..283167c 100644
--- a/meta/recipes-devtools/binutils/binutils-2.26.inc
+++ b/meta/recipes-devtools/binutils/binutils-2.26.inc
@@ -36,6 +36,7 @@ SRC_URI = "\
36 file://0014-Correct-nios2-_gp-address-computation.patch \ 36 file://0014-Correct-nios2-_gp-address-computation.patch \
37 file://0015-allow-zero-length-elements.patch \ 37 file://0015-allow-zero-length-elements.patch \
38 file://aarch64-tls.patch \ 38 file://aarch64-tls.patch \
39 file://0015-Refine-.cfi_sections-check-to-only-consider-compact-.patch \
39" 40"
40S = "${WORKDIR}/git" 41S = "${WORKDIR}/git"
41 42
diff --git a/meta/recipes-devtools/binutils/binutils/0015-Refine-.cfi_sections-check-to-only-consider-compact-.patch b/meta/recipes-devtools/binutils/binutils/0015-Refine-.cfi_sections-check-to-only-consider-compact-.patch
new file mode 100644
index 0000000..f3e3a11
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0015-Refine-.cfi_sections-check-to-only-consider-compact-.patch
@@ -0,0 +1,97 @@
1From 3d3424e9a8d6ad56160b98bf6e223c0346164468 Mon Sep 17 00:00:00 2001
2From: Matthew Fortune <matthew.fortune@imgtec.com>
3Date: Thu, 29 Sep 2016 11:13:46 +0100
4Subject: [PATCH] Refine .cfi_sections check to only consider compact eh_frame
5
6The .cfi_sections directive can be safely used multiple times
7with different sections named at any time unless the compact form
8of exception handling is requested after CFI information has
9been emitted. Only the compact form of CFI information changes
10the way in which CFI is generated and therefore cannot be
11retrospectively requested after generating CFI information.
12
13gas/
14
15 PR gas/20648
16 * dw2gencfi.c (dot_cfi_sections): Refine the check for
17 inconsistent .cfi_sections to only consider compact vs non
18 compact forms.
19 * testsuite/gas/cfi/cfi-common-9.d: New file.
20 * testsuite/gas/cfi/cfi-common-9.s: New file.
21 * testsuite/gas/cfi/cfi.exp: Run new test.
22---
23Upstream-Status: Backport
24Signed-off-by: Khem Raj <raj.khem@gmail.com
25
26 gas/ChangeLog | 10 ++++++++++
27 gas/dw2gencfi.c | 5 ++++-
28 gas/testsuite/gas/cfi/cfi-common-9.d | 23 +++++++++++++++++++++++
29 gas/testsuite/gas/cfi/cfi-common-9.s | 4 ++++
30 gas/testsuite/gas/cfi/cfi.exp | 1 +
31 5 files changed, 42 insertions(+), 1 deletion(-)
32 create mode 100644 gas/testsuite/gas/cfi/cfi-common-9.d
33 create mode 100644 gas/testsuite/gas/cfi/cfi-common-9.s
34
35Index: git/gas/dw2gencfi.c
36===================================================================
37--- git.orig/gas/dw2gencfi.c
38+++ git/gas/dw2gencfi.c
39@@ -1244,7 +1244,10 @@ dot_cfi_sections (int ignored ATTRIBUTE_
40 }
41
42 demand_empty_rest_of_line ();
43- if (cfi_sections_set && cfi_sections != sections)
44+ if (cfi_sections_set
45+ && (sections & (CFI_EMIT_eh_frame | CFI_EMIT_eh_frame_compact))
46+ && (cfi_sections & (CFI_EMIT_eh_frame | CFI_EMIT_eh_frame_compact))
47+ != (sections & (CFI_EMIT_eh_frame | CFI_EMIT_eh_frame_compact)))
48 as_bad (_("inconsistent uses of .cfi_sections"));
49 cfi_sections = sections;
50 }
51Index: git/gas/testsuite/gas/cfi/cfi-common-9.d
52===================================================================
53--- /dev/null
54+++ git/gas/testsuite/gas/cfi/cfi-common-9.d
55@@ -0,0 +1,23 @@
56+#objdump: -Wf
57+#name: CFI common 9
58+#...
59+Contents of the .eh_frame section:
60+
61+00000000 0+0010 0+0000 CIE
62+ Version: 1
63+ Augmentation: "zR"
64+ Code alignment factor: .*
65+ Data alignment factor: .*
66+ Return address column: .*
67+ Augmentation data: [01]b
68+
69+ DW_CFA_nop
70+ DW_CFA_nop
71+ DW_CFA_nop
72+
73+00000014 0+00(10|18|1c|20) 0+0018 FDE cie=0+0000 pc=.*
74+
75+ DW_CFA_nop
76+ DW_CFA_nop
77+ DW_CFA_nop
78+#...
79Index: git/gas/testsuite/gas/cfi/cfi-common-9.s
80===================================================================
81--- /dev/null
82+++ git/gas/testsuite/gas/cfi/cfi-common-9.s
83@@ -0,0 +1,4 @@
84+ .cfi_sections .eh_frame
85+ .cfi_startproc simple
86+ .cfi_sections .debug_frame
87+ .cfi_endproc
88Index: git/gas/testsuite/gas/cfi/cfi.exp
89===================================================================
90--- git.orig/gas/testsuite/gas/cfi/cfi.exp
91+++ git/gas/testsuite/gas/cfi/cfi.exp
92@@ -135,4 +135,5 @@ if { ![istarget "hppa64*-*"] } then {
93 run_dump_test "cfi-common-6"
94 }
95 run_dump_test "cfi-common-7"
96+ run_dump_test "cfi-common-9"
97 }