summaryrefslogtreecommitdiffstats
path: root/gcc/config/darwin.c
diff options
context:
space:
mode:
authoriains <iains@138bc75d-0d04-0410-961f-82ee72b054a4>2011-06-26 16:25:29 +0000
committeriains <iains@138bc75d-0d04-0410-961f-82ee72b054a4>2011-06-26 16:25:29 +0000
commit1991f4fdf50aa0b20df11a0bddb50ff9e0d34e67 (patch)
treed376fcf4439c0de9d23ae631e018610d6a137da7 /gcc/config/darwin.c
parente3260d66ed0c89a4cd7249416b56ba81d5e2c960 (diff)
downloadppe42-gcc-1991f4fdf50aa0b20df11a0bddb50ff9e0d34e67.tar.gz
ppe42-gcc-1991f4fdf50aa0b20df11a0bddb50ff9e0d34e67.zip
PR target/47997
* config/darwin.c (darwin_mergeable_string_section): Place string constants in '.cstring' rather than '.const' when CF/NSStrings are active. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175410 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/darwin.c')
-rw-r--r--gcc/config/darwin.c6
1 files changed, 5 insertions, 1 deletions
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
OpenPOWER on IntegriCloud