diff --git a/repos/libports/lib/mk/libdrm.inc b/repos/libports/lib/mk/libdrm.inc
index 948d317460..c2b873a469 100644
--- a/repos/libports/lib/mk/libdrm.inc
+++ b/repos/libports/lib/mk/libdrm.inc
@@ -30,4 +30,4 @@ vpath %.c $(LIBDRM_PORT_DIR)
vpath %.c $(LIB_DIR)
vpath %.cc $(LIB_DIR)
-CC_CXX_WARN_STRICE :=
+CC_CXX_WARN_STRICT_CONVERSION =
diff --git a/repos/libports/lib/mk/vfs_lwip.mk b/repos/libports/lib/mk/vfs_lwip.mk
index 03191da607..b71b7174f6 100644
--- a/repos/libports/lib/mk/vfs_lwip.mk
+++ b/repos/libports/lib/mk/vfs_lwip.mk
@@ -9,3 +9,5 @@ LIBS += lwip
vpath %.cc $(VFS_DIR)
SHARED_LIB = yes
+
+CC_CXX_WARN_STRICT_CONVERSION =
diff --git a/repos/libports/lib/mk/vfs_oss.mk b/repos/libports/lib/mk/vfs_oss.mk
index 9bcfbbfaa6..8ae7fc8bbc 100644
--- a/repos/libports/lib/mk/vfs_oss.mk
+++ b/repos/libports/lib/mk/vfs_oss.mk
@@ -5,3 +5,5 @@ vpath %.cc $(REP_DIR)/src/lib/vfs/oss
LIBS := libc
SHARED_LIB := yes
+
+CC_CXX_WARN_STRICT_CONVERSION =
diff --git a/repos/libports/src/app/extract/main.cc b/repos/libports/src/app/extract/main.cc
index 84a659eb84..5eb435f799 100644
--- a/repos/libports/src/app/extract/main.cc
+++ b/repos/libports/src/app/extract/main.cc
@@ -16,6 +16,8 @@
#include
/* libc includes */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
#include
#include
@@ -23,6 +25,8 @@
#include
#include
+#pragma GCC diagnostic pop /* restore -Wconversion warnings */
+
namespace Extract {
using namespace Genode;
struct Extracted_archive;
diff --git a/repos/libports/src/app/fetchurl/component.cc b/repos/libports/src/app/fetchurl/component.cc
index eacb93febb..e7966de5e8 100644
--- a/repos/libports/src/app/fetchurl/component.cc
+++ b/repos/libports/src/app/fetchurl/component.cc
@@ -1,5 +1,5 @@
/*
- * \brief Native fetchurl utility for Nix
+ * \brief Native fetchurl utility
* \author Emery Hemingway
* \date 2016-03-08
*/
@@ -19,15 +19,20 @@
#include
#include
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+
/* cURL includes */
#include
-/* Libc includes */
+/* libc includes */
#include
#include
#include
#include
+#pragma GCC diagnostic pop /* restore -Wconversion warnings */
+
namespace Fetchurl {
class Fetch;
struct User_data;
diff --git a/repos/libports/src/app/pdf_view/main.cc b/repos/libports/src/app/pdf_view/main.cc
index deaeedd60d..75bf2ec4c3 100644
--- a/repos/libports/src/app/pdf_view/main.cc
+++ b/repos/libports/src/app/pdf_view/main.cc
@@ -25,6 +25,9 @@
#include
#include
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+
/* MuPDF includes */
extern "C" {
#include
@@ -37,6 +40,7 @@ extern "C" {
#include
#include
+#pragma GCC diagnostic pop /* restore -Wconversion warnings */
typedef Genode::Pixel_rgb888 pixel_t;
@@ -58,7 +62,7 @@ static void copy_line_rgba(const unsigned char *rgba_src,
static int pdf_select(const struct dirent *d)
{
char const *name = d->d_name;
- int n = strlen(name);
+ size_t n = strlen(name);
return (n > 4)
? (!strncmp(&name[n-4], ".pdf", 4))
: 0;
diff --git a/repos/libports/src/app/sntp_client/target.mk b/repos/libports/src/app/sntp_client/target.mk
index fe0e2f35b5..2119121940 100644
--- a/repos/libports/src/app/sntp_client/target.mk
+++ b/repos/libports/src/app/sntp_client/target.mk
@@ -15,3 +15,5 @@ SRC_C = secs_to_tm.c tm_to_secs.c
INC_DIR += $(MUSL_TM)
vpath %.c $(MUSL_TM)
+
+CC_CXX_WARN_STRICT_CONVERSION =
diff --git a/repos/libports/src/app/stdin2out/target.mk b/repos/libports/src/app/stdin2out/target.mk
index 37cc877318..07ef7764f2 100644
--- a/repos/libports/src/app/stdin2out/target.mk
+++ b/repos/libports/src/app/stdin2out/target.mk
@@ -1,3 +1,5 @@
TARGET := stdin2out
SRC_CC := main.cc
LIBS += posix
+
+CC_CXX_WARN_STRICT_CONVERSION =
diff --git a/repos/libports/src/app/usb_webcam/main.cc b/repos/libports/src/app/usb_webcam/main.cc
index 06ee4b6239..7be1a71843 100644
--- a/repos/libports/src/app/usb_webcam/main.cc
+++ b/repos/libports/src/app/usb_webcam/main.cc
@@ -21,6 +21,9 @@
#include
#include
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+
/* libuv */
#include
@@ -29,6 +32,7 @@
#include
#include
+#pragma GCC diagnostic pop /* restore -Wconversion warnings */
using namespace Genode;
diff --git a/repos/libports/src/lib/lwip/platform/rand.cc b/repos/libports/src/lib/lwip/platform/rand.cc
index f9e3fc2499..0472c619cf 100644
--- a/repos/libports/src/lib/lwip/platform/rand.cc
+++ b/repos/libports/src/lib/lwip/platform/rand.cc
@@ -24,7 +24,7 @@ genode_uint32_t genode_rand()
state = oldstate * 6364136223846793005ULL + inc;
// Calculate output function (XSH RR), uses old state for max ILP
- uint32_t xorshifted = ((oldstate >> 18u) ^ oldstate) >> 27u;
- uint32_t rot = oldstate >> 59u;
+ uint32_t xorshifted = (uint32_t)(((oldstate >> 18u) ^ oldstate) >> 27u);
+ uint32_t rot = (uint32_t)(oldstate >> 59u);
return (xorshifted >> rot) | (xorshifted << ((-rot) & 31));
}
diff --git a/repos/libports/src/lib/lwip/platform/sys_arch.cc b/repos/libports/src/lib/lwip/platform/sys_arch.cc
index e57fb39589..39b708bb0c 100644
--- a/repos/libports/src/lib/lwip/platform/sys_arch.cc
+++ b/repos/libports/src/lib/lwip/platform/sys_arch.cc
@@ -106,7 +106,7 @@ extern "C" {
}
u32_t sys_now(void) {
- return Lwip::sys_timer_ptr->timer.curr_time().trunc_to_plain_ms().value; }
+ return (u32_t)Lwip::sys_timer_ptr->timer.curr_time().trunc_to_plain_ms().value; }
void genode_memcpy(void *dst, const void *src, size_t len) {
Genode::memcpy(dst, src, len); }
diff --git a/repos/libports/src/test/libc_integration/libc.h b/repos/libports/src/test/libc_integration/libc.h
new file mode 100644
index 0000000000..c2416405f1
--- /dev/null
+++ b/repos/libports/src/test/libc_integration/libc.h
@@ -0,0 +1,31 @@
+/*
+ * \brief Libc includes for the libc_integration test
+ * \author Norman Feske
+ * \date 2021-12-10
+ */
+
+/*
+ * Copyright (C) 2021 Genode Labs GmbH
+ *
+ * This file is part of the Genode OS framework, which is distributed
+ * under the terms of the GNU Affero General Public License version 3.
+ */
+
+#ifndef _LIBC_H_
+#define _LIBC_H_
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#pragma GCC diagnostic pop /* restore -Wconversion warnings */
+
+#endif /* _LIBC_H_ */
diff --git a/repos/libports/src/test/libc_integration/main.cc b/repos/libports/src/test/libc_integration/main.cc
index 4dc4c1dec9..1a30083814 100644
--- a/repos/libports/src/test/libc_integration/main.cc
+++ b/repos/libports/src/test/libc_integration/main.cc
@@ -16,16 +16,11 @@
* under the terms of the GNU Affero General Public License version 3.
*/
-
-/* libc includes */
-#include
-#include
-#include
-
/* stdcxx includes */
#include
/* local includes */
+#include "libc.h"
#include "definitions.h"
#include "fd_set.h"
#include "input_sender.h"
diff --git a/repos/libports/src/test/libc_integration/thread.cc b/repos/libports/src/test/libc_integration/thread.cc
index 6be17ce6c8..dbedbdf6d8 100644
--- a/repos/libports/src/test/libc_integration/thread.cc
+++ b/repos/libports/src/test/libc_integration/thread.cc
@@ -12,14 +12,11 @@
* under the terms of the GNU Affero General Public License version 3.
*/
-/* libc includes */
-#include
-#include
-
/* stdcxx includes */
#include
/* local includes */
+#include "libc.h"
#include "thread.h"
#include "fd_set.h"
@@ -104,7 +101,7 @@ void *worker_func(void *ptr)
}
/* simulate output creation requiring some time */
- usleep(1000ull*random()%300);
+ usleep((unsigned)((1000ull*random()) % 300));
/* write remaining output bytes */
while (bytes_written < data_out.size()) {
diff --git a/repos/libports/src/test/libc_vfs/target.mk b/repos/libports/src/test/libc_vfs/target.mk
index 51f9740b39..2370240219 100644
--- a/repos/libports/src/test/libc_vfs/target.mk
+++ b/repos/libports/src/test/libc_vfs/target.mk
@@ -1,3 +1,5 @@
TARGET = test-libc_vfs
LIBS = libc base
SRC_CC = main.cc
+
+CC_CXX_WARN_STRICT_CONVERSION =
diff --git a/repos/libports/src/test/memcpy/target.mk b/repos/libports/src/test/memcpy/target.mk
index 0f56d703a4..7d7de2a6cb 100644
--- a/repos/libports/src/test/memcpy/target.mk
+++ b/repos/libports/src/test/memcpy/target.mk
@@ -1,3 +1,5 @@
TARGET = test-memcpy
SRC_CC = main.cc
LIBS += libc
+
+CC_CXX_WARN_STRICT_CONVERSION =