Add support to the Xtensa target for creating trampolines for out-of-range branches.
authorDavid Weatherford <weath@cadence.com>
Fri, 21 Mar 2014 11:53:42 +0000 (11:53 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 21 Mar 2014 11:53:42 +0000 (11:53 +0000)
commita82c7d9030b67a6a76a5403d0e1641f9e42141ac
tree4838e1619e2b50dd25dc47c6dcc0ccf1edf5a45e
parentb65dc60b233704405c334bbe16c4fc5689187b7b
Add support to the Xtensa target for creating trampolines for out-of-range branches.

    * tc-xtensa.c (xtensa_check_frag_count, xtensa_create_trampoline_frag)
    (xtensa_maybe_create_trampoline_frag, init_trampoline_frag)
    (find_trampoline_seg, search_trampolines, get_best_trampoline)
    (check_and_update_trampolines, add_jump_to_trampoline)
    (dump_trampolines): New function.
    (md_parse_option): Add cases for --[no-]trampolines options.
    (md_assemble, finish_vinsn, xtensa_end): Add call to
    xtensa_check_frag_count.
    (xg_assemble_vliw_tokens): Add call to
    xtensa_maybe_create_trampoline_frag.
    (xtensa_relax_frag): Relax fragments with RELAX_TRAMPOLINE state.
    (relax_frag_immed): Relax jump instructions that cannot reach its
    target.
    * tc-xtensa.h (xtensa_relax_statesE::RELAX_TRAMPOLINE): New relax
    state.

    * as.texinfo: Document --[no-]trampolines command-line options.
    * c-xtensa.texi: Document trampolines relaxation and command line
    options.

    * frags.c (get_frag_count, clear_frag_count): New function.
    (frag_alloc): Increment totalfrags counter.
    * frags.h (get_frag_count, clear_frag_count): New function.

    * all.exp: Add test for trampoline relaxation.
    * trampoline.d: Trampoline relaxation expected dump.
    * trampoline.s: Trampoline relaxation test source.
gas/ChangeLog
gas/config/tc-xtensa.c
gas/config/tc-xtensa.h
gas/doc/as.texinfo
gas/doc/c-xtensa.texi
gas/frags.c
gas/frags.h
gas/testsuite/ChangeLog
gas/testsuite/gas/xtensa/all.exp
gas/testsuite/gas/xtensa/trampoline.d [new file with mode: 0644]
gas/testsuite/gas/xtensa/trampoline.s [new file with mode: 0644]