diff options
Diffstat (limited to 'lang/gcc32/files/patch-fa')
-rw-r--r-- | lang/gcc32/files/patch-fa | 90 |
1 files changed, 50 insertions, 40 deletions
diff --git a/lang/gcc32/files/patch-fa b/lang/gcc32/files/patch-fa index ec6a579f554a..b85b8f989c31 100644 --- a/lang/gcc32/files/patch-fa +++ b/lang/gcc32/files/patch-fa @@ -1,5 +1,5 @@ ---- gcc/c-common.c.orig Wed Mar 8 03:21:26 2000 -+++ gcc/c-common.c Tue Mar 14 21:46:03 2000 +--- gcc/c-common.c.orig Sun Jun 18 06:09:26 2000 ++++ gcc/c-common.c Mon Jun 26 20:15:08 2000 @@ -154,7 +154,7 @@ int, int, int)); static void init_attributes PARAMS ((void)); @@ -7,9 +7,9 @@ - int, int)); + int, int, int)); static void record_international_format PARAMS ((tree, tree, int)); - static tree c_find_base_decl PARAMS ((tree)); static int default_valid_lang_attribute PARAMS ((tree, tree, tree, tree)); -@@ -786,6 +786,7 @@ + +@@ -805,6 +805,7 @@ enum format_type format_type; tree argument; unsigned int arg_num; @@ -17,7 +17,7 @@ if (TREE_CODE (decl) != FUNCTION_DECL) { -@@ -796,7 +797,7 @@ +@@ -815,7 +816,7 @@ if (TREE_CODE (format_type_id) != IDENTIFIER_NODE) { @@ -26,7 +26,7 @@ continue; } else -@@ -804,12 +805,26 @@ +@@ -823,12 +824,26 @@ const char *p = IDENTIFIER_POINTER (format_type_id); if (!strcmp (p, "printf") || !strcmp (p, "__printf__")) @@ -53,17 +53,17 @@ else { warning ("`%s' is an unrecognized format function type", p); -@@ -882,7 +897,8 @@ +@@ -901,7 +916,8 @@ record_function_format (DECL_NAME (decl), DECL_ASSEMBLER_NAME (decl), - format_type, format_num, first_arg_num); -+ format_type, null_format_ok, format_num, -+ first_arg_num); ++ format_type, format_num, first_arg_num, ++ null_format_ok); break; } -@@ -1186,6 +1202,11 @@ +@@ -1207,6 +1223,11 @@ } format_char_info; static format_char_info print_char_table[] = { @@ -75,73 +75,74 @@ { "di", 0, T_I, T_I, T_I, T_L, T_LL, T_LL, T_ST, "-wp0 +" }, { "oxX", 0, T_UI, T_UI, T_UI, T_UL, T_ULL, T_ULL, T_ST, "-wp0#" }, { "u", 0, T_UI, T_UI, T_UI, T_UL, T_ULL, T_ULL, T_ST, "-wp0" }, -@@ -1246,6 +1267,7 @@ - tree name; /* identifier such as "printf" */ - tree assembler_name; /* optional mangled identifier (for C++) */ +@@ -1269,6 +1290,7 @@ enum format_type format_type; /* type of format (printf, scanf, etc.) */ -+ int null_format_ok; /* TRUE if the format string may be NULL */ int format_num; /* number of format argument */ int first_arg_num; /* number of first arg (zero for varargs) */ ++ int null_format_ok; /* TRUE if the format string may be NULL */ } function_format_info; -@@ -1278,25 +1300,25 @@ + + static function_format_info *function_format_list = NULL; +@@ -1299,25 +1321,25 @@ init_function_format_info () { record_function_format (get_identifier ("printf"), NULL_TREE, - printf_format_type, 1, 2); -+ printf_format_type, 0, 1, 2); ++ printf_format_type, 1, 2, 0); record_function_format (get_identifier ("fprintf"), NULL_TREE, - printf_format_type, 2, 3); -+ printf_format_type, 0, 2, 3); ++ printf_format_type, 2, 3, 0); record_function_format (get_identifier ("sprintf"), NULL_TREE, - printf_format_type, 2, 3); -+ printf_format_type, 0, 2, 3); ++ printf_format_type, 2, 3, 0); record_function_format (get_identifier ("scanf"), NULL_TREE, - scanf_format_type, 1, 2); -+ scanf_format_type, 0, 1, 2); ++ scanf_format_type, 1, 2, 0); record_function_format (get_identifier ("fscanf"), NULL_TREE, - scanf_format_type, 2, 3); -+ scanf_format_type, 0, 2, 3); ++ scanf_format_type, 2, 3, 0); record_function_format (get_identifier ("sscanf"), NULL_TREE, - scanf_format_type, 2, 3); -+ scanf_format_type, 0, 2, 3); ++ scanf_format_type, 2, 3, 0); record_function_format (get_identifier ("vprintf"), NULL_TREE, - printf_format_type, 1, 0); -+ printf_format_type, 0, 1, 0); ++ printf_format_type, 1, 0, 0); record_function_format (get_identifier ("vfprintf"), NULL_TREE, - printf_format_type, 2, 0); -+ printf_format_type, 0, 2, 0); ++ printf_format_type, 2, 0, 0); record_function_format (get_identifier ("vsprintf"), NULL_TREE, - printf_format_type, 2, 0); -+ printf_format_type, 0, 2, 0); ++ printf_format_type, 2, 0, 0); record_function_format (get_identifier ("strftime"), NULL_TREE, - strftime_format_type, 3, 0); -+ strftime_format_type, 0, 3, 0); ++ strftime_format_type, 3, 0, 0); record_international_format (get_identifier ("gettext"), NULL_TREE, 1); record_international_format (get_identifier ("dgettext"), NULL_TREE, 2); -@@ -1313,11 +1335,12 @@ - (e.g. for varargs such as vfprintf). */ +@@ -1335,12 +1357,13 @@ static void --record_function_format (name, assembler_name, format_type, -+record_function_format (name, assembler_name, format_type, null_format_ok, - format_num, first_arg_num) + record_function_format (name, assembler_name, format_type, +- format_num, first_arg_num) ++ format_num, first_arg_num, null_format_ok) tree name; tree assembler_name; enum format_type format_type; -+ int null_format_ok; int format_num; int first_arg_num; ++ int null_format_ok; { -@@ -1341,6 +1364,7 @@ - } + function_format_info *info; +@@ -1364,6 +1387,7 @@ info->format_type = format_type; -+ info->null_format_ok = null_format_ok; info->format_num = format_num; info->first_arg_num = first_arg_num; ++ info->null_format_ok = null_format_ok; } -@@ -1494,7 +1518,8 @@ + + /* Record information for the names of function that modify the format +@@ -1515,7 +1539,8 @@ if (integer_zerop (format_tree)) { @@ -151,7 +152,7 @@ return; } if (TREE_CODE (format_tree) != ADDR_EXPR) -@@ -1683,12 +1708,13 @@ +@@ -1704,12 +1729,13 @@ It will work on most machines, because size_t and int have the same mode. But might as well warn anyway, since it will fail on other machines. */ @@ -166,7 +167,7 @@ } } else -@@ -1733,6 +1759,53 @@ +@@ -1754,6 +1780,53 @@ } } } @@ -175,7 +176,7 @@ + /* There should be an int arg to control the string arg. */ + if (params == 0) + { -+ warning (tfaff); ++ tfaff (); + return; + } + if (info->first_arg_num != 0) @@ -198,7 +199,7 @@ + /* There should be an unsigned char * arg before the string arg. */ + if (params == 0) + { -+ warning (tfaff); ++ tfaff (); + return; + } + if (info->first_arg_num != 0) @@ -220,7 +221,7 @@ aflag = 0; -@@ -1801,7 +1874,8 @@ +@@ -1822,7 +1895,8 @@ switch (info->format_type) { case printf_format_type: @@ -230,3 +231,12 @@ break; case scanf_format_type: fci = scan_char_table; +@@ -1859,7 +1933,7 @@ + if (index (fci->flag_chars, '2') != 0) + warning ("`%%%c' yields only last 2 digits of year", format_char); + else if (index (fci->flag_chars, '3') != 0) +- warning ("`%%%c' yields only last 2 digits of year in some locales", ++ warning ("`%%%c' yields only last 2 digits of year in some locales on non-BSD systems", + format_char); + if (precise && index (fci->flag_chars, 'p') == 0) + warning ("precision used with `%c' format", format_char); |