You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi,
what do you think would be the main challenge for porting Softbound/CETS to a more current version of LLVM (8.0 or higher)? Is it feasible? Do you know someone who tried this already?
Thanks in advance :)
The text was updated successfully, but these errors were encountered:
I think getting a working prototype for LLVM-9 is easy. The main challenge will be reducing overheads to less than 2X for both spatial and temporal memory safety.
Here are the main challenges:
Inlining all the checks for performance. I was relying on LTO and LLVM-LD to inline all the checks. It needs to be rethought for LLVM-9.
Metadata propagation for arguments and returns. I used a shadow stack to pass arguments and returns. It adds performance overheads with small functions. It also can introduce issues when compilers optimize function arguments. Here is an example in the paper: https://www.cs.rutgers.edu/~santosh.nagarakatte/papers/plas2017.pdf
Handling first class vectors and structures.
Handling global initializers and external libraries. Ideally you would recompile everything with SoftBoundCETS pass, then handling libraries is easy. Otherwise, you may want to write wrappers.
In contrast to sanitizers, you need to maintain metadata with each pointers and hence the compiler instrumentation is a bit more involved.
Use linear addressing for accessing metadata similar to other sanitizers.
Hi,
what do you think would be the main challenge for porting Softbound/CETS to a more current version of LLVM (8.0 or higher)? Is it feasible? Do you know someone who tried this already?
Thanks in advance :)
The text was updated successfully, but these errors were encountered: