diff --git a/src/cc/frontends/clang/tp_frontend_action.cc b/src/cc/frontends/clang/tp_frontend_action.cc
index 3b46a62..c1b654a 100644
--- a/src/cc/frontends/clang/tp_frontend_action.cc
+++ b/src/cc/frontends/clang/tp_frontend_action.cc
@@ -62,7 +62,15 @@
   if (field_pos == string::npos)
     return field_kind_t::invalid;
 
-  auto semi_pos = line.find(';', field_pos);
+  auto field_semi_pos = line.find(';', field_pos);
+  if (field_semi_pos == string::npos)
+    return field_kind_t::invalid;
+
+  auto offset_pos = line.find("offset:", field_semi_pos);
+  if (offset_pos == string::npos)
+    return field_kind_t::invalid;
+
+  auto semi_pos = line.find(';', offset_pos);
   if (semi_pos == string::npos)
     return field_kind_t::invalid;
 
@@ -70,8 +78,16 @@
   if (size_pos == string::npos)
     return field_kind_t::invalid;
 
+  semi_pos = line.find(';', size_pos);
+  if (semi_pos == string::npos)
+    return field_kind_t::invalid;
+
+  auto size_str = line.substr(size_pos + 5,
+                              semi_pos - size_pos - 5);
+  int size = std::stoi(size_str, nullptr);
+
   auto field = line.substr(field_pos + 6/*"field:"*/,
-                           semi_pos - field_pos - 6);
+                           field_semi_pos - field_pos - 6);
   auto pos = field.find_last_of("\t ");
   if (pos == string::npos)
     return field_kind_t::invalid;
@@ -83,6 +99,32 @@
   if (field_name.find("common_") == 0)
     return field_kind_t::common;
 
+  // adjust the field_type based on the size of field
+  // otherwise, incorrect value may be retrieved for big endian
+  // and the field may have incorrect structure offset.
+  if (size == 2) {
+    if (field_type == "char" || field_type == "int8_t")
+      field_type = "s16";
+    if (field_type == "unsigned char" || field_type == "uint8_t")
+      field_type = "u16";
+  } else if (size == 4) {
+    if (field_type == "char" || field_type == "short" ||
+        field_type == "int8_t" || field_type == "int16_t")
+      field_type = "s32";
+    if (field_type == "unsigned char" || field_type == "unsiggned short" ||
+        field_type == "uint8_t" || field_type == "uint16_t")
+      field_type = "u32";
+  } else if (size == 8) {
+    if (field_type == "char" || field_type == "short" || field_type == "int" ||
+        field_type == "int8_t" || field_type == "int16_t" ||
+        field_type == "int32_t")
+      field_type = "s64";
+    if (field_type == "unsigned char" || field_type == "unsiggned short" ||
+        field_type == "unsigned int" || field_type == "uint8_t" ||
+        field_type == "uint16_t" || field_type == "uint32_t")
+      field_type = "u64";
+  }
+
   return field_kind_t::regular;
 }
 
