tCm3nc / libqte

The runtime library for QTE
0 stars 0 forks source link

Figure out how to support large allocations #2

Open tCm3nc opened 2 years ago

tCm3nc commented 2 years ago

By large allocations I mean greater than 2^16 byte allocations. When performing pointer arithmetic, the mechanism to check if the access is valid is currently performed like so:

QEMU_pointer_arithmetic_helper(tagged_ptr, addend):

This can be improved though.

For a large allocation, split it into 2^16 blocks. For each 2^16 block, we allocate different tags.

The above helper changes to:

tCm3nc commented 2 years ago

The first trance of this is complete. I need further to add the interval tree code in order to be able to determine whether a particular pointer addition is within range or not. There will likely be clashes with cryptography code where an opaque value, would clash with a valid tagged pointer and its associated shadow memory. Not sure what to do in this scenario though.