See bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64839 for more information.
Diff Detail
- Repository
- rL LLVM
Event Timeline
CMakeLists.txt | ||
---|---|---|
183 | Can you do it w/o cmake checks? |
CMakeLists.txt | ||
---|---|---|
183 |
I don't think so, Glibc headers do not have any marker to identify whether xdr.h is available or not.
I'll do the Autoconf part in GCC myself. As for other build systems I think we can safely assume that checking |
CMakeLists.txt | ||
---|---|---|
183 | Can't you rely on the glibc version? I.e. provide default values for these macros in a header file (sanitizer_platform_limits_posix.h?) |
CMakeLists.txt | ||
---|---|---|
183 |
No, Glibc is not guaranteed to include xdr.h regardless of version. If boils down to distribution maintainer deciding whether he wants to build his glibc with --enable-obsolete-rpc or not.
You mean throw in safe ifndefs? Makes sense. While at it, is the rest of the patch fine?
But don't we already have tons of configury done in buildscripts? Like ASAN_LOW_MEMORY=1, etc. |
CMakeLists.txt | ||
---|---|---|
183 | What Kostya says. I'm OK with optional inclusion of headers, as long as they are #included by default, and we use specific build systems (CMake, autoconf, etc.) to optionally disable them. | |
184 | check_include_file just sets the value of CMake variable HAVE_TIRPC_XDR_H, it will not be turned into compiler definition on its own. You will have to either use generate compiler-rt-config.h (meh), or use this variable to add compiler definitions in CMake (better). |
Updated based on Kostya's suggestions. Also performed more rigorous testing:
- rpc/xdr.h + tirpc/rpc/xdr.h - works
- only rpc/xdr.h - works
- only tirpc/rpc/xdr.h - works
- none - works
lib/sanitizer_common/CMakeLists.txt | ||
---|---|---|
120 ↗ | (On Diff #23171) | Does HAVE_TIRPC_XDR_H get the value "1" in this macro? Consider moving this logic (check_include_file + adjusting the variable value) to some common macro. |
lib/sanitizer_common/sanitizer_platform.h | ||
134 ↗ | (On Diff #23171) | I'd prefer the logic like this: #if !defined(HAVE_RPC_XDR_H) && !defined(HAVE_TIRPC_XDR_H) # define HAVE_RPC_XDR_H (SANITIZER_LINUX && !SANITIZER_ANDROID) # define HAVE_TIRPC_XDR_H 0 #endif |
lib/sanitizer_common/sanitizer_platform_limits_posix.cc | ||
1166–1167 | Looks like you can use just use #if (HAVE_RPC_XDR_H || HAVE_TIRPC_XDR_H) here |
Updated after review. The append_have_file_definition macro is ugly ugly (just as CMake itself with it's crazy language idiosyncrasies is).
Can you do it w/o cmake checks?
asan rt is built by many build systems, some of which you don't have access to,
and some of which I don't have access to.
All such checks should be done in the sources code.