libmicrohttpd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [libmicrohttpd] Build failure with Link-Time Optimization


From: Evgeny Grin
Subject: Re: [libmicrohttpd] Build failure with Link-Time Optimization
Date: Tue, 26 Dec 2023 19:20:19 +0300
User-agent: Mozilla Thunderbird

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;

Attachment: OpenPGP_0x460A317C3326D2AE.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]