Here, ``tool building'' is meant to encompass tools that are used to build other tools, for example, a tool that builds tracing tools is a tool-building tool, whereas a configurable cache simulator is not a tool-building tool. The usual distinction is that a tool-building tool can be extended [NG87, NG88] using a general-purpose programming language (e.g. C, C++, ...), whereas a configurable tool is programmed with a less-powerful language e.g. a list of cache size, line size, associativity, etc.