fuzzed binary annotator (#7188)

This commit is contained in:
Derek Bailey
2022-03-25 22:58:15 -07:00
committed by GitHub
parent e2be0c0b06
commit ae4ce72651
20 changed files with 2241 additions and 2094 deletions

View File

@@ -1,5 +1,8 @@
#include "annotated_binary_text_gen.h" #include "annotated_binary_text_gen.h"
#include <sstream>
#include <string>
#include "flatbuffers/util.h" #include "flatbuffers/util.h"
namespace flatbuffers { namespace flatbuffers {
@@ -37,6 +40,16 @@ static bool IsOffset(const BinaryRegionType type) {
return type == BinaryRegionType::UOffset || type == BinaryRegionType::SOffset; return type == BinaryRegionType::UOffset || type == BinaryRegionType::SOffset;
} }
template<typename T> std::string ToString(T value) {
if (std::is_floating_point<T>::value) {
std::stringstream ss;
ss << value;
return ss.str();
} else {
return std::to_string(value);
}
}
template<typename T> template<typename T>
std::string ToValueString(const BinaryRegion &region, const uint8_t *binary) { std::string ToValueString(const BinaryRegion &region, const uint8_t *binary) {
std::string s; std::string s;
@@ -47,7 +60,7 @@ std::string ToValueString(const BinaryRegion &region, const uint8_t *binary) {
s += ToHex(binary[start_index - i]); s += ToHex(binary[start_index - i]);
} }
s += " ("; s += " (";
s += std::to_string(val); s += ToString(val);
s += ")"; s += ")";
return s; return s;
} }

View File

@@ -102,7 +102,6 @@ std::map<uint64_t, BinarySection> BinaryAnnotator::Annotate() {
// Make sure we start with a clean slate. // Make sure we start with a clean slate.
vtables_.clear(); vtables_.clear();
strings_.clear();
sections_.clear(); sections_.clear();
// First parse the header region which always start at offset 0. // First parse the header region which always start at offset 0.
@@ -179,6 +178,8 @@ void BinaryAnnotator::BuildVTable(const uint64_t vtable_offset,
auto it = vtables_.find(vtable_offset); auto it = vtables_.find(vtable_offset);
if (it != vtables_.end()) { return; } if (it != vtables_.end()) { return; }
if (ContainsSection(vtable_offset)) { return; }
const auto vtable_length = ReadScalar<uint16_t>(vtable_offset); const auto vtable_length = ReadScalar<uint16_t>(vtable_offset);
if (!vtable_length.has_value()) { if (!vtable_length.has_value()) {
const uint64_t remaining = RemainingBytes(vtable_offset); const uint64_t remaining = RemainingBytes(vtable_offset);
@@ -400,6 +401,8 @@ void BinaryAnnotator::BuildVTable(const uint64_t vtable_offset,
void BinaryAnnotator::BuildTable(const uint64_t table_offset, void BinaryAnnotator::BuildTable(const uint64_t table_offset,
const BinarySectionType type, const BinarySectionType type,
const reflection::Object *const table) { const reflection::Object *const table) {
if (ContainsSection(table_offset)) { return; }
const auto vtable_soffset = ReadScalar<int32_t>(table_offset); const auto vtable_soffset = ReadScalar<int32_t>(table_offset);
if (!vtable_soffset.has_value()) { if (!vtable_soffset.has_value()) {
@@ -699,7 +702,6 @@ uint64_t BinaryAnnotator::BuildStruct(const uint64_t struct_offset,
std::vector<BinaryRegion> &regions, std::vector<BinaryRegion> &regions,
const reflection::Object *const object) { const reflection::Object *const object) {
if (!object->is_struct()) { return struct_offset; } if (!object->is_struct()) { return struct_offset; }
uint64_t offset = struct_offset; uint64_t offset = struct_offset;
// Loop over all the fields in increasing order // Loop over all the fields in increasing order
@@ -730,7 +732,6 @@ uint64_t BinaryAnnotator::BuildStruct(const uint64_t struct_offset,
regions.push_back( regions.push_back(
MakeBinaryRegion(offset, type_size, region_type, 0, 0, name)); MakeBinaryRegion(offset, type_size, region_type, 0, 0, name));
offset += type_size; offset += type_size;
} else if (field->type()->base_type() == reflection::BaseType::Obj) { } else if (field->type()->base_type() == reflection::BaseType::Obj) {
// Structs are stored inline, even when nested. // Structs are stored inline, even when nested.
@@ -789,7 +790,7 @@ void BinaryAnnotator::BuildString(const uint64_t string_offset,
const reflection::Field *const field) { const reflection::Field *const field) {
// Check if we have already generated this string section, and this is a // Check if we have already generated this string section, and this is a
// shared string instance. // shared string instance.
if (strings_.find(string_offset) != strings_.end()) { return; } if (ContainsSection(string_offset)) { return; }
std::vector<BinaryRegion> regions; std::vector<BinaryRegion> regions;
const auto string_length = ReadScalar<uint32_t>(string_offset); const auto string_length = ReadScalar<uint32_t>(string_offset);
@@ -831,9 +832,6 @@ void BinaryAnnotator::BuildString(const uint64_t string_offset,
MakeBinarySection(std::string(table->name()->c_str()) + "." + MakeBinarySection(std::string(table->name()->c_str()) + "." +
field->name()->c_str(), field->name()->c_str(),
BinarySectionType::String, std::move(regions))); BinarySectionType::String, std::move(regions)));
// Insert into the strings set to find possible instances of shared strings.
strings_.insert(string_offset);
} }
void BinaryAnnotator::BuildVector(const uint64_t vector_offset, void BinaryAnnotator::BuildVector(const uint64_t vector_offset,
@@ -841,7 +839,7 @@ void BinaryAnnotator::BuildVector(const uint64_t vector_offset,
const reflection::Field *const field, const reflection::Field *const field,
const uint64_t parent_table_offset, const uint64_t parent_table_offset,
const VTable &vtable) { const VTable &vtable) {
std::vector<BinaryRegion> regions; if (ContainsSection(vector_offset)) { return; }
const auto vector_length = ReadScalar<uint32_t>(vector_offset); const auto vector_length = ReadScalar<uint32_t>(vector_offset);
if (!vector_length.has_value()) { if (!vector_length.has_value()) {
@@ -859,6 +857,28 @@ void BinaryAnnotator::BuildVector(const uint64_t vector_offset,
return; return;
} }
// Validate there are enough bytes left in the binary to process all the
// items.
const uint64_t last_item_offset =
vector_offset + sizeof(uint32_t) +
vector_length.value() * GetElementSize(field);
if (!IsValidOffset(last_item_offset - 1)) {
AddSection(
vector_offset,
MakeSingleRegionBinarySection(
std::string(table->name()->c_str()) + "." + field->name()->c_str(),
BinarySectionType::Vector,
MakeBinaryRegion(vector_offset, sizeof(uint32_t),
BinaryRegionType::Uint32, 0, 0,
"ERROR: length of vector (# items). Invalid "
"length, points outside the binary.")));
return;
}
std::vector<BinaryRegion> regions;
regions.push_back(MakeBinaryRegion( regions.push_back(MakeBinaryRegion(
vector_offset, sizeof(uint32_t), BinaryRegionType::Uint32, 0, 0, vector_offset, sizeof(uint32_t), BinaryRegionType::Uint32, 0, 0,
std::string("length of vector (# items)"))); std::string("length of vector (# items)")));
@@ -874,7 +894,9 @@ void BinaryAnnotator::BuildVector(const uint64_t vector_offset,
// Vector of structs // Vector of structs
for (size_t i = 0; i < vector_length.value(); ++i) { for (size_t i = 0; i < vector_length.value(); ++i) {
// Structs are inline to the vector. // Structs are inline to the vector.
offset = BuildStruct(offset, regions, object); const uint64_t next_offset = BuildStruct(offset, regions, object);
if (next_offset == offset) { break; }
offset = next_offset;
} }
} else { } else {
// Vector of objects // Vector of objects
@@ -1115,6 +1137,8 @@ std::string BinaryAnnotator::BuildUnion(const uint64_t union_offset,
const reflection::EnumVal *enum_val = next_enum->values()->Get(realized_type); const reflection::EnumVal *enum_val = next_enum->values()->Get(realized_type);
if (ContainsSection(union_offset)) { return enum_val->name()->c_str(); }
const reflection::Type *union_type = enum_val->union_type(); const reflection::Type *union_type = enum_val->union_type();
if (union_type->base_type() == reflection::BaseType::Obj) { if (union_type->base_type() == reflection::BaseType::Obj) {
@@ -1155,6 +1179,10 @@ void BinaryAnnotator::FixMissingRegions() {
BinaryRegion &region = section.regions[i]; BinaryRegion &region = section.regions[i];
const uint64_t next_offset = region.offset; const uint64_t next_offset = region.offset;
if (!IsValidOffset(next_offset)) {
// TODO(dbaileychess): figure out how we get into this situation.
continue;
}
if (offset < next_offset) { if (offset < next_offset) {
const uint64_t padding_bytes = next_offset - offset; const uint64_t padding_bytes = next_offset - offset;

View File

@@ -277,6 +277,24 @@ class BinaryAnnotator {
return value < enum_def->values()->size(); return value < enum_def->values()->size();
} }
uint64_t GetElementSize(const reflection::Field *const field) {
if (IsScalar(field->type()->element())) {
return GetTypeSize(field->type()->element());
}
switch (field->type()->element()) {
case reflection::BaseType::Obj: {
auto obj = schema_->objects()->Get(field->type()->index());
return obj->is_struct() ? obj->bytesize() : sizeof(uint32_t);
}
default: return sizeof(uint32_t);
}
}
bool ContainsSection(const uint64_t offset) {
return sections_.find(offset) != sections_.end();
}
// The schema for the binary file // The schema for the binary file
const uint8_t *bfbs_; const uint8_t *bfbs_;
const uint64_t bfbs_length_; const uint64_t bfbs_length_;
@@ -289,9 +307,6 @@ class BinaryAnnotator {
// Map of binary offset to vtables, to dedupe vtables. // Map of binary offset to vtables, to dedupe vtables.
std::map<uint64_t, VTable> vtables_; std::map<uint64_t, VTable> vtables_;
// A set of binary offset to string sections, to dedupe shared strings.
std::set<uint64_t> strings_;
// The annotated binary sections, index by their absolute offset. // The annotated binary sections, index by their absolute offset.
std::map<uint64_t, BinarySection> sections_; std::map<uint64_t, BinarySection> sections_;
}; };

View File

@@ -92,8 +92,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -107,9 +107,9 @@ vector (AnnotatedBinary.Foo.foobars):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable +0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00E8 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table) +0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding +0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -126,9 +126,9 @@ table (AnnotatedBinary.Baz):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable +0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0110 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table) +0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -144,12 +144,12 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -225,9 +225,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable +0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x01F0 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table) +0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding +0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):
@@ -249,9 +249,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable +0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0220 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table) +0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -281,9 +281,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable +0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float) +0x0280 | 65 20 71 49 | float | 0x49712065 (987654) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table) +0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double) +0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123457) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding +0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):

View File

@@ -90,8 +90,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -105,9 +105,9 @@ vector (AnnotatedBinary.Foo.foobars):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable +0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00E8 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table) +0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding +0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -124,9 +124,9 @@ table (AnnotatedBinary.Baz):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable +0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0110 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table) +0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -142,12 +142,12 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -223,9 +223,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable +0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x01F0 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table) +0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding +0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):
@@ -247,9 +247,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable +0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0220 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table) +0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -279,9 +279,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable +0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float) +0x0280 | 65 20 71 49 | float | 0x49712065 (987654) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table) +0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double) +0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123457) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding +0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):

