crabgrind 0.2.5

Rust bindings to "Valgrind Client Request" interface
Documentation
Retrieves validity (V) bits for a memory range.

Copies the V-bit metadata for the range `[addr, addr + len)` into `dest`. This
allows direct inspection of Memcheck's shadow memory state.

# Arguments

- `addr` - Pointer to the start of the memory range to inspect.
- `dest` - Buffer to receive the V-bit data. The length determines the number of
  bytes inspected.

# Behavior

Each byte of memory in the target range corresponds to 1 bit of validity data in
`dest`. This is a low-level introspection tool; arbitrary modification of shadow
state via [`set_vbits`](set_vbits) or [`mark_memory`](mark_memory) can lead to
false negatives or positives in Memcheck.

# Errors

- [`VBitsError::NoValgrind`]VBitsError::NoValgrind The client request is not
  running on Valgrind. The function has no effect and returns this error.
- [`VBitsError::LegacyAlignment`]VBitsError::LegacyAlignment Legacy alignment
  constraint triggered. Historically, `addr` and `vbits` were required to be
  4-byte aligned, and `len` was required to be a multiple of 4. Valgrind 3.8.0
  and later relaxed this restriction, treating this case as success.
- [`VBitsError::Unaddressable`]VBitsError::Unaddressable A memory access
  failure occurred during the operation. This indicates that the source address
  range or the destination buffer (or parts thereof) were not addressable.
- [`VBitsError::Unknown`]VBitsError::Unknown An unknown error code was
  returned from Valgrind. Contains the raw error code returned by the client
  request.

## Note

Requires Valgrind **3.0** or higher.