Skip to content
  • Sean Anderson's avatar
    malloc: Annotate allocator for valgrind · bdaeea1b
    Sean Anderson authored and Tom Rini's avatar Tom Rini committed
    This annotates malloc and friends so that valgrind can track the heap. To
    do this, we need to follow a few rules:
    
    * Call VALGRIND_MALLOCLIKE_BLOCK whenever we malloc something
    * Call VALGRIND_FREELIKE_BLOCK whenever we free something (generally after
      we have done our bookkeeping)
    * Call VALGRIND_RESIZEINPLACE_BLOCK whenever we change the size of an
      allocation. We don't record the original request size of a block, and
      neither does valgrind. For this reason, we pretend that the old size of
      the allocation was for 0 bytes. This marks the whole allocaton as
      undefined, so in order to mark all bits correctly, we must make the whole
      new allocation defined with VALGRIND_MAKE_MEM_DEFINED. This may cause us
      to miss some invalid reads, but there is no way to detect these without
      recording the original size of the allocation.
    
    In addition to the above, dlmalloc itself tends to make a lot of accesses
    which we know are safe, but which would be unsafe outside of dl...
    bdaeea1b