|
|
|
@ -167,7 +167,7 @@ static void setup_shm(void) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Write results. */
|
|
|
|
|
/* 配置共享内存。 */
|
|
|
|
|
|
|
|
|
|
static u32 write_results(void) {
|
|
|
|
|
|
|
|
|
@ -235,7 +235,9 @@ static u32 write_results(void) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Handle timeout signal. */
|
|
|
|
|
|
|
|
|
|
/* 处理超时信号。 */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void handle_timeout(int sig) {
|
|
|
|
|
|
|
|
|
@ -245,8 +247,9 @@ static void handle_timeout(int sig) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Execute target application. */
|
|
|
|
|
|
|
|
|
|
/* 执行目标应用程序。 */
|
|
|
|
|
/* 运行目标程序并等待其结束。 */
|
|
|
|
|
/* 处理超时和信号。 */
|
|
|
|
|
static void run_target(char** argv) {
|
|
|
|
|
|
|
|
|
|
static struct itimerval it;
|
|
|
|
@ -421,8 +424,9 @@ static void setup_signal_handlers(void) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Detect @@ in args. */
|
|
|
|
|
|
|
|
|
|
/* 检测@@在参数中。 */
|
|
|
|
|
/* 检测并替换@@参数。 */
|
|
|
|
|
/* 用于处理传递给目标程序的文件路径参数。 */
|
|
|
|
|
static void detect_file_args(char** argv) {
|
|
|
|
|
|
|
|
|
|
u32 i = 0;
|
|
|
|
@ -465,7 +469,7 @@ static void detect_file_args(char** argv) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Show banner. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void show_banner(void) {
|
|
|
|
|
|
|
|
|
@ -473,7 +477,7 @@ static void show_banner(void) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Display usage hints. */
|
|
|
|
|
/* 显示使用提示。 */
|
|
|
|
|
|
|
|
|
|
static void usage(u8* argv0) {
|
|
|
|
|
|
|
|
|
@ -508,8 +512,9 @@ static void usage(u8* argv0) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Find binary. */
|
|
|
|
|
|
|
|
|
|
/* 查找二进制文件。 */
|
|
|
|
|
/* 查找并验证二进制文件。 */
|
|
|
|
|
/* 如果二进制文件不存在或不可执行,则打印错误信息并退出。 */
|
|
|
|
|
static void find_binary(u8* fname) {
|
|
|
|
|
|
|
|
|
|
u8* env_path = 0;
|
|
|
|
@ -561,8 +566,10 @@ static void find_binary(u8* fname) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Fix up argv for QEMU. */
|
|
|
|
|
|
|
|
|
|
/*修正argv以用于QEMU*/
|
|
|
|
|
/* 为QEMU模式修正参数*/
|
|
|
|
|
/* 返回新的参数数组*/
|
|
|
|
|
static char** get_qemu_argv(u8* own_loc, char** argv, int argc) {
|
|
|
|
|
|
|
|
|
|
char** new_argv = ck_alloc(sizeof(char*) * (argc + 4));
|
|
|
|
@ -625,7 +632,8 @@ static char** get_qemu_argv(u8* own_loc, char** argv, int argc) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Main entry point */
|
|
|
|
|
|
|
|
|
|
/*解析命令行参数并执行目标程序 */
|
|
|
|
|
/*根据参数执行不同的操作 */
|
|
|
|
|
int main(int argc, char** argv) {
|
|
|
|
|
|
|
|
|
|
s32 opt;
|
|
|
|
|