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