View File

@@ -92,8 +92,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -107,9 +107,9 @@ vector (AnnotatedBinary.Foo.foobars):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable +0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00E8 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table) +0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding +0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -126,9 +126,9 @@ table (AnnotatedBinary.Baz):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable +0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0110 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table) +0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -144,12 +144,12 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -221,9 +221,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable +0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x01F0 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table) +0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding +0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):
@@ -245,9 +245,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable +0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0220 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table) +0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -277,9 +277,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable +0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float) +0x0280 | 65 20 71 49 | float | 0x49712065 (987654) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table) +0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double) +0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123457) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding +0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):

View File

@@ -92,8 +92,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):

View File

@@ -92,8 +92,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -138,12 +138,12 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -183,9 +183,8 @@ string (AnnotatedBinary.Foo.bob):
+0x01B3 | 00 | char | 0x00 (0) | string terminator +0x01B3 | 00 | char | 0x00 (0) | string terminator
vector (AnnotatedBinary.Foo.accounts): vector (AnnotatedBinary.Foo.accounts):
+0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | length of vector (# items) +0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | ERROR: length of vector (# items). Invalid length, points outside the binary.
+0x01B8 | 09 00 | uint16_t | 0x0009 (9) | value[0]
+0x01BA | 08 00 | uint16_t | 0x0008 (8) | value[1] unknown (no known references):
+0x01BC | 07 00 | uint16_t | 0x0007 (7) | value[2] +0x01B8 | 09 00 08 00 07 00 01 00 | ?uint8_t[9] | ........ | WARN: nothing refers to this section.
+0x01BE | 01 00 | uint16_t | 0x0001 (1) | value[3] +0x01C0 | 02 | | .
+0x01C0 | 02 | ?uint8_t[1] | . | ERROR: value[4]. Incomplete binary, expected to read 2 bytes here

View File

@@ -92,8 +92,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -138,17 +138,18 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names): vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | ERROR: length of vector (# items). Invalid length, points outside the binary.
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | ERROR: offset to string[0]. Invalid offset, points to outside the binary.
+0x0174 | 14 00 | ?uint8_t[2] | .. | ERROR: offset to string[1]. Incomplete binary, expected to read 4 bytes here unknown (no known references):
+0x0170 | 20 00 00 00 14 00 | ?uint8_t[6] | ..... | could be a corrupted padding region (non zero) due to the length < 8 bytes.

View File

@@ -92,8 +92,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -137,8 +137,10 @@ vector (AnnotatedBinary.Foo.foobars_type):
+0x0132 | 01 | UType8 | 0x01 (1) | value[2] +0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | ERROR: length of vector (# items). Invalid length, points outside the binary.
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) unknown (no known references):
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | ?uint8_t[28] | 33333.E@ | WARN: nothing refers to this section.
+0x0150 | 9F 77 63 41 | ?uint8_t[4] | .wcA | ERROR: struct field `AnnotatedBinary.Location.longitude` (Double). Expected to read 8 bytes. +0x0140 | 7E 57 04 FF 5B 87 53 C0 | | ~W..[.S.
+0x0148 | 8D F0 F6 20 04 B6 42 40 | | ... ..B@
+0x0150 | 9F 77 63 41 | | .wcA

View File

@@ -92,8 +92,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -138,12 +138,12 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -204,6 +204,7 @@ unknown (no known references):
+0x01D0 | 00 00 00 03 | ?uint8_t[4] | .... | could be a corrupted padding region (non zero) due to the length < 8 bytes. +0x01D0 | 00 00 00 03 | ?uint8_t[4] | .... | could be a corrupted padding region (non zero) due to the length < 8 bytes.
vector (AnnotatedBinary.Foo.bars): vector (AnnotatedBinary.Foo.bars):
+0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | length of vector (# items) +0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | ERROR: length of vector (# items). Invalid length, points outside the binary.
+0x01D8 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x021C | ERROR: offset to table[0]. Invalid offset, points to outside the binary.
+0x01DC | 10 00 | ?uint8_t[2] | .. | ERROR: offset to table[1]. Incomplete binary, expected to read 4 bytes here unknown (no known references):
+0x01D8 | 44 00 00 00 10 00 | ?uint8_t[6] | D..... | could be a corrupted padding region (non zero) due to the length < 8 bytes.

View File

@@ -92,8 +92,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -107,9 +107,9 @@ vector (AnnotatedBinary.Foo.foobars):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable +0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00E8 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table) +0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding +0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -122,9 +122,9 @@ unknown (no known references):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable +0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0110 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table) +0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -140,12 +140,12 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -221,9 +221,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable +0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x01F0 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table) +0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding +0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):
@@ -245,9 +245,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable +0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0220 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table) +0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -277,9 +277,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable +0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float) +0x0280 | 65 20 71 49 | float | 0x49712065 (987654) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table) +0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double) +0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123457) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding +0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):

