public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libc/30516] New: realpath() implementation has a C++ ODR violation
@ 2023-06-05 21:56 ayzhao at google dot com
  2023-06-06  7:54 ` [Bug libc/30516] " schwab@linux-m68k.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: ayzhao at google dot com @ 2023-06-05 21:56 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=30516

            Bug ID: 30516
           Summary: realpath() implementation has a C++ ODR violation
           Product: glibc
           Version: 2.39
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: libc
          Assignee: unassigned at sourceware dot org
          Reporter: ayzhao at google dot com
                CC: drepper.fsp at gmail dot com
  Target Milestone: ---

In stdlib/bits/stdlib.h, realpath is implemented as an inline function whose
definition changes depending on whether or not limits.h was included first
before stdlib.h [0]. In C++, this leads to an ODR violation if, for example,
one translation unit includes stdlib.h and another translation unit includes
limit.h and stdlib.h.

[0]:
https://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/bits/stdlib.h;h=c6c0082ad5b5fe0a9714326051f19818dedd5e11;hb=HEAD#l44

-- 
You are receiving this mail because:
You are on the CC list for the bug.

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

* [Bug libc/30516] realpath() implementation has a C++ ODR violation
  2023-06-05 21:56 [Bug libc/30516] New: realpath() implementation has a C++ ODR violation ayzhao at google dot com
@ 2023-06-06  7:54 ` schwab@linux-m68k.org
  2023-06-25 23:40 ` ppluzhnikov at google dot com
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: schwab@linux-m68k.org @ 2023-06-06  7:54 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=30516

--- Comment #1 from Andreas Schwab <schwab@linux-m68k.org> ---
*** Bug 30517 has been marked as a duplicate of this bug. ***

-- 
You are receiving this mail because:
You are on the CC list for the bug.

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

* [Bug libc/30516] realpath() implementation has a C++ ODR violation
  2023-06-05 21:56 [Bug libc/30516] New: realpath() implementation has a C++ ODR violation ayzhao at google dot com
  2023-06-06  7:54 ` [Bug libc/30516] " schwab@linux-m68k.org
@ 2023-06-25 23:40 ` ppluzhnikov at google dot com
  2023-06-26 17:41 ` sam at gentoo dot org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: ppluzhnikov at google dot com @ 2023-06-25 23:40 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=30516

Paul Pluzhnikov <ppluzhnikov at google dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2023-06-25
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
                 CC|                            |ppluzhnikov at google dot com

-- 
You are receiving this mail because:
You are on the CC list for the bug.

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

* [Bug libc/30516] realpath() implementation has a C++ ODR violation
  2023-06-05 21:56 [Bug libc/30516] New: realpath() implementation has a C++ ODR violation ayzhao at google dot com
  2023-06-06  7:54 ` [Bug libc/30516] " schwab@linux-m68k.org
  2023-06-25 23:40 ` ppluzhnikov at google dot com
@ 2023-06-26 17:41 ` sam at gentoo dot org
  2023-06-29 13:24 ` adhemerval.zanella at linaro dot org
  2023-06-29 15:18 ` ppluzhnikov at google dot com
  4 siblings, 0 replies; 6+ messages in thread
From: sam at gentoo dot org @ 2023-06-26 17:41 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=30516

Sam James <sam at gentoo dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sam at gentoo dot org

-- 
You are receiving this mail because:
You are on the CC list for the bug.

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

* [Bug libc/30516] realpath() implementation has a C++ ODR violation
  2023-06-05 21:56 [Bug libc/30516] New: realpath() implementation has a C++ ODR violation ayzhao at google dot com
                   ` (2 preceding siblings ...)
  2023-06-26 17:41 ` sam at gentoo dot org
@ 2023-06-29 13:24 ` adhemerval.zanella at linaro dot org
  2023-06-29 15:18 ` ppluzhnikov at google dot com
  4 siblings, 0 replies; 6+ messages in thread
From: adhemerval.zanella at linaro dot org @ 2023-06-29 13:24 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=30516

Adhemerval Zanella <adhemerval.zanella at linaro dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |adhemerval.zanella at linaro dot o
                   |                            |rg

--- Comment #2 from Adhemerval Zanella <adhemerval.zanella at linaro dot org> ---
Do you have an example where the realpath fortify is generating ODR violation?
The function is explicit marked as __attribute__ ((__always_inline__)) and
__attribute__ ((__gnu_inline__)), so the only way I see is if compiler is not
being able to always inline it (which for GCC should happen even at -O0 afaik).
If it where the case maybe one option is to just enable the fortify if
__always_inline is set.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

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

* [Bug libc/30516] realpath() implementation has a C++ ODR violation
  2023-06-05 21:56 [Bug libc/30516] New: realpath() implementation has a C++ ODR violation ayzhao at google dot com
                   ` (3 preceding siblings ...)
  2023-06-29 13:24 ` adhemerval.zanella at linaro dot org
@ 2023-06-29 15:18 ` ppluzhnikov at google dot com
  4 siblings, 0 replies; 6+ messages in thread
From: ppluzhnikov at google dot com @ 2023-06-29 15:18 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=30516

--- Comment #3 from Paul Pluzhnikov <ppluzhnikov at google dot com> ---
(In reply to Adhemerval Zanella from comment #2)
> Do you have an example where the realpath fortify is generating ODR
> violation? 

C++ modules.

This happens before any inlining / code generation: the compiler imports a
(precompiled) header module foo.pcm generated from foo.h with only "#include
<stdlib.h>" into another source which includes both <limits.h> and <stdlib.h>,
and observes that the sequence of tokens is different in current TU (compared
to the sequence that was observed when foo.pcm was generated) and raises an
error.

> for GCC

GCC does not fully support C++ modules yet
(https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc/C_002b_002b-Modules.html), but
this will likely become a problem for implementation.

This is already a problem when using C++ modules with Clang.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

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

end of thread, other threads:[~2023-06-29 15:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-05 21:56 [Bug libc/30516] New: realpath() implementation has a C++ ODR violation ayzhao at google dot com
2023-06-06  7:54 ` [Bug libc/30516] " schwab@linux-m68k.org
2023-06-25 23:40 ` ppluzhnikov at google dot com
2023-06-26 17:41 ` sam at gentoo dot org
2023-06-29 13:24 ` adhemerval.zanella at linaro dot org
2023-06-29 15:18 ` ppluzhnikov at google dot com

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).