return 1;
}*/
-
size_t i, j;
void *addr_block1, *addr_block2, *addr_frag1, *addr_frag2;
size_t frag_size;
int distance = 0;
int pointer_align;
+ char *pointed_address1, *pointed_address2;
+
/* Check busy blocks*/
while(i < mdp1->heapindex){
errors++;
}
+ //if(memcmp(addr_block1, addr_block2, (mdp1->heapinfo[i].busy_block.size)) != 0){
if(memcmp(addr_block1, addr_block2, (mdp1->heapinfo[i].busy_block.busy_size)) != 0){
fprintf(stderr,"\nDifferent data in large block %zu (size = %zu (in blocks), busy_size = %zu (in bytes))\n", i, mdp1->heapinfo[i].busy_block.size, mdp1->heapinfo[i].busy_block.busy_size);
/* Hamming distance on different blocks */
distance = 0;
+ //for(k=0;k<mdp1->heapinfo[i].busy_block.size;k++){
for(k=0;k<mdp1->heapinfo[i].busy_block.busy_size;k++){
if(memcmp(((char *)addr_block1) + k, ((char *)addr_block2) + k, 1) != 0){
fprintf(stderr, "Different byte (offset=%d) (%p - %p) in block %zu\n", k, (char *)addr_block1 + k, (char *)addr_block2 + k, i);
distance++;
pointer_align = (k / sizeof(void*)) * sizeof(void*);
- fprintf(stderr, "Pointed address : %p (in %s) - %p (in %s)\n", *((void **)((char *)addr_block1 + pointer_align)), get_addr_memory_map(*((void **)((char *)addr_block1 + pointer_align)), s_heap, r_heap), *((void **)((char *)addr_block2 + pointer_align)),get_addr_memory_map(*((void **)((char *)addr_block2 + pointer_align)), s_heap, r_heap) );
+ pointed_address1 = xbt_strdup(get_addr_memory_map(*((void **)((char *)addr_block1 + pointer_align)), s_heap, r_heap));
+ pointed_address2 = xbt_strdup(get_addr_memory_map(*((void **)((char *)addr_block2 + pointer_align)), s_heap, r_heap));
+ fprintf(stderr, "Pointed address : %p (in %s) - %p (in %s)\n", *((void **)((char *)addr_block1 + pointer_align)), pointed_address1, *((void **)((char *)addr_block2 + pointer_align)), pointed_address2);
+ if((strcmp(pointed_address1, pointed_address2) == 0) && (strcmp(pointed_address1, "std_heap") == 0)){
+ /* FIXME : compare value pointed thanks to DWARF */
+ }
}
}
errors++;
}
-
- i = i + mdp1->heapinfo[i].busy_block.size;
+ i = i + mdp1->heapinfo[i].busy_block.size + 1;
}else{
addr_frag1 = (char *)addr_block1 + (j * frag_size);
addr_frag2 = (char *)addr_block2 + (j * frag_size);
-
+ //if(memcmp(addr_frag1, addr_frag2, frag_size) != 0){
if(memcmp(addr_frag1, addr_frag2, mdp1->heapinfo[i].busy_frag.frag_size[j]) != 0){
fprintf(stderr,"\nDifferent data in fragment %zu (size = %zu, size used = %hu) in block %zu \n", j, frag_size, mdp1->heapinfo[i].busy_frag.frag_size[j], i);
/* Hamming distance on different blocks */
distance = 0;
+ //for(k=0;k<frag_size;k++){
for(k=0;k<mdp1->heapinfo[i].busy_frag.frag_size[j];k++){
if(memcmp(((char *)addr_frag1) + k, ((char *)addr_frag2) + k, 1) != 0){
fprintf(stderr, "Different byte (offset=%d) (%p - %p) in fragment %zu in block %zu\n", k, (char *)addr_frag1 + k, (char *)addr_frag2 + k, j, i);
distance++;
pointer_align = (k / sizeof(void*)) * sizeof(void*);
- fprintf(stderr, "Pointed address : %p (in %s) - %p (in %s)\n", *((void **)((char *)addr_frag1 + pointer_align)), get_addr_memory_map(*((void **)((char *)addr_frag1 + pointer_align)), s_heap, r_heap), *((void **)((char *)addr_frag2 + pointer_align)), get_addr_memory_map(*((void **)((char *)addr_frag2 + pointer_align)), s_heap, r_heap));
+ pointed_address1 = xbt_strdup(get_addr_memory_map(*((void **)((char *)addr_frag1 + pointer_align)), s_heap, r_heap));
+ pointed_address2 = xbt_strdup(get_addr_memory_map(*((void **)((char *)addr_frag2 + pointer_align)), s_heap, r_heap));
+ fprintf(stderr, "Pointed address : %p (in %s) - %p (in %s)\n", *((void **)((char *)addr_frag1 + pointer_align)), pointed_address1, *((void **)((char *)addr_frag2 + pointer_align)), pointed_address2);
+ if((strcmp(pointed_address1, pointed_address2) == 0) && (strcmp(pointed_address1, "std_heap") == 0)){
+ /* FIXME : compare value pointed thanks to DWARF */
+ }
}
}
if(fp == NULL)
perror("fopen failed");
- if(addr == NULL)
+ if(addr == NULL){
+ fclose(fp);
return "nil";
+ }
xbt_dynar_t lfields = NULL;
xbt_dynar_t start_end = NULL;