[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