public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/114952] New: False positive -Wmaybe-uninitialized starting at -O3 in libbpf
@ 2024-05-05 22:15 kacper.slominski72 at gmail dot com
  2024-05-05 22:21 ` [Bug tree-optimization/114952] " pinskia at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: kacper.slominski72 at gmail dot com @ 2024-05-05 22:15 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114952

            Bug ID: 114952
           Summary: False positive -Wmaybe-uninitialized starting at -O3
                    in libbpf
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kacper.slominski72 at gmail dot com
  Target Milestone: ---

Created attachment 58105
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58105&action=edit
Preprocessed elf.c source code

When compiling libbpf (both as a part of the Linux kernel build, and as a
standalone library), starting with at least GCC 11.1, there are some false
positive -Wmaybe-uninitalized warnings generated when compiling with -O3.

In function ‘elf_close’,
    inlined from ‘elf_close’ at elf.c:53:6,
    inlined from ‘elf_find_func_offset_from_file’ at elf.c:384:2:
elf.c:57:9: warning: ‘elf_fd.elf’ may be used uninitialized
[-Wmaybe-uninitialized]
   57 |         elf_end(elf_fd->elf);
      |         ^~~~~~~~~~~~~~~~~~~~
elf.c: In function ‘elf_find_func_offset_from_file’:
elf.c:377:23: note: ‘elf_fd.elf’ was declared here
  377 |         struct elf_fd elf_fd;
      |                       ^~~~~~
In function ‘elf_close’,
    inlined from ‘elf_close’ at elf.c:53:6,
    inlined from ‘elf_find_func_offset_from_file’ at elf.c:384:2:
elf.c:58:9: warning: ‘elf_fd.fd’ may be used uninitialized
[-Wmaybe-uninitialized]
   58 |         close(elf_fd->fd);
      |         ^~~~~~~~~~~~~~~~~
elf.c: In function ‘elf_find_func_offset_from_file’:
elf.c:377:23: note: ‘elf_fd.fd’ was declared here
  377 |         struct elf_fd elf_fd;
      |                       ^~~~~~


From a quick look at the source code, as far as I can see, elf_fd is always
initialized at this point (looking at elf_find_func_offset_from_file), and I
think inlining has something to do with this (and hence it doesn't show up at
-O2). 

Attached is a preprocessed copy of elf.c. To reproduce, run: 

$ gcc preprocessed.c -c -O3 -Wmaybe-uninitialized

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/114952] False positive -Wmaybe-uninitialized starting at -O3 in libbpf
  2024-05-05 22:15 [Bug c/114952] New: False positive -Wmaybe-uninitialized starting at -O3 in libbpf kacper.slominski72 at gmail dot com
@ 2024-05-05 22:21 ` pinskia at gcc dot gnu.org
  2024-05-07 12:43 ` sjames at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-05-05 22:21 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114952

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Most likely GCC does not know errno is non-zero after the call to elf_open and
checking `fd < 0`.
Adding:
  if (ret == 0) __builtin_unreachable();
After the assignment of `ret = -errono;` fixes the warning.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/114952] False positive -Wmaybe-uninitialized starting at -O3 in libbpf
  2024-05-05 22:15 [Bug c/114952] New: False positive -Wmaybe-uninitialized starting at -O3 in libbpf kacper.slominski72 at gmail dot com
  2024-05-05 22:21 ` [Bug tree-optimization/114952] " pinskia at gcc dot gnu.org
@ 2024-05-07 12:43 ` sjames at gcc dot gnu.org
  2024-05-07 18:45 ` pinskia at gcc dot gnu.org
  2024-06-08  8:43 ` manu at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: sjames at gcc dot gnu.org @ 2024-05-07 12:43 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114952

Sam James <sjames at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jemarch at gcc dot gnu.org

--- Comment #2 from Sam James <sjames at gcc dot gnu.org> ---
We hit this when poking at wiring up BPF support properly in Gentoo. It's a
pain because both default to building with -Werror=maybe-uninitialized.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/114952] False positive -Wmaybe-uninitialized starting at -O3 in libbpf
  2024-05-05 22:15 [Bug c/114952] New: False positive -Wmaybe-uninitialized starting at -O3 in libbpf kacper.slominski72 at gmail dot com
  2024-05-05 22:21 ` [Bug tree-optimization/114952] " pinskia at gcc dot gnu.org
  2024-05-07 12:43 ` sjames at gcc dot gnu.org
@ 2024-05-07 18:45 ` pinskia at gcc dot gnu.org
  2024-06-08  8:43 ` manu at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-05-07 18:45 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114952

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note I don't think this is a `False positive` exactly because GCC has no
knowledge that errno could be non-zero after a fail call to open.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/114952] False positive -Wmaybe-uninitialized starting at -O3 in libbpf
  2024-05-05 22:15 [Bug c/114952] New: False positive -Wmaybe-uninitialized starting at -O3 in libbpf kacper.slominski72 at gmail dot com
                   ` (2 preceding siblings ...)
  2024-05-07 18:45 ` pinskia at gcc dot gnu.org
@ 2024-06-08  8:43 ` manu at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: manu at gcc dot gnu.org @ 2024-06-08  8:43 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114952

Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |manu at gcc dot gnu.org

--- Comment #4 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
Possibly duplicate of bug 61846

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-06-08  8:43 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-05 22:15 [Bug c/114952] New: False positive -Wmaybe-uninitialized starting at -O3 in libbpf kacper.slominski72 at gmail dot com
2024-05-05 22:21 ` [Bug tree-optimization/114952] " pinskia at gcc dot gnu.org
2024-05-07 12:43 ` sjames at gcc dot gnu.org
2024-05-07 18:45 ` pinskia at gcc dot gnu.org
2024-06-08  8:43 ` manu at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).