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.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;
1855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    uint32_t addr;
1955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    int flags;
2055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project
2155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    if (trace->ReadAddr(&time, &addr, &flags))
2255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project      break;
23d4d5b4f63a5760b2212166f539f906edda0bc4deJack Veenstra    const char *op = "ld";
2455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    if (flags == 1)
2555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project        op = "st";
2655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project    printf("%lld 0x%08x %s\n", time, addr, op);
2755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project  }
2855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project  return 0;
2955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project}
30