X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fcomplaints.c;h=b35c81de342618c2561d6872b804f29a165a4f2b;hb=35fd2deb6916e972248d52b1bc1d584fa9059f8f;hp=7e526560ac19d80418efe695fba1388307bd87ea;hpb=32d0add0a654c1204ab71dc8a55d9374538c4b33;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/complaints.c b/gdb/complaints.c index 7e526560ac..b35c81de34 100644 --- a/gdb/complaints.c +++ b/gdb/complaints.c @@ -1,6 +1,6 @@ /* Support for complaint handling during symbol reading in GDB. - Copyright (C) 1990-2015 Free Software Foundation, Inc. + Copyright (C) 1990-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -27,18 +27,17 @@ extern void _initialize_complaints (void); /* Should each complaint message be self explanatory, or should we assume that a series of complaints is being produced? */ -/* case 1: First message of a series that must - start off with explanation. case 2: Subsequent message of a series - that needs no explanation (the user already knows we have a problem - so we can just state our piece). */ enum complaint_series { /* Isolated self explanatory message. */ ISOLATED_MESSAGE, + /* First message of a series, includes an explanation. */ FIRST_MESSAGE, + /* First message of a series, but does not need to include any sort of explanation. */ SHORT_FIRST_MESSAGE, + /* Subsequent message of a series that needs no explanation (the user already knows we have a problem so we can just state our piece). */ @@ -69,13 +68,7 @@ struct complaints { struct complain *root; - /* Should each complaint be self explanatory, or should we assume - that a series of complaints is being produced? case 0: Isolated - self explanatory message. case 1: First message of a series that - must start off with explanation. case 2: Subsequent message of a - series that needs no explanation (the user already knows we have - a problem so we can just state our piece). */ - int series; + enum complaint_series series; /* The explanatory messages that should accompany the complaint. NOTE: cagney/2002-08-14: In a desperate attempt at being vaguely @@ -99,7 +92,7 @@ static struct explanation symfile_explanations[] = { static struct complaints symfile_complaint_book = { &complaint_sentinel, - 0, + ISOLATED_MESSAGE, symfile_explanations }; struct complaints *symfile_complaints = &symfile_complaint_book; @@ -183,21 +176,27 @@ vcomplaint (struct complaints **c, const char *file, else series = complaints->series; + /* Pass 'fmt' instead of 'complaint->fmt' to printf-like callees + from here on, to avoid "format string is not a string literal" + warnings. 'fmt' is this function's printf-format parameter, so + the compiler can assume the passed in argument is a literal + string somewhere up the call chain. */ + gdb_assert (complaint->fmt == fmt); + if (complaint->file != NULL) - internal_vwarning (complaint->file, complaint->line, - complaint->fmt, args); + internal_vwarning (complaint->file, complaint->line, fmt, args); else if (deprecated_warning_hook) - (*deprecated_warning_hook) (complaint->fmt, args); + (*deprecated_warning_hook) (fmt, args); else { if (complaints->explanation == NULL) /* A [v]warning() call always appends a newline. */ - vwarning (complaint->fmt, args); + vwarning (fmt, args); else { char *msg; struct cleanup *cleanups; - msg = xstrvprintf (complaint->fmt, args); + msg = xstrvprintf (fmt, args); cleanups = make_cleanup (xfree, msg); wrap_here (""); if (series != SUBSEQUENT_MESSAGE)