This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: New parameters to control stringop expansion libcall strategy


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
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]