This is an automated email from Gerrit.

"Jan Matyas <jan.mat...@codasip.com>" just uploaded a new patch set to Gerrit, 
which you can find at https://review.openocd.org/c/openocd/+/8748

-- gerrit

commit 3bd53815c5a0b790d235201fd5439916f6bfd159
Author: Jan Matyas <jan.mat...@codasip.com>
Date:   Sun Feb 9 17:59:21 2025 +0100

    helper/binarybuffer: Avoid -Wconversion warnings
    
    Avoid -Wconversion warnings in binarybuffer.{c,h} by replacing
    implicit trucnations (or implicit sign conversions) by explict
    casts.
    
    Hopefully, it will become possible to enable -Wconversion on
    (parts of) OpenOCD code one day; and this patch is a step that
    direction.
    
    Note: The occurrences of -Wconversion in the current OpenOCD
    code can be shown by manually enabling this warning during
    configure - for example this way:
    
      ./bootstrap &&  \
      ./configure CFLAGS="-Wconversion" --disable-werror &&  \
      make clean &&  \
      make -j`nproc` 2>&1 | tee build_log.txt &&  \
      grep -P "\[\-W(sign\-)?conversion\]"  \
        < build_log.txt > wconversion.txt
    
    Change-Id: I89b05eec6fac299bcedf1c17c873212c17f519de
    Signed-off-by: Jan Matyas <jan.mat...@codasip.com>

diff --git a/src/helper/binarybuffer.c b/src/helper/binarybuffer.c
index 6fba86a660..feb72f2284 100644
--- a/src/helper/binarybuffer.c
+++ b/src/helper/binarybuffer.c
@@ -52,7 +52,7 @@ void *buf_cpy(const void *from, void *_to, unsigned int size)
        unsigned int trailing_bits = size % 8;
        if (trailing_bits) {
                uint8_t *to = _to;
-               to[size / 8] &= (1 << trailing_bits) - 1;
+               to[size / 8] &= (uint8_t)((1 << trailing_bits) - 1);
        }
        return _to;
 }
@@ -63,7 +63,8 @@ static bool buf_eq_masked(uint8_t a, uint8_t b, uint8_t m)
 }
 static bool buf_eq_trailing(uint8_t a, uint8_t b, uint8_t m, unsigned int 
trailing)
 {
-       uint8_t mask = (1 << trailing) - 1;
+       assert(trailing < 8);
+       uint8_t mask = (uint8_t)((1 << trailing) - 1);
        return buf_eq_masked(a, b, mask & m);
 }
 
@@ -112,7 +113,7 @@ void *buf_set_ones(void *_buf, unsigned int size)
 
        unsigned int trailing_bits = size % 8;
        if (trailing_bits)
-               buf[size / 8] = (1 << trailing_bits) - 1;
+               buf[size / 8] = (uint8_t)((1 << trailing_bits) - 1);
 
        return buf;
 }
