<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.
</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/ca253f67046b7a6104631d7cbc9acdbd04e7319c">https://github.com/macports/macports-legacy-support/commit/ca253f67046b7a6104631d7cbc9acdbd04e7319c</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit ca253f67046b7a6104631d7cbc9acdbd04e7319c
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Fri Dec 6 21:36:28 2024 -0800
<span style='display:block; white-space:pre;color:#404040;'> Try to fix st?ncpy_chk warnings
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> These tests are intentionally performing illegal operations to verify
</span><span style='display:block; white-space:pre;color:#404040;'> that the checks work as expected. We try to suppress related warnings
</span><span style='display:block; white-space:pre;color:#404040;'> as much as possible.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> With these changes, all tested versions of clang are fully
</span><span style='display:block; white-space:pre;color:#404040;'> well-behaved, in that they emit no warnings and apply the checks as
</span><span style='display:block; white-space:pre;color:#404040;'> expected.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Gcc is another story, where some versions fail to suppress the
</span><span style='display:block; white-space:pre;color:#404040;'> warnings, and some versions actually get false errors. The current
</span><span style='display:block; white-space:pre;color:#404040;'> state seems to be the best possible under the circumstances.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'> Behavior across compiler versions is as noted above.
</span><span style='display:block; white-space:pre;color:#404040;'> Tests pass on all platforms.
</span>---
test/test_stpncpy_chk.c | 10 ++++++++++
test/test_strncpy_chk.c | 12 ++++++++++++
2 files changed, 22 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_stpncpy_chk.c b/test/test_stpncpy_chk.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 6feb8e1..cb70366 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/test/test_stpncpy_chk.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_stpncpy_chk.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -99,6 +99,16 @@ print_after(void)
</span> #include <unistd.h>
#include <sys/wait.h>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Try to disable warnings for things we're intentionally provoking */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if defined(__clang__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma clang diagnostic ignored "-Wunknown-pragmas"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma clang diagnostic ignored "-Wbuiltin-memcpy-chk-size"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#elif defined(__GNUC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma GCC diagnostic ignored "-Wpragmas"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma GCC diagnostic ignored "-Wstringop-overflow"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma GCC diagnostic ignored "-Warray-bounds"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> const char *test_str = "The Quick Brown Fox";
#define BUF_LEN 128 /* Generously longer than test_str */
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_strncpy_chk.c b/test/test_strncpy_chk.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 901ef66..462db5f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/test/test_strncpy_chk.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_strncpy_chk.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -103,6 +103,18 @@ print_after(void)
</span> #include <unistd.h>
#include <sys/wait.h>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Try to disable warnings for things we're intentionally provoking */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if defined(__clang__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma clang diagnostic ignored "-Wunknown-pragmas"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma clang diagnostic ignored "-Wbuiltin-memcpy-chk-size"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma clang diagnostic ignored "-Wunknown-warning-option"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma clang diagnostic ignored "-Wfortify-source"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#elif defined(__GNUC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma GCC diagnostic ignored "-Wpragmas"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma GCC diagnostic ignored "-Wstringop-overflow"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma GCC diagnostic ignored "-Warray-bounds"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> const char *test_str = "The Quick Brown Fox";
#define BUF_LEN 128 /* Generously longer than test_str */
</pre><pre style='margin:0'>
</pre>