Many important software systems are written in the C programming language. Unfortunately, the C language does not provide
strong safety guarantees, and many common programming mistakes introduce type errors that are not caught by the compiler.
These errors only manifest themselves at run time through unexpected program behavior, and it is often hard to isolate and
identify their causes. This paper presents the Hobbes run-time type checker for compiled C programs. Our tool interprets compiled
binaries, tracks type information for all memory and register locations, and reports warnings when a variety of type errors
occur. Because the Hobbes type checker does not rely on source code, it is effective in many situations where similar tools
are not, such as when full source code is not available or when C source is linked with program fragments written in assembly
or other languages.
This work was performed, in part, while all 3 authors were employed at the Compaq Systems Research Center (now part of HP
Labs).