Pass: Insert Pool Checks

lib/InsertPoolChecks. This library contains

  • the transform passes for inserting run-time checks and for inserting code to register memory objects within individual pools.
  • the CompleteChecks pass which implements the Check Completion Phase.

Alignment Checks:

“ This pass instruments the code with alignment checks. This is required when load/store checks on type-safe memory objects are optimized away; pointers to type-safe memory objects that are loaded from type-unsafe memory objects may not point to a valid memory object or may not be alignment properly within a valid memory object.”

CFI Checks:

“This pass instruments indirect function calls to ensure that control-flow integrity is preserved at run-time.”

Clear Check Attributes:

“This file implements a pass to remove special attributes from the run-time checking functions.”

Complete Checks:

“This pass instruments loads and stores with run-time checks to ensure memory safety.”

GEP Checks:

“This pass instruments GEPs1 with run-time checks to ensure safe array and structure indexing.”

Invalid Free Checks:

“This pass instruments calls to deallocators to ensure memory safety.”

Register Bounds Passes:

“Various passes to register the bound information of variables into the pools”

Register Runtime Initializer:

“Pass to register runtime initialization calls into user-space programs.”

Register Stack Object Pass:

“This pass instruments code to register stack objects with the appropriate pool.”

Terminiate Pass:

“Pass to modify SAFECode’s initialization in the program to terminate on the first memory safety error.”


  1. GEP: GetElementPtr instruction. ↩
Created Jul 25, 2019 // Last Updated Aug 31, 2020

If you could revise
the fundmental principles of
computer system design
to improve security...

... what would you change?