diff --git a/vndk/tools/header-checker/tests/gen_all.py b/vndk/tools/header-checker/tests/gen_all.py index 78ba2b31d..9bb62e9a8 100755 --- a/vndk/tools/header-checker/tests/gen_all.py +++ b/vndk/tools/header-checker/tests/gen_all.py @@ -20,10 +20,9 @@ FILE_EXTENSIONS = ['h', 'hpp', 'hxx', 'cpp', 'cc', 'c'] def make_and_copy_reference_dumps(module, default_cflags=[], reference_dump_dir=REFERENCE_DUMP_DIR): - lsdump_content = module.make_lsdump(default_cflags) - return copy_reference_dump_content(module.get_name(), lsdump_content, - reference_dump_dir, '', - module.get_arch()) + lsdump_content = module.make_dump(default_cflags) + return copy_reference_dump_content(module.get_dump_name(), lsdump_content, + reference_dump_dir, '', module.arch) def main(): patt = re.compile( diff --git a/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h b/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h new file mode 100644 index 000000000..6aaec0f1e --- /dev/null +++ b/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h @@ -0,0 +1,22 @@ +#ifndef KNOWN_ISSUES_H_ +#define KNOWN_ISSUES_H_ + +// header-abi-dumper is unable to output the following types correctly. + +// template struct NonTypeTemplate; +extern NonTypeTemplate<1> non_type_template; + +// namespace namespace1{ +// template class UsingTemplate; +// } +using namespace1::UsingTemplate; +extern UsingTemplate *using_template; + +// #define STDCALL __stdcall +STDCALL return_type function_with_calling_convention(); + +// class ClassInNameSpace; +template class ClassTemplate; +extern ClassTemplate<::ClassInNameSpace> template_arg_in_namespace; + +#endif // KNOWN_ISSUES_H_ diff --git a/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h b/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h new file mode 100644 index 000000000..30a11bde8 --- /dev/null +++ b/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h @@ -0,0 +1,27 @@ +#ifndef UNDECLARED_TYPES_H_ +#define UNDECLARED_TYPES_H_ + +using ::namespace_a::A; +typedef const namespace_b::B *B; +using C = namespace_c::C[]; + +extern A a; +extern namespace_b::template_b b; +extern const decltype(b) c; + +inline A &inline_function(template_c> d) { + LocalVar e; + return FunctionCall(d, e); +} + +class InvalidClass { + A member; + + D member_function(E); + virtual void virtual_function(float); +}; + +#define DECLARE_VARIABLE extern TemplateInMacro *template_in_macro +DECLARE_VARIABLE; + +#endif // UNDECLARED_TYPES_H_ diff --git a/vndk/tools/header-checker/tests/module.py b/vndk/tools/header-checker/tests/module.py index df2cb1f3e..e25aa5c77 100755 --- a/vndk/tools/header-checker/tests/module.py +++ b/vndk/tools/header-checker/tests/module.py @@ -8,6 +8,7 @@ import_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) import_path = os.path.abspath(os.path.join(import_path, 'utils')) sys.path.insert(1, import_path) +from utils import run_header_abi_dumper from utils import run_header_abi_dumper_on_file from utils import run_header_abi_linker from utils import TARGET_ARCHS @@ -36,55 +37,91 @@ def relative_to_abs_path_list(relative_path_list): abs_paths.append(relative_to_abs_path(relative_path)) return abs_paths + class Module(object): - def __init__(self, name, arch, srcs, version_script, cflags, - export_include_dirs, api, dumper_flags=[], linker_flags=[]): + def __init__(self, name, arch, cflags, export_include_dirs): self.name = name self.arch = arch - self.srcs = relative_to_abs_path_list(srcs) - self.version_script = relative_to_abs_path(version_script) self.cflags = cflags self.arch_cflags = [''] if self.arch != '': self.arch_cflags = ARCH_TARGET_CFLAGS.get(self.arch) self.export_include_dirs = relative_to_abs_path_list(export_include_dirs) + + def get_dump_name(self): + """Returns the module name followed by file extension.""" + raise NotImplementedError() + + def make_dump(self, default_cflags): + """Returns the dump content as a string.""" + raise NotImplementedError() + + def mutate_for_arch(self, target_arch): + """Returns a clone of this instance with arch=target_arch.""" + raise NotImplementedError() + + def mutate_for_all_arches(self): + modules = [] + for target_arch in TARGET_ARCHS: + modules.append(self.mutate_for_arch(target_arch)) + return modules + + @staticmethod + def get_test_modules(): + modules = [] + for module in TEST_MODULES.values(): + if module.arch == '': + modules += module.mutate_for_all_arches() + return modules + + @staticmethod + def get_test_module_by_name(name): + return TEST_MODULES.get(name) + + +class SdumpModule(Module): + def __init__(self, name, src, export_include_dirs=tuple(), cflags=tuple(), + arch='', dumper_flags=tuple()): + super(SdumpModule, self).__init__(name, arch, cflags, + export_include_dirs) + self.src = relative_to_abs_path(src) + self.dumper_flags = dumper_flags + + def get_dump_name(self): + return self.name + '.sdump' + + def make_dump(self, default_cflags): + return run_header_abi_dumper( + self.src, remove_absolute_paths=True, cflags=self.cflags, + export_include_dirs=self.export_include_dirs, + flags=self.dumper_flags) + + def mutate_for_arch(self, target_arch): + return SdumpModule(self.name, self.src, self.export_include_dirs, + self.cflags, target_arch, self.dumper_flags) + + +class LsdumpModule(Module): + def __init__(self, name, arch, srcs, version_script, cflags, + export_include_dirs, api, dumper_flags=tuple(), + linker_flags=tuple()): + super(LsdumpModule, self).__init__(name, arch, cflags, + export_include_dirs) + self.srcs = relative_to_abs_path_list(srcs) + self.version_script = relative_to_abs_path(version_script) self.api = api self.dumper_flags = dumper_flags self.linker_flags = linker_flags - def get_name(self): - return self.name + def get_dump_name(self): + return self.name + SOURCE_ABI_DUMP_EXT - def get_arch(self): - return self.arch - - def get_srcs(self): - return self.srcs - - def get_export_include_dirs(self): - return self.export_include_dirs - - def get_cflags(self): - return self.cflags - - def get_version_script(self): - return self.version_script - - def get_api(self): - return self.api - - def get_dumper_flags(self): - return self.dumper_flags - - def get_linker_flags(self): - return self.linker_flags - - def make_lsdump(self, default_cflags): + def make_dump(self, default_cflags): """ For each source file, produce a .sdump file, and link them to form an lsump file""" dumps_to_link = [] with tempfile.TemporaryDirectory() as tmp: - output_lsdump = os.path.join(tmp, self.name) + SOURCE_ABI_DUMP_EXT + output_lsdump = os.path.join(tmp, self.get_dump_name()) for src in self.srcs: output_path = os.path.join(tmp, os.path.basename(src)) + '.sdump' dumps_to_link.append(output_path) @@ -96,40 +133,25 @@ class Module(object): self.version_script, self.api, self.arch, self.linker_flags) - @staticmethod - def mutate_module_for_arch(module, target_arch): - name = module.get_name() - srcs = module.get_srcs() - version_script = module.get_version_script() - cflags = module.get_cflags() - export_include_dirs = module.get_export_include_dirs() - api = module.get_api() - dumper_flags = module.get_dumper_flags() - linker_flags = module.get_linker_flags() - return Module(name, target_arch, srcs, version_script, cflags, - export_include_dirs, api, dumper_flags, linker_flags) + def mutate_for_arch(self, target_arch): + return LsdumpModule(self.name, target_arch, self.srcs, + self.version_script, self.cflags, + self.export_include_dirs, self.api, + self.dumper_flags, self.linker_flags) - @staticmethod - def mutate_module_for_all_arches(module): - modules = [] - for target_arch in TARGET_ARCHS: - modules.append(Module.mutate_module_for_arch(module, target_arch)) - return modules - - @staticmethod - def get_test_modules(): - modules = [] - for module in TEST_MODULES.values(): - if module.get_arch() == '': - modules += Module.mutate_module_for_all_arches(module) - return modules - - @staticmethod - def get_test_module_by_name(name): - return TEST_MODULES[name] TEST_MODULES = [ - Module( + SdumpModule( + name='undeclared_types.h', + src='integration/cpp/header/undeclared_types.h', + arch='', + dumper_flags=['-suppress-errors', '-output-format', 'Json']), + SdumpModule( + name='known_issues.h', + src='integration/cpp/header/known_issues.h', + arch='', + dumper_flags=['-suppress-errors', '-output-format', 'Json']), + LsdumpModule( name='libc_and_cpp', srcs=[ 'integration/c_and_cpp/source1.cpp', @@ -141,7 +163,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libc_and_cpp_with_opaque_ptr_a', srcs=[ 'integration/c_and_cpp/source1.cpp', @@ -153,7 +175,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libc_and_cpp_with_opaque_ptr_b', srcs=[ 'integration/c_and_cpp/source1.cpp', @@ -165,7 +187,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libc_and_cpp_with_unused_struct', srcs=[ 'integration/c_and_cpp/source1.cpp', @@ -177,7 +199,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libc_and_cpp_with_unused_cstruct', srcs=[ 'integration/c_and_cpp/source1.cpp', @@ -189,7 +211,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -202,7 +224,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_odr', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -215,7 +237,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_add_function', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -228,7 +250,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_add_function_and_unexported_elf', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -241,7 +263,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_change_function_access', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -254,7 +276,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_add_global_variable', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -267,7 +289,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_add_global_variable_private', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -280,7 +302,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_return_type_diff', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -293,7 +315,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_parameter_type_diff', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -306,7 +328,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_vtable_diff', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -319,7 +341,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_member_diff', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -332,7 +354,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_member_fake_diff', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -345,7 +367,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_member_cv_diff', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -358,7 +380,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_change_member_access', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -371,7 +393,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_member_integral_type_diff', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -384,7 +406,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_enum_diff', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -397,7 +419,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_enum_extended', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -410,7 +432,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_unreferenced_elf_symbol_removed', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -423,7 +445,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libreproducability', srcs=['integration/c_and_cpp/reproducability.c'], version_script='integration/c_and_cpp/repro_map.txt', @@ -432,7 +454,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_member_name_changed', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -445,7 +467,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_function_pointer', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -458,7 +480,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_function_pointer_parameter_added', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -472,7 +494,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_internal_public_struct', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -486,7 +508,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_internal_private_struct', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -499,7 +521,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_inheritance_type_changed', srcs=[ 'integration/cpp/gold/golden_1.cpp', @@ -512,7 +534,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libpure_virtual_function', srcs=['integration/cpp/pure_virtual/pure_virtual_function.cpp'], export_include_dirs=['integration/cpp/pure_virtual/include'], @@ -521,7 +543,7 @@ TEST_MODULES = [ arch='', api='current', ), - Module( + LsdumpModule( name='libgolden_cpp_json', srcs=[ 'integration/cpp/gold/golden_1.cpp', diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/arm/known_issues.h.sdump new file mode 100644 index 000000000..482c1b265 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/arm/known_issues.h.sdump @@ -0,0 +1,46 @@ +{ + "array_types" : [], + "builtin_types" : + [ + { + "alignment" : 4, + "is_integral" : true, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 4 + } + ], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : [], + "global_vars" : + [ + { + "linker_set_key" : "non_type_template", + "name" : "non_type_template", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "return_type", + "name" : "return_type", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "template_arg_in_namespace", + "name" : "template_arg_in_namespace", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + } + ], + "lvalue_reference_types" : [], + "pointer_types" : [], + "qualified_types" : [], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/arm/undeclared_types.h.sdump new file mode 100644 index 000000000..ff0ffb70a --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/arm/undeclared_types.h.sdump @@ -0,0 +1,113 @@ +{ + "array_types" : [], + "builtin_types" : [], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : + [ + { + "function_name" : "inline_function", + "linker_set_key" : "_Z15inline_function10template_cIJ10template_dIJA_N11namespace_c1CEEEEE", + "parameters" : + [ + { + "referenced_type" : "type-5" + } + ], + "return_type" : "type-4", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "access" : "private", + "function_name" : "InvalidClass::member_function", + "linker_set_key" : "_ZN12InvalidClass15member_functionE1E", + "parameters" : + [ + { + "is_this_ptr" : true, + "referenced_type" : "type-8" + }, + { + "referenced_type" : "type-9" + } + ], + "return_type" : "type-6", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "global_vars" : + [ + { + "linker_set_key" : "a", + "name" : "a", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "b", + "name" : "b", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "c", + "name" : "c", + "referenced_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "template_in_macro", + "name" : "template_in_macro", + "referenced_type" : "type-11", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "lvalue_reference_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "namespace_a::A &", + "name" : "namespace_a::A &", + "referenced_type" : "type-1", + "self_type" : "type-4", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "pointer_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "InvalidClass *", + "name" : "InvalidClass *", + "referenced_type" : "type-7", + "self_type" : "type-8", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "alignment" : 8, + "linker_set_key" : "TemplateInMacro *", + "name" : "TemplateInMacro *", + "referenced_type" : "type-10", + "self_type" : "type-11", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "qualified_types" : + [ + { + "is_const" : true, + "linker_set_key" : "const namespace_b::template_b", + "name" : "const namespace_b::template_b", + "referenced_type" : "type-2", + "self_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/known_issues.h.sdump new file mode 100644 index 000000000..482c1b265 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/known_issues.h.sdump @@ -0,0 +1,46 @@ +{ + "array_types" : [], + "builtin_types" : + [ + { + "alignment" : 4, + "is_integral" : true, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 4 + } + ], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : [], + "global_vars" : + [ + { + "linker_set_key" : "non_type_template", + "name" : "non_type_template", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "return_type", + "name" : "return_type", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "template_arg_in_namespace", + "name" : "template_arg_in_namespace", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + } + ], + "lvalue_reference_types" : [], + "pointer_types" : [], + "qualified_types" : [], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/undeclared_types.h.sdump new file mode 100644 index 000000000..ff0ffb70a --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/undeclared_types.h.sdump @@ -0,0 +1,113 @@ +{ + "array_types" : [], + "builtin_types" : [], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : + [ + { + "function_name" : "inline_function", + "linker_set_key" : "_Z15inline_function10template_cIJ10template_dIJA_N11namespace_c1CEEEEE", + "parameters" : + [ + { + "referenced_type" : "type-5" + } + ], + "return_type" : "type-4", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "access" : "private", + "function_name" : "InvalidClass::member_function", + "linker_set_key" : "_ZN12InvalidClass15member_functionE1E", + "parameters" : + [ + { + "is_this_ptr" : true, + "referenced_type" : "type-8" + }, + { + "referenced_type" : "type-9" + } + ], + "return_type" : "type-6", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "global_vars" : + [ + { + "linker_set_key" : "a", + "name" : "a", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "b", + "name" : "b", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "c", + "name" : "c", + "referenced_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "template_in_macro", + "name" : "template_in_macro", + "referenced_type" : "type-11", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "lvalue_reference_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "namespace_a::A &", + "name" : "namespace_a::A &", + "referenced_type" : "type-1", + "self_type" : "type-4", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "pointer_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "InvalidClass *", + "name" : "InvalidClass *", + "referenced_type" : "type-7", + "self_type" : "type-8", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "alignment" : 8, + "linker_set_key" : "TemplateInMacro *", + "name" : "TemplateInMacro *", + "referenced_type" : "type-10", + "self_type" : "type-11", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "qualified_types" : + [ + { + "is_const" : true, + "linker_set_key" : "const namespace_b::template_b", + "name" : "const namespace_b::template_b", + "referenced_type" : "type-2", + "self_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/mips/known_issues.h.sdump new file mode 100644 index 000000000..482c1b265 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/mips/known_issues.h.sdump @@ -0,0 +1,46 @@ +{ + "array_types" : [], + "builtin_types" : + [ + { + "alignment" : 4, + "is_integral" : true, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 4 + } + ], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : [], + "global_vars" : + [ + { + "linker_set_key" : "non_type_template", + "name" : "non_type_template", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "return_type", + "name" : "return_type", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "template_arg_in_namespace", + "name" : "template_arg_in_namespace", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + } + ], + "lvalue_reference_types" : [], + "pointer_types" : [], + "qualified_types" : [], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/mips/undeclared_types.h.sdump new file mode 100644 index 000000000..ff0ffb70a --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/mips/undeclared_types.h.sdump @@ -0,0 +1,113 @@ +{ + "array_types" : [], + "builtin_types" : [], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : + [ + { + "function_name" : "inline_function", + "linker_set_key" : "_Z15inline_function10template_cIJ10template_dIJA_N11namespace_c1CEEEEE", + "parameters" : + [ + { + "referenced_type" : "type-5" + } + ], + "return_type" : "type-4", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "access" : "private", + "function_name" : "InvalidClass::member_function", + "linker_set_key" : "_ZN12InvalidClass15member_functionE1E", + "parameters" : + [ + { + "is_this_ptr" : true, + "referenced_type" : "type-8" + }, + { + "referenced_type" : "type-9" + } + ], + "return_type" : "type-6", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "global_vars" : + [ + { + "linker_set_key" : "a", + "name" : "a", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "b", + "name" : "b", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "c", + "name" : "c", + "referenced_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "template_in_macro", + "name" : "template_in_macro", + "referenced_type" : "type-11", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "lvalue_reference_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "namespace_a::A &", + "name" : "namespace_a::A &", + "referenced_type" : "type-1", + "self_type" : "type-4", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "pointer_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "InvalidClass *", + "name" : "InvalidClass *", + "referenced_type" : "type-7", + "self_type" : "type-8", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "alignment" : 8, + "linker_set_key" : "TemplateInMacro *", + "name" : "TemplateInMacro *", + "referenced_type" : "type-10", + "self_type" : "type-11", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "qualified_types" : + [ + { + "is_const" : true, + "linker_set_key" : "const namespace_b::template_b", + "name" : "const namespace_b::template_b", + "referenced_type" : "type-2", + "self_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/known_issues.h.sdump new file mode 100644 index 000000000..482c1b265 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/known_issues.h.sdump @@ -0,0 +1,46 @@ +{ + "array_types" : [], + "builtin_types" : + [ + { + "alignment" : 4, + "is_integral" : true, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 4 + } + ], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : [], + "global_vars" : + [ + { + "linker_set_key" : "non_type_template", + "name" : "non_type_template", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "return_type", + "name" : "return_type", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "template_arg_in_namespace", + "name" : "template_arg_in_namespace", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + } + ], + "lvalue_reference_types" : [], + "pointer_types" : [], + "qualified_types" : [], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/undeclared_types.h.sdump new file mode 100644 index 000000000..ff0ffb70a --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/undeclared_types.h.sdump @@ -0,0 +1,113 @@ +{ + "array_types" : [], + "builtin_types" : [], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : + [ + { + "function_name" : "inline_function", + "linker_set_key" : "_Z15inline_function10template_cIJ10template_dIJA_N11namespace_c1CEEEEE", + "parameters" : + [ + { + "referenced_type" : "type-5" + } + ], + "return_type" : "type-4", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "access" : "private", + "function_name" : "InvalidClass::member_function", + "linker_set_key" : "_ZN12InvalidClass15member_functionE1E", + "parameters" : + [ + { + "is_this_ptr" : true, + "referenced_type" : "type-8" + }, + { + "referenced_type" : "type-9" + } + ], + "return_type" : "type-6", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "global_vars" : + [ + { + "linker_set_key" : "a", + "name" : "a", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "b", + "name" : "b", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "c", + "name" : "c", + "referenced_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "template_in_macro", + "name" : "template_in_macro", + "referenced_type" : "type-11", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "lvalue_reference_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "namespace_a::A &", + "name" : "namespace_a::A &", + "referenced_type" : "type-1", + "self_type" : "type-4", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "pointer_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "InvalidClass *", + "name" : "InvalidClass *", + "referenced_type" : "type-7", + "self_type" : "type-8", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "alignment" : 8, + "linker_set_key" : "TemplateInMacro *", + "name" : "TemplateInMacro *", + "referenced_type" : "type-10", + "self_type" : "type-11", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "qualified_types" : + [ + { + "is_const" : true, + "linker_set_key" : "const namespace_b::template_b", + "name" : "const namespace_b::template_b", + "referenced_type" : "type-2", + "self_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/x86/known_issues.h.sdump new file mode 100644 index 000000000..482c1b265 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/x86/known_issues.h.sdump @@ -0,0 +1,46 @@ +{ + "array_types" : [], + "builtin_types" : + [ + { + "alignment" : 4, + "is_integral" : true, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 4 + } + ], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : [], + "global_vars" : + [ + { + "linker_set_key" : "non_type_template", + "name" : "non_type_template", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "return_type", + "name" : "return_type", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "template_arg_in_namespace", + "name" : "template_arg_in_namespace", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + } + ], + "lvalue_reference_types" : [], + "pointer_types" : [], + "qualified_types" : [], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/x86/undeclared_types.h.sdump new file mode 100644 index 000000000..ff0ffb70a --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/x86/undeclared_types.h.sdump @@ -0,0 +1,113 @@ +{ + "array_types" : [], + "builtin_types" : [], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : + [ + { + "function_name" : "inline_function", + "linker_set_key" : "_Z15inline_function10template_cIJ10template_dIJA_N11namespace_c1CEEEEE", + "parameters" : + [ + { + "referenced_type" : "type-5" + } + ], + "return_type" : "type-4", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "access" : "private", + "function_name" : "InvalidClass::member_function", + "linker_set_key" : "_ZN12InvalidClass15member_functionE1E", + "parameters" : + [ + { + "is_this_ptr" : true, + "referenced_type" : "type-8" + }, + { + "referenced_type" : "type-9" + } + ], + "return_type" : "type-6", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "global_vars" : + [ + { + "linker_set_key" : "a", + "name" : "a", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "b", + "name" : "b", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "c", + "name" : "c", + "referenced_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "template_in_macro", + "name" : "template_in_macro", + "referenced_type" : "type-11", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "lvalue_reference_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "namespace_a::A &", + "name" : "namespace_a::A &", + "referenced_type" : "type-1", + "self_type" : "type-4", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "pointer_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "InvalidClass *", + "name" : "InvalidClass *", + "referenced_type" : "type-7", + "self_type" : "type-8", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "alignment" : 8, + "linker_set_key" : "TemplateInMacro *", + "name" : "TemplateInMacro *", + "referenced_type" : "type-10", + "self_type" : "type-11", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "qualified_types" : + [ + { + "is_const" : true, + "linker_set_key" : "const namespace_b::template_b", + "name" : "const namespace_b::template_b", + "referenced_type" : "type-2", + "self_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/known_issues.h.sdump new file mode 100644 index 000000000..482c1b265 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/known_issues.h.sdump @@ -0,0 +1,46 @@ +{ + "array_types" : [], + "builtin_types" : + [ + { + "alignment" : 4, + "is_integral" : true, + "linker_set_key" : "int", + "name" : "int", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 4 + } + ], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : [], + "global_vars" : + [ + { + "linker_set_key" : "non_type_template", + "name" : "non_type_template", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "return_type", + "name" : "return_type", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + }, + { + "linker_set_key" : "template_arg_in_namespace", + "name" : "template_arg_in_namespace", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h" + } + ], + "lvalue_reference_types" : [], + "pointer_types" : [], + "qualified_types" : [], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/undeclared_types.h.sdump new file mode 100644 index 000000000..ff0ffb70a --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/undeclared_types.h.sdump @@ -0,0 +1,113 @@ +{ + "array_types" : [], + "builtin_types" : [], + "elf_functions" : [], + "elf_objects" : [], + "enum_types" : [], + "function_types" : [], + "functions" : + [ + { + "function_name" : "inline_function", + "linker_set_key" : "_Z15inline_function10template_cIJ10template_dIJA_N11namespace_c1CEEEEE", + "parameters" : + [ + { + "referenced_type" : "type-5" + } + ], + "return_type" : "type-4", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "access" : "private", + "function_name" : "InvalidClass::member_function", + "linker_set_key" : "_ZN12InvalidClass15member_functionE1E", + "parameters" : + [ + { + "is_this_ptr" : true, + "referenced_type" : "type-8" + }, + { + "referenced_type" : "type-9" + } + ], + "return_type" : "type-6", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "global_vars" : + [ + { + "linker_set_key" : "a", + "name" : "a", + "referenced_type" : "type-1", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "b", + "name" : "b", + "referenced_type" : "type-2", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "c", + "name" : "c", + "referenced_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "linker_set_key" : "template_in_macro", + "name" : "template_in_macro", + "referenced_type" : "type-11", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "lvalue_reference_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "namespace_a::A &", + "name" : "namespace_a::A &", + "referenced_type" : "type-1", + "self_type" : "type-4", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "pointer_types" : + [ + { + "alignment" : 8, + "linker_set_key" : "InvalidClass *", + "name" : "InvalidClass *", + "referenced_type" : "type-7", + "self_type" : "type-8", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + }, + { + "alignment" : 8, + "linker_set_key" : "TemplateInMacro *", + "name" : "TemplateInMacro *", + "referenced_type" : "type-10", + "self_type" : "type-11", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "qualified_types" : + [ + { + "is_const" : true, + "linker_set_key" : "const namespace_b::template_b", + "name" : "const namespace_b::template_b", + "referenced_type" : "type-2", + "self_type" : "type-3", + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h" + } + ], + "record_types" : [], + "rvalue_reference_types" : [] +} diff --git a/vndk/tools/header-checker/tests/test.py b/vndk/tools/header-checker/tests/test.py index ad2db8452..7540bc8b0 100755 --- a/vndk/tools/header-checker/tests/test.py +++ b/vndk/tools/header-checker/tests/test.py @@ -27,12 +27,6 @@ class MyTest(unittest.TestCase): def setUpClass(cls): cls.maxDiff = None - def get_reference_dump_path(self, name, target_arch): - ref_dump_dir = os.path.join(REF_DUMP_DIR, target_arch) - ref_dump_path = os.path.join(ref_dump_dir, - name + SOURCE_ABI_DUMP_EXT) - return ref_dump_path - def run_and_compare(self, input_path, expected_path, cflags=[]): with open(expected_path, 'r') as f: expected_output = f.read() @@ -62,15 +56,16 @@ class MyTest(unittest.TestCase): 'test', target_arch, expected_return_code, flags) - def create_ref_dump(self, name, dir_name, target_arch): - module_bare = Module.get_test_module_by_name(name) - module = Module.mutate_module_for_arch(module_bare, target_arch) + def create_ref_dump(self, module_bare, dir_name, target_arch): + module = module_bare.mutate_for_arch(target_arch) return make_and_copy_reference_dumps(module, [], dir_name) def get_or_create_ref_dump(self, name, target_arch, dir_name, create): + module = Module.get_test_module_by_name(name) if create == True: - return self.create_ref_dump(name, dir_name, target_arch) - return self.get_reference_dump_path(name, target_arch) + return self.create_ref_dump(module, dir_name, target_arch) + return os.path.join(REF_DUMP_DIR, target_arch, + module.get_dump_name() if module else name) def prepare_and_run_abi_diff_all_archs(self, old_lib, new_lib, expected_return_code, flags=[], @@ -109,6 +104,14 @@ class MyTest(unittest.TestCase): def test_example3_h(self): self.run_and_compare_name_cpp('example3.h') + def test_undeclared_types_h(self): + self.prepare_and_absolute_diff_all_archs( + 'undeclared_types.h', 'undeclared_types.h') + + def test_known_issues_h(self): + self.prepare_and_absolute_diff_all_archs( + 'known_issues.h', 'known_issues.h') + def test_libc_and_cpp(self): self.prepare_and_run_abi_diff_all_archs( "libc_and_cpp", "libc_and_cpp", 0) @@ -211,8 +214,8 @@ class MyTest(unittest.TestCase): def test_libgolden_cpp_fabricated_function_ast_removed_diff(self): self.prepare_and_run_abi_diff_all_archs( - "libgolden_cpp_fabricated_function_ast_removed", "libgolden_cpp", 0, - [], False) + "libgolden_cpp_fabricated_function_ast_removed.so.lsdump", + "libgolden_cpp", 0, [], False) def test_libgolden_cpp_member_fake_diff(self): self.prepare_and_run_abi_diff_all_archs( diff --git a/vndk/tools/header-checker/utils/utils.py b/vndk/tools/header-checker/utils/utils.py index fbccbebc8..74b2aec84 100644 --- a/vndk/tools/header-checker/utils/utils.py +++ b/vndk/tools/header-checker/utils/utils.py @@ -78,14 +78,13 @@ def copy_reference_dump(lib_path, reference_dump_dir, compress): return reference_dump_path -def copy_reference_dump_content(lib_name, output_content, +def copy_reference_dump_content(file_name, output_content, reference_dump_dir_stem, reference_dump_dir_insertion, lib_arch): reference_dump_dir = get_reference_dump_dir(reference_dump_dir_stem, reference_dump_dir_insertion, lib_arch) - reference_dump_path = os.path.join(reference_dump_dir, - lib_name + SOURCE_ABI_DUMP_EXT) + reference_dump_path = os.path.join(reference_dump_dir, file_name) os.makedirs(os.path.dirname(reference_dump_path), exist_ok=True) with open(reference_dump_path, 'w') as f: f.write(output_content) @@ -100,11 +99,12 @@ def read_output_content(output_path, replace_str): def run_header_abi_dumper(input_path, remove_absolute_paths, cflags=tuple(), - export_include_dirs=EXPORTED_HEADERS_DIR): + export_include_dirs=EXPORTED_HEADERS_DIR, + flags=tuple()): with tempfile.TemporaryDirectory() as tmp: output_path = os.path.join(tmp, os.path.basename(input_path)) + '.dump' run_header_abi_dumper_on_file(input_path, output_path, - export_include_dirs, cflags) + export_include_dirs, cflags, flags) if remove_absolute_paths: return read_output_content(output_path, AOSP_DIR) with open(output_path, 'r') as f: