From d610f9f4f1089ad18f07ec6d6507fd1b1e70f204 Mon Sep 17 00:00:00 2001 From: Piotr Tworek Date: Sat, 18 Dec 2021 22:49:54 +0100 Subject: [PATCH] Fix some signed/unsigned implicit conversions. Fix some trivial cases where the signedness of the constant value does not match the signedness of type the code expects to see. GCC can be asked to warn about those by passing Wsign-covnersion flag. Issue #4354 --- repos/base/include/spec/arm/cpu/consts.h | 2 +- repos/base/include/spec/arm_64/cpu/consts.h | 2 +- repos/base/src/include/base/internal/ipc_server.h | 2 +- repos/base/src/include/base/internal/output.h | 2 +- repos/base/src/lib/base/allocator_avl.cc | 2 +- repos/base/src/lib/base/heap.cc | 4 ++-- repos/os/src/lib/sandbox/utils.h | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/repos/base/include/spec/arm/cpu/consts.h b/repos/base/include/spec/arm/cpu/consts.h index 066a9503dc..f0b99dd183 100644 --- a/repos/base/include/spec/arm/cpu/consts.h +++ b/repos/base/include/spec/arm/cpu/consts.h @@ -23,7 +23,7 @@ namespace Abi { * change the stack pointer, we need no further stack adjustment. */ inline Genode::addr_t stack_align(Genode::addr_t addr) { - return (addr & ~0xf); } + return (addr & ~0xfUL); } /** * Do ABI specific initialization to a freshly created stack diff --git a/repos/base/include/spec/arm_64/cpu/consts.h b/repos/base/include/spec/arm_64/cpu/consts.h index 18fe03b14a..f91d34cc71 100644 --- a/repos/base/include/spec/arm_64/cpu/consts.h +++ b/repos/base/include/spec/arm_64/cpu/consts.h @@ -22,7 +22,7 @@ namespace Abi { * On ARM we align the stack top to 16-byte. */ inline Genode::addr_t stack_align(Genode::addr_t addr) { - return (addr & ~0xf); } + return (addr & ~0xfUL); } /** * Do ABI specific initialization to a freshly created stack diff --git a/repos/base/src/include/base/internal/ipc_server.h b/repos/base/src/include/base/internal/ipc_server.h index 08a74c2df5..91b4ed803f 100644 --- a/repos/base/src/include/base/internal/ipc_server.h +++ b/repos/base/src/include/base/internal/ipc_server.h @@ -33,7 +33,7 @@ namespace Genode { struct Rpc_request { Reply_capability caller { }; - unsigned long badge = ~0; + unsigned long badge = ~0UL; Rpc_request() { } diff --git a/repos/base/src/include/base/internal/output.h b/repos/base/src/include/base/internal/output.h index 97770cc920..ada980e5c7 100644 --- a/repos/base/src/include/base/internal/output.h +++ b/repos/base/src/include/base/internal/output.h @@ -146,7 +146,7 @@ static inline void out_float(T value, unsigned base, unsigned length, OUT_CHAR_F volatile_value = (T)(volatile_value - (T)integer); volatile_value = (T)(volatile_value * (T)base); - integer = (int64_t)volatile_value; + integer = (uint64_t)volatile_value; out_char(ascii((int)integer)); length--; diff --git a/repos/base/src/lib/base/allocator_avl.cc b/repos/base/src/lib/base/allocator_avl.cc index e1d31d1d1f..6a51036ebe 100644 --- a/repos/base/src/lib/base/allocator_avl.cc +++ b/repos/base/src/lib/base/allocator_avl.cc @@ -99,7 +99,7 @@ Allocator_avl_base::Alloc_md_result Allocator_avl_base::_alloc_block_metadata() { return _md_alloc.try_alloc(sizeof(Block)).convert( [&] (void *ptr) { - return construct_at(ptr, 0, 0, 0); }, + return construct_at(ptr, 0U, 0U, 0); }, [&] (Alloc_error error) { return error; }); } diff --git a/repos/base/src/lib/base/heap.cc b/repos/base/src/lib/base/heap.cc index f7b77a6906..7c04c3ae29 100644 --- a/repos/base/src/lib/base/heap.cc +++ b/repos/base/src/lib/base/heap.cc @@ -130,7 +130,7 @@ Heap::_allocate_dataspace(size_t size, bool enforce_separate_metadata) /* add new local address range to our local allocator */ _alloc->add_range((addr_t)attach_guard.ptr, size).with_result( [&] (Range_allocator::Range_ok) { - metadata = _alloc->alloc_aligned(sizeof(Heap::Dataspace), log2(16)); }, + metadata = _alloc->alloc_aligned(sizeof(Heap::Dataspace), log2(16U)); }, [&] (Alloc_error error) { metadata = error; }); } @@ -153,7 +153,7 @@ Heap::_allocate_dataspace(size_t size, bool enforce_separate_metadata) Allocator::Alloc_result Heap::_try_local_alloc(size_t size) { - return _alloc->alloc_aligned(size, log2(16)).convert( + return _alloc->alloc_aligned(size, log2(16U)).convert( [&] (void *ptr) { _quota_used += size; diff --git a/repos/os/src/lib/sandbox/utils.h b/repos/os/src/lib/sandbox/utils.h index 7db3b3a2c9..90bb177a4d 100644 --- a/repos/os/src/lib/sandbox/utils.h +++ b/repos/os/src/lib/sandbox/utils.h @@ -167,7 +167,7 @@ namespace Sandbox { */ inline Prio_levels prio_levels_from_xml(Xml_node const &config) { - long const prio_levels = config.attribute_value("prio_levels", 0UL); + long const prio_levels = config.attribute_value("prio_levels", 0L); if (prio_levels && ((prio_levels >= (long)sizeof(prio_levels)*8) || (prio_levels != (1L << log2(prio_levels))))) {