Thank you.
I don't know what's so special about my setup - I am getting the same
error with GCC 12 & 13 - compiling for both x86_64 & aarch64.
Compiler flags - nothing unusual - -O3 -flto - but maybe warnings are a
bit overzealous (-Wuninitialized -Wstack-protector).
I'll try producing a sample that reproduces this - and will use
suggested workaround in the meantime.
On Tue, 26 Dec 2023 at 17:21, Evgeny Grin <k2k@yandex.ru
<mailto:k2k@yandex.ru>> wrote:
Hi Sergey,
Are you using some special compiler or linker parameters? Some special
compiler or linker versions?
I regularly test MHD with LTO. I've retested the current git master
with
LTO and cannot reproduce.
No errors, nor even warnings.
If you check the code you will find that both mentioned variables are
not used before initialisation. (Please provide the code path if I'm
wrong).
Unless variables are really used as uninitialised (which should be a
bug
and needs to be fixed), I'd avoid unneeded initialisation to save the
code size (and negligible performance).
If your compiler/linker complaint is false positive, you probably may
workaround it with '-ftrivial-auto-var-init' parameter.
Let me know the details, please.
--
Evgeny
On 26/12/2023 16:14, Sergey Sudnitsyn wrote:
> When LTO is enabled, linking fails complaining about potentially
> uninitialized variables;
> It's hard to provide a small sample reproducing this, but I hope the
> patch can be applied even without it since it's innocent enough
(diff
> against commit 8bb481f ):
>
> diff --git a/src/microhttpd/connection.c
b/src/microhttpd/connection.c
> index f9892a55..e5dd1a45 100644
> --- a/src/microhttpd/connection.c
> +++ b/src/microhttpd/connection.c
> @@ -653,7 +653,7 @@ MHD_connection_alloc_memory_ (struct
MHD_Connection
> *connection,
> {
> struct MHD_Connection *const c = connection; /* a short alias */
> struct MemoryPool *const pool = c->pool; /* a short alias */
> - size_t need_to_be_freed; /**< The required amount of additional
free
> memory */
> + size_t need_to_be_freed = 0; /**< The required amount of
additional
> free memory */
> void *res;
>
> res = MHD_pool_try_alloc (pool, size, &need_to_be_freed);
> @@ -4468,7 +4468,7 @@ process_request_body (struct MHD_Connection
> *connection)
> { /* Need the parse the chunk size line */
> /** The number of found digits in the chunk size number */
> size_t num_dig;
> - uint64_t chunk_size;
> + uint64_t chunk_size = 0;
> bool broken;
> bool overflow;
>