> Am 15.11.2025 um 11:12 schrieb Jakub Jelinek <[email protected]>:
>
> Hi!
>
> Andrew's recent r16-5258 change broke bootstrap on x86_64-linux with
> cobol enabled, the error is
> ../../gcc/cobol/lexio.cc: In function
> ‘std::pair<std::__cxx11::list<replace_t>,
> char*> parse_replace_pairs(const char*, const char*, bool)’:
> ../../gcc/cobol/lexio.cc:907:76: error: ‘%.*s’ directive argument is null
> [-Werror=format-overflow=]
> 907 | dbgmsg( "%s:%d: %s: " HOST_SIZE_T_PRINT_UNSIGNED " pairs parsed
> from '%.*s'",
> |
> ^~~~
> The problem is that some jump threading is happening now that didn't happen
> before and a dbgmsg call is duplicated, once with 0, NULL as the last two
> arguments, once with some size and pointer.
>
> The following patch makes sure we never call it with NULL pointer, even when
> the size is 0, to silence the warning.
>
> Bootstrapped/regtested on x86_64-linux, ok for trunk?
Ok
Richard
> 2025-11-14 Jakub Jelinek <[email protected]>
>
> PR cobol/122691
> * lexio.cc (parse_replace_pairs): Replace parsed.stmt.p with
> parsed.stmt.size() ? parsed.stmt.p : "" in the last argument to
> dbgmsg.
>
> --- gcc/lexio.cc.jj 2025-07-15 14:49:29.931515987 +0200
> +++ gcc/lexio.cc 2025-11-14 20:16:46.604504566 +0100
> @@ -907,7 +907,8 @@ parse_replace_pairs( const char *stmt, c
> dbgmsg( "%s:%d: %s: " HOST_SIZE_T_PRINT_UNSIGNED " pairs parsed from
> '%.*s'",
> __func__, __LINE__,
> parsed.done() ? "done" : "not done",
> - (fmt_size_t)pairs.size(), parsed.stmt.size(), parsed.stmt.p );
> + (fmt_size_t)pairs.size(), parsed.stmt.size(),
> + parsed.stmt.size() ? parsed.stmt.p : "" );
> int i = 0;
> for( const auto& replace : pairs ) {
> dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__,
>
> Jakub
>