Browse Source

消除void* 运算警告

shaojinchun 4 years ago
parent
commit
98d4116747

+ 1 - 1
bsp/gkipc/armv6/rtos_lib.c

@@ -524,7 +524,7 @@ void RTOS_SetErrno(const int err)
 }
 int RTOS_GetErrno()
 {
-    int err;
+    int err = 0;
 #if 0
     rt_base_t level;
     level = rt_hw_interrupt_disable();

+ 12 - 12
components/lwp/arch/arm/common/reloc.c

@@ -36,15 +36,15 @@ void lwp_elf_reloc(rt_mmu_info *m_info, void *text_start, void *rel_dyn_start, s
         memcpy(&v2, rel_dyn_start + rel_off + 4, 4);
         */
 
-        addr = rt_hw_mmu_v2p(m_info, rel_dyn_start + rel_off);
-        addr -= PV_OFFSET;
+        addr = rt_hw_mmu_v2p(m_info, (void*)((char*)rel_dyn_start + rel_off));
+        addr = (void*)((char*)addr - PV_OFFSET);
         memcpy(&v1, addr, 4);
-        addr = rt_hw_mmu_v2p(m_info, rel_dyn_start + rel_off + 4);
-        addr -= PV_OFFSET;
+        addr = rt_hw_mmu_v2p(m_info, (void*)((char*)rel_dyn_start + rel_off + 4));
+        addr = (void*)((char*)addr - PV_OFFSET);
         memcpy(&v2, addr, 4);
 
-        addr = rt_hw_mmu_v2p(m_info, text_start + v1);
-        addr -= PV_OFFSET;
+        addr = rt_hw_mmu_v2p(m_info, (void*)((char*)text_start + v1));
+        addr = (void*)((char*)addr - PV_OFFSET);
         if ((v2 & 0xff) == R_ARM_RELATIVE)
         {
             // *(uint32_t*)(text_start + v1) += (uint32_t)text_start;
@@ -57,7 +57,7 @@ void lwp_elf_reloc(rt_mmu_info *m_info, void *text_start, void *rel_dyn_start, s
             if (t) /* 0 is UDF */
             {
                 // *(uint32_t*)(text_start + v1) = (uint32_t)(text_start + dynsym[t].st_value);
-                *(uint32_t*)addr = (uint32_t)(text_start + dynsym[t].st_value);
+                *(uint32_t*)addr = (uint32_t)((char*)text_start + dynsym[t].st_value);
             }
         }
     }
@@ -70,7 +70,7 @@ void lwp_elf_reloc(rt_mmu_info *m_info, void *text_start, void *rel_dyn_start, s
         {
             //*got_item += (uint32_t)text_start;
             addr = rt_hw_mmu_v2p(m_info, got_item);
-            addr -= PV_OFFSET;
+            addr = (void*)((char*)addr - PV_OFFSET);
             *(uint32_t *)addr += (uint32_t)text_start;
         }
     }
@@ -89,12 +89,12 @@ void lwp_elf_reloc(void *text_start, void *rel_dyn_start, size_t rel_dyn_size, v
     {
         uint32_t v1, v2;
 
-        memcpy(&v1, rel_dyn_start + rel_off, 4);
-        memcpy(&v2, rel_dyn_start + rel_off + 4, 4);
+        memcpy(&v1, (void*)((char*)rel_dyn_start + rel_off), 4);
+        memcpy(&v2, (void*)((char*)rel_dyn_start + rel_off + 4), 4);
 
         if ((v2 & 0xff) == R_ARM_RELATIVE)
         {
-            *(uint32_t*)(text_start + v1) += (uint32_t)text_start;
+            *(uint32_t*)((char*)text_start + v1) += (uint32_t)text_start;
         }
         else if ((v2 & 0xff) == R_ARM_ABS32)
         {
@@ -102,7 +102,7 @@ void lwp_elf_reloc(void *text_start, void *rel_dyn_start, size_t rel_dyn_size, v
             t = (v2 >> 8);
             if (t) /* 0 is UDF */
             {
-                *(uint32_t*)(text_start + v1) = (uint32_t)(text_start + dynsym[t].st_value);
+                *(uint32_t*)((char*)text_start + v1) = (uint32_t)((char*)text_start + dynsym[t].st_value);
             }
         }
     }

+ 8 - 8
components/lwp/lwp.c

@@ -410,7 +410,7 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str
         if (!va)
             return -RT_ERROR;
         pa = rt_hw_mmu_v2p(m_info, va);
-        process_header = pa - PV_OFFSET;
+        process_header = (uint8_t*)pa - PV_OFFSET;
 #else
         process_header = (uint8_t *)rt_malloc(process_header_size);
         if (!process_header)
@@ -523,14 +523,14 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str
                     while (size)
                     {
                         pa = rt_hw_mmu_v2p(m_info, va);
-                        va_self = pa - PV_OFFSET;
+                        va_self = (void*)((char*)pa - PV_OFFSET);
                         LOG_D("va_self = %p pa = %p", va_self, pa);
                         tmp_len = (size < ARCH_PAGE_SIZE) ? size : ARCH_PAGE_SIZE;
                         tmp_len = load_fread(va_self, 1, tmp_len, fd);
                         rt_hw_cpu_dcache_ops(RT_HW_CACHE_FLUSH, va_self, tmp_len);
                         read_len += tmp_len;
                         size -= tmp_len;
-                        va += ARCH_PAGE_SIZE;
+                        va = (void*)((char*)va + ARCH_PAGE_SIZE);
                     }
                 }
 #else
@@ -541,7 +541,7 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str
             if (pheader.p_filesz < pheader.p_memsz)
             {
 #ifdef RT_USING_USERSPACE
-                void *va = lwp->text_entry + pheader.p_filesz;
+                void *va = (void*)((char*)lwp->text_entry + pheader.p_filesz);
                 void *va_self;
                 void *pa;
                 uint32_t size = pheader.p_memsz - pheader.p_filesz;
@@ -554,12 +554,12 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str
                 {
                     size_s = (size < ARCH_PAGE_SIZE - off) ? size : ARCH_PAGE_SIZE - off;
                     pa = rt_hw_mmu_v2p(m_info, va);
-                    va_self = pa - PV_OFFSET;
-                    memset(va_self + off, 0, size_s);
-                    rt_hw_cpu_dcache_ops(RT_HW_CACHE_FLUSH, va_self + off, size_s);
+                    va_self = (void*)((char*)pa - PV_OFFSET);
+                    memset((void*)((char*)va_self + off), 0, size_s);
+                    rt_hw_cpu_dcache_ops(RT_HW_CACHE_FLUSH, (void*)((char*)va_self + off), size_s);
                     off = 0;
                     size -= size_s;
-                    va += ARCH_PAGE_SIZE;
+                    va = (void*)((char*)va + ARCH_PAGE_SIZE);
                 }
 #else
                 memset((uint8_t *)lwp->text_entry + pheader.p_filesz, 0, (size_t)(pheader.p_memsz - pheader.p_filesz));

+ 3 - 3
components/lwp/lwp_shm.c

@@ -101,7 +101,7 @@ static int _lwp_shmget(size_t key, size_t size, int create)
         {
             goto err;
         }
-        page_addr_p = page_addr + PV_OFFSET;    /* physical address */
+        page_addr_p = (void*)((char*)page_addr + PV_OFFSET);    /* physical address */
 
         /* initialize the shared memory structure */
         p = _shm_ary + id;
@@ -198,7 +198,7 @@ static int _lwp_shmrm(int id)
         return 0;
     }
     bit = rt_page_bits(p->size);
-    rt_pages_free((void*)p->addr - PV_OFFSET, bit);
+    rt_pages_free((void*)((char*)p->addr - PV_OFFSET), bit);
     lwp_avl_remove(node_key, &shm_tree_key);
     node_pa = node_key + 1;
     lwp_avl_remove(node_pa, &shm_tree_pa);
@@ -327,7 +327,7 @@ void *_lwp_shminfo(int id)
     }
     p = (struct lwp_shm_struct*)node_key->data; /* p = _shm_ary[id]; */
 
-    return (void *)p->addr - PV_OFFSET;     /* get the virtual address */
+    return (void*)((char*)p->addr - PV_OFFSET);     /* get the virtual address */
 }
 
 /* A wrapping function: get the virtual address of a shared memory. */

+ 2 - 2
components/lwp/lwp_signal.c

@@ -358,7 +358,7 @@ int lwp_sigprocmask(const lwp_sigset_t *sigset, lwp_sigset_t *oset)
     }
     if (oset)
     {
-        oset = rt_memcpy(oset, &lwp->signal_mask, sizeof(lwp_sigset_t));
+        rt_memcpy(oset, &lwp->signal_mask, sizeof(lwp_sigset_t));
     }
     rt_memcpy(&lwp->signal_mask, sigset, sizeof(lwp_sigset_t));
     lwp_sigdelset(&lwp->signal_mask, SIGKILL);
