Hi Khem,

On 11/22/2016 02:03 PM, Khem Raj wrote:
This is ok for master
Is there a particular reason not have in Morty? We have arm-trusted-firmware failing to build due to this issue. I have submitted a patch to master as well

Thanks
Manju



On Nov 22, 2016 1:31 PM, "Manjukumar Matha"
<[email protected]
<mailto:[email protected]>> wrote:

    There was bug with alignment frags for aarch64 in binutils. This is
    fixed in master of binutils. This patch backports the fix to binutils
    2.27 version.

    Signed-off-by: Manjukumar Matha
    <[email protected]
    <mailto:[email protected]>>
    Signed-off-by: Nathan Rossi <[email protected]
    <mailto:[email protected]>>
    ---
     meta/recipes-devtools/binutils/binutils-2.27.inc   |   1 +
     ...eration-of-alignment-frags-in-code-sectio.patch | 139
    +++++++++++++++++++++
     2 files changed, 140 insertions(+)
     create mode 100644
    
meta/recipes-devtools/binutils/binutils/0017-Fix-the-generation-of-alignment-frags-in-code-sectio.patch

    diff --git a/meta/recipes-devtools/binutils/binutils-2.27.inc
    b/meta/recipes-devtools/binutils/binutils-2.27.inc
    index fc81721..90518bf 100644
    --- a/meta/recipes-devtools/binutils/binutils-2.27.inc
    +++ b/meta/recipes-devtools/binutils/binutils-2.27.inc
    @@ -37,6 +37,7 @@ SRC_URI = "\
          file://0015-binutils-mips-gas-pic-relax-linkonce.diff \

    file://0015-Refine-.cfi_sections-check-to-only-consider-compact-.patch \

    file://0016-Fix-seg-fault-in-ARM-linker-when-trying-to-parse-a-b.patch \
    +
     file://0017-Fix-the-generation-of-alignment-frags-in-code-sectio.patch
    \
     "
     S  = "${WORKDIR}/git"

    diff --git
    
a/meta/recipes-devtools/binutils/binutils/0017-Fix-the-generation-of-alignment-frags-in-code-sectio.patch
    
b/meta/recipes-devtools/binutils/binutils/0017-Fix-the-generation-of-alignment-frags-in-code-sectio.patch
    new file mode 100644
    index 0000000..f8b46be
    --- /dev/null
    +++
    
b/meta/recipes-devtools/binutils/binutils/0017-Fix-the-generation-of-alignment-frags-in-code-sectio.patch
    @@ -0,0 +1,139 @@
    +From 4a4286465b5d6c28968bc2b29ae08daca7f219a3 Mon Sep 17 00:00:00 2001
    +From: Nick Clifton <[email protected] <mailto:[email protected]>>
    +Date: Fri, 18 Nov 2016 11:42:48 -0800
    +Subject: [PATCH] Fix the generation of alignment frags in code
    sections for AArch64.
    +
    +PR gas/20364
    +* config/tc-aarch64.c (s_ltorg): Change the mapping state after
    +aligning the frag.
    +(aarch64_init): Treat rs_align frags in code sections as
    +containing code, not data.
    +* testsuite/gas/aarch64/pr20364.s: New test.
    +* testsuite/gas/aarch64/pr20364.d: New test driver.
    +
    +Backporting the patch from binutils mainline
    
+https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7ea12e5c3ad54da440c08f32da09534e63e515ca
    