View File

@@ -92,8 +92,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -138,12 +138,12 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -204,6 +204,7 @@ unknown (no known references):
+0x01D0 | 00 00 00 03 | ?uint8_t[4] | .... | could be a corrupted padding region (non zero) due to the length < 8 bytes. +0x01D0 | 00 00 00 03 | ?uint8_t[4] | .... | could be a corrupted padding region (non zero) due to the length < 8 bytes.
vector (AnnotatedBinary.Foo.bars): vector (AnnotatedBinary.Foo.bars):
+0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | length of vector (# items) +0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | ERROR: length of vector (# items). Invalid length, points outside the binary.
+0x01D8 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x021C | ERROR: offset to table[0]. Invalid offset, points to outside the binary.
+0x01DC | 10 00 | ?uint8_t[2] | .. | ERROR: offset to table[1]. Incomplete binary, expected to read 4 bytes here unknown (no known references):
+0x01D8 | 44 00 00 00 10 00 | ?uint8_t[6] | D..... | could be a corrupted padding region (non zero) due to the length < 8 bytes.

View File

@@ -93,8 +93,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -108,9 +108,9 @@ vector (AnnotatedBinary.Foo.foobars):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable +0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00E8 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table) +0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding +0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -127,9 +127,9 @@ table (AnnotatedBinary.Baz):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable +0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0110 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table) +0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -145,12 +145,12 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -226,9 +226,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable +0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x01F0 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table) +0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding +0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):
@@ -250,9 +250,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable +0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0220 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table) +0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):

