[PATCH v2 09/65] bpf: use is_whitespace()

Alan Modra amodra@gmail.com
Tue Jan 28 09:21:47 GMT 2025


On Mon, Jan 27, 2025 at 05:08:18PM +0100, Jan Beulich wrote:
> Wherever blanks are permissible in input, tabs ought to be permissible,
> too. This is particularly relevant when -f is passed to gas (alongside
> appropriate input). At the same time use is_end_of_stmt() instead of
> open-coded nul char checks.
> ---
> v2: New.
> 
> --- a/gas/config/tc-bpf.c
> +++ b/gas/config/tc-bpf.c
> @@ -1274,7 +1274,7 @@ parse_expression (char *s, expressionS *
>       these whitespaces.  */
>    {
>      char *p;
> -    for (p = s - 1; p >= saved_s && *p == ' '; --p)
> +    for (p = s - 1; p >= saved_s && is_whitespace (*p); --p)
>        --s;
>    }
>  
> @@ -1501,7 +1501,7 @@ md_assemble (char *str ATTRIBUTE_UNUSED)
>            if (*p == ' ')
>              {
>                /* Expect zero or more spaces.  */
> -              while (*s != '\0' && (*s == ' ' || *s == '\t'))
> +              while (!is_end_of_stmt (*s) && is_whitespace (*s))

Just is_whitespace here.

>                  s += 1;
>                p += 1;
>              }
> @@ -1520,20 +1520,20 @@ md_assemble (char *str ATTRIBUTE_UNUSED)
>                else if (*(p + 1) == 'w')
>                  {
>                    /* Expect zero or more spaces.  */
> -                  while (*s != '\0' && (*s == ' ' || *s == '\t'))
> +                  while (!is_end_of_stmt (*s) && is_whitespace (*s))

Same.

>                      s += 1;
>                    p += 2;
>                  }
>                else if (*(p + 1) == 'W')
>                  {
>                    /* Expect one or more spaces.  */
> -                  if (*s != ' ' && *s != '\t')
> +                  if (!is_whitespace (*s))
>                      {
>                        PARSE_ERROR ("expected white space, got '%s'",
>                                     s);
>                        break;
>                      }
> -                  while (*s != '\0' && (*s == ' ' || *s == '\t'))
> +                  while (!is_end_of_stmt (*s) && is_whitespace (*s))

Same.

>                      s += 1;
>                    p += 2;
>                  }
> @@ -1620,7 +1620,7 @@ md_assemble (char *str ATTRIBUTE_UNUSED)
>  
>                    if (p[1] == 'I')
>                      {
> -                      while (*s == ' ' || *s == '\t')
> +                      while (is_whitespace (*s))
>                          s += 1;
>                        if (*s != '+' && *s != '-')
>                          {
> @@ -1643,7 +1643,7 @@ md_assemble (char *str ATTRIBUTE_UNUSED)
>                  {
>                    char *exp = NULL;
>  
> -                  while (*s == ' ' || *s == '\t')
> +                  while (is_whitespace (*s))
>                      s += 1;
>                    if (*s != '+' && *s != '-')
>                      {
> @@ -1735,9 +1735,9 @@ md_assemble (char *str ATTRIBUTE_UNUSED)
>        if (*p == '\0')
>          {
>            /* Allow white spaces at the end of the line.  */
> -          while (*s != '\0' && (*s == ' ' || *s == '\t'))
> +          while (!is_end_of_stmt (*s) && is_whitespace (*s))

Again.

>              s += 1;
> -          if (*s == '\0')
> +          if (is_end_of_stmt (*s))
>              /* We parsed an instruction successfully.  */
>              break;
>            PARSE_ERROR ("extra junk at end of line");

-- 
Alan Modra


More information about the Binutils mailing list