Index: gcc/gcc/config/sol2-c.c |
diff --git a/gcc/gcc/config/sol2-c.c b/gcc/gcc/config/sol2-c.c |
index 69426a4596beeeacbb0e666d4c436e8cfe4a7a34..0b322d1f80fbbaa620848bc81f4f710df0f45481 100644 |
--- a/gcc/gcc/config/sol2-c.c |
+++ b/gcc/gcc/config/sol2-c.c |
@@ -1,5 +1,5 @@ |
/* Solaris support needed only by C/C++ frontends. |
- Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. |
+ Copyright (C) 2004, 2005, 2007, 2009, 2010 Free Software Foundation, Inc. |
Contributed by CodeSourcery, LLC. |
This file is part of GCC. |
@@ -36,15 +36,15 @@ along with GCC; see the file COPYING3. If not see |
/* cmn_err only accepts "l" and "ll". */ |
static const format_length_info cmn_err_length_specs[] = |
{ |
- { "l", FMT_LEN_l, STD_C89, "ll", FMT_LEN_ll, STD_C89 }, |
- { NULL, 0, 0, NULL, 0, 0 } |
+ { "l", FMT_LEN_l, STD_C89, "ll", FMT_LEN_ll, STD_C89, 0 }, |
+ { NULL, FMT_LEN_none, STD_C89, NULL, FMT_LEN_none, STD_C89, 0 } |
}; |
static const format_flag_spec cmn_err_flag_specs[] = |
{ |
{ 'w', 0, 0, N_("field width"), N_("field width in printf format"), STD_C89 }, |
{ 'L', 0, 0, N_("length modifier"), N_("length modifier in printf format"), STD_C89 }, |
- { 0, 0, 0, NULL, NULL, 0 } |
+ { 0, 0, 0, NULL, NULL, STD_C89 } |
}; |
@@ -66,7 +66,7 @@ static const format_char_info cmn_err_char_table[] = |
{ "p", 1, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "w", "c", NULL }, |
{ "s", 1, STD_C89, { T89_C, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "w", "cR", NULL }, |
{ "b", 0, STD_C89, { T89_I, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "w", "", &bitfield_string_type }, |
- { NULL, 0, 0, NOLENGTHS, NULL, NULL, NULL } |
+ { NULL, 0, STD_C89, NOLENGTHS, NULL, NULL, NULL } |
}; |
const format_kind_info solaris_format_types[] = { |
@@ -170,9 +170,10 @@ solaris_pragma_init (cpp_reader *pfile ATTRIBUTE_UNUSED) |
tree decl = identifier_global_value (t); |
if (decl && DECL_P (decl)) |
{ |
- tree init_list = build_tree_list (get_identifier ("init"), |
- NULL); |
- tree attrs = tree_cons (get_identifier ("used"), NULL, init_list); |
+ tree attrs = build_tree_list (get_identifier ("init"), |
+ NULL); |
+ TREE_USED (decl) = 1; |
+ DECL_PRESERVE_P (decl) = 1; |
decl_attributes (&decl, attrs, 0); |
} |
else |
@@ -228,9 +229,10 @@ solaris_pragma_fini (cpp_reader *pfile ATTRIBUTE_UNUSED) |
tree decl = identifier_global_value (t); |
if (decl && DECL_P (decl)) |
{ |
- tree fini_list = build_tree_list (get_identifier ("fini"), |
- NULL); |
- tree attrs = tree_cons (get_identifier ("used"), NULL, fini_list); |
+ tree attrs = build_tree_list (get_identifier ("fini"), |
+ NULL); |
+ TREE_USED (decl) = 1; |
+ DECL_PRESERVE_P (decl) = 1; |
decl_attributes (&decl, attrs, 0); |
} |
else |