diff --git a/src/ftrace_reader/cpu_reader.cc b/src/ftrace_reader/cpu_reader.cc
index ee56cb7..6eadb3e 100644
--- a/src/ftrace_reader/cpu_reader.cc
+++ b/src/ftrace_reader/cpu_reader.cc
@@ -457,6 +457,7 @@
     case kUint64ToUint64:
       ReadIntoVarInt<uint64_t>(field_start, field_id, message);
       return true;
+    case kInt8ToInt32:
     case kInt16ToInt32:
     case kInt32ToInt32:
     case kInt32ToInt64:
diff --git a/src/ftrace_reader/event_info_constants.cc b/src/ftrace_reader/event_info_constants.cc
index 7be91e2..9de52e8 100644
--- a/src/ftrace_reader/event_info_constants.cc
+++ b/src/ftrace_reader/event_info_constants.cc
@@ -55,6 +55,8 @@
     *out = kUint32ToUint64;
   } else if (ftrace == kFtraceUint64 && proto == kProtoUint64) {
     *out = kUint64ToUint64;
+  } else if (ftrace == kFtraceInt8 && proto == kProtoInt32) {
+    *out = kInt8ToInt32;
   } else if (ftrace == kFtraceInt16 && proto == kProtoInt32) {
     *out = kInt16ToInt32;
   } else if (ftrace == kFtraceInt32 && proto == kProtoInt32) {
diff --git a/src/ftrace_reader/event_info_constants.h b/src/ftrace_reader/event_info_constants.h
index 0a72f82..0d6ac64 100644
--- a/src/ftrace_reader/event_info_constants.h
+++ b/src/ftrace_reader/event_info_constants.h
@@ -49,6 +49,7 @@
   kFtraceUint16,
   kFtraceUint32,
   kFtraceUint64,
+  kFtraceInt8,
   kFtraceInt16,
   kFtraceInt32,
   kFtraceInt64,
@@ -71,6 +72,7 @@
   kUint32ToUint32,
   kUint32ToUint64,
   kUint64ToUint64,
+  kInt8ToInt32,
   kInt16ToInt32,
   kInt32ToInt32,
   kInt32ToInt64,
@@ -133,6 +135,8 @@
       return "uint32";
     case kFtraceUint64:
       return "uint64";
+    case kFtraceInt8:
+      return "int8";
     case kFtraceInt16:
       return "int16";
     case kFtraceInt32:
diff --git a/src/ftrace_reader/proto_translation_table.cc b/src/ftrace_reader/proto_translation_table.cc
index 56c9e2f..389f251 100644
--- a/src/ftrace_reader/proto_translation_table.cc
+++ b/src/ftrace_reader/proto_translation_table.cc
@@ -66,8 +66,7 @@
         event_name_for_debug, field->ftrace_name,
         ftrace_field.type_and_name.c_str(), ftrace_field.size,
         ftrace_field.is_signed);
-    // TODO(hjd): Uncomment DCHECK when proto generation is fixed.
-    // PERFETTO_DCHECK(false);
+    PERFETTO_DCHECK(false);
     return false;
   }
 
@@ -208,7 +207,10 @@
   }
 
   // Ints of various sizes:
-  if (size == 1 && !is_signed) {
+  if (size == 1 && is_signed) {
+    *out = kFtraceInt8;
+    return true;
+  } else if (size == 1 && !is_signed) {
     *out = kFtraceUint8;
     return true;
   } else if (size == 2 && is_signed) {
diff --git a/src/ftrace_reader/proto_translation_table_unittest.cc b/src/ftrace_reader/proto_translation_table_unittest.cc
index 982ad59..856f113 100644
--- a/src/ftrace_reader/proto_translation_table_unittest.cc
+++ b/src/ftrace_reader/proto_translation_table_unittest.cc
@@ -47,6 +47,7 @@
     FtraceProcfs ftrace_procfs(path);
     table_ = ProtoTranslationTable::Create(&ftrace_procfs, GetStaticEventInfo(),
                                            GetStaticCommonFieldsInfo());
+    PERFETTO_CHECK(table_);
   }
 
   std::unique_ptr<ProtoTranslationTable> table_;
@@ -80,12 +81,13 @@
   EXPECT_EQ(pid_field.proto_field_id, 2u);
 
   {
-    auto event = table_->GetEventByName("cpufreq_interactive_boost");
-    EXPECT_EQ(std::string(event->name), "cpufreq_interactive_boost");
-    EXPECT_EQ(std::string(event->group), "cpufreq_interactive");
-    EXPECT_EQ(event->fields.at(0).proto_field_type, kProtoString);
-    EXPECT_EQ(event->fields.at(0).ftrace_type, kFtraceStringPtr);
-    EXPECT_EQ(event->fields.at(0).strategy, kStringPtrToString);
+    auto event = table_->GetEventByName("print");
+    EXPECT_TRUE(event);
+    EXPECT_EQ(std::string(event->name), "print");
+    EXPECT_EQ(std::string(event->group), "ftrace");
+    EXPECT_EQ(event->fields.at(1).proto_field_type, kProtoString);
+    EXPECT_EQ(event->fields.at(1).ftrace_type, kFtraceCString);
+    EXPECT_EQ(event->fields.at(1).strategy, kCStringToString);
   }
 }
 
@@ -275,6 +277,9 @@
   ASSERT_TRUE(InferFtraceType("pid_t foo", 4, false, &type));
   ASSERT_EQ(type, kFtracePid32);
 
+  ASSERT_TRUE(InferFtraceType("char foo", 1, true, &type));
+  ASSERT_EQ(type, kFtraceInt8);
+
   EXPECT_FALSE(InferFtraceType("foo", 64, false, &type));
 }
 
