On 26 Jun 2011, at 17:28, Iain Sandoe wrote:

It should also be applied to 4.6.x at some stage.

applied to 4.6 branch.

gcc/

        PR target/47997
        * config/darwin.c (darwin_mergeable_string_section): Place string
        constants in '.cstring' rather than '.const' when CF/NSStrings are
        active.

Index: gcc/config/darwin.c
===================================================================
--- gcc/config/darwin.c (revision 175409)
+++ gcc/config/darwin.c (working copy)
@@ -1195,7 +1195,11 @@ static section *
darwin_mergeable_string_section (tree exp,
                                 unsigned HOST_WIDE_INT align)
{
-  if (flag_merge_constants
+ /* Darwin's ld expects to see non-writable string literals in the .cstring + section. Later versions of ld check and complain when CFStrings are + enabled. Therefore we shall force the strings into .cstring since we
+     don't support writable ones anyway.  */
+  if ((darwin_constant_cfstrings || flag_merge_constants)
      && TREE_CODE (exp) == STRING_CST
      && TREE_CODE (TREE_TYPE (exp)) == ARRAY_TYPE
      && align <= 256


Reply via email to