Initial checkin for binutils 2.23.2 (needed by aarch64)

Change-Id: I7e5f319e9e632cc0ccc8a4ec1051169ed2849ca4
[2.23] Support decoding of symbols for plt entries on arm

See f9dadca89a4a993e5c68137b5b162b5e79fa4455 and
fa1f1a225fd4598b2fb6edf4bf63591c9e72d13a

Change-Id: Ib5c17cc7e65989fe962ecb96e0ea8b6cf2aa5651
[2.23] Provide __executable_start for PIE

See e84d2df4e4d8a96c78d8f738a6a1754343d61038
and 0bacab67d884144f0f0701359c481a6f0749f1f3

Change-Id: Iff854f6d77e859c83a287810c7dc666cf8a70878
[2.23] Fix newer binutils not to assert on non-existence tag_FP_arch

See 1342ca94f07e5164f14acb74b2c3903ba0c4009a

Change-Id: I77b5ce1671fcb6e8b5dca0ddf2269aeaf8f3883d
[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
[2.23] text section reordering

See dbb331ef919ae846a3983b7be1e5ffbb1ee1a839 and
43cc3f59831134ed0b2447bb21767371417ac54a

Change-Id: Iacfaec947be7ab977959b03af019493c81464474
[2.23] Modify linker script generation for MIPS Android

See 9adb6697703c230d1bded964b2fd2dceb80db2f3

Change-Id: I8de1821e683bd7210f30c19ad6170beb56915228
Merge "[2.23] Fix the "DIV usage mismatch between blah.o and output" error"
Merge "[2.23] text section reordering"
[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>
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
Merge "Silence ARM as error "MOV Rd, Rs" two low regs with clang/armv5/thumb1"
   [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>
Backport a binutils Windows x86_64 fix from Alan Modra

http://comments.gmane.org/gmane.comp.gnu.binutils.cvs/21090

Fixes as.exe crash on Windows x86_64:

"out of memory allocating 4294967280 bytes"
[2.21] Backport patches from trunk for merging string literals

   2013-05-03  Alan Modra  <amodra@bigpond.net.au>
   2013-05-01  H.J. Lu  <hjl.tools@gmail.com>
   2013-05-01  Cary Coutant  <ccoutant@google.com>
   2013-04-29  Alexander Ivchenko  <alexander.ivchenko@intel.com>

See the same patch to 2.22/2.23 f69768d4c89186a859db6aa967f9bde047b50b6d
for more details

Change-Id: Ifb8582f1bee390fb26ce0f6fa56b8958fd589a9a
[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>
[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>
Merge "[2.23] Fix main() relocation issue on x32 gold"
Merge "[2.22], [2.23] Backport of the patch that enables "--sort-section=name" 	command line option in gold."
[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>