Add test for lsdump in JSON format

- Add a test case and data for lsdump in JSON format
- Rename command line option -text-format to -output-format
- Add option -input-format to header-abi-linker

Bug: 112877706
Test: ./test.py
Change-Id: Ia94f7ffffbcaf55f336932029883ea3635c547e9
This commit is contained in:
Hsin-Yi Chen
2018-08-22 16:24:15 +08:00
parent 5a829cbb62
commit 299acf20e3
11 changed files with 3864 additions and 13 deletions

View File

@@ -51,8 +51,8 @@ static llvm::cl::opt<bool> no_filter(
"no-filter", llvm::cl::desc("Do not filter any abi"), llvm::cl::Optional, "no-filter", llvm::cl::desc("Do not filter any abi"), llvm::cl::Optional,
llvm::cl::cat(header_checker_category)); llvm::cl::cat(header_checker_category));
static llvm::cl::opt<abi_util::TextFormatIR> text_format( static llvm::cl::opt<abi_util::TextFormatIR> output_format(
"text-format", llvm::cl::desc("Specify text format of abi dump"), "output-format", llvm::cl::desc("Specify format of output dump file"),
llvm::cl::values(clEnumValN(abi_util::TextFormatIR::ProtobufTextFormat, llvm::cl::values(clEnumValN(abi_util::TextFormatIR::ProtobufTextFormat,
"ProtobufTextFormat", "ProtobufTextFormat"), "ProtobufTextFormat", "ProtobufTextFormat"),
clEnumValN(abi_util::TextFormatIR::Json, "Json", "JSON"), 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); clang::tooling::ClangTool tool(*compilations, header_files);
std::unique_ptr<clang::tooling::FrontendActionFactory> factory( std::unique_ptr<clang::tooling::FrontendActionFactory> factory(
new HeaderCheckerFrontendActionFactory(out_dump, exported_headers, new HeaderCheckerFrontendActionFactory(out_dump, exported_headers,
text_format)); output_format));
return tool.run(factory.get()); return tool.run(factory.get());
} }

View File

@@ -65,14 +65,23 @@ static llvm::cl::opt<std::string> so_file(
"so", llvm::cl::desc("<path to so file>"), llvm::cl::Optional, "so", llvm::cl::desc("<path to so file>"), llvm::cl::Optional,
llvm::cl::cat(header_linker_category)); llvm::cl::cat(header_linker_category));
static llvm::cl::opt<abi_util::TextFormatIR> text_format( static llvm::cl::opt<abi_util::TextFormatIR> input_format(
"text-format", llvm::cl::desc("Specify text format of abi dumps"), "input-format", llvm::cl::desc("Specify format of input dump files"),
llvm::cl::values(clEnumValN(abi_util::TextFormatIR::ProtobufTextFormat, llvm::cl::values(clEnumValN(abi_util::TextFormatIR::ProtobufTextFormat,
"ProtobufTextFormat", "ProtobufTextFormat"), "ProtobufTextFormat", "ProtobufTextFormat"),
clEnumValEnd), clEnumValEnd),
llvm::cl::init(abi_util::TextFormatIR::ProtobufTextFormat), llvm::cl::init(abi_util::TextFormatIR::ProtobufTextFormat),
llvm::cl::cat(header_linker_category)); llvm::cl::cat(header_linker_category));
static llvm::cl::opt<abi_util::TextFormatIR> 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 { class HeaderAbiLinker {
public: public:
HeaderAbiLinker( HeaderAbiLinker(
@@ -161,7 +170,7 @@ static void DeDuplicateAbiElementsThread(
std::atomic<std::size_t> *cnt) { std::atomic<std::size_t> *cnt) {
std::unique_ptr<abi_util::TextFormatToIRReader> local_reader = std::unique_ptr<abi_util::TextFormatToIRReader> local_reader =
abi_util::TextFormatToIRReader::CreateTextFormatToIRReader( abi_util::TextFormatToIRReader::CreateTextFormatToIRReader(
text_format, exported_headers); input_format, exported_headers);
auto begin_it = dump_files.begin(); auto begin_it = dump_files.begin();
std::size_t num_sources = dump_files.size(); std::size_t num_sources = dump_files.size();
while (1) { while (1) {
@@ -173,7 +182,7 @@ static void DeDuplicateAbiElementsThread(
for (auto it = begin_it; it != begin_it + end; it++) { for (auto it = begin_it; it != begin_it + end; it++) {
std::unique_ptr<abi_util::TextFormatToIRReader> reader = std::unique_ptr<abi_util::TextFormatToIRReader> reader =
abi_util::TextFormatToIRReader::CreateTextFormatToIRReader( abi_util::TextFormatToIRReader::CreateTextFormatToIRReader(
text_format, exported_headers); input_format, exported_headers);
assert(reader != nullptr); assert(reader != nullptr);
if (!reader->ReadDump(*it)) { if (!reader->ReadDump(*it)) {
llvm::errs() << "ReadDump failed\n"; llvm::errs() << "ReadDump failed\n";
@@ -201,14 +210,14 @@ bool HeaderAbiLinker::LinkAndDump() {
return false; return false;
} }
std::unique_ptr<abi_util::IRDumper> ir_dumper = std::unique_ptr<abi_util::IRDumper> ir_dumper =
abi_util::IRDumper::CreateIRDumper(text_format, out_dump_name_); abi_util::IRDumper::CreateIRDumper(output_format, out_dump_name_);
assert(ir_dumper != nullptr); assert(ir_dumper != nullptr);
AddElfSymbols(ir_dumper.get()); AddElfSymbols(ir_dumper.get());
// Create a reader, on which we never actually call ReadDump(), since multiple // Create a reader, on which we never actually call ReadDump(), since multiple
// dump files are associated with it. // dump files are associated with it.
std::unique_ptr<abi_util::TextFormatToIRReader> greader = std::unique_ptr<abi_util::TextFormatToIRReader> greader =
abi_util::TextFormatToIRReader::CreateTextFormatToIRReader( abi_util::TextFormatToIRReader::CreateTextFormatToIRReader(
text_format, &exported_headers_); input_format, &exported_headers_);
std::size_t max_threads = std::thread::hardware_concurrency(); std::size_t max_threads = std::thread::hardware_concurrency();
std::size_t num_threads = kSourcesPerBatchThread < dump_files_.size() ? std::size_t num_threads = kSourcesPerBatchThread < dump_files_.size() ?
std::min(dump_files_.size() / kSourcesPerBatchThread, std::min(dump_files_.size() / kSourcesPerBatchThread,

View File

@@ -35,7 +35,7 @@ def relative_to_abs_path_list(relative_path_list):
class Module(object): class Module(object):
def __init__(self, name, arch, srcs, version_script, cflags, def __init__(self, name, arch, srcs, version_script, cflags,
export_include_dirs, api): export_include_dirs, api, output_format=None):
self.name = name self.name = name
self.arch = arch self.arch = arch
self.srcs = relative_to_abs_path_list(srcs) 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.arch_cflags = ARCH_TARGET_CFLAGS.get(self.arch)
self.export_include_dirs = relative_to_abs_path_list(export_include_dirs) self.export_include_dirs = relative_to_abs_path_list(export_include_dirs)
self.api = api self.api = api
self.output_format = output_format
def get_name(self): def get_name(self):
return self.name return self.name
@@ -68,6 +69,9 @@ class Module(object):
def get_api(self): def get_api(self):
return self.api return self.api
def get_output_format(self):
return self.output_format
def make_lsdump(self, default_cflags): def make_lsdump(self, default_cflags):
""" For each source file, produce a .sdump file, and link them to form """ For each source file, produce a .sdump file, and link them to form
an lsump file""" an lsump file"""
@@ -82,7 +86,8 @@ class Module(object):
self.cflags + self.arch_cflags + default_cflags) self.cflags + self.arch_cflags + default_cflags)
return run_header_abi_linker(output_lsdump, dumps_to_link, return run_header_abi_linker(output_lsdump, dumps_to_link,
self.version_script, self.api, self.version_script, self.api,
self.arch) self.arch, self.output_format)
@staticmethod @staticmethod
def mutate_module_for_arch(module, target_arch): def mutate_module_for_arch(module, target_arch):
name = module.get_name() name = module.get_name()
@@ -91,8 +96,9 @@ class Module(object):
cflags = module.get_cflags() cflags = module.get_cflags()
export_include_dirs = module.get_export_include_dirs() export_include_dirs = module.get_export_include_dirs()
api = module.get_api() api = module.get_api()
output_format = module.get_output_format()
return Module(name, target_arch, srcs, version_script, cflags, return Module(name, target_arch, srcs, version_script, cflags,
export_include_dirs, api) export_include_dirs, api, output_format)
@staticmethod @staticmethod
def mutate_module_for_all_arches(module): def mutate_module_for_all_arches(module):
@@ -479,6 +485,19 @@ TEST_MODULES = [
arch = '', arch = '',
api = 'current', 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 } TEST_MODULES = { m.name: m for m in TEST_MODULES }

View File

@@ -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" : []
}

View File

@@ -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" : []
}

View File

@@ -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" : []
}

View File

@@ -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" : []
}

View File

@@ -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" : []
}

View File

@@ -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" : []
}

View File

@@ -278,6 +278,10 @@ class MyTest(unittest.TestCase):
"libpure_virtual_function", "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__': if __name__ == '__main__':
unittest.main() unittest.main()

View File

@@ -112,11 +112,14 @@ def run_header_abi_dumper_on_file(input_path, output_path,
cmd += ['-I', dir] cmd += ['-I', dir]
subprocess.check_call(cmd) 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""" """Link inputs, taking version_script into account"""
with tempfile.TemporaryDirectory() as tmp: with tempfile.TemporaryDirectory() as tmp:
cmd = ['header-abi-linker', '-o', output_path, '-v', version_script, cmd = ['header-abi-linker', '-o', output_path, '-v', version_script,
'-api', api, '-arch', arch] '-api', api, '-arch', arch]
if output_format:
cmd += ['-output-format', output_format]
cmd += inputs cmd += inputs
subprocess.check_call(cmd) subprocess.check_call(cmd)
with open(output_path, 'r') as f: with open(output_path, 'r') as f: