Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu. Pushed to trunk as r13-1145-gf0da5f0a316131.
gcc/analyzer/ChangeLog: * varargs.cc (va_arg_type_mismatch::emit): Associate the warning with CWE-686 ("Function Call With Incorrect Argument Type"). gcc/testsuite/ChangeLog: * gcc.dg/analyzer/stdarg-1.c (__analyzer_called_by_test_type_mismatch_1): Verify that -Wanalyzer-va-arg-type-mismatch is associated with CWE-686. Signed-off-by: David Malcolm <dmalc...@redhat.com> --- gcc/analyzer/varargs.cc | 13 ++++++++----- gcc/testsuite/gcc.dg/analyzer/stdarg-1.c | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/gcc/analyzer/varargs.cc b/gcc/analyzer/varargs.cc index 3baba7988c1..c92a56dd2f9 100644 --- a/gcc/analyzer/varargs.cc +++ b/gcc/analyzer/varargs.cc @@ -857,12 +857,15 @@ public: bool emit (rich_location *rich_loc) final override { auto_diagnostic_group d; + diagnostic_metadata m; + /* "CWE-686: Function Call With Incorrect Argument Type". */ + m.add_cwe (686); bool warned - = warning_at (rich_loc, get_controlling_option (), - "%<va_arg%> expected %qT but received %qT" - " for variadic argument %i of %qE", - m_expected_type, m_actual_type, - get_variadic_index_for_diagnostic (), m_va_list_tree); + = warning_meta (rich_loc, m, get_controlling_option (), + "%<va_arg%> expected %qT but received %qT" + " for variadic argument %i of %qE", + m_expected_type, m_actual_type, + get_variadic_index_for_diagnostic (), m_va_list_tree); return warned; } diff --git a/gcc/testsuite/gcc.dg/analyzer/stdarg-1.c b/gcc/testsuite/gcc.dg/analyzer/stdarg-1.c index 41935f74cc3..f23d28c5b89 100644 --- a/gcc/testsuite/gcc.dg/analyzer/stdarg-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/stdarg-1.c @@ -195,7 +195,7 @@ __analyzer_called_by_test_type_mismatch_1 (int placeholder, ...) __builtin_va_list ap; __builtin_va_start (ap, placeholder); - i = __builtin_va_arg (ap, int); /* { dg-warning "'va_arg' expected 'int' but received '\[^\n\r\]*' for variadic argument 1 of 'ap'" } */ + i = __builtin_va_arg (ap, int); /* { dg-warning "'va_arg' expected 'int' but received '\[^\n\r\]*' for variadic argument 1 of 'ap' \\\[CWE-686\\\]" } */ __builtin_va_end (ap); } -- 2.26.3