From: Per Bothner Date: Thu, 3 Sep 1992 05:03:47 +0000 (+0000) Subject: * utils.c (strcmp_iw): Add a hack to allow "FOO(ARGS)" to X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=546014f750f2c561be41eed79e5030dd8255cca0;p=binutils-gdb.git * utils.c (strcmp_iw): Add a hack to allow "FOO(ARGS)" to match "FOO". This allows 'break Foo' to work when Foo is a mangled C++ function. (See comment before function.) --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 97f672917f0..8131229cdd7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +Wed Sep 2 20:45:31 1992 Per Bothner (bothner@rtl.cygnus.com) + + * utils.c (strcmp_iw): Add a hack to allow "FOO(ARGS)" to + match "FOO". This allows 'break Foo' to work when Foo is + a mangled C++ function. (See comment before function.) + Wed Sep 2 13:45:27 1992 John Gilmore (gnu@cygnus.com) * config/rs6000.mh (MH_CFLAGS): Circumvent IBM bug, diff --git a/gdb/utils.c b/gdb/utils.c index 2e0a1f8205b..b99e4f94246 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -699,6 +699,8 @@ query (va_alist) while (1) { + wrap_here (""); /* Flush any buffered output */ + fflush (stdout); va_start (args); ctlstr = va_arg (args, char *); vfprintf_filtered (stdout, ctlstr, args); @@ -1215,13 +1217,38 @@ void fprintf_filtered (va_alist) va_dcl { + va_list args; FILE *stream; char *format; + + va_start (args); + stream = va_arg (args, FILE *); + format = va_arg (args, char *); + + /* This won't blow up if the restrictions described above are + followed. */ + vfprintf_filtered (stream, format, args); + va_end (args); +} + +/* Like fprintf_filtered, but prints it's result indent. + Called as fprintfi_filtered (spaces, format, arg1, arg2, ...); */ + +/* VARARGS */ +void +fprintfi_filtered (va_alist) + va_dcl +{ va_list args; + int spaces; + FILE *stream; + char *format; va_start (args); + spaces = va_arg (args, int); stream = va_arg (args, FILE *); format = va_arg (args, char *); + print_spaces_filtered (spaces, stream); /* This won't blow up if the restrictions described above are followed. */ @@ -1244,6 +1271,26 @@ printf_filtered (va_alist) va_end (args); } +/* Like printf_filtered, but prints it's result indented. + Called as printfi_filtered (spaces, format, arg1, arg2, ...); */ + +/* VARARGS */ +void +printfi_filtered (va_alist) + va_dcl +{ + va_list args; + int spaces; + char *format; + + va_start (args); + spaces = va_arg (args, int); + format = va_arg (args, char *); + print_spaces_filtered (spaces, stdout); + vfprintf_filtered (stdout, format, args); + va_end (args); +} + /* Easy */ void @@ -1325,9 +1372,14 @@ fprint_symbol (stream, name) /* Do a strcmp() type operation on STRING1 and STRING2, ignoring any differences in whitespace. Returns 0 if they match, non-zero if they - don't (slightly different than strcmp()'s range of return values). */ + don't (slightly different than strcmp()'s range of return values). + + As an extra hack, string1=="FOO(ARGS)" matches string2=="FOO". + This "feature" is useful for demangle_and_match(), which is used + when searching for matching C++ function names (such as if the + user types 'break FOO', where FOO is a mangled C++ function). */ -int +static int strcmp_iw (string1, string2) const char *string1; const char *string2; @@ -1352,7 +1404,7 @@ strcmp_iw (string1, string2) string2++; } } - return (!((*string1 == '\0') && (*string2 == '\0'))); + return (*string1 != '\0' && *string1 != '(') || (*string2 != '\0'); } /* Demangle NAME and compare the result with LOOKFOR, ignoring any differences