1. A computer-implemented method comprising: parsing debug information generated by a compiler for a software program; identifying, in the debug information, one or more desired data types and objects associated with the desired data types; creating, for each desired data type, an object list including references to associated objects; and adding resulting object lists to a set of object files generated by the compiler for the software program, the set of object files with the added object lists to be used by a linker when creating an executable file for the software program, wherein the added object lists are utilized at runtime to determine whether a reference to an object passed to a function satisfies a data type requirement.