aboutsummaryrefslogtreecommitdiff
path: root/gcc/analyzer
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2020-01-28 09:08:25 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2020-01-28 13:47:14 -0500
commit6c8e584430bc5dc01b4438f3c38a2a10fcba7685 (patch)
treefe200933f9ffe9a7bc6b93cdcd7daa308c1d5365 /gcc/analyzer
parentad690d79cfbb905c5546c9333c5fd089d906505b (diff)
downloadgcc-6c8e584430bc5dc01b4438f3c38a2a10fcba7685.zip
gcc-6c8e584430bc5dc01b4438f3c38a2a10fcba7685.tar.gz
gcc-6c8e584430bc5dc01b4438f3c38a2a10fcba7685.tar.bz2
diagnostic_metadata: unbreak xgettext (v2)
Changed in v2: - rename from warning_with_metadata_at to warning_meta - fix test plugins While C++ can have overloads, xgettext can't deal with overloads that have different argument positions, leading to two failures in "make gcc.pot": emit_diagnostic_valist used incompatibly as both --keyword=emit_diagnostic_valist:4 --flag=emit_diagnostic_valist:4:gcc-internal-format and --keyword=emit_diagnostic_valist:5 --flag=emit_diagnostic_valist:5:gcc-internal-format warning_at used incompatibly as both --keyword=warning_at:3 --flag=warning_at:3:gcc-internal-format and --keyword=warning_at:4 --flag=warning_at:4:gcc-internal-format The emit_diagnostic_valist overload isn't used anywhere (I think it's a leftover from an earlier iteration of the analyzer patch kit). The warning_at overload is used throughout the analyzer but nowhere else. Ideally I'd like to consolidate this argument with something constructable in various ways: - from a metadata and an int or - from an int (or, better an "enum opt_code"), so that the overload happens when implicitly choosing the ctor, but that feels like stage 1 material. In the meantime, fix xgettext by deleting the unused overload and renaming the used one. gcc/analyzer/ChangeLog: * 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. gcc/ChangeLog: * 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. gcc/testsuite/ChangeLog: * 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.
Diffstat (limited to 'gcc/analyzer')
-rw-r--r--gcc/analyzer/ChangeLog17
-rw-r--r--gcc/analyzer/region-model.cc19
-rw-r--r--gcc/analyzer/sm-file.cc6
-rw-r--r--gcc/analyzer/sm-malloc.cc49
-rw-r--r--gcc/analyzer/sm-sensitive.cc7
-rw-r--r--gcc/analyzer/sm-signal.cc8
-rw-r--r--gcc/analyzer/sm-taint.cc24
7 files changed, 75 insertions, 55 deletions
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 9ba6adc..cea973d 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,20 @@
+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
diff --git a/gcc/analyzer/region-model.cc b/gcc/analyzer/region-model.cc
index 62c96a6..acaadcf 100644
--- a/gcc/analyzer/region-model.cc
+++ b/gcc/analyzer/region-model.cc
@@ -3827,27 +3827,26 @@ public:
{
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);
diff --git a/gcc/analyzer/sm-file.cc b/gcc/analyzer/sm-file.cc
index 1144492..7c54699 100644
--- a/gcc/analyzer/sm-file.cc
+++ b/gcc/analyzer/sm-file.cc
@@ -178,9 +178,9 @@ public:
/* 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)
diff --git a/gcc/analyzer/sm-malloc.cc b/gcc/analyzer/sm-malloc.cc
index 526680a..9415a07 100644
--- a/gcc/analyzer/sm-malloc.cc
+++ b/gcc/analyzer/sm-malloc.cc
@@ -145,8 +145,8 @@ public:
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)
@@ -235,8 +235,9 @@ public:
/* 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
@@ -297,9 +298,9 @@ public:
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;
@@ -338,8 +339,9 @@ public:
/* 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)
@@ -386,8 +388,9 @@ public:
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;
@@ -419,8 +422,8 @@ public:
/* 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)
@@ -459,8 +462,8 @@ public:
{
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)
@@ -514,16 +517,16 @@ public:
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;
}
}
diff --git a/gcc/analyzer/sm-sensitive.cc b/gcc/analyzer/sm-sensitive.cc
index a067c18..ff0c328 100644
--- a/gcc/analyzer/sm-sensitive.cc
+++ b/gcc/analyzer/sm-sensitive.cc
@@ -105,9 +105,10 @@ public:
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)
diff --git a/gcc/analyzer/sm-signal.cc b/gcc/analyzer/sm-signal.cc
index b4daf3a..247e0ec 100644
--- a/gcc/analyzer/sm-signal.cc
+++ b/gcc/analyzer/sm-signal.cc
@@ -126,10 +126,10 @@ public:
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)
diff --git a/gcc/analyzer/sm-taint.cc b/gcc/analyzer/sm-taint.cc
index 00b794a..dff43a4 100644
--- a/gcc/analyzer/sm-taint.cc
+++ b/gcc/analyzer/sm-taint.cc
@@ -114,22 +114,22 @@ public:
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;
}
}