From a45a766bf3af5eb9f7ebf3ab62d03ab727ff3bcd Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Sun, 26 Jun 2011 16:25:29 +0000 Subject: [PATCH] re PR target/47997 (gcc on macosx: "ld: warning: -fwritable-strings not compatible with literal CF/NSString") PR target/47997 * config/darwin.c (darwin_mergeable_string_section): Place string constants in '.cstring' rather than '.const' when CF/NSStrings are active. From-SVN: r175410 --- gcc/ChangeLog | 7 +++++++ gcc/config/darwin.c | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2737249a0e7..12a90b7d084 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-06-25 Iain Sandoe + + PR target/47997 + * config/darwin.c (darwin_mergeable_string_section): Place string + constants in '.cstring' rather than '.const' when CF/NSStrings are + active. + 2011-06-26 Eric Botcazou * config/sparc/sparc.c (save_local_or_in_reg_p): Adjust comment. diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index b47e806af06..bedda1ec65b 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -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 -- 2.30.2