diff --git a/vndk/tools/header-checker/header-abi-dumper/src/header_checker.cpp b/vndk/tools/header-checker/header-abi-dumper/src/header_checker.cpp index 4b3644091..a8330a8b6 100644 --- a/vndk/tools/header-checker/header-abi-dumper/src/header_checker.cpp +++ b/vndk/tools/header-checker/header-abi-dumper/src/header_checker.cpp @@ -51,8 +51,8 @@ static llvm::cl::opt no_filter( "no-filter", llvm::cl::desc("Do not filter any abi"), llvm::cl::Optional, llvm::cl::cat(header_checker_category)); -static llvm::cl::opt text_format( - "text-format", llvm::cl::desc("Specify text format of abi dump"), +static llvm::cl::opt output_format( + "output-format", llvm::cl::desc("Specify format of output dump file"), llvm::cl::values(clEnumValN(abi_util::TextFormatIR::ProtobufTextFormat, "ProtobufTextFormat", "ProtobufTextFormat"), clEnumValN(abi_util::TextFormatIR::Json, "Json", "JSON"), @@ -123,7 +123,7 @@ int main(int argc, const char **argv) { clang::tooling::ClangTool tool(*compilations, header_files); std::unique_ptr factory( new HeaderCheckerFrontendActionFactory(out_dump, exported_headers, - text_format)); + output_format)); return tool.run(factory.get()); } diff --git a/vndk/tools/header-checker/header-abi-linker/src/header_abi_linker.cpp b/vndk/tools/header-checker/header-abi-linker/src/header_abi_linker.cpp index b57f6d337..b61e66340 100644 --- a/vndk/tools/header-checker/header-abi-linker/src/header_abi_linker.cpp +++ b/vndk/tools/header-checker/header-abi-linker/src/header_abi_linker.cpp @@ -65,14 +65,23 @@ static llvm::cl::opt so_file( "so", llvm::cl::desc(""), llvm::cl::Optional, llvm::cl::cat(header_linker_category)); -static llvm::cl::opt text_format( - "text-format", llvm::cl::desc("Specify text format of abi dumps"), +static llvm::cl::opt input_format( + "input-format", llvm::cl::desc("Specify format of input dump files"), llvm::cl::values(clEnumValN(abi_util::TextFormatIR::ProtobufTextFormat, "ProtobufTextFormat", "ProtobufTextFormat"), clEnumValEnd), llvm::cl::init(abi_util::TextFormatIR::ProtobufTextFormat), llvm::cl::cat(header_linker_category)); +static llvm::cl::opt output_format( + "output-format", llvm::cl::desc("Specify format of output dump file"), + llvm::cl::values(clEnumValN(abi_util::TextFormatIR::ProtobufTextFormat, + "ProtobufTextFormat", "ProtobufTextFormat"), + clEnumValN(abi_util::TextFormatIR::Json, "Json", "JSON"), + clEnumValEnd), + llvm::cl::init(abi_util::TextFormatIR::ProtobufTextFormat), + llvm::cl::cat(header_linker_category)); + class HeaderAbiLinker { public: HeaderAbiLinker( @@ -161,7 +170,7 @@ static void DeDuplicateAbiElementsThread( std::atomic *cnt) { std::unique_ptr local_reader = abi_util::TextFormatToIRReader::CreateTextFormatToIRReader( - text_format, exported_headers); + input_format, exported_headers); auto begin_it = dump_files.begin(); std::size_t num_sources = dump_files.size(); while (1) { @@ -173,7 +182,7 @@ static void DeDuplicateAbiElementsThread( for (auto it = begin_it; it != begin_it + end; it++) { std::unique_ptr reader = abi_util::TextFormatToIRReader::CreateTextFormatToIRReader( - text_format, exported_headers); + input_format, exported_headers); assert(reader != nullptr); if (!reader->ReadDump(*it)) { llvm::errs() << "ReadDump failed\n"; @@ -201,14 +210,14 @@ bool HeaderAbiLinker::LinkAndDump() { return false; } std::unique_ptr ir_dumper = - abi_util::IRDumper::CreateIRDumper(text_format, out_dump_name_); + abi_util::IRDumper::CreateIRDumper(output_format, out_dump_name_); assert(ir_dumper != nullptr); AddElfSymbols(ir_dumper.get()); // Create a reader, on which we never actually call ReadDump(), since multiple // dump files are associated with it. std::unique_ptr greader = abi_util::TextFormatToIRReader::CreateTextFormatToIRReader( - text_format, &exported_headers_); + input_format, &exported_headers_); std::size_t max_threads = std::thread::hardware_concurrency(); std::size_t num_threads = kSourcesPerBatchThread < dump_files_.size() ? std::min(dump_files_.size() / kSourcesPerBatchThread, diff --git a/vndk/tools/header-checker/tests/module.py b/vndk/tools/header-checker/tests/module.py index d1e831c46..63184d62f 100755 --- a/vndk/tools/header-checker/tests/module.py +++ b/vndk/tools/header-checker/tests/module.py @@ -35,7 +35,7 @@ def relative_to_abs_path_list(relative_path_list): class Module(object): def __init__(self, name, arch, srcs, version_script, cflags, - export_include_dirs, api): + export_include_dirs, api, output_format=None): self.name = name self.arch = arch self.srcs = relative_to_abs_path_list(srcs) @@ -46,6 +46,7 @@ class Module(object): self.arch_cflags = ARCH_TARGET_CFLAGS.get(self.arch) self.export_include_dirs = relative_to_abs_path_list(export_include_dirs) self.api = api + self.output_format = output_format def get_name(self): return self.name @@ -68,6 +69,9 @@ class Module(object): def get_api(self): return self.api + def get_output_format(self): + return self.output_format + def make_lsdump(self, default_cflags): """ For each source file, produce a .sdump file, and link them to form an lsump file""" @@ -82,7 +86,8 @@ class Module(object): self.cflags + self.arch_cflags + default_cflags) return run_header_abi_linker(output_lsdump, dumps_to_link, self.version_script, self.api, - self.arch) + self.arch, self.output_format) + @staticmethod def mutate_module_for_arch(module, target_arch): name = module.get_name() @@ -91,8 +96,9 @@ class Module(object): cflags = module.get_cflags() export_include_dirs = module.get_export_include_dirs() api = module.get_api() + output_format = module.get_output_format() return Module(name, target_arch, srcs, version_script, cflags, - export_include_dirs, api) + export_include_dirs, api, output_format) @staticmethod def mutate_module_for_all_arches(module): @@ -479,6 +485,19 @@ TEST_MODULES = [ arch = '', api = 'current', ), + Module( + name = 'libgolden_cpp_json', + srcs = ['integration/cpp/gold/golden_1.cpp', + 'integration/cpp/gold/high_volume_speaker.cpp', + 'integration/cpp/gold/low_volume_speaker.cpp', + ], + version_script = 'integration/cpp/gold/map.txt', + export_include_dirs = ['integration/cpp/gold/include'], + cflags = [], + arch = '', + api = 'current', + output_format = 'Json' + ), ] TEST_MODULES = { m.name: m for m in TEST_MODULES } diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump new file mode 100644 index 000000000..10332de39 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump @@ -0,0 +1,636 @@ + +{ + "array_types" : [], + "builtin_types" : + [ + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "float", + "name" : "float", + "referenced_type" : "type-3", + "self_type" : "type-3", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-2", + "self_type" : "type-2", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : true, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "unsigned int", + "name" : "unsigned int", + "referenced_type" : "type-6", + "self_type" : "type-6", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 0, + "linker_set_key" : "void", + "name" : "void", + "referenced_type" : "type-10", + "self_type" : "type-10", + "size" : 0, + "source_file" : "" + } + } + ], + "elf_functions" : + [ + + { + "name" : "_Z26test_virtual_function_callP12SuperSpeaker" + }, + + { + "name" : "_ZN12NotReferenced" + }, + + { + "name" : "_ZN12SuperSpeaker11SpeakLouderEv" + }, + + { + "name" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + }, + + { + "name" : "_ZN12SuperSpeaker9SpeakLoudEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker11BadPracticeEf" + }, + + { + "name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker6ListenEv" + } + ], + "elf_objects" : + [ + + { + "name" : "_ZTV16LowVolumeSpeaker" + }, + + { + "name" : "_ZTV17HighVolumeSpeaker" + } + ], + "enum_types" : + [ + + { + "access" : 2, + "enum_fields" : + [ + + { + "enum_field_value" : 1, + "name" : "SuperSpeaker::Volume::Loud" + }, + + { + "enum_field_value" : 2, + "name" : "SuperSpeaker::Volume::Louder" + }, + + { + "enum_field_value" : 3, + "name" : "SuperSpeaker::Volume::Loudest" + }, + + { + "enum_field_value" : 4, + "name" : "SuperSpeaker::Volume::Lower" + } + ], + "tag_info" : + { + "unique_id" : "_ZTSN12SuperSpeaker6VolumeE" + }, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker::Volume", + "name" : "SuperSpeaker::Volume", + "referenced_type" : "type-8", + "self_type" : "type-8", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "underlying_type" : "type-6" + } + ], + "function_types" : [], + "functions" : + [ + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLouder", + "linker_set_key" : "_ZN12SuperSpeaker11SpeakLouderEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::CreateSuperSpeaker", + "linker_set_key" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-2" + } + ], + "return_type" : "type-9", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLoud", + "linker_set_key" : "_ZN12SuperSpeaker9SpeakLoudEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-8", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Speak", + "linker_set_key" : "_ZN16LowVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Listen", + "linker_set_key" : "_ZN16LowVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::BadPractice", + "linker_set_key" : "_ZN17HighVolumeSpeaker11BadPracticeEf", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + }, + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-3" + } + ], + "return_type" : "type-12", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Speak", + "linker_set_key" : "_ZN17HighVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Listen", + "linker_set_key" : "_ZN17HighVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + } + ], + "global_vars" : [], + "lvalue_reference_types" : [], + "pointer_types" : + [ + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + } + }, + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "HighVolumeSpeaker *", + "name" : "HighVolumeSpeaker *", + "referenced_type" : "type-11", + "self_type" : "type-12", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + } + ], + "qualified_types" : [], + "record_types" : + [ + + { + "access" : 1, + "base_specifiers" : [], + "fields" : + [ + + { + "access" : 2, + "field_name" : "mSpeakderId", + "field_offset" : 32, + "referenced_type" : "type-2" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS12SuperSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : [], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS17HighVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "HighVolumeSpeaker", + "name" : "HighVolumeSpeaker", + "referenced_type" : "type-11", + "self_type" : "type-11", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI17HighVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : + [ + + { + "access" : 1, + "field_name" : "speaker_uint_t", + "field_offset" : 64, + "referenced_type" : "type-6" + }, + + { + "access" : 1, + "field_name" : "speaker_float_star", + "field_offset" : 96, + "referenced_type" : "type-7" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS16LowVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "LowVolumeSpeaker", + "name" : "LowVolumeSpeaker", + "referenced_type" : "type-5", + "self_type" : "type-5", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI16LowVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" + } + ] + } + } + ], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump new file mode 100644 index 000000000..1350c0754 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump @@ -0,0 +1,636 @@ + +{ + "array_types" : [], + "builtin_types" : + [ + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "float", + "name" : "float", + "referenced_type" : "type-3", + "self_type" : "type-3", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-2", + "self_type" : "type-2", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : true, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "unsigned int", + "name" : "unsigned int", + "referenced_type" : "type-6", + "self_type" : "type-6", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 0, + "linker_set_key" : "void", + "name" : "void", + "referenced_type" : "type-10", + "self_type" : "type-10", + "size" : 0, + "source_file" : "" + } + } + ], + "elf_functions" : + [ + + { + "name" : "_Z26test_virtual_function_callP12SuperSpeaker" + }, + + { + "name" : "_ZN12NotReferenced" + }, + + { + "name" : "_ZN12SuperSpeaker11SpeakLouderEv" + }, + + { + "name" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + }, + + { + "name" : "_ZN12SuperSpeaker9SpeakLoudEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker11BadPracticeEf" + }, + + { + "name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker6ListenEv" + } + ], + "elf_objects" : + [ + + { + "name" : "_ZTV16LowVolumeSpeaker" + }, + + { + "name" : "_ZTV17HighVolumeSpeaker" + } + ], + "enum_types" : + [ + + { + "access" : 2, + "enum_fields" : + [ + + { + "enum_field_value" : 1, + "name" : "SuperSpeaker::Volume::Loud" + }, + + { + "enum_field_value" : 2, + "name" : "SuperSpeaker::Volume::Louder" + }, + + { + "enum_field_value" : 3, + "name" : "SuperSpeaker::Volume::Loudest" + }, + + { + "enum_field_value" : 4, + "name" : "SuperSpeaker::Volume::Lower" + } + ], + "tag_info" : + { + "unique_id" : "_ZTSN12SuperSpeaker6VolumeE" + }, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker::Volume", + "name" : "SuperSpeaker::Volume", + "referenced_type" : "type-8", + "self_type" : "type-8", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "underlying_type" : "type-6" + } + ], + "function_types" : [], + "functions" : + [ + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLouder", + "linker_set_key" : "_ZN12SuperSpeaker11SpeakLouderEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::CreateSuperSpeaker", + "linker_set_key" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-2" + } + ], + "return_type" : "type-9", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLoud", + "linker_set_key" : "_ZN12SuperSpeaker9SpeakLoudEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-8", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Speak", + "linker_set_key" : "_ZN16LowVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Listen", + "linker_set_key" : "_ZN16LowVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::BadPractice", + "linker_set_key" : "_ZN17HighVolumeSpeaker11BadPracticeEf", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + }, + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-3" + } + ], + "return_type" : "type-12", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Speak", + "linker_set_key" : "_ZN17HighVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Listen", + "linker_set_key" : "_ZN17HighVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + } + ], + "global_vars" : [], + "lvalue_reference_types" : [], + "pointer_types" : + [ + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + } + }, + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "HighVolumeSpeaker *", + "name" : "HighVolumeSpeaker *", + "referenced_type" : "type-11", + "self_type" : "type-12", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + } + ], + "qualified_types" : [], + "record_types" : + [ + + { + "access" : 1, + "base_specifiers" : [], + "fields" : + [ + + { + "access" : 2, + "field_name" : "mSpeakderId", + "field_offset" : 64, + "referenced_type" : "type-2" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS12SuperSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : [], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS17HighVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "HighVolumeSpeaker", + "name" : "HighVolumeSpeaker", + "referenced_type" : "type-11", + "self_type" : "type-11", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI17HighVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : + [ + + { + "access" : 1, + "field_name" : "speaker_uint_t", + "field_offset" : 96, + "referenced_type" : "type-6" + }, + + { + "access" : 1, + "field_name" : "speaker_float_star", + "field_offset" : 128, + "referenced_type" : "type-7" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS16LowVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "LowVolumeSpeaker", + "name" : "LowVolumeSpeaker", + "referenced_type" : "type-5", + "self_type" : "type-5", + "size" : 24, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI16LowVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" + } + ] + } + } + ], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump new file mode 100644 index 000000000..10332de39 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump @@ -0,0 +1,636 @@ + +{ + "array_types" : [], + "builtin_types" : + [ + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "float", + "name" : "float", + "referenced_type" : "type-3", + "self_type" : "type-3", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-2", + "self_type" : "type-2", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : true, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "unsigned int", + "name" : "unsigned int", + "referenced_type" : "type-6", + "self_type" : "type-6", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 0, + "linker_set_key" : "void", + "name" : "void", + "referenced_type" : "type-10", + "self_type" : "type-10", + "size" : 0, + "source_file" : "" + } + } + ], + "elf_functions" : + [ + + { + "name" : "_Z26test_virtual_function_callP12SuperSpeaker" + }, + + { + "name" : "_ZN12NotReferenced" + }, + + { + "name" : "_ZN12SuperSpeaker11SpeakLouderEv" + }, + + { + "name" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + }, + + { + "name" : "_ZN12SuperSpeaker9SpeakLoudEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker11BadPracticeEf" + }, + + { + "name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker6ListenEv" + } + ], + "elf_objects" : + [ + + { + "name" : "_ZTV16LowVolumeSpeaker" + }, + + { + "name" : "_ZTV17HighVolumeSpeaker" + } + ], + "enum_types" : + [ + + { + "access" : 2, + "enum_fields" : + [ + + { + "enum_field_value" : 1, + "name" : "SuperSpeaker::Volume::Loud" + }, + + { + "enum_field_value" : 2, + "name" : "SuperSpeaker::Volume::Louder" + }, + + { + "enum_field_value" : 3, + "name" : "SuperSpeaker::Volume::Loudest" + }, + + { + "enum_field_value" : 4, + "name" : "SuperSpeaker::Volume::Lower" + } + ], + "tag_info" : + { + "unique_id" : "_ZTSN12SuperSpeaker6VolumeE" + }, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker::Volume", + "name" : "SuperSpeaker::Volume", + "referenced_type" : "type-8", + "self_type" : "type-8", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "underlying_type" : "type-6" + } + ], + "function_types" : [], + "functions" : + [ + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLouder", + "linker_set_key" : "_ZN12SuperSpeaker11SpeakLouderEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::CreateSuperSpeaker", + "linker_set_key" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-2" + } + ], + "return_type" : "type-9", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLoud", + "linker_set_key" : "_ZN12SuperSpeaker9SpeakLoudEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-8", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Speak", + "linker_set_key" : "_ZN16LowVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Listen", + "linker_set_key" : "_ZN16LowVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::BadPractice", + "linker_set_key" : "_ZN17HighVolumeSpeaker11BadPracticeEf", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + }, + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-3" + } + ], + "return_type" : "type-12", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Speak", + "linker_set_key" : "_ZN17HighVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Listen", + "linker_set_key" : "_ZN17HighVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + } + ], + "global_vars" : [], + "lvalue_reference_types" : [], + "pointer_types" : + [ + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + } + }, + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "HighVolumeSpeaker *", + "name" : "HighVolumeSpeaker *", + "referenced_type" : "type-11", + "self_type" : "type-12", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + } + ], + "qualified_types" : [], + "record_types" : + [ + + { + "access" : 1, + "base_specifiers" : [], + "fields" : + [ + + { + "access" : 2, + "field_name" : "mSpeakderId", + "field_offset" : 32, + "referenced_type" : "type-2" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS12SuperSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : [], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS17HighVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "HighVolumeSpeaker", + "name" : "HighVolumeSpeaker", + "referenced_type" : "type-11", + "self_type" : "type-11", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI17HighVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : + [ + + { + "access" : 1, + "field_name" : "speaker_uint_t", + "field_offset" : 64, + "referenced_type" : "type-6" + }, + + { + "access" : 1, + "field_name" : "speaker_float_star", + "field_offset" : 96, + "referenced_type" : "type-7" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS16LowVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "LowVolumeSpeaker", + "name" : "LowVolumeSpeaker", + "referenced_type" : "type-5", + "self_type" : "type-5", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI16LowVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" + } + ] + } + } + ], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump new file mode 100644 index 000000000..1350c0754 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump @@ -0,0 +1,636 @@ + +{ + "array_types" : [], + "builtin_types" : + [ + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "float", + "name" : "float", + "referenced_type" : "type-3", + "self_type" : "type-3", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-2", + "self_type" : "type-2", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : true, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "unsigned int", + "name" : "unsigned int", + "referenced_type" : "type-6", + "self_type" : "type-6", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 0, + "linker_set_key" : "void", + "name" : "void", + "referenced_type" : "type-10", + "self_type" : "type-10", + "size" : 0, + "source_file" : "" + } + } + ], + "elf_functions" : + [ + + { + "name" : "_Z26test_virtual_function_callP12SuperSpeaker" + }, + + { + "name" : "_ZN12NotReferenced" + }, + + { + "name" : "_ZN12SuperSpeaker11SpeakLouderEv" + }, + + { + "name" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + }, + + { + "name" : "_ZN12SuperSpeaker9SpeakLoudEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker11BadPracticeEf" + }, + + { + "name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker6ListenEv" + } + ], + "elf_objects" : + [ + + { + "name" : "_ZTV16LowVolumeSpeaker" + }, + + { + "name" : "_ZTV17HighVolumeSpeaker" + } + ], + "enum_types" : + [ + + { + "access" : 2, + "enum_fields" : + [ + + { + "enum_field_value" : 1, + "name" : "SuperSpeaker::Volume::Loud" + }, + + { + "enum_field_value" : 2, + "name" : "SuperSpeaker::Volume::Louder" + }, + + { + "enum_field_value" : 3, + "name" : "SuperSpeaker::Volume::Loudest" + }, + + { + "enum_field_value" : 4, + "name" : "SuperSpeaker::Volume::Lower" + } + ], + "tag_info" : + { + "unique_id" : "_ZTSN12SuperSpeaker6VolumeE" + }, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker::Volume", + "name" : "SuperSpeaker::Volume", + "referenced_type" : "type-8", + "self_type" : "type-8", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "underlying_type" : "type-6" + } + ], + "function_types" : [], + "functions" : + [ + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLouder", + "linker_set_key" : "_ZN12SuperSpeaker11SpeakLouderEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::CreateSuperSpeaker", + "linker_set_key" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-2" + } + ], + "return_type" : "type-9", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLoud", + "linker_set_key" : "_ZN12SuperSpeaker9SpeakLoudEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-8", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Speak", + "linker_set_key" : "_ZN16LowVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Listen", + "linker_set_key" : "_ZN16LowVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::BadPractice", + "linker_set_key" : "_ZN17HighVolumeSpeaker11BadPracticeEf", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + }, + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-3" + } + ], + "return_type" : "type-12", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Speak", + "linker_set_key" : "_ZN17HighVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Listen", + "linker_set_key" : "_ZN17HighVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + } + ], + "global_vars" : [], + "lvalue_reference_types" : [], + "pointer_types" : + [ + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + } + }, + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "HighVolumeSpeaker *", + "name" : "HighVolumeSpeaker *", + "referenced_type" : "type-11", + "self_type" : "type-12", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + } + ], + "qualified_types" : [], + "record_types" : + [ + + { + "access" : 1, + "base_specifiers" : [], + "fields" : + [ + + { + "access" : 2, + "field_name" : "mSpeakderId", + "field_offset" : 64, + "referenced_type" : "type-2" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS12SuperSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : [], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS17HighVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "HighVolumeSpeaker", + "name" : "HighVolumeSpeaker", + "referenced_type" : "type-11", + "self_type" : "type-11", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI17HighVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : + [ + + { + "access" : 1, + "field_name" : "speaker_uint_t", + "field_offset" : 96, + "referenced_type" : "type-6" + }, + + { + "access" : 1, + "field_name" : "speaker_float_star", + "field_offset" : 128, + "referenced_type" : "type-7" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS16LowVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "LowVolumeSpeaker", + "name" : "LowVolumeSpeaker", + "referenced_type" : "type-5", + "self_type" : "type-5", + "size" : 24, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI16LowVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" + } + ] + } + } + ], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump new file mode 100644 index 000000000..10332de39 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump @@ -0,0 +1,636 @@ + +{ + "array_types" : [], + "builtin_types" : + [ + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "float", + "name" : "float", + "referenced_type" : "type-3", + "self_type" : "type-3", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-2", + "self_type" : "type-2", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : true, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "unsigned int", + "name" : "unsigned int", + "referenced_type" : "type-6", + "self_type" : "type-6", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 0, + "linker_set_key" : "void", + "name" : "void", + "referenced_type" : "type-10", + "self_type" : "type-10", + "size" : 0, + "source_file" : "" + } + } + ], + "elf_functions" : + [ + + { + "name" : "_Z26test_virtual_function_callP12SuperSpeaker" + }, + + { + "name" : "_ZN12NotReferenced" + }, + + { + "name" : "_ZN12SuperSpeaker11SpeakLouderEv" + }, + + { + "name" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + }, + + { + "name" : "_ZN12SuperSpeaker9SpeakLoudEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker11BadPracticeEf" + }, + + { + "name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker6ListenEv" + } + ], + "elf_objects" : + [ + + { + "name" : "_ZTV16LowVolumeSpeaker" + }, + + { + "name" : "_ZTV17HighVolumeSpeaker" + } + ], + "enum_types" : + [ + + { + "access" : 2, + "enum_fields" : + [ + + { + "enum_field_value" : 1, + "name" : "SuperSpeaker::Volume::Loud" + }, + + { + "enum_field_value" : 2, + "name" : "SuperSpeaker::Volume::Louder" + }, + + { + "enum_field_value" : 3, + "name" : "SuperSpeaker::Volume::Loudest" + }, + + { + "enum_field_value" : 4, + "name" : "SuperSpeaker::Volume::Lower" + } + ], + "tag_info" : + { + "unique_id" : "_ZTSN12SuperSpeaker6VolumeE" + }, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker::Volume", + "name" : "SuperSpeaker::Volume", + "referenced_type" : "type-8", + "self_type" : "type-8", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "underlying_type" : "type-6" + } + ], + "function_types" : [], + "functions" : + [ + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLouder", + "linker_set_key" : "_ZN12SuperSpeaker11SpeakLouderEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::CreateSuperSpeaker", + "linker_set_key" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-2" + } + ], + "return_type" : "type-9", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLoud", + "linker_set_key" : "_ZN12SuperSpeaker9SpeakLoudEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-8", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Speak", + "linker_set_key" : "_ZN16LowVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Listen", + "linker_set_key" : "_ZN16LowVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::BadPractice", + "linker_set_key" : "_ZN17HighVolumeSpeaker11BadPracticeEf", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + }, + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-3" + } + ], + "return_type" : "type-12", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Speak", + "linker_set_key" : "_ZN17HighVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Listen", + "linker_set_key" : "_ZN17HighVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + } + ], + "global_vars" : [], + "lvalue_reference_types" : [], + "pointer_types" : + [ + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + } + }, + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "HighVolumeSpeaker *", + "name" : "HighVolumeSpeaker *", + "referenced_type" : "type-11", + "self_type" : "type-12", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + } + ], + "qualified_types" : [], + "record_types" : + [ + + { + "access" : 1, + "base_specifiers" : [], + "fields" : + [ + + { + "access" : 2, + "field_name" : "mSpeakderId", + "field_offset" : 32, + "referenced_type" : "type-2" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS12SuperSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : [], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS17HighVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "HighVolumeSpeaker", + "name" : "HighVolumeSpeaker", + "referenced_type" : "type-11", + "self_type" : "type-11", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI17HighVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : + [ + + { + "access" : 1, + "field_name" : "speaker_uint_t", + "field_offset" : 64, + "referenced_type" : "type-6" + }, + + { + "access" : 1, + "field_name" : "speaker_float_star", + "field_offset" : 96, + "referenced_type" : "type-7" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS16LowVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "LowVolumeSpeaker", + "name" : "LowVolumeSpeaker", + "referenced_type" : "type-5", + "self_type" : "type-5", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI16LowVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" + } + ] + } + } + ], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump new file mode 100644 index 000000000..1350c0754 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump @@ -0,0 +1,636 @@ + +{ + "array_types" : [], + "builtin_types" : + [ + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "float", + "name" : "float", + "referenced_type" : "type-3", + "self_type" : "type-3", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-2", + "self_type" : "type-2", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : true, + "is_unsigned" : true, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "unsigned int", + "name" : "unsigned int", + "referenced_type" : "type-6", + "self_type" : "type-6", + "size" : 4, + "source_file" : "" + } + }, + + { + "is_integral" : false, + "is_unsigned" : false, + "type_info" : + { + "alignment" : 0, + "linker_set_key" : "void", + "name" : "void", + "referenced_type" : "type-10", + "self_type" : "type-10", + "size" : 0, + "source_file" : "" + } + } + ], + "elf_functions" : + [ + + { + "name" : "_Z26test_virtual_function_callP12SuperSpeaker" + }, + + { + "name" : "_ZN12NotReferenced" + }, + + { + "name" : "_ZN12SuperSpeaker11SpeakLouderEv" + }, + + { + "name" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + }, + + { + "name" : "_ZN12SuperSpeaker9SpeakLoudEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker11BadPracticeEf" + }, + + { + "name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "name" : "_ZN17HighVolumeSpeaker6ListenEv" + } + ], + "elf_objects" : + [ + + { + "name" : "_ZTV16LowVolumeSpeaker" + }, + + { + "name" : "_ZTV17HighVolumeSpeaker" + } + ], + "enum_types" : + [ + + { + "access" : 2, + "enum_fields" : + [ + + { + "enum_field_value" : 1, + "name" : "SuperSpeaker::Volume::Loud" + }, + + { + "enum_field_value" : 2, + "name" : "SuperSpeaker::Volume::Louder" + }, + + { + "enum_field_value" : 3, + "name" : "SuperSpeaker::Volume::Loudest" + }, + + { + "enum_field_value" : 4, + "name" : "SuperSpeaker::Volume::Lower" + } + ], + "tag_info" : + { + "unique_id" : "_ZTSN12SuperSpeaker6VolumeE" + }, + "type_info" : + { + "alignment" : 4, + "linker_set_key" : "SuperSpeaker::Volume", + "name" : "SuperSpeaker::Volume", + "referenced_type" : "type-8", + "self_type" : "type-8", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "underlying_type" : "type-6" + } + ], + "function_types" : [], + "functions" : + [ + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLouder", + "linker_set_key" : "_ZN12SuperSpeaker11SpeakLouderEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::CreateSuperSpeaker", + "linker_set_key" : "_ZN12SuperSpeaker18CreateSuperSpeakerEi", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-2" + } + ], + "return_type" : "type-9", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "SuperSpeaker::SpeakLoud", + "linker_set_key" : "_ZN12SuperSpeaker9SpeakLoudEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-9" + } + ], + "return_type" : "type-8", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Speak", + "linker_set_key" : "_ZN16LowVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "LowVolumeSpeaker::Listen", + "linker_set_key" : "_ZN16LowVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-4" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::BadPractice", + "linker_set_key" : "_ZN17HighVolumeSpeaker11BadPracticeEf", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + }, + + { + "default_arg" : false, + "is_this_ptr" : false, + "referenced_type" : "type-3" + } + ], + "return_type" : "type-12", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Speak", + "linker_set_key" : "_ZN17HighVolumeSpeaker5SpeakEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + }, + + { + "access" : 1, + "function_name" : "HighVolumeSpeaker::Listen", + "linker_set_key" : "_ZN17HighVolumeSpeaker6ListenEv", + "parameters" : + [ + + { + "default_arg" : false, + "is_this_ptr" : true, + "referenced_type" : "type-12" + } + ], + "return_type" : "type-10", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h", + "template_info" : [] + } + ], + "global_vars" : [], + "lvalue_reference_types" : [], + "pointer_types" : + [ + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + } + }, + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "HighVolumeSpeaker *", + "name" : "HighVolumeSpeaker *", + "referenced_type" : "type-11", + "self_type" : "type-12", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + }, + + { + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + } + } + ], + "qualified_types" : [], + "record_types" : + [ + + { + "access" : 1, + "base_specifiers" : [], + "fields" : + [ + + { + "access" : 2, + "field_name" : "mSpeakderId", + "field_offset" : 64, + "referenced_type" : "type-2" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS12SuperSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : true, + "kind" : 4, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : [], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS17HighVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "HighVolumeSpeaker", + "name" : "HighVolumeSpeaker", + "referenced_type" : "type-11", + "self_type" : "type-11", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI17HighVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN17HighVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN17HighVolumeSpeakerD0Ev" + } + ] + } + }, + + { + "access" : 1, + "base_specifiers" : + [ + + { + "access" : 1, + "is_virtual" : false, + "referenced_type" : "type-1" + } + ], + "fields" : + [ + + { + "access" : 1, + "field_name" : "speaker_uint_t", + "field_offset" : 96, + "referenced_type" : "type-6" + }, + + { + "access" : 1, + "field_name" : "speaker_float_star", + "field_offset" : 128, + "referenced_type" : "type-7" + } + ], + "is_anonymous" : false, + "record_kind" : 2, + "tag_info" : + { + "unique_id" : "_ZTS16LowVolumeSpeaker" + }, + "template_info" : [], + "type_info" : + { + "alignment" : 8, + "linker_set_key" : "LowVolumeSpeaker", + "name" : "LowVolumeSpeaker", + "referenced_type" : "type-5", + "self_type" : "type-5", + "size" : 24, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" + }, + "vtable_layout" : + { + "vtable_components" : + [ + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 2, + "mangled_component_name" : "" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 3, + "mangled_component_name" : "_ZTI16LowVolumeSpeaker" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker5SpeakEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 4, + "mangled_component_name" : "_ZN16LowVolumeSpeaker6ListenEv" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 5, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD1Ev" + }, + + { + "component_value" : 0, + "is_pure" : false, + "kind" : 6, + "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" + } + ] + } + } + ], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/test.py b/vndk/tools/header-checker/tests/test.py index 732b4420f..d9e0448e4 100755 --- a/vndk/tools/header-checker/tests/test.py +++ b/vndk/tools/header-checker/tests/test.py @@ -278,6 +278,10 @@ class MyTest(unittest.TestCase): "libpure_virtual_function", ) + def test_libc_and_cpp_in_json(self): + self.prepare_and_absolute_diff_all_archs( + "libgolden_cpp_json", "libgolden_cpp_json") + if __name__ == '__main__': unittest.main() diff --git a/vndk/tools/header-checker/utils/utils.py b/vndk/tools/header-checker/utils/utils.py index e37134d07..da563f03e 100644 --- a/vndk/tools/header-checker/utils/utils.py +++ b/vndk/tools/header-checker/utils/utils.py @@ -112,11 +112,14 @@ def run_header_abi_dumper_on_file(input_path, output_path, cmd += ['-I', dir] subprocess.check_call(cmd) -def run_header_abi_linker(output_path, inputs, version_script, api, arch): +def run_header_abi_linker(output_path, inputs, version_script, api, arch, + output_format=None): """Link inputs, taking version_script into account""" with tempfile.TemporaryDirectory() as tmp: cmd = ['header-abi-linker', '-o', output_path, '-v', version_script, '-api', api, '-arch', arch] + if output_format: + cmd += ['-output-format', output_format] cmd += inputs subprocess.check_call(cmd) with open(output_path, 'r') as f: