def bin_at(self, i): # addressing -- note that bin_at(0) does not exist # (mbinptr) (((char *) &((m)->bins[((i) - 1) * 2])) # - offsetof (struct malloc_chunk, fd)) ptr = self.field('bins')[(i-1)*2] #print '001', ptr ptr = ptr.address #print '002', ptr ptr = ptr.cast(type_char_ptr) #print '003', ptr ptr -= offsetof('struct malloc_chunk', 'fd') #print '004', ptr ptr = ptr.cast(MBinPtr.gdb_type()) #print '005', ptr return MBinPtr(ptr)
def bin_at(self, i): # addressing -- note that bin_at(0) does not exist # (mbinptr) (((char *) &((m)->bins[((i) - 1) * 2])) # - offsetof (struct malloc_chunk, fd)) ptr = self.field('bins')[(i - 1) * 2] #print '001', ptr ptr = ptr.address #print '002', ptr ptr = ptr.cast(type_char_ptr) #print '003', ptr ptr -= offsetof('struct malloc_chunk', 'fd') #print '004', ptr ptr = ptr.cast(MBinPtr.gdb_type()) #print '005', ptr return MBinPtr(ptr)