155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project#include <stdio.h>
255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project#include <stdlib.h>
355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project#include <inttypes.h>
455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project#include "trace_reader_base.h"
555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project
655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectint main(int argc, char **argv) {
755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    if (argc != 2) {
855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project        fprintf(stderr, "Usage: %s trace_file\n", argv[0]);
955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project        exit(1);
1055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    }
1155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project
1255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    char *trace_filename = argv[1];
1355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    TraceReaderBase *trace = new TraceReaderBase;
1455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    trace->Open(trace_filename);
1555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project
1655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    while (1) {
1755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project        uint64_t time, recnum, bb_num, bb_start_time;
1855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project        uint32_t pc, target_pc;
1955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project        int num_insns;
2055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project
2155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project        if (trace->ReadExc(&time, &pc, &recnum, &target_pc, &bb_num,
2255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project                           &bb_start_time, &num_insns))
2355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project            break;
2455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project        printf("time: %lld rec: %llu pc: %08x target: %08x bb: %llu bb_start: %llu insns: %d\n",
2555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project               time, recnum, pc, target_pc, bb_num, bb_start_time, num_insns);
2655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    }
2755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    return 0;
2855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project}
29