1 syntax = "proto2"; 2 3 import "development/vndk/tools/header-checker/proto/abi_dump.proto"; 4 5 package abi_diff; 6 7 message RecordFieldDeclDiff { 8 optional abi_dump.RecordFieldDecl old = 1; 9 optional abi_dump.RecordFieldDecl new = 2; 10 optional uint32 index = 3; 11 } 12 13 message EnumFieldDeclDiff { 14 optional abi_dump.EnumFieldDecl old = 1; 15 optional abi_dump.EnumFieldDecl new = 2; 16 optional uint32 index = 3; 17 } 18 19 message CXXBaseSpecifierDiff { 20 optional abi_dump.CXXBaseSpecifier old = 1; 21 optional abi_dump.CXXBaseSpecifier new = 2; 22 optional uint32 index = 3; 23 } 24 25 message CXXVTableDiff { 26 optional abi_dump.VTableComponent old = 1; 27 optional abi_dump.VTableComponent new = 2; 28 optional uint32 index = 3; 29 } 30 31 message BasicNamedAndTypedDeclDiff { 32 optional abi_dump.BasicNamedAndTypedDecl old = 1; 33 optional abi_dump.BasicNamedAndTypedDecl new = 2; 34 } 35 36 message RecordDeclDiff { 37 repeated RecordFieldDeclDiff field_diffs = 1; 38 repeated CXXBaseSpecifierDiff base_diffs = 2; 39 repeated CXXVTableDiff vtable_diffs = 3; 40 optional BasicNamedAndTypedDeclDiff type_diff = 4; 41 optional string name = 5; 42 } 43 44 message EnumDeclDiff { 45 repeated EnumFieldDeclDiff field_diffs = 1; 46 optional BasicNamedAndTypedDeclDiff type_diff = 2; 47 optional string name = 3; 48 } 49 50 message ReturnTypeDiff { 51 optional abi_dump.BasicNamedAndTypedDecl old = 1; 52 optional abi_dump.BasicNamedAndTypedDecl new = 2; 53 } 54 55 message ParamDeclDiff { 56 optional abi_dump.ParamDecl old = 1; 57 optional abi_dump.ParamDecl new = 2; 58 optional uint32 index = 3; 59 } 60 61 message FunctionDeclDiff { 62 optional ReturnTypeDiff return_type_diffs = 1; 63 repeated ParamDeclDiff param_diffs = 2; 64 optional string name = 3; 65 } 66 67 message GlobalVarDeclDiff { 68 optional BasicNamedAndTypedDeclDiff type_diff = 1; 69 } 70 71 enum CompatibilityStatus { 72 COMPATIBLE = 0; 73 EXTENSION = 1; 74 INCOMPATIBLE = 4; 75 } 76 77 message TranslationUnitDiff { 78 // Library Name 79 optional string lib_name = 1; 80 optional string arch = 2; 81 // Differing Elements. 82 repeated RecordDeclDiff records_diff = 3; 83 repeated EnumDeclDiff enums_diff = 4; 84 repeated FunctionDeclDiff functions_diff = 5; 85 repeated GlobalVarDeclDiff global_vars_diff = 6; 86 // Removed Elements. 87 repeated abi_dump.RecordDecl records_removed = 7; 88 repeated abi_dump.FunctionDecl functions_removed = 8; 89 repeated abi_dump.EnumDecl enums_removed = 9; 90 repeated abi_dump.GlobalVarDecl global_vars_removed = 10; 91 // Added Elements. 92 repeated abi_dump.RecordDecl records_added = 11; 93 repeated abi_dump.FunctionDecl functions_added = 12; 94 repeated abi_dump.EnumDecl enums_added = 13; 95 repeated abi_dump.GlobalVarDecl global_vars_added = 14; 96 // Compatiblity Status 97 optional CompatibilityStatus compatibility_status = 15; 98 } 99 100 // Not merged with TranslationUnitDiff to allow future extensions. 101 message ConciseDiffReportInformation { 102 optional string lib_name = 1; 103 optional string arch = 2; 104 optional string diff_report_path = 3; 105 optional CompatibilityStatus compatibility_status = 4; 106 } 107 108 message MergedTranslationUnitDiff { 109 repeated ConciseDiffReportInformation diff_reports = 1; 110 } 111