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