[2.23] Support decoding of symbols for plt entries on arm

See f9dadca89a4a993e5c68137b5b162b5e79fa4455 and
fa1f1a225fd4598b2fb6edf4bf63591c9e72d13a

Change-Id: Ib5c17cc7e65989fe962ecb96e0ea8b6cf2aa5651

Author: Andrew Hsieh <andrewhsieh@google.com>
Date:   Sat Apr 6 18:18:27 2013 +0800
[2.23] Provide __executable_start for PIE

See e84d2df4e4d8a96c78d8f738a6a1754343d61038
and 0bacab67d884144f0f0701359c481a6f0749f1f3

Change-Id: Iff854f6d77e859c83a287810c7dc666cf8a70878

Author: Andrew Hsieh <andrewhsieh@google.com>
Date:   Sat Apr 6 18:28:08 2013 +0800
[2.23] Fix newer binutils not to assert on non-existence tag_FP_arch

See 1342ca94f07e5164f14acb74b2c3903ba0c4009a

Change-Id: I77b5ce1671fcb6e8b5dca0ddf2269aeaf8f3883d

Author: Andrew Hsieh <andrewhsieh@google.com>
Date:   Sat Apr 6 18:33:39 2013 +0800
[2.23] Fix the "DIV usage mismatch between blah.o and output" error

See http://sourceware.org/ml/binutils/2012-12/msg00202.html

Change-Id: I5a1ad8614c8513e9c778e9207b9cfba2dac44c9f

Author: Ben Cheng <bccheng@android.com>
Date:   Sat Apr 6 19:27:31 2013 +0800
[2.23] text section reordering

See dbb331ef919ae846a3983b7be1e5ffbb1ee1a839 and
43cc3f59831134ed0b2447bb21767371417ac54a

Change-Id: Iacfaec947be7ab977959b03af019493c81464474

Author: Andrew Hsieh <andrewhsieh@google.com>
Date:   Sun Apr 7 14:21:40 2013 +0800
[2.23] Modify linker script generation for MIPS Android

See 9adb6697703c230d1bded964b2fd2dceb80db2f3

Change-Id: I8de1821e683bd7210f30c19ad6170beb56915228

Author: Andrew Hsieh <andrewhsieh@google.com>
Date:   Tue Apr 9 10:40:52 2013 +0800
[2.23] Backport mingw/plugins fixes from trunk

Backport of 3 patches:

2012-10-13  H.J. Lu  <hongjiu.lu@intel.com>

       * Makefile.am (LIBDL): Replace -ldl with @lt_cv_dlopen_libs@.
       * configure.in (lt_cv_dlopen_libs): AC_SUBST.
       * Makefile.in: Regenerated.
       * configure: Likewise.

2013-01-11  Pavel Chupin  <pavel.v.chupin@intel.com>

       Fix mingw gold build with plugins enabled
       * Makefile.am: Replace -ldl with @DLOPEN_LIBS@.
       * configure.ac: Export DLOPEN_LIBS and add headers check.
       * plugin.cc: Handle non-dlfcn case.
       * Makefile.in: Regenerate.
       * config.in: Regenerate.
       * configure: Regenerate.
       * testsuite/Makefile.in: Regenerate.

2013-02-11  Ian Lance Taylor  <iant@google.com>

       * descriptors.cc (Descriptors::close_all): New function.
       * descriptors.h (class Descriptors): Declare close_all.
       (close_all_descriptors): New inline function.
       * plugin.cc: Include "descriptors.h".
       (Plugin_manager::cleanup): Call close_all_descriptors.

Change-Id: I57e583b3566d214e816363501d1047833e834417
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>

Author: Pavel Chupin <pavel.v.chupin@intel.com>
Date:   Mon Apr 15 16:40:50 2013 +0400
Silence ARM as error "MOV Rd, Rs" two low regs with clang/armv5/thumb1

Clang -target armv5te-none-linux-androideabi -mthumb generates
"MOV Rd, Rs" with two low regs and expect it doesn't change CPSR.
The only encoding in thumb1 allows it is "Hi register operations"
with H1=0 && H2=0 but the behavior is undefined in v5t until v6.
The assembler from binutils-2.22 (compiled with gcc4.7) starts to
check and abort with message reads:

  main.s:86: Error: MOV Rd, Rs with two low registers is not permitted on this architecture -- mov r0,r4

Temporily disable this error before clang is fixed.

Change-Id: I3332707e28c00af220896c64b98deef1a4237749

Author: Andrew Hsieh <andrewhsieh@google.com>
Date:   Thu Apr 18 13:47:12 2013 +0800
[2.22], [2.23] Backport of 4 patches from trunk for enabling merging string literals:

2013-05-03  Alan Modra  <amodra@bigpond.net.au>

    * merge.cc (Output_merge_string::do_add_input_section): Correct
    scan for number of strings.  Rename vars to avoid shadowing.
    Include missing terminator in input_size_.

