On Wed, 7 Aug 2013, Xinliang David Li wrote:
> Index: config/i386/stringop.def
> ===================================================================
> --- config/i386/stringop.def (revision 0)
> +++ config/i386/stringop.def (revision 0)
> @@ -0,0 +1,42 @@
> +/* Definitions for option handling for IA-32.
> + Copyright (C) 2013 Free Software Foundation, Inc.
> +
> +This file is part of GCC.
> +
> +GCC is free software; you can redistribute it and/or modify
> +it under the terms of the GNU General Public License as published by
> +the Free Software Foundation; either version 3, or (at your option)
> +any later version.
> +
> +GCC is distributed in the hope that it will be useful,
> +but WITHOUT ANY WARRANTY; without even the implied warranty of
> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +GNU General Public License for more details.
> +
> +Under Section 7 of GPL version 3, you are granted additional
> +permissions described in the GCC Runtime Library Exception, version
> +3.1, as published by the Free Software Foundation.
Why the exception? This should only be used on the host, not the target.
> + do
> + {
> + int mins, maxs;
> + stringop_alg alg;
> + char alg_name[128];
> + char align[16];
> +
> + next_range_str = strchr (curr_range_str, ',');
> + if (next_range_str)
> + *next_range_str++ = '\0';
> +
> + if (3 != sscanf (curr_range_str, "%[^:]:%d:%s", alg_name, &maxs,
> align))
This appears to introduce buffer overruns, which is never OK - whatever
the length of strings in the command-line arguments, you must not overflow
fixed-width buffers, so you must specify maximum field widths for the %[]
and %s.
> + {
> + warning (0, "Wrong arg %s to option %s", curr_range_str,
> + is_memset ? "-mmemset_strategy=" : "-mmemcpy_strategy=");
> + return;
Invalid option arguments should be errors, not warnings, and diagnostics
should not start with a capital letter. Same applies to other diagnostics
here.
> Index: config/i386/stringop.opt
> ===================================================================
> --- config/i386/stringop.opt (revision 0)
> +++ config/i386/stringop.opt (revision 0)
> @@ -0,0 +1,36 @@
> +/* Definitions for option handling for IA-32.
> + Copyright (C) 2013 Free Software Foundation, Inc.
> +
> +This file is part of GCC.
> +
> +GCC is free software; you can redistribute it and/or modify
> +it under the terms of the GNU General Public License as published by
> +the Free Software Foundation; either version 3, or (at your option)
> +any later version.
> +
> +GCC is distributed in the hope that it will be useful,
> +but WITHOUT ANY WARRANTY; without even the implied warranty of
> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +GNU General Public License for more details.
> +
> +Under Section 7 of GPL version 3, you are granted additional
> +permissions described in the GCC Runtime Library Exception, version
> +3.1, as published by the Free Software Foundation.
Again, why the exception?
--
Joseph S. Myers
[email protected]