@@ -145,10 +146,10 @@ void *buf_set_buf(const void *_src, unsigned int 
src_start,
 
        /* fallback to slow bit copy */
        for (i = 0; i < len; i++) {
-               if (((*src >> (sq&7)) & 1) == 1)
-                       *dst |= 1 << (dq&7);
+               if (((*src >> (sq & 7)) & 1) == 1)
+                       *dst |= 1 << (dq & 7);
                else
-                       *dst &= ~(1 << (dq&7));
+                       *dst &= (uint8_t)(~(1 << (dq & 7)));
                if (sq++ == 7) {
                        sq = 0;
                        src++;
@@ -248,11 +249,11 @@ int str_to_buf(const char *str, void *_buf, unsigned int 
buf_bitsize)
                const char c = *str;
 
                if ((c >= '0') && (c <= '9')) {
-                       tmp = c - '0';
+                       tmp = (unsigned int)(c - '0');
                } else if ((c >= 'a') && (c <= 'f')) {
-                       tmp = c - 'a' + 10;
+                       tmp = (unsigned int)(c - 'a') + 10;
                } else if ((c >= 'A') && (c <= 'F')) {
-                       tmp = c - 'A' + 10;
+                       tmp = (unsigned int)(c - 'A') + 10;
                } else {
                        /* Characters other than [0-9,a-f,A-F] are invalid */
                        return ERROR_INVALID_NUMBER;
@@ -359,7 +360,7 @@ size_t unhexify(uint8_t *bin, const char *hex, size_t count)
                else
                        return i / 2;
 
-               bin[i / 2] |= tmp << (4 * ((i + 1) % 2));
+               bin[i / 2] |= (uint8_t)(tmp << (4 * ((i + 1) % 2)));
        }
 
        return i / 2;
diff --git a/src/helper/binarybuffer.h b/src/helper/binarybuffer.h
index 99132798b6..bf5c69eba4 100644
--- a/src/helper/binarybuffer.h
+++ b/src/helper/binarybuffer.h
@@ -38,16 +38,17 @@ static inline void buf_set_u32(uint8_t *_buffer,
        uint8_t *buffer = _buffer;
 
        if ((num == 32) && (first == 0)) {
-               buffer[3] = (value >> 24) & 0xff;
-               buffer[2] = (value >> 16) & 0xff;
-               buffer[1] = (value >> 8) & 0xff;
-               buffer[0] = (value >> 0) & 0xff;
+               buffer[3] = (uint8_t)((value >> 24) & 0xff);
+               buffer[2] = (uint8_t)((value >> 16) & 0xff);
+               buffer[1] = (uint8_t)((value >> 8) & 0xff);
+               buffer[0] = (uint8_t)((value >> 0) & 0xff);
        } else {
                for (unsigned int i = first; i < first + num; i++) {
+                       const uint8_t mask = 1 << (i % 8);
                        if (((value >> (i - first)) & 1) == 1)
-                               buffer[i / 8] |= 1 << (i % 8);
+                               buffer[i / 8] |= mask;
                        else
-                               buffer[i / 8] &= ~(1 << (i % 8));
+                               buffer[i / 8] &= ~mask;
                }
        }
 }
@@ -69,25 +70,26 @@ static inline void buf_set_u64(uint8_t *_buffer,
        uint8_t *buffer = _buffer;
 
        if ((num == 32) && (first == 0)) {
-               buffer[3] = (value >> 24) & 0xff;
-               buffer[2] = (value >> 16) & 0xff;
-               buffer[1] = (value >> 8) & 0xff;
-               buffer[0] = (value >> 0) & 0xff;
+               buffer[3] = (uint8_t)((value >> 24) & 0xff);
+               buffer[2] = (uint8_t)((value >> 16) & 0xff);
+               buffer[1] = (uint8_t)((value >> 8) & 0xff);
+               buffer[0] = (uint8_t)((value >> 0) & 0xff);
        } else if ((num == 64) && (first == 0)) {
-               buffer[7] = (value >> 56) & 0xff;
-               buffer[6] = (value >> 48) & 0xff;
-               buffer[5] = (value >> 40) & 0xff;
-               buffer[4] = (value >> 32) & 0xff;
-               buffer[3] = (value >> 24) & 0xff;
-               buffer[2] = (value >> 16) & 0xff;
-               buffer[1] = (value >> 8) & 0xff;
-               buffer[0] = (value >> 0) & 0xff;
+               buffer[7] = (uint8_t)((value >> 56) & 0xff);
+               buffer[6] = (uint8_t)((value >> 48) & 0xff);
+               buffer[5] = (uint8_t)((value >> 40) & 0xff);
+               buffer[4] = (uint8_t)((value >> 32) & 0xff);
+               buffer[3] = (uint8_t)((value >> 24) & 0xff);
+               buffer[2] = (uint8_t)((value >> 16) & 0xff);
+               buffer[1] = (uint8_t)((value >> 8) & 0xff);
+               buffer[0] = (uint8_t)((value >> 0) & 0xff);
        } else {
                for (unsigned int i = first; i < first + num; i++) {
+                       const uint8_t mask = 1 << (i % 8);
                        if (((value >> (i - first)) & 1) == 1)
-                               buffer[i / 8] |= 1 << (i % 8);
+                               buffer[i / 8] |= mask;
                        else
-                               buffer[i / 8] &= ~(1 << (i % 8));
+                               buffer[i / 8] &= ~mask;
                }
        }
 }

-- 

Reply via email to