有两种目录模式,一种是早先的 siemens 程序和 space,有一个单一的基准版本 v0,其他不同的版本都是从 v0 派生出的;另一种的新的组织方式,vK+1是由vK派生出的。
一般的,任一目录或子目录如果它的功能不是很显而易见,或者不合命名约定,会包含一个 CONTENTS 文件来描述。
一个 object 一般会包含如下子目录:
1. source
空目录,在实验过程中,我们把使用的版本放这里,结束后删掉。
2. versions.alt
包含不同版本变体的源码,当我们必须要修改源码来容纳一些工具时,我们就需要变体。
基本的变体在 versions.orig 子目录下,里面包含 v0, v1, ... , vK 子目录。v0 是最早的版本,其他 vJ 包含按顺序排列的下个版本。
每个 vK 包含 .c 文件和头文件,附加的 Makefile,还有一些非系统库的子目录。(历史上非库代码都会被合并到一个 .c 文件中,用于促进特殊的程序分析工具集,但是这在将来的 object 可能不会再出现了)
Makefile包含3个目标:
build:生成 <program>.exe 可执行文件
build-st:生成 <program>.st.int.exe 是一个 statement 插桩的可执行文件
build-bt:生成 <program>.bt.int.exe 是一个 branch 插桩的可执行文件
并且,编译一