c++ - C : Implement sizeof_32() and sizeof_64() for 32 - bit and 64 - bit compilations -
i building custom debugger compiled 64 - bit (cc -q64 ...) can attach both 32 - bit , 64 - bit executables , peep memory segments. facing following scenario:
a.h:
struct dll{     void *nxt;     void *prev; };  struct obj{     struct dll link;     int unique_id;    //unique id find structure in stack or data area     ...    //some more members }; a.c:
#include<stdio.h> #include"a.h"  struct obj ob1;  main(){     struct obj ob 2;     ob1.id = 0x189acf;     ob2.id = 0x98bdac;     while(1); } debug.c:
#include"a.h"  main(){     //attaching toprocess a.c     //peeping stack area find 0x98bdac found @ address1     //peeping data area find 0x189acf found @ address2     //using address1 - sizeof(struct dll) trying reach begining of obj1     //using address2 - sizeof(struct dll) trying reach begining of obj2 } the problem encountering is:     when a.c compiled in 32 - bit mode size of struct dll 4+4= 8 bytes in debuger (always 64 - bit) finds size of struct dll 8+8 = 16 bytes in debugger doing adress1 - sizeof(struct dll)  takes me off course 8 bytes begining of ob1 & similar ob2.     have lot of such structures declared in a.h have several members of data pointers , sub-structures makes infeasible calculate structure sizes individually finding out sizes of each member , summing find total struct size.
i looking implementation of method sizeof_32() , sizeof_64() calculate size of structures per 32 - bit , 64 - bit.
thanks...
 
 
  
Comments
Post a Comment