+2020-01-28 David Malcolm <dmalcolm@redhat.com>
+
+ * diagnostic-core.h (warning_at): Rename overload to...
+ (warning_meta): ...this.
+ (emit_diagnostic_valist): Delete decl of overload taking
+ diagnostic_metadata.
+ * diagnostic.c (emit_diagnostic_valist): Likewise for defn.
+ (warning_at): Rename overload taking diagnostic_metadata to...
+ (warning_meta): ...this.
+
2020-01-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/93439
+2020-01-28 David Malcolm <dmalcolm@redhat.com>
+
+ * region-model.cc (poisoned_value_diagnostic::emit): Update for
+ renaming of warning_at overload to warning_meta.
+ * sm-file.cc (file_leak::emit): Likewise.
+ * sm-malloc.cc (double_free::emit): Likewise.
+ (possible_null_deref::emit): Likewise.
+ (possible_null_arg::emit): Likewise.
+ (null_deref::emit): Likewise.
+ (null_arg::emit): Likewise.
+ (use_after_free::emit): Likewise.
+ (malloc_leak::emit): Likewise.
+ (free_of_non_heap::emit): Likewise.
+ * sm-sensitive.cc (exposure_through_output_file::emit): Likewise.
+ * sm-signal.cc (signal_unsafe_call::emit): Likewise.
+ * sm-taint.cc (tainted_array_index::emit): Likewise.
+
2020-01-27 David Malcolm <dmalcolm@redhat.com>
PR analyzer/93451
{
diagnostic_metadata m;
m.add_cwe (457); /* "CWE-457: Use of Uninitialized Variable". */
- return warning_at (rich_loc, m,
- OPT_Wanalyzer_use_of_uninitialized_value,
- "use of uninitialized value %qE",
- m_expr);
+ return warning_meta (rich_loc, m,
+ OPT_Wanalyzer_use_of_uninitialized_value,
+ "use of uninitialized value %qE",
+ m_expr);
}
break;
case POISON_KIND_FREED:
{
diagnostic_metadata m;
m.add_cwe (416); /* "CWE-416: Use After Free". */
- return warning_at (rich_loc, m,
- OPT_Wanalyzer_use_after_free,
- "use after %<free%> of %qE",
- m_expr);
+ return warning_meta (rich_loc, m,
+ OPT_Wanalyzer_use_after_free,
+ "use after %<free%> of %qE",
+ m_expr);
}
break;
case POISON_KIND_POPPED_STACK:
{
- diagnostic_metadata m;
/* TODO: which CWE? */
- return warning_at (rich_loc, m,
+ return warning_at (rich_loc,
OPT_Wanalyzer_use_of_pointer_in_stale_stack_frame,
"use of pointer %qE within stale stack frame",
m_expr);
/* CWE-775: "Missing Release of File Descriptor or Handle after
Effective Lifetime". */
m.add_cwe (775);
- return warning_at (rich_loc, m, OPT_Wanalyzer_file_leak,
- "leak of FILE %qE",
- m_arg);
+ return warning_meta (rich_loc, m, OPT_Wanalyzer_file_leak,
+ "leak of FILE %qE",
+ m_arg);
}
label_text describe_state_change (const evdesc::state_change &change)
auto_diagnostic_group d;
diagnostic_metadata m;
m.add_cwe (415); /* CWE-415: Double Free. */
- return warning_at (rich_loc, m, OPT_Wanalyzer_double_free,
- "double-%<free%> of %qE", m_arg);
+ return warning_meta (rich_loc, m, OPT_Wanalyzer_double_free,
+ "double-%<free%> of %qE", m_arg);
}
label_text describe_state_change (const evdesc::state_change &change)
/* CWE-690: Unchecked Return Value to NULL Pointer Dereference. */
diagnostic_metadata m;
m.add_cwe (690);
- return warning_at (rich_loc, m, OPT_Wanalyzer_possible_null_dereference,
- "dereference of possibly-NULL %qE", m_arg);
+ return warning_meta (rich_loc, m,
+ OPT_Wanalyzer_possible_null_dereference,
+ "dereference of possibly-NULL %qE", m_arg);
}
label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
diagnostic_metadata m;
m.add_cwe (690);
bool warned
- = warning_at (rich_loc, m, OPT_Wanalyzer_possible_null_argument,
- "use of possibly-NULL %qE where non-null expected",
- m_arg);
+ = warning_meta (rich_loc, m, OPT_Wanalyzer_possible_null_argument,
+ "use of possibly-NULL %qE where non-null expected",
+ m_arg);
if (warned)
inform_nonnull_attribute (m_fndecl, m_arg_idx);
return warned;
/* CWE-690: Unchecked Return Value to NULL Pointer Dereference. */
diagnostic_metadata m;
m.add_cwe (690);
- return warning_at (rich_loc, m, OPT_Wanalyzer_null_dereference,
- "dereference of NULL %qE", m_arg);
+ return warning_meta (rich_loc, m,
+ OPT_Wanalyzer_null_dereference,
+ "dereference of NULL %qE", m_arg);
}
label_text describe_return_of_state (const evdesc::return_of_state &info)
auto_diagnostic_group d;
diagnostic_metadata m;
m.add_cwe (690);
- bool warned = warning_at (rich_loc, m, OPT_Wanalyzer_null_argument,
- "use of NULL %qE where non-null expected", m_arg);
+ bool warned = warning_meta (rich_loc, m, OPT_Wanalyzer_null_argument,
+ "use of NULL %qE where non-null expected",
+ m_arg);
if (warned)
inform_nonnull_attribute (m_fndecl, m_arg_idx);
return warned;
/* CWE-416: Use After Free. */
diagnostic_metadata m;
m.add_cwe (416);
- return warning_at (rich_loc, m, OPT_Wanalyzer_use_after_free,
- "use after %<free%> of %qE", m_arg);
+ return warning_meta (rich_loc, m, OPT_Wanalyzer_use_after_free,
+ "use after %<free%> of %qE", m_arg);
}
label_text describe_state_change (const evdesc::state_change &change)
{
diagnostic_metadata m;
m.add_cwe (401);
- return warning_at (rich_loc, m, OPT_Wanalyzer_malloc_leak,
- "leak of %qE", m_arg);
+ return warning_meta (rich_loc, m, OPT_Wanalyzer_malloc_leak,
+ "leak of %qE", m_arg);
}
label_text describe_state_change (const evdesc::state_change &change)
default:
gcc_unreachable ();
case KIND_UNKNOWN:
- return warning_at (rich_loc, m, OPT_Wanalyzer_free_of_non_heap,
- "%<free%> of %qE which points to memory"
- " not on the heap",
- m_arg);
+ return warning_meta (rich_loc, m, OPT_Wanalyzer_free_of_non_heap,
+ "%<free%> of %qE which points to memory"
+ " not on the heap",
+ m_arg);
break;
case KIND_ALLOCA:
- return warning_at (rich_loc, m, OPT_Wanalyzer_free_of_non_heap,
- "%<free%> of memory allocated on the stack by"
- " %qs (%qE) will corrupt the heap",
- "alloca", m_arg);
+ return warning_meta (rich_loc, m, OPT_Wanalyzer_free_of_non_heap,
+ "%<free%> of memory allocated on the stack by"
+ " %qs (%qE) will corrupt the heap",
+ "alloca", m_arg);
break;
}
}
diagnostic_metadata m;
/* CWE-532: Information Exposure Through Log Files */
m.add_cwe (532);
- return warning_at (rich_loc, m, OPT_Wanalyzer_exposure_through_output_file,
- "sensitive value %qE written to output file",
- m_arg);
+ return warning_meta (rich_loc, m,
+ OPT_Wanalyzer_exposure_through_output_file,
+ "sensitive value %qE written to output file",
+ m_arg);
}
label_text describe_state_change (const evdesc::state_change &change)
diagnostic_metadata m;
/* CWE-479: Signal Handler Use of a Non-reentrant Function. */
m.add_cwe (479);
- return warning_at (rich_loc, m,
- OPT_Wanalyzer_unsafe_call_within_signal_handler,
- "call to %qD from within signal handler",
- m_unsafe_fndecl);
+ return warning_meta (rich_loc, m,
+ OPT_Wanalyzer_unsafe_call_within_signal_handler,
+ "call to %qD from within signal handler",
+ m_unsafe_fndecl);
}
label_text describe_state_change (const evdesc::state_change &change)
default:
gcc_unreachable ();
case BOUNDS_NONE:
- return warning_at (rich_loc, m, OPT_Wanalyzer_tainted_array_index,
- "use of tainted value %qE in array lookup"
- " without bounds checking",
- m_arg);
+ return warning_meta (rich_loc, m, OPT_Wanalyzer_tainted_array_index,
+ "use of tainted value %qE in array lookup"
+ " without bounds checking",
+ m_arg);
break;
case BOUNDS_UPPER:
- return warning_at (rich_loc, m, OPT_Wanalyzer_tainted_array_index,
- "use of tainted value %qE in array lookup"
- " without lower-bounds checking",
- m_arg);
+ return warning_meta (rich_loc, m, OPT_Wanalyzer_tainted_array_index,
+ "use of tainted value %qE in array lookup"
+ " without lower-bounds checking",
+ m_arg);
break;
case BOUNDS_LOWER:
- return warning_at (rich_loc, m, OPT_Wanalyzer_tainted_array_index,
- "use of tainted value %qE in array lookup"
- " without upper-bounds checking",
- m_arg);
+ return warning_meta (rich_loc, m, OPT_Wanalyzer_tainted_array_index,
+ "use of tainted value %qE in array lookup"
+ " without upper-bounds checking",
+ m_arg);
break;
}
}
ATTRIBUTE_GCC_DIAG(3,4);
extern bool warning_at (rich_location *, int, const char *, ...)
ATTRIBUTE_GCC_DIAG(3,4);
-extern bool warning_at (rich_location *, const diagnostic_metadata &, int,
- const char *, ...)
+extern bool warning_meta (rich_location *,
+ const diagnostic_metadata &, int,
+ const char *, ...)
ATTRIBUTE_GCC_DIAG(4,5);
extern void error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
extern void error_n (location_t, unsigned HOST_WIDE_INT, const char *,
const char *, ...) ATTRIBUTE_GCC_DIAG(4,5);
extern bool emit_diagnostic_valist (diagnostic_t, location_t, int, const char *,
va_list *) ATTRIBUTE_GCC_DIAG (4,0);
-extern bool emit_diagnostic_valist (diagnostic_t, rich_location *,
- const diagnostic_metadata *metadata,
- int, const char *, va_list *)
- ATTRIBUTE_GCC_DIAG (5,0);
extern bool seen_error (void);
#ifdef BUFSIZ
return diagnostic_impl (&richloc, NULL, opt, gmsgid, ap, kind);
}
-/* Wrapper around diagnostic_impl taking a va_list parameter. */
-
-bool
-emit_diagnostic_valist (diagnostic_t kind, rich_location *richloc,
- const diagnostic_metadata *metadata,
- int opt,
- const char *gmsgid, va_list *ap)
-{
- return diagnostic_impl (richloc, metadata, opt, gmsgid, ap, kind);
-}
-
/* An informative note at LOCATION. Use this for additional details on an error
message. */
void
/* Same as "warning at" above, but using METADATA. */
bool
-warning_at (rich_location *richloc, const diagnostic_metadata &metadata,
- int opt, const char *gmsgid, ...)
+warning_meta (rich_location *richloc,
+ const diagnostic_metadata &metadata,
+ int opt, const char *gmsgid, ...)
{
gcc_assert (richloc);
+2020-01-28 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/plugin/diagnostic_plugin_test_metadata.c: Update for
+ renaming of warning_at overload to warning_meta.
+ * gcc.dg/plugin/diagnostic_plugin_test_paths.c: Likewise.
+
2020-01-28 Tobias Burnus <tobias@codesourcery.com>
Julian Brown <julian@codesourcery.com>
/* CWE-242: Use of Inherently Dangerous Function. */
diagnostic_metadata m;
m.add_cwe (242);
- warning_at (&richloc, m, 0,
- "never use %qs", "gets");
+ warning_meta (&richloc, m, 0,
+ "never use %qs", "gets");
}
}
entry_to_wrapped_free, "wrapped_free");
path.add_leaf_call (call_to_free, 2, "free");
if (i == 0 && call_to_missing_location.m_fun)
- path.add_leaf_call (call_to_missing_location, 0, "missing_location");
+ path.add_leaf_call (call_to_missing_location, 0,
+ "missing_location");
}
richloc.set_path (&path);
diagnostic_metadata m;
m.add_cwe (415); /* CWE-415: Double Free. */
- warning_at (&richloc, m, 0,
- "double-free of %qs", "ptr");
+ warning_meta (&richloc, m, 0,
+ "double-free of %qs", "ptr");
}
}
/* CWE-479: Signal Handler Use of a Non-reentrant Function. */
m.add_cwe (479);
- warning_at (&richloc, m, 0,
- "call to %qs from within signal handler",
- "fprintf");
+ warning_meta (&richloc, m, 0,
+ "call to %qs from within signal handler",
+ "fprintf");
}
}