This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Patch for isdigit/isalpha/etc. macro arguments
- From: Mark Kettenis <mark dot kettenis at xs4all dot nl>
- To: sje at cup dot hp dot com
- Cc: gdb-patches at sourceware dot org
- Date: Sat, 7 Apr 2007 01:03:10 +0200 (CEST)
- Subject: Re: Patch for isdigit/isalpha/etc. macro arguments
- References: <200704062233.PAA16568@hpsje.cup.hp.com>
> Date: Fri, 6 Apr 2007 15:33:50 -0700 (PDT)
> From: Steve Ellcey <sje@cup.hp.com>
>
> While getting gdb to build on hppa hp-ux I ran into an interesting
> problem. I was building with gcc which means that the gdb makefile will
> use -Wall and -Werror as options (a good thing in my opinion). The
> problem I ran into is with the use of the isdigit, isalpha, isupper,
> etc. macros.
>
> With GCC 4.1.1 and the -Wall -Werror options, if you access an array
> with a char expression as the index instead of an int expression you get
> an error.
Sigh, another useless GCC warning that shouldn't be included in -Wall
if you'd ask me. However...
> HP-UX does not put the int cast in the array reference in the macros, so
> if the argument to isdigit is not an int, you get an error (when using
> gcc -Wall -Werror).
This might indicate that HP-UX's isXXX() implementation is actually
broken, because it will cause out-of-bounds access for characters that
have the high bit set.
> Here is a patch to cast the arguments to isalpha, etc. With this patch
> and my previous HP-UX specific patch I was able to build gdb on hppa
> hp-ux.
>
> Is this patch OK to checkin?
Sorry, you obviously spent some serious amount of time fixing this,
but I think this is just gross. It also would just hide the bug
mentioned above. I guess we should use -liberty's "safe-ctype.h"
instead.
> 2007-04-06 Steve Ellcey <sje@cup.hp.com>
>
> * ada-exp.y: Cast idigit, islower, isupper, isalpha, etc. arg to int.
> * ada-lang.c: Ditto.
> * ada-lex.l: Ditto.
> * ada-typeprint.c: Ditto.
> * breakpoint.c: Ditto.
> * coffread.c: Ditto.
> * completer.c: Ditto.
> * cp-support.c: Ditto.
> * exec.c: Ditto.
> * expprint.c: Ditto.
> * gnu-v2-abi.c: Ditto.
> * infcmd.c: Ditto.
> * infrun.c: Ditto.
> * jv-exp.y: Ditto.
> * main.c: Ditto.
> * maint.c: Ditto.
> * minsyms.c: Ditto.
> * objc-exp.y: Ditto.
> * objc-lang.c: Ditto.
> * p-exp.y: Ditto.
> * p-typeprint.c: Ditto.
> * parse.c: Ditto.
> * remote-utils.c: Ditto.
> * remote.c: Ditto.
> * serial.c: Ditto.
> * stabsread.c: Ditto.
> * stack.c: Ditto.
> * symfile.c: Ditto.
> * symtab.c: Ditto.
> * thread.c: Ditto.
> * utils.c: Ditto.
> * cli/cli-cmds.c: Ditto.
> * cli/cli-decode.c: Ditto.
> * cli/cli-dump.c: Ditto.
> * cli/cli-script.c: Ditto.
> * cli/cli-setshow.c: Ditto.
> * mi/mi-cmd-var.c: Ditto.
> * mi/mi-parse.c: Ditto.
> * tui/tui-win.c: Ditto.
>
>
> Index: ada-exp.y
> ===================================================================
> RCS file: /cvs/src/src/gdb/ada-exp.y,v
> retrieving revision 1.20
> diff -p -u -r1.20 ada-exp.y
> --- ada-exp.y 9 Jan 2007 17:58:49 -0000 1.20
> +++ ada-exp.y 6 Apr 2007 22:06:44 -0000
> @@ -908,7 +908,7 @@ write_object_renaming (struct block *ori
> slice_state = LOWER_BOUND;
> case 'S':
> suffix += 1;
> - if (isdigit (*suffix))
> + if (isdigit ((int) *suffix))
> {
> char *next;
> long val = strtol (suffix, &next, 10);
> Index: ada-lang.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/ada-lang.c,v
> retrieving revision 1.95
> diff -p -u -r1.95 ada-lang.c
> --- ada-lang.c 29 Mar 2007 21:57:01 -0000 1.95
> +++ ada-lang.c 6 Apr 2007 22:06:45 -0000
> @@ -738,7 +738,7 @@ is_suppressed_name (const char *str)
> if (suffix == NULL)
> suffix = str + strlen (str);
> for (p = suffix - 1; p != str; p -= 1)
> - if (isupper (*p))
> + if (isupper ((int) *p))
> {
> int i;
> if (p[0] == 'X' && p[-1] != '_')
> @@ -840,7 +840,7 @@ ada_fold_name (const char *name)
> static int
> is_lower_alphanum (const char c)
> {
> - return (isdigit (c) || (isalpha (c) && islower (c)));
> + return (isdigit ((int) c) || (isalpha ((int) c) && islower ((int) c)));
> }
>
> /* Decode:
> @@ -883,10 +883,10 @@ ada_decode (const char *encoded)
>
> /* Remove trailing .{DIGIT}+ or ___{DIGIT}+ or __{DIGIT}+. */
> len0 = strlen (encoded);
> - if (len0 > 1 && isdigit (encoded[len0 - 1]))
> + if (len0 > 1 && isdigit ((int) encoded[len0 - 1]))
> {
> i = len0 - 2;
> - while (i > 0 && isdigit (encoded[i]))
> + while (i > 0 && isdigit ((int) encoded[i]))
> i--;
> if (i >= 0 && encoded[i] == '.')
> len0 = i;
> @@ -910,7 +910,8 @@ ada_decode (const char *encoded)
>
> if (len0 > 1
> && encoded[len0 - 1] == 'N'
> - && (isdigit (encoded[len0 - 2]) || islower (encoded[len0 - 2])))
> + && (isdigit ((int) encoded[len0 - 2])
> + || islower ((int) encoded[len0 - 2])))
> len0--;
>
> /* Remove the ___X.* suffix if present. Do not forget to verify that
> @@ -936,11 +937,11 @@ ada_decode (const char *encoded)
> GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
> decoded = decoding_buffer;
>
> - if (len0 > 1 && isdigit (encoded[len0 - 1]))
> + if (len0 > 1 && isdigit ((int) encoded[len0 - 1]))
> {
> i = len0 - 2;
> - while ((i >= 0 && isdigit (encoded[i]))
> - || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
> + while ((i >= 0 && isdigit ((int) encoded[i]))
> + || (i >= 1 && encoded[i] == '_' && isdigit ((int) encoded[i - 1])))
> i -= 1;
> if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
> len0 = i - 1;
> @@ -948,7 +949,7 @@ ada_decode (const char *encoded)
> len0 = i;
> }
>
> - for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
> + for (i = 0, j = 0; i < len0 && !isalpha ((int) encoded[i]); i += 1, j += 1)
> decoded[j] = encoded[i];
>
> at_start_name = 1;
> @@ -962,7 +963,7 @@ ada_decode (const char *encoded)
> int op_len = strlen (ada_opname_table[k].encoded);
> if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
> op_len - 1) == 0)
> - && !isalnum (encoded[i + op_len]))
> + && !isalnum ((int) encoded[i + op_len]))
> {
> strcpy (decoded + j, ada_opname_table[k].decoded);
> at_start_name = 0;
> @@ -996,11 +997,11 @@ ada_decode (const char *encoded)
> internally generated. */
>
> if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
> - && isdigit (encoded[i+2]))
> + && isdigit ((int) encoded[i+2]))
> {
> int k = i + 3;
>
> - while (k < len0 && isdigit (encoded[k]))
> + while (k < len0 && isdigit ((int) encoded[k]))
> k++;
>
> if (k < len0
> @@ -1034,7 +1035,7 @@ ada_decode (const char *encoded)
> i++;
> }
>
> - if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
> + if (encoded[i] == 'X' && i != 0 && isalnum ((int) encoded[i - 1]))
> {
> do
> i += 1;
> @@ -1060,7 +1061,7 @@ ada_decode (const char *encoded)
> decoded[j] = '\000';
>
> for (i = 0; decoded[i] != '\0'; i += 1)
> - if (isupper (decoded[i]) || decoded[i] == ' ')
> + if (isupper ((int) decoded[i]) || decoded[i] == ' ')
> goto Suppress;
>
> if (strcmp (decoded, encoded) == 0)
> @@ -3134,9 +3135,9 @@ encoded_ordered_before (char *N0, char *
> else
> {
> int k0, k1;
> - for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
> + for (k0 = strlen (N0) - 1; k0 > 0 && isdigit ((int) N0[k0]); k0 -= 1)
> ;
> - for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
> + for (k1 = strlen (N1) - 1; k1 > 0 && isdigit ((int) N1[k1]); k1 -= 1)
> ;
> if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
> && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
> @@ -3318,7 +3319,7 @@ get_selections (int *choices, int n_choi
> char *args2;
> int choice, j;
>
> - while (isspace (*args))
> + while (isspace ((int) *args))
> args += 1;
> if (*args == '\0' && n_chosen == 0)
> error_no_arg (_("one or more choice numbers"));
> @@ -4715,10 +4716,10 @@ is_name_suffix (const char *str)
>
> /* (__[0-9]+)?\.[0-9]+ */
> matching = str;
> - if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
> + if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit ((int) str[2]))
> {
> matching += 3;
> - while (isdigit (matching[0]))
> + while (isdigit ((int) matching[0]))
> matching += 1;
> if (matching[0] == '\0')
> return 1;
> @@ -4727,7 +4728,7 @@ is_name_suffix (const char *str)
> if (matching[0] == '.' || matching[0] == '$')
> {
> matching += 1;
> - while (isdigit (matching[0]))
> + while (isdigit ((int) matching[0]))
> matching += 1;
> if (matching[0] == '\0')
> return 1;
> @@ -4737,7 +4738,7 @@ is_name_suffix (const char *str)
> if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
> {
> matching = str + 3;
> - while (isdigit (matching[0]))
> + while (isdigit ((int) matching[0]))
> matching += 1;
> if (matching[0] == '\0')
> return 1;
> @@ -4761,10 +4762,10 @@ is_name_suffix (const char *str)
> #endif
>
> /* _E[0-9]+[bs]$ */
> - if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
> + if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit ((int) str[2]))
> {
> matching = str + 3;
> - while (isdigit (matching[0]))
> + while (isdigit ((int) matching[0]))
> matching += 1;
> if ((matching[0] == 'b' || matching[0] == 's')
> && matching [1] == '\0')
> @@ -4812,17 +4813,17 @@ is_name_suffix (const char *str)
> return 1;
> return 0;
> }
> - if (!isdigit (str[2]))
> + if (!isdigit ((int) str[2]))
> return 0;
> for (k = 3; str[k] != '\0'; k += 1)
> - if (!isdigit (str[k]) && str[k] != '_')
> + if (!isdigit ((int) str[k]) && str[k] != '_')
> return 0;
> return 1;
> }
> - if (str[0] == '$' && isdigit (str[1]))
> + if (str[0] == '$' && isdigit ((int) str[1]))
> {
> for (k = 2; str[k] != '\0'; k += 1)
> - if (!isdigit (str[k]) && str[k] != '_')
> + if (!isdigit ((int) str[k]) && str[k] != '_')
> return 0;
> return 1;
> }
> @@ -4847,7 +4848,7 @@ is_dot_digits_suffix (const char *str)
> return 0;
>
> str++;
> - while (isdigit (str[0]))
> + while (isdigit ((int) str[0]))
> str++;
> return (str[0] == '\0');
> }
> @@ -4864,7 +4865,7 @@ is_valid_name_for_wild_match (const char
> int i;
>
> for (i=0; decoded_name[i] != '\0'; i++)
> - if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
> + if (isalpha ((int) decoded_name[i]) && !islower ((int) decoded_name[i]))
> return 0;
>
> return 1;
> @@ -4947,14 +4948,14 @@ wild_match (const char *patn0, int patn_
> return 0;
> if (name[0] == '_')
> {
> - if (!islower (name[2]))
> + if (!islower ((int) name[2]))
> return 0;
> name += 2;
> name_len -= 2;
> }
> else
> {
> - if (!islower (name[1]))
> + if (!islower ((int) name[1]))
> return 0;
> name += 1;
> name_len -= 1;
> @@ -5240,7 +5241,7 @@ ada_tag_name_1 (void *args0)
> return 0;
> read_memory_string (value_as_address (val), name, sizeof (name) - 1);
> for (p = name; *p != '\0'; p += 1)
> - if (isalpha (*p))
> + if (isalpha ((int) *p))
> *p = tolower (*p);
> args->name = name;
> return 0;
> @@ -5275,7 +5276,7 @@ ada_tag_name_2 (struct tag_args *args)
> return 0;
> read_memory_string (value_as_address (val), name, sizeof (name) - 1);
> for (p = name; *p != '\0'; p += 1)
> - if (isalpha (*p))
> + if (isalpha ((int) *p))
> *p = tolower (*p);
> args->name = name;
> return 0;
> @@ -5449,14 +5450,14 @@ ada_scan_number (const char str[], int k
> {
> ULONGEST RU;
>
> - if (!isdigit (str[k]))
> + if (!isdigit ((int) str[k]))
> return 0;
>
> /* Do it the hard way so as not to make any assumption about
> the relationship of unsigned long (%lu scan format code) and
> LONGEST. */
> RU = 0;
> - while (isdigit (str[k]))
> + while (isdigit ((int) str[k]))
> {
> RU = RU * 10 + (str[k] - '0');
> k += 1;
> @@ -6116,10 +6117,10 @@ field_alignment (struct type *type, int
> int len = (name == NULL) ? 0 : strlen (name);
> int align_offset;
>
> - if (!isdigit (name[len - 1]))
> + if (!isdigit ((int) name[len - 1]))
> return 1;
>
> - if (isdigit (name[len - 2]))
> + if (isdigit ((int) name[len - 2]))
> align_offset = len - 2;
> else
> align_offset = len - 1;
> @@ -7228,7 +7229,7 @@ ada_enum_name (const char *name)
> {
> while ((tmp = strstr (name, "__")) != NULL)
> {
> - if (isdigit (tmp[2]))
> + if (isdigit ((int) tmp[2]))
> break;
> else
> name = tmp + 2;
> @@ -9532,7 +9533,7 @@ ada_get_next_arg (char **argsp)
>
> /* Skip any leading white space. */
>
> - while (isspace (*args))
> + while (isspace ((int) *args))
> args++;
>
> if (args[0] == '\0')
> @@ -9541,7 +9542,7 @@ ada_get_next_arg (char **argsp)
> /* Find the end of the current argument. */
>
> end = args;
> - while (*end != '\0' && !isspace (*end))
> + while (*end != '\0' && !isspace ((int) *end))
> end++;
>
> /* Adjust ARGSP to point to the start of the next argument. */
> @@ -9576,7 +9577,7 @@ catch_ada_exception_command_split (char
> /* Check that we do not have any more arguments. Anything else
> is unexpected. */
>
> - while (isspace (*args))
> + while (isspace ((int) *args))
> args++;
>
> if (args[0] != '\0')
> @@ -9797,7 +9798,7 @@ ada_decode_assert_location (char *args,
>
> if (args != NULL)
> {
> - while (isspace (*args))
> + while (isspace ((int) *args))
> args++;
> if (*args != '\0')
> error (_("Junk at end of arguments."));
> Index: ada-lex.l
> ===================================================================
> RCS file: /cvs/src/src/gdb/ada-lex.l,v
> retrieving revision 1.17
> diff -p -u -r1.17 ada-lex.l
> --- ada-lex.l 9 Jan 2007 17:58:49 -0000 1.17
> +++ ada-lex.l 6 Apr 2007 22:06:45 -0000
> @@ -330,7 +330,7 @@ processInt (const char *base0, const cha
> result = strtoulst (num0, (const char **) &trailer, base);
> if (errno == ERANGE)
> error (_("Integer literal out of range"));
> - if (isxdigit(*trailer))
> + if (isxdigit((int) *trailer))
> error (_("Invalid digit `%c' in based literal"), *trailer);
>
> while (exp > 0)
> @@ -406,12 +406,12 @@ processId (const char *name0, int len)
> int i0, i;
> struct stoken result;
>
> - while (len > 0 && isspace (name0[len-1]))
> + while (len > 0 && isspace ((int) name0[len-1]))
> len -= 1;
> i = i0 = 0;
> while (i0 < len)
> {
> - if (isalnum (name0[i0]))
> + if (isalnum ((int) name0[i0]))
> {
> name[i] = tolower (name0[i0]);
> i += 1; i0 += 1;
> @@ -510,9 +510,9 @@ find_dot_all (const char *str)
> int i0 = i;
> do
> i += 1;
> - while (isspace (str[i]));
> + while (isspace ((int) str[i]));
> if (strncmp (str+i, "all", 3) == 0
> - && ! isalnum (str[i+3]) && str[i+3] != '_')
> + && ! isalnum ((int) str[i+3]) && str[i+3] != '_')
> return i0;
> }
> }
> Index: ada-typeprint.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/ada-typeprint.c,v
> retrieving revision 1.15
> diff -p -u -r1.15 ada-typeprint.c
> --- ada-typeprint.c 9 Jan 2007 17:58:49 -0000 1.15
> +++ ada-typeprint.c 6 Apr 2007 22:06:45 -0000
> @@ -95,7 +95,7 @@ decoded_type_name (struct type *type)
> if (s == name_buffer)
> return name_buffer;
>
> - if (!islower (s[1]))
> + if (!islower ((int) s[1]))
> return NULL;
>
> for (s = q = name_buffer; *s != '\0'; q += 1)
> Index: breakpoint.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/breakpoint.c,v
> retrieving revision 1.243
> diff -p -u -r1.243 breakpoint.c
> --- breakpoint.c 27 Mar 2007 23:01:00 -0000 1.243
> +++ breakpoint.c 6 Apr 2007 22:06:45 -0000
> @@ -425,7 +425,7 @@ get_number_trailer (char **pp, int trail
> char *start = ++p;
> struct value *val;
>
> - while (isalnum (*p) || *p == '_')
> + while (isalnum ((int) *p) || *p == '_')
> p++;
> varname = (char *) alloca (p - start + 1);
> strncpy (varname, start, p - start);
> @@ -457,14 +457,14 @@ get_number_trailer (char **pp, int trail
> else
> retval = atoi (*pp);
> }
> - if (!(isspace (*p) || *p == '\0' || *p == trailer))
> + if (!(isspace ((int) *p) || *p == '\0' || *p == trailer))
> {
> /* Trailing junk: return 0 and let caller print error msg. */
> - while (!(isspace (*p) || *p == '\0' || *p == trailer))
> + while (!(isspace ((int) *p) || *p == '\0' || *p == trailer))
> ++p;
> retval = 0;
> }
> - while (isspace (*p))
> + while (isspace ((int) *p))
> p++;
> *pp = p;
> return retval;
> @@ -5145,7 +5145,7 @@ parse_breakpoint_sals (char **address,
> /* If no arg given, or if first arg is 'if ', use the default
> breakpoint. */
> if ((*address) == NULL
> - || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
> + || (strncmp ((*address), "if", 2) == 0 && isspace ((int) (*address)[2])))
> {
> if (default_breakpoint_valid)
> {
> @@ -5710,7 +5710,7 @@ stopin_command (char *arg, int from_tty)
> if (hasColon)
> badInput = (*argptr != ':'); /* Not a class::method */
> else
> - badInput = isdigit (*arg); /* a simple line number */
> + badInput = isdigit ((int) *arg); /* a simple line number */
> }
>
> if (badInput)
> @@ -5742,7 +5742,7 @@ stopat_command (char *arg, int from_tty)
> if (hasColon)
> badInput = (*argptr == ':'); /* we have class::method */
> else
> - badInput = !isdigit (*arg); /* not a line number */
> + badInput = !isdigit ((int) *arg); /* not a line number */
> }
>
> if (badInput)
> @@ -6145,7 +6145,7 @@ ep_skip_leading_whitespace (char **s)
> {
> if ((s == NULL) || (*s == NULL))
> return;
> - while (isspace (**s))
> + while (isspace ((int) **s))
> *s += 1;
> }
>
> @@ -6169,7 +6169,7 @@ ep_find_event_name_end (char *arg)
> anything else delimites the token. */
> while (*s != '\0')
> {
> - if (!isalnum (*s) && (*s != '_'))
> + if (!isalnum ((int) *s) && (*s != '_'))
> break;
> event_name_end = s;
> s++;
> @@ -6192,7 +6192,7 @@ ep_parse_optional_if_clause (char **arg)
> {
> char *cond_string;
>
> - if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
> + if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((int) (*arg)[2]))
> return NULL;
>
> /* Skip the "if" keyword. */
> @@ -6227,13 +6227,13 @@ ep_parse_optional_filename (char **arg)
> int i;
> char c;
>
> - if ((*arg_p == '\0') || isspace (*arg_p))
> + if ((*arg_p == '\0') || isspace ((int) *arg_p))
> return NULL;
>
> for (i = 0;; i++)
> {
> c = *arg_p;
> - if (isspace (c))
> + if (isspace ((int) c))
> c = '\0';
> filename[i] = c;
> if (c == '\0')
> @@ -6269,7 +6269,7 @@ catch_fork_command_1 (catch_fork_kind fo
> First, check if there's an if clause. */
> cond_string = ep_parse_optional_if_clause (&arg);
>
> - if ((*arg != '\0') && !isspace (*arg))
> + if ((*arg != '\0') && !isspace ((int) *arg))
> error (_("Junk at end of arguments."));
>
> /* If this target supports it, create a fork or vfork catchpoint
> @@ -6302,7 +6302,7 @@ catch_exec_command_1 (char *arg, int tem
> First, check if there's an if clause. */
> cond_string = ep_parse_optional_if_clause (&arg);
>
> - if ((*arg != '\0') && !isspace (*arg))
> + if ((*arg != '\0') && !isspace ((int) *arg))
> error (_("Junk at end of arguments."));
>
> /* If this target supports it, create an exec catchpoint
> @@ -6342,7 +6342,7 @@ catch_load_command_1 (char *arg, int tem
> cond_string = ep_parse_optional_if_clause (&arg);
> }
>
> - if ((*arg != '\0') && !isspace (*arg))
> + if ((*arg != '\0') && !isspace ((int) *arg))
> error (_("Junk at end of arguments."));
>
> /* Create a load breakpoint that only triggers when a load of
> @@ -6384,7 +6384,7 @@ catch_unload_command_1 (char *arg, int t
> cond_string = ep_parse_optional_if_clause (&arg);
> }
>
> - if ((*arg != '\0') && !isspace (*arg))
> + if ((*arg != '\0') && !isspace ((int) *arg))
> error (_("Junk at end of arguments."));
>
> /* Create an unload breakpoint that only triggers when an unload of
> @@ -6533,7 +6533,7 @@ catch_exception_command_1 (enum exceptio
>
> cond_string = ep_parse_optional_if_clause (&arg);
>
> - if ((*arg != '\0') && !isspace (*arg))
> + if ((*arg != '\0') && !isspace ((int) *arg))
> error (_("Junk at end of arguments."));
>
> if ((ex_event != EX_EVENT_THROW) &&
> Index: coffread.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/coffread.c,v
> retrieving revision 1.66
> diff -p -u -r1.66 coffread.c
> --- coffread.c 9 Jan 2007 17:58:50 -0000 1.66
> +++ coffread.c 6 Apr 2007 22:06:45 -0000
> @@ -220,7 +220,7 @@ coff_locate_sections (bfd *abfd, asectio
> /* We can have multiple .stab sections if linked with
> --split-by-reloc. */
> for (s = name + sizeof ".stab" - 1; *s != '\0'; s++)
> - if (!isdigit (*s))
> + if (!isdigit ((int) *s))
> break;
> if (*s == '\0')
> {
> Index: completer.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/completer.c,v
> retrieving revision 1.18
> diff -p -u -r1.18 completer.c
> --- completer.c 9 Jan 2007 17:58:50 -0000 1.18
> +++ completer.c 6 Apr 2007 22:06:45 -0000
> @@ -437,7 +437,7 @@ complete_line (const char *text, char *l
> /* lookup_cmd_1 advances p up to the first ambiguous thing, but
> doesn't advance over that thing itself. Do so now. */
> q = p;
> - while (*q && (isalnum (*q) || *q == '-' || *q == '_'))
> + while (*q && (isalnum ((int) *q) || *q == '-' || *q == '_'))
> ++q;
> if (q != tmp_command + point)
> {
> @@ -543,7 +543,7 @@ complete_line (const char *text, char *l
> q = p;
> while (q > tmp_command)
> {
> - if (isalnum (q[-1]) || q[-1] == '-' || q[-1] == '_')
> + if (isalnum ((int) q[-1]) || q[-1] == '-' || q[-1] == '_')
> --q;
> else
> break;
> Index: cp-support.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/cp-support.c,v
> retrieving revision 1.23
> diff -p -u -r1.23 cp-support.c
> --- cp-support.c 21 Jan 2007 16:55:49 -0000 1.23
> +++ cp-support.c 6 Apr 2007 22:06:45 -0000
> @@ -513,7 +513,7 @@ cp_find_first_component_aux (const char
> && strncmp (name + index, "operator", LENGTH_OF_OPERATOR) == 0)
> {
> index += LENGTH_OF_OPERATOR;
> - while (isspace(name[index]))
> + while (isspace((int) name[index]))
> ++index;
> switch (name[index])
> {
> Index: exec.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/exec.c,v
> retrieving revision 1.65
> diff -p -u -r1.65 exec.c
> --- exec.c 9 Feb 2007 20:11:47 -0000 1.65
> +++ exec.c 6 Apr 2007 22:06:45 -0000
> @@ -645,7 +645,7 @@ set_section_command (char *args, int fro
> error (_("Must specify section name and its virtual address"));
>
> /* Parse out section name */
> - for (secname = args; !isspace (*args); args++);
> + for (secname = args; !isspace ((int) *args); args++);
> seclen = args - secname;
>
> /* Parse out new virtual address */
> Index: expprint.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/expprint.c,v
> retrieving revision 1.26
> diff -p -u -r1.26 expprint.c
> --- expprint.c 9 Jan 2007 17:58:50 -0000 1.26
> +++ expprint.c 6 Apr 2007 22:06:45 -0000
> @@ -809,7 +809,7 @@ dump_raw_expression (struct expression *
> eltscan++)
> {
> fprintf_filtered (stream, "%c",
> - isprint (*eltscan) ? (*eltscan & 0xFF) : '.');
> + isprint ((int) (*eltscan ? *eltscan & 0xFF : '.')));
> }
> fprintf_filtered (stream, "\n");
> }
> Index: gnu-v2-abi.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/gnu-v2-abi.c,v
> retrieving revision 1.24
> diff -p -u -r1.24 gnu-v2-abi.c
> --- gnu-v2-abi.c 9 Jan 2007 17:58:51 -0000 1.24
> +++ gnu-v2-abi.c 6 Apr 2007 22:06:45 -0000
> @@ -53,7 +53,7 @@ static enum ctor_kinds
> gnuv2_is_constructor_name (const char *name)
> {
> if ((name[0] == '_' && name[1] == '_'
> - && (isdigit (name[2]) || strchr ("Qt", name[2])))
> + && (isdigit ((int) name[2]) || strchr ("Qt", name[2])))
> || strncmp (name, "__ct__", 6) == 0)
> return complete_object_ctor;
> else
> Index: infcmd.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/infcmd.c,v
> retrieving revision 1.151
> diff -p -u -r1.151 infcmd.c
> --- infcmd.c 27 Mar 2007 23:01:00 -0000 1.151
> +++ infcmd.c 6 Apr 2007 22:06:46 -0000
> @@ -1701,7 +1701,7 @@ registers_info (char *addr_exp, int fpre
> const char *end;
>
> /* Keep skipping leading white space. */
> - if (isspace ((*addr_exp)))
> + if (isspace ((int) *addr_exp))
> {
> addr_exp++;
> continue;
> @@ -1711,12 +1711,12 @@ registers_info (char *addr_exp, int fpre
> resembling a register following it. */
> if (addr_exp[0] == '$')
> addr_exp++;
> - if (isspace ((*addr_exp)) || (*addr_exp) == '\0')
> + if (isspace ((int) *addr_exp) || *addr_exp == '\0')
> error (_("Missing register name"));
>
> /* Find the start/end of this register name/num/group. */
> start = addr_exp;
> - while ((*addr_exp) != '\0' && !isspace ((*addr_exp)))
> + while ((*addr_exp) != '\0' && !isspace ((int) *addr_exp))
> addr_exp++;
> end = addr_exp;
>
> Index: infrun.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/infrun.c,v
> retrieving revision 1.225
> diff -p -u -r1.225 infrun.c
> --- infrun.c 29 Mar 2007 07:35:39 -0000 1.225
> +++ infrun.c 6 Apr 2007 22:06:46 -0000
> @@ -3350,7 +3350,7 @@ handle_command (char *args, int from_tty
> while (*argv != NULL)
> {
> wordlen = strlen (*argv);
> - for (digits = 0; isdigit ((*argv)[digits]); digits++)
> + for (digits = 0; isdigit ((int) (*argv)[digits]); digits++)
> {;
> }
> allsigs = 0;
> Index: jv-exp.y
> ===================================================================
> RCS file: /cvs/src/src/gdb/jv-exp.y,v
> retrieving revision 1.24
> diff -p -u -r1.24 jv-exp.y
> --- jv-exp.y 9 Jan 2007 17:58:51 -0000 1.24
> +++ jv-exp.y 6 Apr 2007 22:06:46 -0000
> @@ -724,7 +724,7 @@ parse_number (p, len, parsed_float, puti
>
> if (c == 'f' || c == 'F')
> putithere->typed_val_float.type = builtin_type_float;
> - else if (isdigit (c) || c == '.' || c == 'd' || c == 'D')
> + else if (isdigit ((int) c) || c == '.' || c == 'd' || c == 'D')
> putithere->typed_val_float.type = builtin_type_double;
> else
> return ERROR;
> Index: main.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/main.c,v
> retrieving revision 1.62
> diff -p -u -r1.62 main.c
> --- main.c 9 Jan 2007 21:34:29 -0000 1.62
> +++ main.c 6 Apr 2007 22:06:46 -0000
> @@ -736,7 +736,7 @@ extern int gdbtk_test (char *);
> If its first character is a digit, try attach first
> and then corefile. Otherwise try corefile first. */
>
> - if (isdigit (corearg[0]))
> + if (isdigit ((int) corearg[0]))
> {
> if (catch_command_errors (attach_command, corearg,
> !batch, RETURN_MASK_ALL) == 0)
> Index: maint.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/maint.c,v
> retrieving revision 1.59
> diff -p -u -r1.59 maint.c
> --- maint.c 9 Jan 2007 17:58:52 -0000 1.59
> +++ maint.c 6 Apr 2007 22:06:46 -0000
> @@ -455,14 +455,14 @@ maintenance_translate_address (char *arg
> sect = NULL;
> p = arg;
>
> - if (!isdigit (*p))
> + if (!isdigit ((int) *p))
> { /* See if we have a valid section name */
> - while (*p && !isspace (*p)) /* Find end of section name */
> + while (*p && !isspace ((int) *p)) /* Find end of section name */
> p++;
> if (*p == '\000') /* End of command? */
> error (_("Need to specify <section-name> and <address>"));
> *p++ = '\000';
> - while (isspace (*p))
> + while (isspace ((int) *p))
> p++; /* Skip whitespace */
>
> ALL_OBJFILES (objfile)
> Index: minsyms.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/minsyms.c,v
> retrieving revision 1.49
> diff -p -u -r1.49 minsyms.c
> --- minsyms.c 9 Jan 2007 22:14:35 -0000 1.49
> +++ minsyms.c 6 Apr 2007 22:06:46 -0000
> @@ -83,7 +83,7 @@ msymbol_hash_iw (const char *string)
> unsigned int hash = 0;
> while (*string && *string != '(')
> {
> - while (isspace (*string))
> + while (isspace ((int) *string))
> ++string;
> if (*string && *string != '(')
> {
> Index: objc-exp.y
> ===================================================================
> RCS file: /cvs/src/src/gdb/objc-exp.y,v
> retrieving revision 1.23
> diff -p -u -r1.23 objc-exp.y
> --- objc-exp.y 9 Jan 2007 17:58:55 -0000 1.23
> +++ objc-exp.y 6 Apr 2007 22:06:46 -0000
> @@ -1034,7 +1034,7 @@ parse_number (p, len, parsed_float, puti
> putithere->typed_val_float.type = builtin_type_float;
> else if (c == 'l')
> putithere->typed_val_float.type = builtin_type_long_double;
> - else if (isdigit (c) || c == '.')
> + else if (isdigit ((int) c) || c == '.')
> putithere->typed_val_float.type = builtin_type_double;
> else
> return ERROR;
> Index: objc-lang.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/objc-lang.c,v
> retrieving revision 1.52
> diff -p -u -r1.52 objc-lang.c
> --- objc-lang.c 9 Jan 2007 17:58:55 -0000 1.52
> +++ objc-lang.c 6 Apr 2007 22:06:46 -0000
> @@ -1131,23 +1131,23 @@ parse_selector (char *method, char **sel
>
> s1 = method;
>
> - while (isspace (*s1))
> + while (isspace ((int) *s1))
> s1++;
> if (*s1 == '\'')
> {
> found_quote = 1;
> s1++;
> }
> - while (isspace (*s1))
> + while (isspace ((int) *s1))
> s1++;
>
> nselector = s1;
> s2 = s1;
>
> for (;;) {
> - if (isalnum (*s2) || (*s2 == '_') || (*s2 == ':'))
> + if (isalnum ((int) *s2) || (*s2 == '_') || (*s2 == ':'))
> *s1++ = *s2;
> - else if (isspace (*s2))
> + else if (isspace ((int) *s2))
> ;
> else if ((*s2 == '\0') || (*s2 == '\''))
> break;
> @@ -1157,13 +1157,13 @@ parse_selector (char *method, char **sel
> }
> *s1++ = '\0';
>
> - while (isspace (*s2))
> + while (isspace ((int) *s2))
> s2++;
> if (found_quote)
> {
> if (*s2 == '\'')
> s2++;
> - while (isspace (*s2))
> + while (isspace ((int) *s2))
> s2++;
> }
>
> @@ -1193,20 +1193,20 @@ parse_method (char *method, char *type,
>
> s1 = method;
>
> - while (isspace (*s1))
> + while (isspace ((int) *s1))
> s1++;
> if (*s1 == '\'')
> {
> found_quote = 1;
> s1++;
> }
> - while (isspace (*s1))
> + while (isspace ((int) *s1))
> s1++;
>
> if ((s1[0] == '+') || (s1[0] == '-'))
> ntype = *s1++;
>
> - while (isspace (*s1))
> + while (isspace ((int) *s1))
> s1++;
>
> if (*s1 != '[')
> @@ -1214,20 +1214,20 @@ parse_method (char *method, char *type,
> s1++;
>
> nclass = s1;
> - while (isalnum (*s1) || (*s1 == '_'))
> + while (isalnum ((int) *s1) || (*s1 == '_'))
> s1++;
>
> s2 = s1;
> - while (isspace (*s2))
> + while (isspace ((int) *s2))
> s2++;
>
> if (*s2 == '(')
> {
> s2++;
> - while (isspace (*s2))
> + while (isspace ((int) *s2))
> s2++;
> ncategory = s2;
> - while (isalnum (*s2) || (*s2 == '_'))
> + while (isalnum ((int) *s2) || (*s2 == '_'))
> s2++;
> *s2++ = '\0';
> }
> @@ -1239,9 +1239,9 @@ parse_method (char *method, char *type,
> s1 = s2;
>
> for (;;) {
> - if (isalnum (*s2) || (*s2 == '_') || (*s2 == ':'))
> + if (isalnum ((int) *s2) || (*s2 == '_') || (*s2 == ':'))
> *s1++ = *s2;
> - else if (isspace (*s2))
> + else if (isspace ((int) *s2))
> ;
> else if (*s2 == ']')
> break;
> @@ -1252,14 +1252,14 @@ parse_method (char *method, char *type,
> *s1++ = '\0';
> s2++;
>
> - while (isspace (*s2))
> + while (isspace ((int) *s2))
> s2++;
> if (found_quote)
> {
> if (*s2 != '\'')
> return NULL;
> s2++;
> - while (isspace (*s2))
> + while (isspace ((int) *s2))
> s2++;
> }
>
> Index: p-exp.y
> ===================================================================
> RCS file: /cvs/src/src/gdb/p-exp.y,v
> retrieving revision 1.34
> diff -p -u -r1.34 p-exp.y
> --- p-exp.y 9 Jan 2007 17:58:55 -0000 1.34
> +++ p-exp.y 6 Apr 2007 22:06:46 -0000
> @@ -809,7 +809,7 @@ parse_number (p, len, parsed_float, puti
> putithere->typed_val_float.type = builtin_type_float;
> else if (c == 'l')
> putithere->typed_val_float.type = builtin_type_long_double;
> - else if (isdigit (c) || c == '.')
> + else if (isdigit ((int) c) || c == '.')
> putithere->typed_val_float.type = builtin_type_double;
> else
> return ERROR;
> @@ -1072,8 +1072,9 @@ yylex ()
> if (explen > 2)
> for (i = 0; i < sizeof (tokentab3) / sizeof (tokentab3[0]); i++)
> if (strncasecmp (tokstart, tokentab3[i].operator, 3) == 0
> - && (!isalpha (tokentab3[i].operator[0]) || explen == 3
> - || (!isalpha (tokstart[3]) && !isdigit (tokstart[3]) && tokstart[3] != '_')))
> + && (!isalpha ((int) tokentab3[i].operator[0]) || explen == 3
> + || (!isalpha ((int) tokstart[3])
> + && !isdigit ((int) tokstart[3]) && tokstart[3] != '_')))
> {
> lexptr += 3;
> yylval.opcode = tokentab3[i].opcode;
> @@ -1084,8 +1085,9 @@ yylex ()
> if (explen > 1)
> for (i = 0; i < sizeof (tokentab2) / sizeof (tokentab2[0]); i++)
> if (strncasecmp (tokstart, tokentab2[i].operator, 2) == 0
> - && (!isalpha (tokentab2[i].operator[0]) || explen == 2
> - || (!isalpha (tokstart[2]) && !isdigit (tokstart[2]) && tokstart[2] != '_')))
> + && (!isalpha ((int) tokentab2[i].operator[0]) || explen == 2
> + || (!isalpha ((int) tokstart[2])
> + && !isdigit ((int) tokstart[2]) && tokstart[2] != '_')))
> {
> lexptr += 2;
> yylval.opcode = tokentab2[i].opcode;
> Index: p-typeprint.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/p-typeprint.c,v
> retrieving revision 1.18
> diff -p -u -r1.18 p-typeprint.c
> --- p-typeprint.c 9 Jan 2007 17:58:55 -0000 1.18
> +++ p-typeprint.c 6 Apr 2007 22:06:46 -0000
> @@ -157,9 +157,9 @@ pascal_type_print_method_args (char *phy
> char *argname;
> fputs_filtered (" (", stream);
> /* we must demangle this */
> - while (isdigit (physname[0]))
> + while (isdigit ((int) physname[0]))
> {
> - while (isdigit (physname[len]))
> + while (isdigit ((int) physname[len]))
> {
> len++;
> }
> Index: parse.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/parse.c,v
> retrieving revision 1.57
> diff -p -u -r1.57 parse.c
> --- parse.c 27 Feb 2007 19:46:04 -0000 1.57
> +++ parse.c 6 Apr 2007 22:06:46 -0000
> @@ -641,10 +641,10 @@ parse_nested_classes_for_hpacc (char *na
> /* Get to the end of the next namespace or class spec. */
> /* If we're looking at some non-token, fail immediately */
> start = p;
> - if (!(isalpha (*p) || *p == '$' || *p == '_'))
> + if (!(isalpha ((int) *p) || *p == '$' || *p == '_'))
> return (struct symbol *) NULL;
> p++;
> - while (*p && (isalnum (*p) || *p == '$' || *p == '_'))
> + while (*p && (isalnum ((int) *p) || *p == '$' || *p == '_'))
> p++;
>
> if (*p == '<')
> @@ -667,7 +667,7 @@ parse_nested_classes_for_hpacc (char *na
> p++;
>
> /* Done with tokens? */
> - if (!*p || !(isalpha (*p) || *p == '$' || *p == '_'))
> + if (!*p || !(isalpha ((int) *p) || *p == '$' || *p == '_'))
> done = 1;
>
> tmp = (char *) alloca (prefix_len + end - start + 3);
> Index: remote-utils.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/remote-utils.c,v
> retrieving revision 1.21
> diff -p -u -r1.21 remote-utils.c
> --- remote-utils.c 9 Jan 2007 17:58:56 -0000 1.21
> +++ remote-utils.c 6 Apr 2007 22:06:47 -0000
> @@ -113,10 +113,10 @@ sr_scan_args (char *proto, char *args)
> return;
>
> /* scan off white space. */
> - for (p = args; isspace (*p); ++p);;
> + for (p = args; isspace ((int) *p); ++p);;
>
> /* find end of device name. */
> - for (q = p; *q != '\0' && !isspace (*q); ++q);;
> + for (q = p; *q != '\0' && !isspace ((int) *q); ++q);;
>
> /* check for missing or empty device name. */
> CHECKDONE (p, q);
> @@ -137,7 +137,7 @@ sr_scan_args (char *proto, char *args)
> sr_set_debug (n);
>
> /* scan off remaining white space. */
> - for (p = q; isspace (*p); ++p);;
> + for (p = q; isspace ((int) *p); ++p);;
>
> /* if not end of string, then there's unrecognized junk. */
> if (*p != '\0')
> Index: remote.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/remote.c,v
> retrieving revision 1.247
> diff -p -u -r1.247 remote.c
> --- remote.c 27 Mar 2007 19:11:10 -0000 1.247
> +++ remote.c 6 Apr 2007 22:06:47 -0000
> @@ -811,7 +811,7 @@ packet_check_result (const char *buf)
> /* The stub recognized the packet request. Check that the
> operation succeeded. */
> if (buf[0] == 'E'
> - && isxdigit (buf[1]) && isxdigit (buf[2])
> + && isxdigit ((int) buf[1]) && isxdigit ((int) buf[2])
> && buf[3] == '\0')
> /* "Enn" - definitly an error. */
> return PACKET_ERROR;
> @@ -4342,7 +4342,7 @@ remote_read_bytes (CORE_ADDR memaddr, gd
> getpkt (&rs->buf, &rs->buf_size, 0);
>
> if (rs->buf[0] == 'E'
> - && isxdigit (rs->buf[1]) && isxdigit (rs->buf[2])
> + && isxdigit ((int) rs->buf[1]) && isxdigit ((int) rs->buf[2])
> && rs->buf[3] == '\0')
> {
> /* There is no correspondance between what the remote
> @@ -5716,7 +5716,7 @@ remote_xfer_partial (struct target_ops *
> while (annex[i] && (i < (get_remote_packet_size () - 8)))
> {
> /* Bad caller may have sent forbidden characters. */
> - gdb_assert (isprint (annex[i]) && annex[i] != '$' && annex[i] != '#');
> + gdb_assert (isprint ((int) annex[i]) && annex[i] != '$' && annex[i] != '#');
> *p2++ = annex[i];
> i++;
> }
> @@ -5779,7 +5779,7 @@ remote_rcmd (char *command,
> if (strcmp (buf, "OK") == 0)
> break;
> if (strlen (buf) == 3 && buf[0] == 'E'
> - && isdigit (buf[1]) && isdigit (buf[2]))
> + && isdigit ((int) buf[1]) && isdigit ((int) buf[2]))
> {
> error (_("Protocol error with Rcmd"));
> }
> Index: serial.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/serial.c,v
> retrieving revision 1.28
> diff -p -u -r1.28 serial.c
> --- serial.c 9 Jan 2007 17:58:58 -0000 1.28
> +++ serial.c 6 Apr 2007 22:06:47 -0000
> @@ -191,7 +191,7 @@ serial_open (const char *name)
> ops = serial_interface_lookup ("pipe");
> /* Discard ``|'' and any space before the command itself. */
> ++open_name;
> - while (isspace (*open_name))
> + while (isspace ((int) *open_name))
> ++open_name;
> }
> /* Check for a colon, suggesting an IP address/port pair.
> Index: stabsread.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/stabsread.c,v
> retrieving revision 1.88
> diff -p -u -r1.88 stabsread.c
> --- stabsread.c 29 Mar 2007 18:33:58 -0000 1.88
> +++ stabsread.c 6 Apr 2007 22:06:47 -0000
> @@ -554,7 +554,7 @@ process_reference (char **string)
> p = *string + 1;
>
> /* Read number as reference id. */
> - while (*p && isdigit (*p))
> + while (*p && isdigit ((int) *p))
> {
> refnum = refnum * 10 + *p - '0';
> p++;
> @@ -707,7 +707,7 @@ define_symbol (CORE_ADDR valu, char *str
> deftypes we know how to handle is a local. */
> if (!strchr ("cfFGpPrStTvVXCR", *p))
> #else
> - if (isdigit (*p) || *p == '(' || *p == '-')
> + if (isdigit ((int) *p) || *p == '(' || *p == '-')
> #endif
> deftype = 'l';
> else
> @@ -1765,7 +1765,7 @@ again:
> break;
>
> case '@':
> - if (isdigit (**pp) || **pp == '(' || **pp == '-')
> + if (isdigit ((int) **pp) || **pp == '(' || **pp == '-')
> { /* Member (class & variable) type */
> /* FIXME -- we should be doing smash_to_XXX types here. */
>
> Index: stack.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/stack.c,v
> retrieving revision 1.143
> diff -p -u -r1.143 stack.c
> --- stack.c 29 Mar 2007 07:35:39 -0000 1.143
> +++ stack.c 6 Apr 2007 22:06:48 -0000
> @@ -720,14 +720,14 @@ parse_frame_specification_1 (const char
> const char *p;
>
> /* Skip leading white space, bail of EOL. */
> - while (isspace (*frame_exp))
> + while (isspace ((int) *frame_exp))
> frame_exp++;
> if (!*frame_exp)
> break;
>
> /* Parse the argument, extract it, save it. */
> for (p = frame_exp;
> - *p && !isspace (*p);
> + *p && !isspace ((int) *p);
> p++);
> addr_string = savestring (frame_exp, p - frame_exp);
> frame_exp = p;
> Index: symfile.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/symfile.c,v
> retrieving revision 1.182
> diff -p -u -r1.182 symfile.c
> --- symfile.c 26 Feb 2007 20:04:38 -0000 1.182
> +++ symfile.c 6 Apr 2007 22:06:48 -0000
> @@ -2414,7 +2414,7 @@ set_ext_lang_command (char *args, int fr
> error (_("'%s': Filename extension must begin with '.'"), ext_args);
>
> /* Find end of first arg. */
> - while (*cp && !isspace (*cp))
> + while (*cp && !isspace ((int) *cp))
> cp++;
>
> if (*cp == '\0')
> @@ -2425,7 +2425,7 @@ set_ext_lang_command (char *args, int fr
> *cp++ = '\0';
>
> /* Find beginning of second arg, which should be a source language. */
> - while (*cp && isspace (*cp))
> + while (*cp && isspace ((int) *cp))
> cp++;
>
> if (*cp == '\0')
> Index: symtab.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/symtab.c,v
> retrieving revision 1.156
> diff -p -u -r1.156 symtab.c
> --- symtab.c 28 Mar 2007 00:12:15 -0000 1.156
> +++ symtab.c 6 Apr 2007 22:06:49 -0000
> @@ -2568,7 +2568,7 @@ operator_chars (char *p, char **end)
>
> /* Don't get faked out by `operator' being part of a longer
> identifier. */
> - if (isalpha (*p) || *p == '_' || *p == '$' || *p == '\0')
> + if (isalpha ((int) *p) || *p == '_' || *p == '$' || *p == '\0')
> return *end;
>
> /* Allow some whitespace between `operator' and the operator symbol. */
> @@ -2577,10 +2577,10 @@ operator_chars (char *p, char **end)
>
> /* Recognize 'operator TYPENAME'. */
>
> - if (isalpha (*p) || *p == '_' || *p == '$')
> + if (isalpha ((int) *p) || *p == '_' || *p == '$')
> {
> char *q = p + 1;
> - while (isalnum (*q) || *q == '_' || *q == '$')
> + while (isalnum ((int) *q) || *q == '_' || *q == '$')
> q++;
> *end = q;
> return p;
> @@ -2968,7 +2968,7 @@ search_symbols (char *regexp, domain_enu
> if (*opname)
> {
> int fix = -1; /* -1 means ok; otherwise number of spaces needed. */
> - if (isalpha (*opname) || *opname == '_' || *opname == '$')
> + if (isalpha ((int) *opname) || *opname == '_' || *opname == '$')
> {
> /* There should 1 space between 'operator' and 'TYPENAME'. */
> if (opname[-1] != ' ' || opname[-2] == ' ')
> @@ -3510,7 +3510,7 @@ language_search_unquoted_string (char *t
> {
> for (; p > text; --p)
> {
> - if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
> + if (isalnum ((int) p[-1]) || p[-1] == '_' || p[-1] == '\0')
> continue;
> else
> {
> @@ -3530,7 +3530,7 @@ language_search_unquoted_string (char *t
> Unfortunately we have to find it now to decide. */
>
> while (t > text)
> - if (isalnum (t[-1]) || t[-1] == '_' ||
> + if (isalnum ((int) t[-1]) || t[-1] == '_' ||
> t[-1] == ' ' || t[-1] == ':' ||
> t[-1] == '(' || t[-1] == ')')
> --t;
> @@ -3617,7 +3617,7 @@ make_symbol_completion_list (char *text,
> which are in symbols. */
> while (p > text)
> {
> - if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
> + if (isalnum ((int) p[-1]) || p[-1] == '_' || p[-1] == '\0')
> --p;
> else
> break;
> Index: thread.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/thread.c,v
> retrieving revision 1.52
> diff -p -u -r1.52 thread.c
> --- thread.c 30 Mar 2007 12:57:43 -0000 1.52
> +++ thread.c 6 Apr 2007 22:06:49 -0000
> @@ -584,7 +584,7 @@ thread_apply_command (char *tidlist, int
> if (tidlist == NULL || *tidlist == '\000')
> error (_("Please specify a thread ID list"));
>
> - for (cmd = tidlist; *cmd != '\000' && !isalpha (*cmd); cmd++);
> + for (cmd = tidlist; *cmd != '\000' && !isalpha ((int) *cmd); cmd++);
>
> if (*cmd == '\000')
> error (_("Please specify a command following the thread ID list"));
> Index: utils.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/utils.c,v
> retrieving revision 1.176
> diff -p -u -r1.176 utils.c
> --- utils.c 30 Mar 2007 09:31:31 -0000 1.176
> +++ utils.c 6 Apr 2007 22:06:49 -0000
> @@ -2310,11 +2310,11 @@ strcmp_iw (const char *string1, const ch
> {
> while ((*string1 != '\0') && (*string2 != '\0'))
> {
> - while (isspace (*string1))
> + while (isspace ((int) *string1))
> {
> string1++;
> }
> - while (isspace (*string2))
> + while (isspace ((int) *string2))
> {
> string2++;
> }
> @@ -2369,11 +2369,11 @@ strcmp_iw_ordered (const char *string1,
> {
> while ((*string1 != '\0') && (*string2 != '\0'))
> {
> - while (isspace (*string1))
> + while (isspace ((int) *string1))
> {
> string1++;
> }
> - while (isspace (*string2))
> + while (isspace ((int) *string2))
> {
> string2++;
> }
> @@ -2846,9 +2846,9 @@ string_to_core_addr (const char *my_stri
> int i;
> for (i = 2; my_string[i] != '\0'; i++)
> {
> - if (isdigit (my_string[i]))
> + if (isdigit ((int) my_string[i]))
> addr = (my_string[i] - '0') + (addr * 16);
> - else if (isxdigit (my_string[i]))
> + else if (isxdigit ((int) my_string[i]))
> addr = (tolower (my_string[i]) - 'a' + 0xa) + (addr * 16);
> else
> error (_("invalid hex \"%s\""), my_string);
> @@ -2860,7 +2860,7 @@ string_to_core_addr (const char *my_stri
> int i;
> for (i = 0; my_string[i] != '\0'; i++)
> {
> - if (isdigit (my_string[i]))
> + if (isdigit ((int) my_string[i]))
> addr = (my_string[i] - '0') + (addr * 10);
> else
> error (_("invalid decimal \"%s\""), my_string);
> @@ -3136,7 +3136,7 @@ strtoulst (const char *num, const char *
> int i = 0;
>
> /* Skip leading whitespace. */
> - while (isspace (num[i]))
> + while (isspace ((int) num[i]))
> i++;
>
> /* Handle prefixes. */
> Index: cli/cli-cmds.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/cli/cli-cmds.c,v
> retrieving revision 1.70
> diff -p -u -r1.70 cli-cmds.c
> --- cli/cli-cmds.c 27 Feb 2007 19:46:04 -0000 1.70
> +++ cli/cli-cmds.c 6 Apr 2007 22:06:49 -0000
> @@ -499,17 +499,17 @@ source_command (char *args, int from_tty
> if (args)
> {
> /* Make sure leading white space does not break the comparisons. */
> - while (isspace(args[0]))
> + while (isspace((int) args[0]))
> args++;
>
> /* Is -v the first thing in the string? */
> - if (args[0] == '-' && args[1] == 'v' && isspace (args[2]))
> + if (args[0] == '-' && args[1] == 'v' && isspace ((int) args[2]))
> {
> source_verbose = 1;
>
> /* Trim -v and whitespace from the filename. */
> file = &args[3];
> - while (isspace (file[0]))
> + while (isspace ((int) file[0]))
> file++;
> }
> }
> Index: cli/cli-decode.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/cli/cli-decode.c,v
> retrieving revision 1.60
> diff -p -u -r1.60 cli-decode.c
> --- cli/cli-decode.c 9 Jan 2007 17:59:00 -0000 1.60
> +++ cli/cli-decode.c 6 Apr 2007 22:06:49 -0000
> @@ -925,7 +925,7 @@ print_doc_line (struct ui_file *stream,
> }
> strncpy (line_buffer, str, p - str);
> line_buffer[p - str] = '\0';
> - if (islower (line_buffer[0]))
> + if (islower ((int) line_buffer[0]))
> line_buffer[0] = toupper (line_buffer[0]);
> ui_out_text (uiout, line_buffer);
> }
> @@ -1027,7 +1027,7 @@ find_command_name_length (const char *te
> used as a suffix for print, examine and display.
> Note that this is larger than the character set allowed when creating
> user-defined commands. */
> - while (isalnum (*p) || *p == '-' || *p == '_' ||
> + while (isalnum ((int) *p) || *p == '-' || *p == '_' ||
> /* Characters used by TUI specific commands. */
> *p == '+' || *p == '<' || *p == '>' || *p == '$' ||
> /* Characters used for XDB compatibility. */
> @@ -1118,7 +1118,7 @@ lookup_cmd_1 (char **text, struct cmd_li
> for (tmp = 0; tmp < len; tmp++)
> {
> char x = command[tmp];
> - command[tmp] = isupper (x) ? tolower (x) : x;
> + command[tmp] = isupper ((int) x) ? tolower (x) : x;
> }
> found = find_cmd (command, len, clist, ignore_help_classes, &nfound);
> }
> @@ -1474,7 +1474,7 @@ lookup_cmd_composition (char *text,
> for (tmp = 0; tmp < len; tmp++)
> {
> char x = command[tmp];
> - command[tmp] = isupper (x) ? tolower (x) : x;
> + command[tmp] = isupper ((int) x) ? tolower (x) : x;
> }
> *cmd = find_cmd (command, len, cur_list, 1, &nfound);
> }
> Index: cli/cli-dump.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/cli/cli-dump.c,v
> retrieving revision 1.26
> diff -p -u -r1.26 cli-dump.c
> --- cli/cli-dump.c 8 Mar 2007 16:54:02 -0000 1.26
> +++ cli/cli-dump.c 6 Apr 2007 22:06:49 -0000
> @@ -41,7 +41,7 @@ skip_spaces (char *chp)
> {
> if (chp == NULL)
> return NULL;
> - while (isspace (*chp))
> + while (isspace ((int) *chp))
> chp++;
> return chp;
> }
> Index: cli/cli-script.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/cli/cli-script.c,v
> retrieving revision 1.40
> diff -p -u -r1.40 cli-script.c
> --- cli/cli-script.c 27 Jan 2007 12:30:46 -0000 1.40
> +++ cli/cli-script.c 6 Apr 2007 22:06:49 -0000
> @@ -683,7 +683,7 @@ locate_arg (char *p)
> while ((p = strchr (p, '$')))
> {
> if (strncmp (p, "$arg", 4) == 0
> - && (isdigit (p[4]) || p[4] == 'c'))
> + && (isdigit ((int) p[4]) || p[4] == 'c'))
> return p;
> p++;
> }
> @@ -866,7 +866,7 @@ read_next_line (struct command_line **co
> {
> char *first_arg;
> first_arg = p + 5;
> - while (first_arg < p1 && isspace (*first_arg))
> + while (first_arg < p1 && isspace ((int) *first_arg))
> first_arg++;
> *command = build_command_line (while_control, first_arg);
> }
> @@ -874,7 +874,7 @@ read_next_line (struct command_line **co
> {
> char *first_arg;
> first_arg = p + 2;
> - while (first_arg < p1 && isspace (*first_arg))
> + while (first_arg < p1 && isspace ((int) *first_arg))
> first_arg++;
> *command = build_command_line (if_control, first_arg);
> }
> @@ -882,7 +882,7 @@ read_next_line (struct command_line **co
> {
> char *first_arg;
> first_arg = p + 8;
> - while (first_arg < p1 && isspace (*first_arg))
> + while (first_arg < p1 && isspace ((int) *first_arg))
> first_arg++;
> *command = build_command_line (commands_control, first_arg);
> }
> @@ -1205,7 +1205,7 @@ validate_comname (char *comname)
> p = comname;
> while (*p)
> {
> - if (!isalnum (*p) && *p != '-' && *p != '_')
> + if (!isalnum ((int) *p) && *p != '-' && *p != '_')
> error (_("Junk in argument list: \"%s\""), p);
> p++;
> }
> @@ -1294,7 +1294,7 @@ define_command (char *comname, int from_
> /* If the rest of the commands will be case insensitive, this one
> should behave in the same manner. */
> for (tem = comname; *tem; tem++)
> - if (isupper (*tem))
> + if (isupper ((int) *tem))
> *tem = tolower (*tem);
>
> sprintf (tmpbuf, "Type commands for definition of \"%s\".", comname);
> Index: cli/cli-setshow.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/cli/cli-setshow.c,v
> retrieving revision 1.29
> diff -p -u -r1.29 cli-setshow.c
> --- cli/cli-setshow.c 9 Jan 2007 17:59:00 -0000 1.29
> +++ cli/cli-setshow.c 6 Apr 2007 22:06:49 -0000
> @@ -40,7 +40,7 @@ parse_auto_binary_operation (const char
> if (arg != NULL && *arg != '\0')
> {
> int length = strlen (arg);
> - while (isspace (arg[length - 1]) && length > 0)
> + while (isspace ((int) arg[length - 1]) && length > 0)
> length--;
> if (strncmp (arg, "on", length) == 0
> || strncmp (arg, "1", length) == 0
> Index: mi/mi-cmd-var.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/mi/mi-cmd-var.c,v
> retrieving revision 1.31
> diff -p -u -r1.31 mi-cmd-var.c
> --- mi/mi-cmd-var.c 27 Feb 2007 23:42:33 -0000 1.31
> +++ mi/mi-cmd-var.c 6 Apr 2007 22:06:49 -0000
> @@ -102,7 +102,7 @@ mi_cmd_var_create (char *command, char *
> xfree (name);
> name = varobj_gen_name ();
> }
> - else if (!isalpha (*name))
> + else if (!isalpha ((int) *name))
> error (_("mi_cmd_var_create: name of object must begin with a letter"));
>
> if (strcmp (frame, "*") == 0)
> Index: mi/mi-parse.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/mi/mi-parse.c,v
> retrieving revision 1.12
> diff -p -u -r1.12 mi-parse.c
> --- mi/mi-parse.c 9 Jan 2007 17:59:08 -0000 1.12
> +++ mi/mi-parse.c 6 Apr 2007 22:06:49 -0000
> @@ -39,7 +39,7 @@ mi_parse_argv (char *args, struct mi_par
> {
> char *arg;
> /* skip leading white space */
> - while (isspace (*chp))
> + while (isspace ((int) *chp))
> chp++;
> /* Three possibilities: EOF, quoted string, or other text. */
> switch (*chp)
> @@ -79,7 +79,7 @@ mi_parse_argv (char *args, struct mi_par
> return;
> }
> /* Insist on trailing white space. */
> - if (chp[1] != '\0' && !isspace (chp[1]))
> + if (chp[1] != '\0' && !isspace ((int) chp[1]))
> {
> freeargv (argv);
> return;
> @@ -110,7 +110,7 @@ mi_parse_argv (char *args, struct mi_par
> characters into a buffer. */
> int len;
> char *start = chp;
> - while (*chp != '\0' && !isspace (*chp))
> + while (*chp != '\0' && !isspace ((int) *chp))
> {
> chp++;
> }
> @@ -154,7 +154,7 @@ mi_parse (char *cmd)
> memset (parse, 0, sizeof (*parse));
>
> /* Before starting, skip leading white space. */
> - while (isspace (*cmd))
> + while (isspace ((int) *cmd))
> cmd++;
>
> /* Find/skip any token and then extract it. */
> @@ -167,7 +167,7 @@ mi_parse (char *cmd)
> /* This wasn't a real MI command. Return it as a CLI_COMMAND. */
> if (*chp != '-')
> {
> - while (isspace (*chp))
> + while (isspace ((int) *chp))
> chp++;
> parse->command = xstrdup (chp);
> parse->op = CLI_COMMAND;
> @@ -177,7 +177,7 @@ mi_parse (char *cmd)
> /* Extract the command. */
> {
> char *tmp = chp + 1; /* discard ``-'' */
> - for (; *chp && !isspace (*chp); chp++)
> + for (; *chp && !isspace ((int) *chp); chp++)
> ;
> parse->command = xmalloc ((chp - tmp + 1) * sizeof (char *));
> memcpy (parse->command, tmp, chp - tmp);
> @@ -198,7 +198,7 @@ mi_parse (char *cmd)
> }
>
> /* Skip white space following the command. */
> - while (isspace (*chp))
> + while (isspace ((int) *chp))
> chp++;
>
> /* For new argv commands, attempt to return the parsed argument
> Index: tui/tui-win.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/tui/tui-win.c,v
> retrieving revision 1.33
> diff -p -u -r1.33 tui-win.c
> --- tui/tui-win.c 27 Feb 2007 19:46:04 -0000 1.33
> +++ tui/tui-win.c 6 Apr 2007 22:06:50 -0000
> @@ -1501,7 +1501,7 @@ parse_scrolling_args (char *arg, struct
>
> /* process the number of lines to scroll */
> buf = buf_ptr = xstrdup (arg);
> - if (isdigit (*buf_ptr))
> + if (isdigit ((int) *buf_ptr))
> {
> char *num_str;
>
>