View File

@@ -155,8 +155,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -170,9 +170,9 @@ vector (AnnotatedBinary.Foo.foobars):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable +0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00E8 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table) +0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding +0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -189,9 +189,9 @@ table (AnnotatedBinary.Baz):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable +0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0110 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table) +0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -207,12 +207,12 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -288,9 +288,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable +0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x01F0 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table) +0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding +0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):
@@ -312,9 +312,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable +0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0220 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table) +0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -344,9 +344,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable +0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float) +0x0280 | 65 20 71 49 | float | 0x49712065 (987654) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table) +0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double) +0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123457) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding +0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):

View File

@@ -92,8 +92,8 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable +0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00C4 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double) +0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding +0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement): union (AnnotatedBinary.Tolerance.measurement):
@@ -107,9 +107,9 @@ vector (AnnotatedBinary.Foo.foobars):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable +0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x00E8 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table) +0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding +0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -126,9 +126,9 @@ table (AnnotatedBinary.Baz):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable +0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0110 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table) +0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -144,12 +144,12 @@ vector (AnnotatedBinary.Foo.foobars_type):
vector (AnnotatedBinary.Foo.points_of_interest): vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items) +0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.115) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double) +0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.4208) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double) +0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.34645) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding: padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -225,9 +225,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable +0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float) +0x01F0 | 00 80 23 44 | float | 0x44238000 (654) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table) +0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double) +0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding +0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):
@@ -249,9 +249,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable +0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float) +0x0220 | 00 00 E4 43 | float | 0x43E40000 (456) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table) +0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double) +0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding +0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz): table (AnnotatedBinary.Baz):
@@ -281,9 +281,9 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar): table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable +0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float) +0x0280 | 65 20 71 49 | float | 0x49712065 (987654) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table) +0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double) +0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123457) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding +0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz): vtable (AnnotatedBinary.Baz):

