Software-artifact Infrastructure Repository 学习笔记 1 :C Object Directory Specification

本文档介绍了Software-artifact Infrastructure Repository中C对象目录的结构和内容,包括不同版本的组织方式、源码变体、Makefile的目标以及测试计划和结果的存储。对象目录包含了source、versions.alt、versions、testplans.alt、traces.alt、inputs、outputs.alt、docs、originals、scripts和info等子目录,每个子目录都有其特定的功能,如保存源码、测试计划、执行痕迹和文档等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有两种目录模式,一种是早先的 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 插桩的可执行文件

并且,编译一个文件的命令必须包含 $(COMPILE_PARAMETERS) flag, 例如: gcc -c $(COMPILE_PARAMETERS) grep.c 或 gcc -o grep.exe $(COMPILE_PARAMETERS) grep.c 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值