<p dir="ltr">This is ok for master</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Nov 22, 2016 1:31 PM, "Manjukumar Matha" <<a href="mailto:manjukumar.harthikote-matha@xilinx.com">manjukumar.harthikote-matha@xilinx.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">There was bug with alignment frags for aarch64 in binutils. This is<br>
fixed in master of binutils. This patch backports the fix to binutils<br>
2.27 version.<br>
<br>
Signed-off-by: Manjukumar Matha <<a href="mailto:manjukumar.harthikote-matha@xilinx.com">manjukumar.harthikote-matha@<wbr>xilinx.com</a>><br>
Signed-off-by: Nathan Rossi <<a href="mailto:nathan@nathanrossi.com">nathan@nathanrossi.com</a>><br>
---<br>
meta/recipes-devtools/<wbr>binutils/binutils-2.27.inc | 1 +<br>
...eration-of-alignment-frags-<wbr>in-code-sectio.patch | 139 +++++++++++++++++++++<br>
2 files changed, 140 insertions(+)<br>
create mode 100644 meta/recipes-devtools/<wbr>binutils/binutils/0017-Fix-<wbr>the-generation-of-alignment-<wbr>frags-in-code-sectio.patch<br>
<br>
diff --git a/meta/recipes-devtools/<wbr>binutils/binutils-2.27.inc b/meta/recipes-devtools/<wbr>binutils/binutils-2.27.inc<br>
index fc81721..90518bf 100644<br>
--- a/meta/recipes-devtools/<wbr>binutils/binutils-2.27.inc<br>
+++ b/meta/recipes-devtools/<wbr>binutils/binutils-2.27.inc<br>
@@ -37,6 +37,7 @@ SRC_URI = "\<br>
file://0015-binutils-mips-gas-<wbr>pic-relax-linkonce.diff \<br>
file://0015-Refine-.cfi_<wbr>sections-check-to-only-<wbr>consider-compact-.patch \<br>
file://0016-Fix-seg-fault-in-<wbr>ARM-linker-when-trying-to-<wbr>parse-a-b.patch \<br>
+ file://0017-Fix-the-<wbr>generation-of-alignment-frags-<wbr>in-code-sectio.patch \<br>
"<br>
S = "${WORKDIR}/git"<br>
<br>
diff --git a/meta/recipes-devtools/<wbr>binutils/binutils/0017-Fix-<wbr>the-generation-of-alignment-<wbr>frags-in-code-sectio.patch b/meta/recipes-devtools/<wbr>binutils/binutils/0017-Fix-<wbr>the-generation-of-alignment-<wbr>frags-in-code-sectio.patch<br>
new file mode 100644<br>
index 0000000..f8b46be<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/<wbr>binutils/binutils/0017-Fix-<wbr>the-generation-of-alignment-<wbr>frags-in-code-sectio.patch<br>
@@ -0,0 +1,139 @@<br>
+From 4a4286465b5d6c28968bc2b29ae08d<wbr>aca7f219a3 Mon Sep 17 00:00:00 2001<br>
+From: Nick Clifton <<a href="mailto:nickc@redhat.com">nickc@redhat.com</a>><br>
+Date: Fri, 18 Nov 2016 11:42:48 -0800<br>
+Subject: [PATCH] Fix the generation of alignment frags in code sections for AArch64.<br>
+<br>
+PR gas/20364<br>
+* config/tc-aarch64.c (s_ltorg): Change the mapping state after<br>
+aligning the frag.<br>
+(aarch64_init): Treat rs_align frags in code sections as<br>
+containing code, not data.<br>
+* testsuite/gas/aarch64/pr20364.<wbr>s: New test.<br>
+* testsuite/gas/aarch64/pr20364.<wbr>d: New test driver.<br>
+<br>
+Backporting the patch from binutils mainline<br>
+<a href="https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7ea12e5c3ad54da440c08f32da09534e63e515ca" rel="noreferrer" target="_blank">https://sourceware.org/git/<wbr>gitweb.cgi?p=binutils-gdb.git;<wbr>h=<wbr>7ea12e5c3ad54da440c08f32da0953<wbr>4e63e515ca</a><br>
+<br>
+Upstream-Status: Backport<br>
+<br>
+Signed-off-by: Manjukumar Matha <<a href="mailto:manjukumar.harthikote-matha@xilinx.com">manjukumar.harthikote-matha@<wbr>xilinx.com</a>><br>
+---<br>
+ gas/ChangeLog | 10 ++++++++++<br>
+ gas/config/tc-aarch64.c | 10 +++++++---<br>
+ gas/testsuite/gas/aarch64/<wbr>pr20364.d | 13 +++++++++++++<br>
+ gas/testsuite/gas/aarch64/<wbr>pr20364.s | 28 ++++++++++++++++++++++++++++<br>
+ 4 files changed, 58 insertions(+), 3 deletions(-)<br>
+ create mode 100644 gas/testsuite/gas/aarch64/<wbr>pr20364.d<br>
+ create mode 100644 gas/testsuite/gas/aarch64/<wbr>pr20364.s<br>
+<br>
+diff --git a/gas/ChangeLog b/gas/ChangeLog<br>
+index a39895a..fad06dc 100644<br>
+--- a/gas/ChangeLog<br>
++++ b/gas/ChangeLog<br>
+@@ -1,3 +1,13 @@<br>
++2016-08-05 Nick Clifton <<a href="mailto:nickc@redhat.com">nickc@redhat.com</a>><br>
++<br>
++ PR gas/20364<br>
++ * config/tc-aarch64.c (s_ltorg): Change the mapping state after<br>
++ aligning the frag.<br>
++ (aarch64_init): Treat rs_align frags in code sections as<br>
++ containing code, not data.<br>
++ * testsuite/gas/aarch64/pr20364.<wbr>s: New test.<br>
++ * testsuite/gas/aarch64/pr20364.<wbr>d: New test driver.<br>
++<br>
+ 2016-08-03 Tristan Gingold <<a href="mailto:gingold@adacore.com">gingold@adacore.com</a>><br>
+<br>
+ * configure: Regenerate.<br>
+diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c<br>
+index ddc40f2..74933cb 100644<br>
+--- a/gas/config/tc-aarch64.c<br>
++++ b/gas/config/tc-aarch64.c<br>
+@@ -1736,13 +1736,13 @@ s_ltorg (int ignored ATTRIBUTE_UNUSED)<br>
+ if (pool == NULL || pool->symbol == NULL || pool->next_free_entry == 0)<br>
+ continue;<br>
+<br>
+- mapping_state (MAP_DATA);<br>
+-<br>
+ /* Align pool as you have word accesses.<br>
+ Only make a frag if we have to. */<br>
+ if (!need_pass_2)<br>
+ frag_align (align, 0, 0);<br>
+<br>
++ mapping_state (MAP_DATA);<br>
++<br>
+ record_alignment (now_seg, align);<br>
+<br>
+ sprintf (sym_name, "$$lit_\002%x", pool->id);<br>
+@@ -6373,11 +6373,15 @@ aarch64_init_frag (fragS * fragP, int max_chars)<br>
+<br>
+ switch (fragP->fr_type)<br>
+ {<br>
+- case rs_align:<br>
+ case rs_align_test:<br>
+ case rs_fill:<br>
+ mapping_state_2 (MAP_DATA, max_chars);<br>
+ break;<br>
++ case rs_align:<br>
++ /* PR 20364: We can get alignment frags in code sections,<br>
++ so do not just assume that we should use the MAP_DATA state. */<br>
++ mapping_state_2 (subseg_text_p (now_seg) ? MAP_INSN : MAP_DATA, max_chars);<br>
++ break;<br>
+ case rs_align_code:<br>
+ mapping_state_2 (MAP_INSN, max_chars);<br>
+ break;<br>
+diff --git a/gas/testsuite/gas/aarch64/<wbr>pr20364.d b/gas/testsuite/gas/aarch64/<wbr>pr20364.d<br>
+new file mode 100644<br>
+index 0000000..babcff1<br>
+--- /dev/null<br>
++++ b/gas/testsuite/gas/aarch64/<wbr>pr20364.d<br>
+@@ -0,0 +1,13 @@<br>
++# Check that ".align <size>, <fill>" does not set the mapping state to DATA, causing unnecessary frag generation.<br>
++#name: PR20364<br>
++#objdump: -d<br>
++<br>
++.*: file format .*<br>
++<br>
++Disassembly of section \.vectors:<br>
++<br>
++0+000 <.*>:<br>
++ 0: d2800000 mov x0, #0x0 // #0<br>
++ 4: 94000000 bl 0 <plat_report_exception><br>
++ 8: 17fffffe b 0 <bl1_exceptions><br>
++<br>
+diff --git a/gas/testsuite/gas/aarch64/<wbr>pr20364.s b/gas/testsuite/gas/aarch64/<wbr>pr20364.s<br>
+new file mode 100644<br>
+index 0000000..594ad7c<br>
+--- /dev/null<br>
++++ b/gas/testsuite/gas/aarch64/<wbr>pr20364.s<br>
+@@ -0,0 +1,28 @@<br>
++ .macro vector_base label<br>
++ .section .vectors, "ax"<br>
++ .align 11, 0<br>
++ \label:<br>
++ .endm<br>
++<br>
++ .macro vector_entry label<br>
++ .section .vectors, "ax"<br>
++ .align 7, 0<br>
++ \label:<br>
++ .endm<br>
++<br>
++ .macro check_vector_size since<br>
++ .if (. - \since) > (32 * 4)<br>
++ .error "Vector exceeds 32 instructions"<br>
++ .endif<br>
++ .endm<br>
++<br>
++ .globl bl1_exceptions<br>
++<br>
++vector_base bl1_exceptions<br>
++<br>
++vector_entry SynchronousExceptionSP0<br>
++ mov x0, #0x0<br>
++ bl plat_report_exception<br>
++ b SynchronousExceptionSP0<br>
++ check_vector_size SynchronousExceptionSP0<br>
++<br>
+--<br>
+2.7.4<br>
+<br>
--<br>
2.7.4<br>
<br>
--<br>
______________________________<wbr>_________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.<wbr>openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/<wbr>mailman/listinfo/openembedded-<wbr>core</a><br>
</blockquote></div></div>