18
tests/fuzzer/.gitignore vendored Normal file
View File

@@ -0,0 +1,18 @@
# The generated fuzzers
*_fuzzer
# Findings from the fuzzers
oom-*
slow-unit-*
crash-*
# Individual fuzzer logs if job=N
fuzz-*.log
.clangd/
# These are copied from tests/annotated_binary/ and should use the latest ones.
annotated_binary.bfbs
annotated_binary.bin
monster_test.bfbs

View File

@@ -112,12 +112,15 @@ set(FlatBuffers_Library_SRCS
${FLATBUFFERS_DIR}/src/idl_parser.cpp ${FLATBUFFERS_DIR}/src/idl_parser.cpp
${FLATBUFFERS_DIR}/src/idl_gen_text.cpp ${FLATBUFFERS_DIR}/src/idl_gen_text.cpp
${FLATBUFFERS_DIR}/src/reflection.cpp ${FLATBUFFERS_DIR}/src/reflection.cpp
${FLATBUFFERS_DIR}/src/binary_annotator.h
${FLATBUFFERS_DIR}/src/binary_annotator.cpp
${FLATBUFFERS_DIR}/src/util.cpp ${FLATBUFFERS_DIR}/src/util.cpp
${FLATBUFFERS_DIR}/tests/test_assert.cpp ${FLATBUFFERS_DIR}/tests/test_assert.cpp
) )
include_directories(${FLATBUFFERS_DIR}/include) include_directories(${FLATBUFFERS_DIR}/include)
include_directories(${FLATBUFFERS_DIR}/tests) include_directories(${FLATBUFFERS_DIR}/tests)
include_directories(${FLATBUFFERS_DIR}/src)
add_library(flatbuffers_fuzzed STATIC ${FlatBuffers_Library_SRCS}) add_library(flatbuffers_fuzzed STATIC ${FlatBuffers_Library_SRCS})
# Use PUBLIC to force 'fuzzer_config' for all dependent targets # Use PUBLIC to force 'fuzzer_config' for all dependent targets
@@ -157,6 +160,19 @@ add_custom_command(
${CMAKE_SOURCE_DIR}/../monster_test.bfbs ${CMAKE_SOURCE_DIR}/../monster_test.bfbs
${CMAKE_CURRENT_BINARY_DIR}/monster_test.bfbs) ${CMAKE_CURRENT_BINARY_DIR}/monster_test.bfbs)
add_executable(annotator_fuzzer flatbuffers_annotator_fuzzer.cc)
target_link_libraries(annotator_fuzzer PRIVATE flatbuffers_fuzzed)
add_custom_command(
TARGET annotator_fuzzer PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/../annotated_binary/annotated_binary.bfbs
${CMAKE_CURRENT_BINARY_DIR}/annotated_binary.bfbs
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/../annotated_binary/annotated_binary.bin
${CMAKE_CURRENT_BINARY_DIR}/seed_annotator/annotated_binary.bin
)
# Build debugger for weird cases found with fuzzer. # Build debugger for weird cases found with fuzzer.
if(BUILD_DEBUGGER) if(BUILD_DEBUGGER)

