From d2022faf53640d74171d9db0f45f03f437ee199c Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum <aghuloum@cs.indiana.edu> Date: Wed, 29 Oct 2008 13:54:06 -0400 Subject: [PATCH] fixed a few gcc warnings as reported in bug 288824. --- scheme/last-revision | 2 +- src/ikarus-collect.c | 4 ++-- src/ikarus-data.h | 16 +++++++------- src/ikarus-ffi.c | 11 +++++----- src/ikarus-numerics.c | 2 +- src/ikarus-runtime.c | 51 +++++++++++++++++++------------------------ 6 files changed, 40 insertions(+), 46 deletions(-) diff --git a/scheme/last-revision b/scheme/last-revision index 712cd79..b2dffb7 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1650 +1652 diff --git a/src/ikarus-collect.c b/src/ikarus-collect.c index 645b2df..33c29d8 100644 --- a/src/ikarus-collect.c +++ b/src/ikarus-collect.c @@ -1360,12 +1360,12 @@ relocate_new_code(ikptr x, gc_t* gc){ ikptr displaced_object = obj + obj_off; long int next_word = code + code_off + 4; ikptr relative_distance = displaced_object - (long int)next_word; - if(relative_distance != (int)relative_distance){ + if(((long int)relative_distance) != ((long)((int)relative_distance))){ fprintf(stderr, "relocation error with relative=0x%016lx\n", relative_distance); exit(-1); } - *((int*)(code+code_off)) = relative_distance; + *((int*)(code+code_off)) = (int)relative_distance; p += (3*wordsize); } else if(tag == 1){ diff --git a/src/ikarus-data.h b/src/ikarus-data.h index b625b2d..504dd31 100644 --- a/src/ikarus-data.h +++ b/src/ikarus-data.h @@ -190,14 +190,14 @@ void ikarus_usage_short(void); void* ik_malloc(int); void ik_free(void*, int); -ikptr ik_mmap(long int); -ikptr ik_mmap_typed(long int size, unsigned int type, ikpcb*); -ikptr ik_mmap_ptr(long int size, int gen, ikpcb*); -ikptr ik_mmap_data(long int size, int gen, ikpcb*); -ikptr ik_mmap_code(long int size, int gen, ikpcb*); -ikptr ik_mmap_mixed(long int size, ikpcb*); -void ik_munmap(ikptr, long int); -void ik_munmap_from_segment(ikptr, long int, ikpcb*); +ikptr ik_mmap(unsigned long int); +ikptr ik_mmap_typed(unsigned long int size, unsigned int type, ikpcb*); +ikptr ik_mmap_ptr(unsigned long int size, int gen, ikpcb*); +ikptr ik_mmap_data(unsigned long int size, int gen, ikpcb*); +ikptr ik_mmap_code(unsigned long int size, int gen, ikpcb*); +ikptr ik_mmap_mixed(unsigned long int size, ikpcb*); +void ik_munmap(ikptr, unsigned long int); +void ik_munmap_from_segment(ikptr, unsigned long int, ikpcb*); ikpcb* ik_make_pcb(); void ik_delete_pcb(ikpcb*); void ik_free_symbol_table(ikpcb* pcb); diff --git a/src/ikarus-ffi.c b/src/ikarus-ffi.c index 61afda1..097bd26 100644 --- a/src/ikarus-ffi.c +++ b/src/ikarus-ffi.c @@ -167,7 +167,7 @@ ikptr ikrt_ffi_prep_cif(ikptr rtptr, ikptr argstptr, ikpcb* pcb) { ffi_cif* cif = alloc(sizeof(ffi_cif), 1); ffi_abi abi = FFI_DEFAULT_ABI; - unsigned int nargs = unfix(ref(argstptr, off_vector_length)); + int nargs = unfix(ref(argstptr, off_vector_length)); ffi_type** argtypes = alloc(sizeof(ffi_type*), nargs+1); int i; for(i=0; i<nargs; i++){ @@ -188,7 +188,7 @@ ikrt_ffi_prep_cif(ikptr rtptr, ikptr argstptr, ikpcb* pcb) { } - +#ifdef DEBUG_FFI static void dump_stack(ikpcb* pcb, char* msg) { fprintf(stderr, "==================== %s\n", msg); @@ -201,6 +201,7 @@ dump_stack(ikpcb* pcb, char* msg) { p += wordsize; } } +#endif /* FIXME: handle stack overflow */ @@ -321,8 +322,8 @@ ikrt_ffi_call(ikptr data, ikptr argsvec, ikpcb* pcb) { ikptr typevec = ref(data, off_vector_data + 2 * wordsize); ikptr rtype = ref(data, off_vector_data + 3 * wordsize); ffi_cif* cif = (ffi_cif*) ref(cifptr, off_pointer_data); - void* fn = (void*) ref(funptr, off_pointer_data); - unsigned int n = unfix(ref(argsvec, off_vector_length)); + void(*fn)() = (void*) ref(funptr, off_pointer_data); + int n = unfix(ref(argsvec, off_vector_length)); void** avalues = alloc(sizeof(void*), n+1); int i; for(i=0; i<n; i++){ @@ -394,7 +395,7 @@ generic_callback(ffi_cif *cif, void *ret, void **args, void *user_data){ ikptr proc = ref(data, off_vector_data + 1 * wordsize); ikptr argtypes_conv = ref(data, off_vector_data + 2 * wordsize); ikptr rtype_conv = ref(data, off_vector_data + 3 * wordsize); - ikptr n = unfix(ref(argtypes_conv, off_vector_length)); + int n = unfix(ref(argtypes_conv, off_vector_length)); ikpcb* pcb = the_pcb; ikptr code_entry = ref(proc, off_closure_code); diff --git a/src/ikarus-numerics.c b/src/ikarus-numerics.c index 5f81df2..6312975 100644 --- a/src/ikarus-numerics.c +++ b/src/ikarus-numerics.c @@ -801,7 +801,7 @@ ikrt_bnbnminus(ikptr x, ikptr y, ikpcb* pcb){ pcb->root0 = &s1; pcb->root1 = &s2; ikptr res = ik_safe_alloc(pcb, align(disp_bignum_data + n1 * wordsize)); - bzero((void*)res+disp_bignum_data, n1*wordsize); + bzero((void*)(res+disp_bignum_data), n1*wordsize); pcb->root0 = 0; pcb->root1 = 0; long int burrow = diff --git a/src/ikarus-runtime.c b/src/ikarus-runtime.c index 4be15c6..e5b9bf2 100644 --- a/src/ikarus-runtime.c +++ b/src/ikarus-runtime.c @@ -50,19 +50,19 @@ extern char **environ; #define segment_shift (pageshift+pageshift-2) #define segment_index(x) (((unsigned long int)(x)) >> segment_shift) -ikptr ik_mmap(long int size); -void ik_munmap(ikptr mem, long int size); +ikptr ik_mmap(unsigned long int size); +void ik_munmap(ikptr mem, unsigned long int size); static void extend_table_maybe(ikptr p, unsigned long int size, ikpcb* pcb){ assert(size == align_to_next_page(size)); ikptr q = p + size; if(p < pcb->memory_base){ - long int new_lo = segment_index(p); - long int old_lo = segment_index(pcb->memory_base); - long int hi = segment_index(pcb->memory_end); - long int new_vec_size = (hi - new_lo) * pagesize; - long int old_vec_size = (hi - old_lo) * pagesize; + unsigned long int new_lo = segment_index(p); + unsigned long int old_lo = segment_index(pcb->memory_base); + unsigned long int hi = segment_index(pcb->memory_end); + unsigned long int new_vec_size = (hi - new_lo) * pagesize; + unsigned long int old_vec_size = (hi - old_lo) * pagesize; ikptr v = ik_mmap(new_vec_size); bzero((char*)(long)v, new_vec_size - old_vec_size); memcpy((char*)(long)(v+new_vec_size-old_vec_size), @@ -82,11 +82,11 @@ extend_table_maybe(ikptr p, unsigned long int size, ikpcb* pcb){ pcb->memory_base = (new_lo * segment_size); } else if (q > pcb->memory_end){ - long int lo = segment_index(pcb->memory_base); - long int old_hi = segment_index(pcb->memory_end); - long int new_hi = segment_index(q+segment_size-1); - long int new_vec_size = (new_hi - lo) * pagesize; - long int old_vec_size = (old_hi - lo) * pagesize; + unsigned long int lo = segment_index(pcb->memory_base); + unsigned long int old_hi = segment_index(pcb->memory_end); + unsigned long int new_hi = segment_index(q+segment_size-1); + unsigned long int new_vec_size = (new_hi - lo) * pagesize; + unsigned long int old_vec_size = (old_hi - lo) * pagesize; ikptr v = ik_mmap(new_vec_size); memcpy((char*)(long)v, (char*)(long)pcb->dirty_vector_base, @@ -120,7 +120,7 @@ set_segment_type(ikptr base, unsigned long int size, unsigned int type, ikpcb* p } void -ik_munmap_from_segment(ikptr base, long int size, ikpcb* pcb){ +ik_munmap_from_segment(ikptr base, unsigned long int size, ikpcb* pcb){ assert(base >= pcb->memory_base); assert((base+size) <= pcb->memory_end); assert(size == align_to_next_page(size)); @@ -158,7 +158,7 @@ ik_munmap_from_segment(ikptr base, long int size, ikpcb* pcb){ ikptr -ik_mmap_typed(long int size, unsigned int type, ikpcb* pcb){ +ik_mmap_typed(unsigned long int size, unsigned int type, ikpcb* pcb){ ikptr p; if(size == pagesize) { ikpage* s = pcb->cached_pages; @@ -181,34 +181,27 @@ ik_mmap_typed(long int size, unsigned int type, ikpcb* pcb){ } ikptr -ik_mmap_ptr(long int size, int gen, ikpcb* pcb){ +ik_mmap_ptr(unsigned long int size, int gen, ikpcb* pcb){ return ik_mmap_typed(size, pointers_mt | gen, pcb); } ikptr -ik_mmap_data(long int size, int gen, ikpcb* pcb){ +ik_mmap_data(unsigned long int size, int gen, ikpcb* pcb){ return ik_mmap_typed(size, data_mt | gen, pcb); } ikptr -ik_mmap_code(long int size, int gen, ikpcb* pcb){ +ik_mmap_code(unsigned long int size, int gen, ikpcb* pcb){ ikptr p = ik_mmap_typed(size, code_mt | gen, pcb); if(size > pagesize){ set_segment_type(p+pagesize, size-pagesize, data_mt|gen, pcb); } -#if 0 - junk int err = mprotect(p, size, PROT_READ | PROT_WRITE | PROT_EXEC); - if(err){ - fprintf(stderr, "cannot mprotect code: %s\n", strerror(errno)); - exit(-1); - } -#endif return p; } ikptr -ik_mmap_mixed(long int size, ikpcb* pcb){ +ik_mmap_mixed(unsigned long int size, ikpcb* pcb){ return ik_mmap_typed(size, mainheap_mt, pcb); } @@ -216,7 +209,7 @@ ik_mmap_mixed(long int size, ikpcb* pcb){ ikptr -ik_mmap(long int size){ +ik_mmap(unsigned long int size){ int pages = (size + pagesize - 1) / pagesize; total_allocated_pages += pages; int mapsize = pages * pagesize; @@ -246,9 +239,9 @@ ik_mmap(long int size){ } void -ik_munmap(ikptr mem, long int size){ - int pages = (size + pagesize - 1) / pagesize; - int mapsize = pages * pagesize; +ik_munmap(ikptr mem, unsigned long int size){ + unsigned long int pages = (size + pagesize - 1) / pagesize; + unsigned long int mapsize = pages * pagesize; assert(size == mapsize); assert(((-pagesize) & (int)mem) == (int)mem); total_allocated_pages -= pages;