--- src/preproc/pic/pic.cpp.orig 2026-05-15 12:55:49 +++ src/preproc/pic/pic.cpp 2026-05-15 12:56:06 @@ -5271,11 +5271,8 @@ one_format += '\0'; // We validated the format string above. Most conversion specifiers are // rejected, including `n`. -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(sprintf_buf, sizeof sprintf_buf, one_format.contents(), v[i++]); -#pragma GCC diagnostic pop } one_format.clear(); result += sprintf_buf; --- src/preproc/pic/pic.ypp.orig 2026-05-15 12:56:20 +++ src/preproc/pic/pic.ypp 2026-05-15 12:56:30 @@ -2018,11 +2018,8 @@ one_format += '\0'; // We validated the format string above. Most conversion specifiers are // rejected, including `n`. -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(sprintf_buf, sizeof sprintf_buf, one_format.contents(), v[i++]); -#pragma GCC diagnostic pop } one_format.clear(); result += sprintf_buf; --- src/preproc/eqn/delim.cpp.orig 2026-05-15 12:58:26 +++ src/preproc/eqn/delim.cpp 2026-05-15 12:58:43 @@ -326,10 +326,7 @@ char buf[256]; // The format string in the sprintf below comes from a struct // initializer above, and is not subject to external influence. -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wformat-nonliteral" sprintf(buf, d->chain_format, "\\\\n[" INDEX_REG "]"); -#pragma GCC diagnostic pop printf(".nr " INDEX_REG " 0\n" ".de " TEMP_MACRO "\n" ".ie c%s \\{\\\n"