@@ -380,7 +380,7 @@ int lwp_thread_sigprocmask(const lwp_sigset_t *sigset, lwp_sigset_t *oset)
 
     if (oset)
     {
-        oset = rt_memcpy(oset, &thread->signal_mask, sizeof(lwp_sigset_t));
+        rt_memcpy(oset, &thread->signal_mask, sizeof(lwp_sigset_t));
     }
     rt_memcpy(&thread->signal_mask, sigset, sizeof(lwp_sigset_t));
     lwp_sigdelset(&thread->signal_mask, SIGKILL);

+ 24 - 24
components/lwp/lwp_user_mm.c

@@ -39,7 +39,7 @@ void lwp_mmu_switch(struct rt_thread *thread)
     if (thread->lwp)
     {
         l = (struct rt_lwp*)thread->lwp;
-        new_mmu_table = (void*)l->mmu_info.vtable + l->mmu_info.pv_off;
+        new_mmu_table = (void*)((char*)l->mmu_info.vtable + l->mmu_info.pv_off);
 #ifdef LWP_DEBUG
         {
             int i;
@@ -93,7 +93,7 @@ static void free_area(struct rt_lwp *lwp, void *addr, size_t size, int auto_free
     void *va, *pa;
     int i;
 
-    for (va = addr, i = 0; i < size; va += ARCH_PAGE_SIZE, i += ARCH_PAGE_SIZE)
+    for (va = addr, i = 0; i < size; va = (void*)((char*)va + ARCH_PAGE_SIZE), i += ARCH_PAGE_SIZE)
     {
         pa = rt_hw_mmu_v2p(&lwp->mmu_info, va);
         if (pa)
@@ -101,7 +101,7 @@ static void free_area(struct rt_lwp *lwp, void *addr, size_t size, int auto_free
             rt_hw_mmu_unmap(&lwp->mmu_info, va, ARCH_PAGE_SIZE);
             if (auto_free)
             {
-                rt_pages_free(pa - PV_OFFSET, 0);
+                rt_pages_free((void*)((char*)pa - PV_OFFSET), 0);
             }
         }
     }
@@ -205,7 +205,7 @@ void *lwp_map_user(struct rt_lwp *lwp, void *map_va, size_t map_size)
     rt_hw_interrupt_enable(level);
     if (ret)
     {
-        ret += offset;
+        ret = (void*)((char*)ret + offset);
     }
     return ret;
 }
@@ -263,7 +263,7 @@ void *lwp_map_user_phy(struct rt_lwp *lwp, void *map_va, void *map_pa, size_t ma
     rt_hw_interrupt_enable(level);
     if (ret)
     {
-        ret += offset;
+        ret = (void*)((char*)ret + offset);
     }
     return ret;
 }
@@ -346,7 +346,7 @@ size_t lwp_get_from_user(void *dst, void *src, size_t size)
     {
         return 0;
     }
-    if (src + size > (void*)KERNEL_VADDR_START)
+    if ((void*)((char*)src + size) > (void*)KERNEL_VADDR_START)
     {
         return 0;
     }
@@ -371,7 +371,7 @@ size_t lwp_put_to_user(void *dst, void *src, size_t size)
     {
         return 0;
     }
-    if (dst + size > (void*)KERNEL_VADDR_START)
+    if ((void*)((char*)dst + size) > (void*)KERNEL_VADDR_START)
     {
         return 0;
     }
@@ -401,7 +401,7 @@ int lwp_user_access_ok(void *addr, size_t size)
         return 0;
     }
     addr_start = addr;
-    addr_end = addr + size;
+    addr_end = (void*)((char*)addr + size);
     if (addr_start >= (void*)KERNEL_VADDR_START)
     {
         return 0;
@@ -415,7 +415,7 @@ int lwp_user_access_ok(void *addr, size_t size)
     next_page = (void*)(((size_t)addr_start + ARCH_PAGE_SIZE) & ~(ARCH_PAGE_SIZE - 1));
     do
     {
-        size_t len = next_page - addr_start;
+        size_t len = (char*)next_page - (char*)addr_start;
 
         if (size < len)
         {
@@ -426,9 +426,9 @@ int lwp_user_access_ok(void *addr, size_t size)
         {
             return 0;
         }
-        addr_start += len;
+        addr_start = (void*)((char*)addr_start + len);
         size -= len;
-        next_page += ARCH_PAGE_SIZE;
+        next_page = (void*)((char*)next_page + ARCH_PAGE_SIZE);
     } while (addr_start < addr_end);
     return 1;
 }
@@ -446,11 +446,11 @@ size_t lwp_data_get(rt_mmu_info *mmu_info, void *dst, void *src, size_t size)
     }
     tmp_dst = dst;
     addr_start = src;
-    addr_end = src + size;
+    addr_end = (void*)((char*)src + size);
     next_page = (void*)(((size_t)addr_start + ARCH_PAGE_SIZE) & ~(ARCH_PAGE_SIZE - 1));
     do
     {
-        size_t len = next_page - addr_start;
+        size_t len = (char*)next_page - (char*)addr_start;
 
         if (size < len)
         {
@@ -461,12 +461,12 @@ size_t lwp_data_get(rt_mmu_info *mmu_info, void *dst, void *src, size_t size)
         {
             break;
         }
-        tmp_src = rt_hw_mmu_v2p(mmu_info, addr_start) - PV_OFFSET;
+        tmp_src = (void*)((char*)rt_hw_mmu_v2p(mmu_info, addr_start) - PV_OFFSET);
         rt_memcpy(tmp_dst, tmp_src, len);
-        tmp_dst += len;
-        addr_start += len;
+        tmp_dst = (void*)((char*)tmp_dst + len);
+        addr_start = (void*)((char*)addr_start + len);
         size -= len;
-        next_page += ARCH_PAGE_SIZE;
+        next_page = (void*)((char*)next_page + ARCH_PAGE_SIZE);
         copy_len += len;
     } while (addr_start < addr_end);
     return copy_len;
@@ -485,11 +485,11 @@ size_t lwp_data_put(rt_mmu_info *mmu_info, void *dst, void *src, size_t size)
     }
     tmp_src = src;
     addr_start = dst;
-    addr_end = dst + size;
+    addr_end = (void*)((char*)dst + size);
     next_page = (void*)(((size_t)addr_start + ARCH_PAGE_SIZE) & ~(ARCH_PAGE_SIZE - 1));
     do
     {
-        size_t len = next_page - addr_start;
+        size_t len = (char*)next_page - (char*)addr_start;
 
         if (size < len)
         {
@@ -500,12 +500,12 @@ size_t lwp_data_put(rt_mmu_info *mmu_info, void *dst, void *src, size_t size)
         {
             break;
         }
-        tmp_dst = rt_hw_mmu_v2p(mmu_info, addr_start) - PV_OFFSET;
+        tmp_dst = (void*)((char*)rt_hw_mmu_v2p(mmu_info, addr_start) - PV_OFFSET);
         rt_memcpy(tmp_dst, tmp_src, len);
-        tmp_src += len;
-        addr_start += len;
+        tmp_src = (void*)((char*)tmp_src + len);
+        addr_start = (void*)((char*)addr_start + len);
         size -= len;
-        next_page += ARCH_PAGE_SIZE;
+        next_page = (void*)((char*)next_page + ARCH_PAGE_SIZE);
         copy_len += len;
     } while (addr_start < addr_end);
     return copy_len;
@@ -516,7 +516,7 @@ void lwp_data_cache_flush(rt_mmu_info *mmu_info, void *vaddr, size_t size)
     void *paddr;
 
     paddr = rt_hw_mmu_v2p(mmu_info, vaddr);
-    paddr -= PV_OFFSET;
+    paddr = (void*)((char*)paddr - PV_OFFSET);
 
     rt_hw_cpu_dcache_ops(RT_HW_CACHE_FLUSH, paddr, size);
 }

+ 3 - 3
libcpu/arm/cortex-a/backtrace.c

@@ -361,11 +361,11 @@ error:
 #ifdef RT_BACKTRACE_FUNCTION_NAME
 static char *unwind_get_function_name(void *address)
 {
-    uint32_t flag_word = *(uint32_t *)(address - 4);
+    uint32_t flag_word = *(uint32_t *)((char*)address - 4);
 
     if ((flag_word & 0xff000000) == 0xff000000)
     {
-        return (char *)(address - 4 - (flag_word & 0x00ffffff));
+        return (char *)((char*)address - 4 - (flag_word & 0x00ffffff));
     }
     return RT_NULL;
 }
@@ -384,7 +384,7 @@ int unwind_frame(struct stackframe *frame, const struct unwind_idx **origin_idx,
     /* store the highest address on the stack to avoid crossing it*/
     low = frame->sp;
     rt_c_thread = rt_thread_self();
-    ctrl.sp_high = (unsigned long)(rt_c_thread->stack_addr + rt_c_thread->stack_size);
+    ctrl.sp_high = (unsigned long)((char*)rt_c_thread->stack_addr + rt_c_thread->stack_size);
 
     LOG_D("%s(pc = %08lx lr = %08lx sp = %08lx)", __func__,
             frame->pc, frame->lr, frame->sp);

+ 3 - 3
libcpu/arm/cortex-a/mmu.c

@@ -665,9 +665,9 @@ err:
         for (i = 0; i < npages; i++)
         {
             pa = rt_hw_mmu_v2p(mmu_info, va);
-            pa -= mmu_info->pv_off;
+            pa = (void*)((char*)pa - mmu_info->pv_off);
             rt_pages_free(pa, 0);
-            va += ARCH_PAGE_SIZE;
+            va = (void*)((char*)va + ARCH_PAGE_SIZE);
         }
 
         __rt_hw_mmu_unmap(mmu_info, v_addr, npages);
@@ -707,7 +707,7 @@ void *_rt_hw_mmu_map_auto(rt_mmu_info *mmu_info, void *v_addr, size_t size, size
         if (ret == 0)
         {
             rt_hw_cpu_tlb_invalidate();
-            return (void*)vaddr + offset;
+            return (void*)((char*)vaddr + offset);
         }
     }
     return 0;

+ 2 - 2
libcpu/arm/cortex-a/page.c

@@ -62,7 +62,7 @@ static struct page * addr_to_page(void *addr)
     {
         return 0;
     }
-    off = addr - page_addr;
+    off = (size_t)((char*)addr - (char*)page_addr);
     off >>= ARCH_PAGE_SHIFT;
     if (off >= page_nr)
     {
@@ -77,7 +77,7 @@ static void* page_to_addr(struct page* p)
     {
         return 0;
     }
-    return page_addr + ((p - page_start) << ARCH_PAGE_SHIFT);
+    return (void*)((char*)page_addr + ((p - page_start) << ARCH_PAGE_SHIFT));
 }
 
 static inline struct page *buddy_get(struct page *p, uint32_t size_bits)

+ 1 - 1
src/signal.c

@@ -201,7 +201,7 @@ void *rt_signal_check(void* context)
 
             rt_hw_interrupt_enable(level);
             sig_context = rt_hw_stack_init((void *)_signal_entry, context,
-                    (void *)(context - 32), RT_NULL);
+                    (void*)((char*)context - 32), RT_NULL);
             return sig_context;
         }
     }