<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, &quot;Manjukumar Matha&quot; &lt;<a href="mailto:manjukumar.harthikote-matha@xilinx.com">manjukumar.harthikote-matha@xilinx.com</a>&gt; 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 &lt;<a href="mailto:manjukumar.harthikote-matha@xilinx.com">manjukumar.harthikote-matha@<wbr>xilinx.com</a>&gt;<br>
Signed-off-by: Nathan Rossi &lt;<a href="mailto:nathan@nathanrossi.com">nathan@nathanrossi.com</a>&gt;<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 = &quot;\<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>
 &quot;<br>
 S  = &quot;${WORKDIR}/git&quot;<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 &lt;<a href="mailto:nickc@redhat.com">nickc@redhat.com</a>&gt;<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 &lt;<a href="mailto:manjukumar.harthikote-matha@xilinx.com">manjukumar.harthikote-matha@<wbr>xilinx.com</a>&gt;<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  &lt;<a href="mailto:nickc@redhat.com">nickc@redhat.com</a>&gt;<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  &lt;<a href="mailto:gingold@adacore.com">gingold@adacore.com</a>&gt;<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-&gt;symbol == NULL || pool-&gt;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, &quot;$$lit_\002%x&quot;, pool-&gt;id);<br>
+@@ -6373,11 +6373,15 @@ aarch64_init_frag (fragS * fragP, int max_chars)<br>
+<br>
+   switch (fragP-&gt;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 &quot;.align &lt;size&gt;, &lt;fill&gt;&quot; 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 &lt;.*&gt;:<br>
++   0: d2800000        mov     x0, #0x0                        // #0<br>
++   4: 94000000        bl      0 &lt;plat_report_exception&gt;<br>
++   8: 17fffffe        b       0 &lt;bl1_exceptions&gt;<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, &quot;ax&quot;<br>
++ .align 11, 0<br>
++ \label:<br>
++ .endm<br>
++<br>
++ .macro vector_entry label<br>
++ .section .vectors, &quot;ax&quot;<br>
++ .align 7, 0<br>
++ \label:<br>
++ .endm<br>
++<br>
++ .macro check_vector_size since<br>
++   .if (. - \since) &gt; (32 * 4)<br>
++     .error &quot;Vector exceeds 32 instructions&quot;<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>