2013-05-01  H.J. Lu  <hjl.tools@gmail.com>

Restore empty string handling

    * merge.cc (Output_merge_string<Char_type>::do_add_input_section):
    Restore empty string handling.

2013-05-01  Cary Coutant  <ccoutant@google.com>

gold/
    * stringpool.cc (Stringpool_template::new_key_offset): Fix
    uninitialized warning.

2013-04-29  Alexander Ivchenko  <alexander.ivchenko@intel.com>

gold/
    * output.cc (Output_section::add_merge_input_section): Allow
    to merge sections if the alignment is more than character size.
    * merge.h (Output_merge_string::Output_merge_string): Remove
    assert.
    * merge.cc (Output_merge_string<Char_type>::do_add_input_section): Count
    only not-null strings. Check the alignment of strings.
    * stringpool.h
    (Stringpool_template<Stringpool_char>::Stringpool_template): Add
    alignment as the argument.
    (Stringpool_template<Stringpool_char>::addralign_): New class member.
    * stringpool.cc (Stringpool_template<Stringpool_char>::new_key_offset):
    Align non-zero length strings according to the addralign_.
    (Stringpool_template<Stringpool_char>::set_string_offsets):
    Updating offsets according to the given alignment.
    * testsuite/Makefile.am (text_section_grouping): Test if string
    literals are getting merged.
    * testsuite/Makefile.in: Regenerate.
    * testsuite/merge_string_literals_1.c: New file.
    * testsuite/merge_string_literals_2.c: Ditto.
    * testsuite/merge_string_literals.sh: Ditto.

Change-Id: I865560473766a31294d88ddcf43b2991c569c638
Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>

Author: Alexander Ivchenko <alexander.ivchenko@intel.com>
Date:   Thu May 23 18:03:27 2013 +0400
[2.23] Fix main() relocation issue on x32 gold

Can be seen as runtime segfault on any test linked by gold 2.23 for x32
target. bfd linker is fine. gold starting from 2.23 supports x32.

Backport of patch tracked by gold/ChangeLog revision 1.957:

    2012-09-12  Ian Lance Taylor  <iant@google.com>

        PR gold/14570
        * output.cc: Rename Output_data_got template parameter from size
        to got_size for all functions.  Compile all variants of
        Output_data_got.
        (Output_data_got::Got_entry::write): Correct use of size for
        symbol value.  Use local_is_tls rather than casting to
        Sized_relobj_file.
        * object.h (class Object): Add local_is_tls and do_local_is_tls.
        (class Sized_relobj_file): Add do_local_is_tls.
        * incremental.h (class Sized_relobj_incr): Add do_local_is_tls.

Change-Id: I2d3848b2a3ca4b8942649ee04d53ad2679c05f8c
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>

Author: Pavel Chupin <pavel.v.chupin@intel.com>
Date:   Fri May 31 15:12:28 2013 +0400
[2.22], [2.23] Backport of the patch that enables "--sort-section=name" command line option in gold.

    2013-05-30  Alexander Ivchenko  <alexander.ivchenko@intel.com>
                Sriraman Tallam  <tmsriram@google.com>

        * options.h (sort_section): New option.
        * output.h (Input_section_sort_section_prefix_special_ordering_compare):
        Rename from Input_section_sort_section_name_special_ordering_compare.
        (Input_section_sort_section_name_compare): New struct.
        * output.cc (Output_section::Input_section_sort_section_name_compare::
        operator()): New function.
        (Output_section::sort_attached_input_sections): Use new sort function
        for .text if --sort-section=name is specified.
        * layout.cc (Layout::make_output_section):
        Add sorting by name when --sort-section=name is specified.
        * testsuite/Makefile.am (text_section_grouping): Test option
        --sort-section=name.
        * testsuite/Makefile.in: Regenerate.
        * testsuite/section_sorting_name.cc: New file.
        * testsuite/section_sorting_name.sh: New file.

Change-Id: Icbb4bb11b95398c1f052326145aefaa2bdf41614
Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>

Author: Alexander Ivchenko <alexander.ivchenko@intel.com>
Date:   Fri May 31 15:23:56 2013 +0400
[2.21], [2.22], [2.23] Backport of the patch for fixing large symbol alignment.

    2013-06-05  Alexander Ivchenko  <alexander.ivchenko@intel.com>

    gold/
        * layout.cc (Layout::set_segment_offsets): Taking care of the case when
        the maximum segment alignment is larger than the page size.
        * testsuite/Makefile.am (large_symbol_alignment): Test that Gold
        correctly aligns the symbols with large alignemnt.
        * testsuite/Makefile.in: Regenerate.
        * testsuite/large_symbol_alignment.cc: New file.

Change-Id: I2fe5b73b9e76050f0f42bbbc9086d0d5824c0020
Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>

Author: Alexander Ivchenko <alexander.ivchenko@intel.com>
Date:   Thu Jun 6 15:16:46 2013 +0400