<https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7ea12e5c3ad54da440c08f32da09534e63e515ca>
    +
    +Upstream-Status: Backport
    +
    +Signed-off-by: Manjukumar Matha
    <[email protected]
    <mailto:[email protected]>>
    +---
    + gas/ChangeLog                       | 10 ++++++++++
    + gas/config/tc-aarch64.c             | 10 +++++++---
    + gas/testsuite/gas/aarch64/pr20364.d | 13 +++++++++++++
    + gas/testsuite/gas/aarch64/pr20364.s | 28 ++++++++++++++++++++++++++++
    + 4 files changed, 58 insertions(+), 3 deletions(-)
    + create mode 100644 gas/testsuite/gas/aarch64/pr20364.d
    + create mode 100644 gas/testsuite/gas/aarch64/pr20364.s
    +
    +diff --git a/gas/ChangeLog b/gas/ChangeLog
    +index a39895a..fad06dc 100644
    +--- a/gas/ChangeLog
    ++++ b/gas/ChangeLog
    +@@ -1,3 +1,13 @@
    ++2016-08-05  Nick Clifton  <[email protected] <mailto:[email protected]>>
    ++
    ++      PR gas/20364
    ++      * config/tc-aarch64.c (s_ltorg): Change the mapping state after
    ++      aligning the frag.
    ++      (aarch64_init): Treat rs_align frags in code sections as
    ++      containing code, not data.
    ++      * testsuite/gas/aarch64/pr20364.s: New test.
    ++      * testsuite/gas/aarch64/pr20364.d: New test driver.
    ++
    + 2016-08-03  Tristan Gingold  <[email protected]
    <mailto:[email protected]>>
    +
    +       * configure: Regenerate.
    +diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
    +index ddc40f2..74933cb 100644
    +--- a/gas/config/tc-aarch64.c
    ++++ b/gas/config/tc-aarch64.c
    +@@ -1736,13 +1736,13 @@ s_ltorg (int ignored ATTRIBUTE_UNUSED)
    +       if (pool == NULL || pool->symbol == NULL ||
    pool->next_free_entry == 0)
    +       continue;
    +
    +-      mapping_state (MAP_DATA);
    +-
    +       /* Align pool as you have word accesses.
    +          Only make a frag if we have to.  */
    +       if (!need_pass_2)
    +       frag_align (align, 0, 0);
    +
    ++      mapping_state (MAP_DATA);
    ++
    +       record_alignment (now_seg, align);
    +
    +       sprintf (sym_name, "$$lit_\002%x", pool->id);
    +@@ -6373,11 +6373,15 @@ aarch64_init_frag (fragS * fragP, int
    max_chars)
    +
    +   switch (fragP->fr_type)
    +     {
    +-    case rs_align:
    +     case rs_align_test:
    +     case rs_fill:
    +       mapping_state_2 (MAP_DATA, max_chars);
    +       break;
    ++    case rs_align:
    ++      /* PR 20364: We can get alignment frags in code sections,
    ++       so do not just assume that we should use the MAP_DATA
    state.  */
    ++      mapping_state_2 (subseg_text_p (now_seg) ? MAP_INSN :
    MAP_DATA, max_chars);
    ++      break;
    +     case rs_align_code:
    +       mapping_state_2 (MAP_INSN, max_chars);
    +       break;
    +diff --git a/gas/testsuite/gas/aarch64/pr20364.d
    b/gas/testsuite/gas/aarch64/pr20364.d
    +new file mode 100644
    +index 0000000..babcff1
    +--- /dev/null
    ++++ b/gas/testsuite/gas/aarch64/pr20364.d
    +@@ -0,0 +1,13 @@
    ++# Check that ".align <size>, <fill>" does not set the mapping
    state to DATA, causing unnecessary frag generation.
    ++#name: PR20364
    ++#objdump: -d
    ++
    ++.*:     file format .*
    ++
    ++Disassembly of section \.vectors:
    ++
    ++0+000 <.*>:
    ++   0: d2800000        mov     x0, #0x0                        // #0
    ++   4: 94000000        bl      0 <plat_report_exception>
    ++   8: 17fffffe        b       0 <bl1_exceptions>
    ++
    +diff --git a/gas/testsuite/gas/aarch64/pr20364.s
    b/gas/testsuite/gas/aarch64/pr20364.s
    +new file mode 100644
    +index 0000000..594ad7c
    +--- /dev/null
    ++++ b/gas/testsuite/gas/aarch64/pr20364.s
    +@@ -0,0 +1,28 @@
    ++ .macro vector_base label
    ++ .section .vectors, "ax"
    ++ .align 11, 0
    ++ \label:
    ++ .endm
    ++
    ++ .macro vector_entry label
    ++ .section .vectors, "ax"
    ++ .align 7, 0
    ++ \label:
    ++ .endm
    ++
    ++ .macro check_vector_size since
    ++   .if (. - \since) > (32 * 4)
    ++     .error "Vector exceeds 32 instructions"
    ++   .endif
    ++ .endm
    ++
    ++ .globl bl1_exceptions
    ++
    ++vector_base bl1_exceptions
    ++
    ++vector_entry SynchronousExceptionSP0
    ++ mov x0, #0x0
    ++ bl plat_report_exception
    ++ b SynchronousExceptionSP0
    ++ check_vector_size SynchronousExceptionSP0
    ++
    +--
    +2.7.4
    +
    --
    2.7.4

    --
    _______________________________________________
    Openembedded-core mailing list
    [email protected]
    <mailto:[email protected]>
    http://lists.openembedded.org/mailman/listinfo/openembedded-core
    <http://lists.openembedded.org/mailman/listinfo/openembedded-core>

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to