Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntoine Martin <dev@ayakael.net>2022-11-11 20:09:46 +0300
committerGitHub <noreply@github.com>2022-11-11 20:09:46 +0300
commitce7aaecf99f9faf7cfe878fd1f3851e8f6e72567 (patch)
tree59b2fbff061d366d9d4fb5074bf14caa66b51009
parentfe985d9240c1d546a882aaa429807f5f1f0f9da1 (diff)
Fix gcc warnings during mono linux-x64 build (backport of #60675) (#77505)release/6.0
-rw-r--r--src/mono/cmake/config.h.in7
-rw-r--r--src/mono/cmake/configure.cmake39
-rw-r--r--src/mono/cmake/defines-todo.cmake1
-rw-r--r--src/mono/mono/eglib/gstr.c14
-rw-r--r--src/mono/mono/utils/mono-proclib.c2
5 files changed, 42 insertions, 21 deletions
diff --git a/src/mono/cmake/config.h.in b/src/mono/cmake/config.h.in
index 88d9b89f91a..1df5b2df342 100644
--- a/src/mono/cmake/config.h.in
+++ b/src/mono/cmake/config.h.in
@@ -501,14 +501,11 @@
/* Define to 1 if you have the `strerror_r' function. */
#cmakedefine HAVE_STRERROR_R 1
-/* Define to 1 if strerror_r returns char *. */
-#cmakedefine STRERROR_R_CHAR_P 1
-
/* Have GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY */
#cmakedefine GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY 1
/* GLIBC has CPU_COUNT macro in sched.h */
-#cmakedefine GLIBC_HAS_CPU_COUNT 1
+#cmakedefine HAVE_GNU_CPU_COUNT
/* Have large file support */
#cmakedefine HAVE_LARGE_FILE_SUPPORT 1
@@ -695,6 +692,8 @@
/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T @SIZEOF_SIZE_T@
+#cmakedefine01 HAVE_GNU_STRERROR_R
+
/* Define to 1 if the system has the type `struct sockaddr'. */
#cmakedefine HAVE_STRUCT_SOCKADDR 1
diff --git a/src/mono/cmake/configure.cmake b/src/mono/cmake/configure.cmake
index c3293d1089b..a2820777f06 100644
--- a/src/mono/cmake/configure.cmake
+++ b/src/mono/cmake/configure.cmake
@@ -139,6 +139,37 @@ check_type_size("long" SIZEOF_LONG)
check_type_size("long long" SIZEOF_LONG_LONG)
check_type_size("size_t" SIZEOF_SIZE_T)
+if (HOST_LINUX OR HOST_ANDROID)
+ set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
+endif()
+
+check_c_source_compiles(
+ "
+ #include <string.h>
+ int main(void)
+ {
+ char buffer[1];
+ char c = *strerror_r(0, buffer, 0);
+ return 0;
+ }
+ "
+ HAVE_GNU_STRERROR_R)
+
+check_c_source_compiles(
+ "
+ #include <sched.h>
+ int main(void)
+ {
+ CPU_COUNT((void *) 0);
+ return 0;
+ }
+ "
+ HAVE_GNU_CPU_COUNT)
+
+if (HOST_LINUX OR HOST_ANDROID)
+ set(CMAKE_REQUIRED_DEFINITIONS)
+endif()
+
# ICONV
set(ICONV_LIB)
find_library(LIBICONV_FOUND iconv)
@@ -146,14 +177,6 @@ if(NOT LIBICONV_FOUND STREQUAL "LIBICONV_FOUND-NOTFOUND")
set(ICONV_LIB "iconv")
endif()
-file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test.c
- "#include <sched.h>\n"
- "void main () { CPU_COUNT((void *) 0); }\n"
-)
-try_compile(GLIBC_HAS_CPU_COUNT ${CMAKE_BINARY_DIR}/CMakeTmp SOURCES "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test.c"
- COMPILE_DEFINITIONS "-D_GNU_SOURCE")
-
-
if(HOST_WIN32)
# checking for this doesn't work for some reason, hardcode result
set(HAVE_WINTERNL_H 1)
diff --git a/src/mono/cmake/defines-todo.cmake b/src/mono/cmake/defines-todo.cmake
index 5f48e9d70b4..fd2c6b0622f 100644
--- a/src/mono/cmake/defines-todo.cmake
+++ b/src/mono/cmake/defines-todo.cmake
@@ -4,7 +4,6 @@
#option (MAJOR_IN_MKDEV "Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.")
#option (MAJOR_IN_SYSMACROS "Define to 1 if `major', `minor', and `makedev' are declared in <sysmacros.h>.")
-#option (STRERROR_R_CHAR_P "Define to 1 if strerror_r returns char *.")
#option (HAVE_LIBICONV "Define to 1 if you have the `iconv' library (-liconv).")
#option (ANDROID_UNIFIED_HEADERS "Whether Android NDK unified headers are used")
#option (MONO_DL_NEED_USCORE "Does dlsym require leading underscore.")
diff --git a/src/mono/mono/eglib/gstr.c b/src/mono/mono/eglib/gstr.c
index c549b241894..cbf63d8f02b 100644
--- a/src/mono/mono/eglib/gstr.c
+++ b/src/mono/mono/eglib/gstr.c
@@ -249,7 +249,11 @@ g_strerror (gint errnum)
size_t buff_len = sizeof (tmp_buff);
buff [0] = 0;
-#ifndef STRERROR_R_CHAR_P
+#if HAVE_GNU_STRERROR_R
+ buff = strerror_r (errnum, buff, buff_len);
+ if (!error_messages [errnum])
+ error_messages [errnum] = g_strdup (buff);
+#else /* HAVE_GNU_STRERROR_R */
int r;
while ((r = strerror_r (errnum, buff, buff_len - 1))) {
if (r != ERANGE) {
@@ -261,17 +265,13 @@ g_strerror (gint errnum)
else
buff = g_realloc (buff, buff_len * 2);
buff_len *= 2;
- //Spec is not clean on whether size argument includes space for null terminator or not
+ //Spec is not clean on whether size argument includes space for null terminator or not
}
if (!error_messages [errnum])
error_messages [errnum] = g_strdup (buff);
if (buff != tmp_buff)
g_free (buff);
-#else /* STRERROR_R_CHAR_P */
- buff = strerror_r (errnum, buff, buff_len);
- if (!error_messages [errnum])
- error_messages [errnum] = g_strdup (buff);
-#endif /* STRERROR_R_CHAR_P */
+#endif /* HAVE_GNU_STRERROR_R */
#else /* HAVE_STRERROR_R */
if (!error_messages [errnum])
diff --git a/src/mono/mono/utils/mono-proclib.c b/src/mono/mono/utils/mono-proclib.c
index 1b19cdec49f..1c69d81765b 100644
--- a/src/mono/mono/utils/mono-proclib.c
+++ b/src/mono/mono/utils/mono-proclib.c
@@ -81,7 +81,7 @@
#endif
#ifdef HAVE_SCHED_GETAFFINITY
-# ifndef GLIBC_HAS_CPU_COUNT
+# ifndef HAVE_GNU_CPU_COUNT
static int
CPU_COUNT(cpu_set_t *set)
{