static const char *kEventNames[] =  {
  "NOOP",               // Should not appear.
  "READ",               // {tid, pc, addr, size}
  "WRITE",              // {tid, pc, addr, size}
  "READER_LOCK",        // {tid, pc, lock, 0}
  "WRITER_LOCK",        // {tid, pc, lock, 0}
  "UNLOCK",             // {tid, pc, lock, 0}
  "UNLOCK_OR_INIT",     // {tid, pc, lock, 0}
  "LOCK_CREATE",        // {tid, pc, lock, 0}
  "LOCK_DESTROY",       // {tid, pc, lock, 0}
  "THR_CREATE_BEFORE",  // Parent thread's event. {tid, pc, 0, 0}
  "THR_CREATE_AFTER",   // Parent thread's event. {tid, 0, 0, child_tid}
  "THR_START",          // Child thread's event {tid, CallStack, 0, parent_tid}
  "THR_FIRST_INSN",     // Used only by valgrind.
  "THR_END",            // {tid, 0, 0, 0}
  "THR_JOIN_AFTER",     // {tid, pc, joined_tid}
  "THR_STACK_TOP",      // {tid, pc, stack_top, stack_size_if_known}
  "RTN_EXIT",           // {tid, 0, 0, 0}
  "RTN_CALL",           // {tid, pc, 0, 0}
  "SBLOCK_ENTER",       // {tid, pc, 0, 0}
  "SIGNAL",             // {tid, pc, obj, 0}
  "WAIT",               // {tid, pc, obj, 0}
  "CYCLIC_BARRIER_INIT",         // {tid, pc, obj, n}
  "CYCLIC_BARRIER_WAIT_BEFORE",  // {tid, pc, obj, 0}
  "CYCLIC_BARRIER_WAIT_AFTER",   // {tid, pc, obj, 0}
  "PCQ_CREATE",         // {tid, pc, pcq_addr, 0}
  "PCQ_DESTROY",        // {tid, pc, pcq_addr, 0}
  "PCQ_PUT",            // {tid, pc, pcq_addr, 0}
  "PCQ_GET",            // {tid, pc, pcq_addr, 0}
  "STACK_MEM_DIE",      // deprecated.
  "MALLOC",             // {tid, pc, addr, size}
  "FREE",               // {tid, pc, addr, 0}
  "MMAP",               // {tid, pc, addr, size}
  "MUNMAP",             // {tid, pc, addr, size}
  "PUBLISH_RANGE",      // may be deprecated later.
  "UNPUBLISH_RANGE",    // deprecated. TODO(kcc): get rid of this.
  "HB_LOCK",            // {tid, pc, addr, 0}
  "NON_HB_LOCK",        // {tid, pc, addr, 0}
  "IGNORE_READS_BEG",   // {tid, pc, 0, 0}
  "IGNORE_READS_END",   // {tid, pc, 0, 0}
  "IGNORE_WRITES_BEG",  // {tid, pc, 0, 0}
  "IGNORE_WRITES_END",  // {tid, pc, 0, 0}
  "SET_THREAD_NAME",    // {tid, pc, name_str, 0}
  "SET_LOCK_NAME",      // {tid, pc, lock, lock_name_str}
  "TRACE_MEM",          // {tid, pc, addr, 0}
  "EXPECT_RACE",        // {tid, descr_str, ptr, size}
  "BENIGN_RACE",        // {tid, descr_str, ptr, size}
  "EXPECT_RACE_BEGIN",  // {tid, pc, 0, 0}
  "EXPECT_RACE_END",    // {tid, pc, 0, 0}
  "VERBOSITY",          // Used for debugging.
  "STACK_TRACE",        // {tid, pc, 0, 0}, for debugging.
  "FLUSH_STATE",        // {tid, pc, 0, 0}
  "PC_DESCRIPTION",     // {0, pc, descr_str, 0}, for ts_offline.
  "PRINT_MESSAGE",      // {tid, pc, message_str, 0}, for ts_offline.
  "FLUSH_EXPECTED_RACES",  // {0, 0, 0, 0}
  "LAST_EVENT"          // Should not appear.
};