View File

@@ -0,0 +1,53 @@
#include <filesystem>
#include <string>
#include "binary_annotator.h"
#include "test_init.h"
static std::filesystem::path exe_path_;
static const uint8_t *schema_bfbs_;
static size_t schema_bfbs_length_;
bool TestFileExists(std::filesystem::path file_path) {
if (file_path.has_filename() && std::filesystem::exists(file_path))
return true;
TEST_OUTPUT_LINE("@DEBUG: file '%s' not found", file_path.string().c_str());
for (const auto &entry :
std::filesystem::directory_iterator(file_path.parent_path())) {
TEST_OUTPUT_LINE("@DEBUG: parent path entry: '%s'",
entry.path().string().c_str());
}
return false;
}
std::string LoadBinarySchema(const char *file_name) {
const auto file_path = exe_path_.parent_path() / file_name;
TEST_EQ(true, TestFileExists(file_path));
std::string schemafile;
TEST_EQ(true,
flatbuffers::LoadFile(file_path.string().c_str(), true, &schemafile));
flatbuffers::Verifier verifier(
reinterpret_cast<const uint8_t *>(schemafile.c_str()), schemafile.size());
TEST_EQ(true, reflection::VerifySchemaBuffer(verifier));
return schemafile;
}
extern "C" int LLVMFuzzerInitialize(int *, char ***argv) {
exe_path_ = (*argv)[0];
static const std::string schema_file =
LoadBinarySchema("annotated_binary.bfbs");
schema_bfbs_ = reinterpret_cast<const uint8_t *>(schema_file.c_str());
schema_bfbs_length_ = schema_file.size();
return 0;
}
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
flatbuffers::BinaryAnnotator annotator(schema_bfbs_, schema_bfbs_length_,
data, size);
annotator.Annotate();
return 0;
}