blob: 17cfc925e54b2dc98decc298b15875160466393e [file] [log] [blame]
syntax = "proto2";
import "development/vndk/tools/header-checker/proto/abi_dump.proto";
package abi_diff;
message TypeInfo {
optional uint64 size = 1;
optional uint32 alignment = 2;
}
message TypeInfoDiff {
optional TypeInfo old_type_info = 1;
optional TypeInfo new_type_info = 2;
}
message VTableLayoutDiff {
optional abi_dump.VTableLayout old_vtable = 1;
optional abi_dump.VTableLayout new_vtable = 2;
}
message RecordFieldDeclDiff {
optional abi_dump.RecordFieldDecl old_field = 1;
optional abi_dump.RecordFieldDecl new_field = 2;
}
message CXXBaseSpecifierDiff {
repeated abi_dump.CXXBaseSpecifier old_bases = 1;
repeated abi_dump.CXXBaseSpecifier new_bases = 2;
}
message RecordTypeDiff {
optional string name = 1;
optional string type_stack = 2;
optional TypeInfoDiff type_info_diff = 3;
repeated abi_dump.RecordFieldDecl fields_removed = 4;
repeated RecordFieldDeclDiff fields_diff = 5;
optional CXXBaseSpecifierDiff bases_diff = 6;
optional VTableLayoutDiff vtable_layout_diff = 7;
}
message UnderlyingTypeDiff {
optional string old_type = 1;
optional string new_type = 2;
}
message EnumFieldDeclDiff {
optional abi_dump.EnumFieldDecl old_field = 1;
optional abi_dump.EnumFieldDecl new_field = 2;
}
message EnumTypeDiff {
optional string type_stack = 1;
optional string name = 2;
repeated EnumFieldDeclDiff fields_diff = 3;
optional UnderlyingTypeDiff underlying_type_diff = 4;
repeated abi_dump.EnumFieldDecl fields_added = 5;
repeated abi_dump.EnumFieldDecl fields_removed = 6;
}
message FunctionDeclDiff {
// Template diffs are not required since in C++, they will show up in mangled
// names and in C, templates are not supported.
optional string type_stack = 1;
optional string name = 2;
optional abi_dump.FunctionDecl old = 3;
optional abi_dump.FunctionDecl new = 4;
}
message GlobalVarDeclDiff {
optional string type_stack = 1;
optional string name = 2;
optional abi_dump.GlobalVarDecl old = 3; // Old global var
optional abi_dump.GlobalVarDecl new = 4; // New global var
}
message TranslationUnitDiff {
// Library Name
optional string lib_name = 1;
optional string arch = 2;
// Records.
repeated RecordTypeDiff record_type_diffs = 3;
repeated RecordTypeDiff unreferenced_record_type_diffs = 4;
repeated abi_dump.RecordType unreferenced_record_types_removed = 5;
repeated abi_dump.RecordType unreferenced_record_types_added = 6;
// Enums
repeated EnumTypeDiff enum_type_diffs = 7;
repeated EnumTypeDiff enum_type_extension_diffs = 8;
repeated EnumTypeDiff unreferenced_enum_type_diffs = 9;
repeated EnumTypeDiff unreferenced_enum_type_extension_diffs = 10;
repeated abi_dump.EnumType unreferenced_enum_types_removed = 11;
repeated abi_dump.EnumType unreferenced_enum_types_added = 12;
// Functions and Global variables.
repeated FunctionDeclDiff function_diffs = 13;
repeated GlobalVarDeclDiff global_var_diffs = 14;
repeated abi_dump.FunctionDecl functions_removed = 15;
repeated abi_dump.GlobalVarDecl global_vars_removed = 16;
repeated abi_dump.FunctionDecl functions_added = 17;
repeated abi_dump.GlobalVarDecl global_vars_added = 18;
repeated abi_dump.ElfFunction added_elf_functions = 19;
repeated abi_dump.ElfFunction removed_elf_functions = 20;
repeated abi_dump.ElfObject added_elf_objects = 21;
repeated abi_dump.ElfObject removed_elf_objects = 22;
// Compatiblity Status
optional CompatibilityStatus compatibility_status = 23;
}
// Not merged with TranslationUnitDiff to allow future extensions.
message ConciseDiffReportInformation {
optional string lib_name = 1;
optional string arch = 2;
optional string diff_report_path = 3;
optional CompatibilityStatus compatibility_status = 4;
}
message MergedTranslationUnitDiff {
repeated ConciseDiffReportInformation diff_reports = 1;
}
enum CompatibilityStatus {
COMPATIBLE = 0;
EXTENSION = 1;
INCOMPATIBLE = 4;
}