Merge "Add unit tests for header-abi-dumper -suppress-errors"

This commit is contained in:
Hsin-Yi Chen
2018-11-30 04:38:58 +00:00
committed by Gerrit Code Review
18 changed files with 1143 additions and 116 deletions

View File

@@ -20,10 +20,9 @@ FILE_EXTENSIONS = ['h', 'hpp', 'hxx', 'cpp', 'cc', 'c']
def make_and_copy_reference_dumps(module, default_cflags=[], def make_and_copy_reference_dumps(module, default_cflags=[],
reference_dump_dir=REFERENCE_DUMP_DIR): reference_dump_dir=REFERENCE_DUMP_DIR):
lsdump_content = module.make_lsdump(default_cflags) lsdump_content = module.make_dump(default_cflags)
return copy_reference_dump_content(module.get_name(), lsdump_content, return copy_reference_dump_content(module.get_dump_name(), lsdump_content,
reference_dump_dir, '', reference_dump_dir, '', module.arch)
module.get_arch())
def main(): def main():
patt = re.compile( patt = re.compile(

View File

@@ -0,0 +1,22 @@
#ifndef KNOWN_ISSUES_H_
#define KNOWN_ISSUES_H_
// header-abi-dumper is unable to output the following types correctly.
// template<int I> struct NonTypeTemplate;
extern NonTypeTemplate<1> non_type_template;
// namespace namespace1{
// template<typename T> class UsingTemplate;
// }
using namespace1::UsingTemplate;
extern UsingTemplate<float> *using_template;
// #define STDCALL __stdcall
STDCALL return_type function_with_calling_convention();
// class ClassInNameSpace;
template <typename T> class ClassTemplate;
extern ClassTemplate<::ClassInNameSpace> template_arg_in_namespace;
#endif // KNOWN_ISSUES_H_

View File

@@ -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> b;
extern const decltype(b) c;
inline A &inline_function(template_c<template_d<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<F> *template_in_macro
DECLARE_VARIABLE;
#endif // UNDECLARED_TYPES_H_

View File

@@ -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')) import_path = os.path.abspath(os.path.join(import_path, 'utils'))
sys.path.insert(1, import_path) 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_dumper_on_file
from utils import run_header_abi_linker from utils import run_header_abi_linker
from utils import TARGET_ARCHS 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)) abs_paths.append(relative_to_abs_path(relative_path))
return abs_paths return abs_paths
class Module(object): class Module(object):
def __init__(self, name, arch, srcs, version_script, cflags, def __init__(self, name, arch, cflags, export_include_dirs):
export_include_dirs, api, dumper_flags=[], linker_flags=[]):
self.name = name self.name = name
self.arch = arch self.arch = arch
self.srcs = relative_to_abs_path_list(srcs)
self.version_script = relative_to_abs_path(version_script)
self.cflags = cflags self.cflags = cflags
self.arch_cflags = [''] self.arch_cflags = ['']
if self.arch != '': if self.arch != '':
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)
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.api = api
self.dumper_flags = dumper_flags self.dumper_flags = dumper_flags
self.linker_flags = linker_flags self.linker_flags = linker_flags
def get_name(self): def get_dump_name(self):
return self.name return self.name + SOURCE_ABI_DUMP_EXT
def get_arch(self): def make_dump(self, default_cflags):
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):
""" 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"""
dumps_to_link = [] dumps_to_link = []
with tempfile.TemporaryDirectory() as tmp: 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: for src in self.srcs:
output_path = os.path.join(tmp, os.path.basename(src)) + '.sdump' output_path = os.path.join(tmp, os.path.basename(src)) + '.sdump'
dumps_to_link.append(output_path) dumps_to_link.append(output_path)
@@ -96,40 +133,25 @@ class Module(object):
self.version_script, self.api, self.version_script, self.api,
self.arch, self.linker_flags) self.arch, self.linker_flags)
@staticmethod def mutate_for_arch(self, target_arch):
def mutate_module_for_arch(module, target_arch): return LsdumpModule(self.name, target_arch, self.srcs,
name = module.get_name() self.version_script, self.cflags,
srcs = module.get_srcs() self.export_include_dirs, self.api,
version_script = module.get_version_script() self.dumper_flags, self.linker_flags)
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)
@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 = [ 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', name='libc_and_cpp',
srcs=[ srcs=[
'integration/c_and_cpp/source1.cpp', 'integration/c_and_cpp/source1.cpp',
@@ -141,7 +163,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libc_and_cpp_with_opaque_ptr_a', name='libc_and_cpp_with_opaque_ptr_a',
srcs=[ srcs=[
'integration/c_and_cpp/source1.cpp', 'integration/c_and_cpp/source1.cpp',
@@ -153,7 +175,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libc_and_cpp_with_opaque_ptr_b', name='libc_and_cpp_with_opaque_ptr_b',
srcs=[ srcs=[
'integration/c_and_cpp/source1.cpp', 'integration/c_and_cpp/source1.cpp',
@@ -165,7 +187,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libc_and_cpp_with_unused_struct', name='libc_and_cpp_with_unused_struct',
srcs=[ srcs=[
'integration/c_and_cpp/source1.cpp', 'integration/c_and_cpp/source1.cpp',
@@ -177,7 +199,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libc_and_cpp_with_unused_cstruct', name='libc_and_cpp_with_unused_cstruct',
srcs=[ srcs=[
'integration/c_and_cpp/source1.cpp', 'integration/c_and_cpp/source1.cpp',
@@ -189,7 +211,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp', name='libgolden_cpp',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -202,7 +224,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_odr', name='libgolden_cpp_odr',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -215,7 +237,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_add_function', name='libgolden_cpp_add_function',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -228,7 +250,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_add_function_and_unexported_elf', name='libgolden_cpp_add_function_and_unexported_elf',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -241,7 +263,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_change_function_access', name='libgolden_cpp_change_function_access',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -254,7 +276,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_add_global_variable', name='libgolden_cpp_add_global_variable',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -267,7 +289,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_add_global_variable_private', name='libgolden_cpp_add_global_variable_private',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -280,7 +302,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_return_type_diff', name='libgolden_cpp_return_type_diff',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -293,7 +315,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_parameter_type_diff', name='libgolden_cpp_parameter_type_diff',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -306,7 +328,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_vtable_diff', name='libgolden_cpp_vtable_diff',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -319,7 +341,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_member_diff', name='libgolden_cpp_member_diff',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -332,7 +354,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_member_fake_diff', name='libgolden_cpp_member_fake_diff',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -345,7 +367,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_member_cv_diff', name='libgolden_cpp_member_cv_diff',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -358,7 +380,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_change_member_access', name='libgolden_cpp_change_member_access',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -371,7 +393,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_member_integral_type_diff', name='libgolden_cpp_member_integral_type_diff',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -384,7 +406,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_enum_diff', name='libgolden_cpp_enum_diff',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -397,7 +419,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_enum_extended', name='libgolden_cpp_enum_extended',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -410,7 +432,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_unreferenced_elf_symbol_removed', name='libgolden_cpp_unreferenced_elf_symbol_removed',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -423,7 +445,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libreproducability', name='libreproducability',
srcs=['integration/c_and_cpp/reproducability.c'], srcs=['integration/c_and_cpp/reproducability.c'],
version_script='integration/c_and_cpp/repro_map.txt', version_script='integration/c_and_cpp/repro_map.txt',
@@ -432,7 +454,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_member_name_changed', name='libgolden_cpp_member_name_changed',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -445,7 +467,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_function_pointer', name='libgolden_cpp_function_pointer',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -458,7 +480,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_function_pointer_parameter_added', name='libgolden_cpp_function_pointer_parameter_added',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -472,7 +494,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_internal_public_struct', name='libgolden_cpp_internal_public_struct',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -486,7 +508,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_internal_private_struct', name='libgolden_cpp_internal_private_struct',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -499,7 +521,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_inheritance_type_changed', name='libgolden_cpp_inheritance_type_changed',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',
@@ -512,7 +534,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libpure_virtual_function', name='libpure_virtual_function',
srcs=['integration/cpp/pure_virtual/pure_virtual_function.cpp'], srcs=['integration/cpp/pure_virtual/pure_virtual_function.cpp'],
export_include_dirs=['integration/cpp/pure_virtual/include'], export_include_dirs=['integration/cpp/pure_virtual/include'],
@@ -521,7 +543,7 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
Module( LsdumpModule(
name='libgolden_cpp_json', name='libgolden_cpp_json',
srcs=[ srcs=[
'integration/cpp/gold/golden_1.cpp', 'integration/cpp/gold/golden_1.cpp',

View File

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

View File

@@ -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<F> *",
"name" : "TemplateInMacro<F> *",
"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<const B *>",
"name" : "const namespace_b::template_b<const 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" : []
}

View File

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

View File

@@ -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<F> *",
"name" : "TemplateInMacro<F> *",
"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<const B *>",
"name" : "const namespace_b::template_b<const 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" : []
}

View File

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

View File

@@ -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<F> *",
"name" : "TemplateInMacro<F> *",
"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<const B *>",
"name" : "const namespace_b::template_b<const 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" : []
}

View File

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

View File

@@ -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<F> *",
"name" : "TemplateInMacro<F> *",
"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<const B *>",
"name" : "const namespace_b::template_b<const 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" : []
}

View File

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

View File

@@ -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<F> *",
"name" : "TemplateInMacro<F> *",
"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<const B *>",
"name" : "const namespace_b::template_b<const 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" : []
}

View File

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

View File

@@ -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<F> *",
"name" : "TemplateInMacro<F> *",
"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<const B *>",
"name" : "const namespace_b::template_b<const 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" : []
}

View File

@@ -27,12 +27,6 @@ class MyTest(unittest.TestCase):
def setUpClass(cls): def setUpClass(cls):
cls.maxDiff = None 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=[]): def run_and_compare(self, input_path, expected_path, cflags=[]):
with open(expected_path, 'r') as f: with open(expected_path, 'r') as f:
expected_output = f.read() expected_output = f.read()
@@ -62,15 +56,16 @@ class MyTest(unittest.TestCase):
'test', target_arch, expected_return_code, 'test', target_arch, expected_return_code,
flags) flags)
def create_ref_dump(self, name, dir_name, target_arch): def create_ref_dump(self, module_bare, dir_name, target_arch):
module_bare = Module.get_test_module_by_name(name) module = module_bare.mutate_for_arch(target_arch)
module = Module.mutate_module_for_arch(module_bare, target_arch)
return make_and_copy_reference_dumps(module, [], dir_name) return make_and_copy_reference_dumps(module, [], dir_name)
def get_or_create_ref_dump(self, name, target_arch, dir_name, create): def get_or_create_ref_dump(self, name, target_arch, dir_name, create):
module = Module.get_test_module_by_name(name)
if create == True: if create == True:
return self.create_ref_dump(name, dir_name, target_arch) return self.create_ref_dump(module, dir_name, target_arch)
return self.get_reference_dump_path(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, def prepare_and_run_abi_diff_all_archs(self, old_lib, new_lib,
expected_return_code, flags=[], expected_return_code, flags=[],
@@ -109,6 +104,14 @@ class MyTest(unittest.TestCase):
def test_example3_h(self): def test_example3_h(self):
self.run_and_compare_name_cpp('example3.h') 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): def test_libc_and_cpp(self):
self.prepare_and_run_abi_diff_all_archs( self.prepare_and_run_abi_diff_all_archs(
"libc_and_cpp", "libc_and_cpp", 0) "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): def test_libgolden_cpp_fabricated_function_ast_removed_diff(self):
self.prepare_and_run_abi_diff_all_archs( self.prepare_and_run_abi_diff_all_archs(
"libgolden_cpp_fabricated_function_ast_removed", "libgolden_cpp", 0, "libgolden_cpp_fabricated_function_ast_removed.so.lsdump",
[], False) "libgolden_cpp", 0, [], False)
def test_libgolden_cpp_member_fake_diff(self): def test_libgolden_cpp_member_fake_diff(self):
self.prepare_and_run_abi_diff_all_archs( self.prepare_and_run_abi_diff_all_archs(

View File

@@ -78,14 +78,13 @@ def copy_reference_dump(lib_path, reference_dump_dir, compress):
return reference_dump_path 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_stem,
reference_dump_dir_insertion, lib_arch): reference_dump_dir_insertion, lib_arch):
reference_dump_dir = get_reference_dump_dir(reference_dump_dir_stem, reference_dump_dir = get_reference_dump_dir(reference_dump_dir_stem,
reference_dump_dir_insertion, reference_dump_dir_insertion,
lib_arch) lib_arch)
reference_dump_path = os.path.join(reference_dump_dir, reference_dump_path = os.path.join(reference_dump_dir, file_name)
lib_name + SOURCE_ABI_DUMP_EXT)
os.makedirs(os.path.dirname(reference_dump_path), exist_ok=True) os.makedirs(os.path.dirname(reference_dump_path), exist_ok=True)
with open(reference_dump_path, 'w') as f: with open(reference_dump_path, 'w') as f:
f.write(output_content) 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(), 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: with tempfile.TemporaryDirectory() as tmp:
output_path = os.path.join(tmp, os.path.basename(input_path)) + '.dump' output_path = os.path.join(tmp, os.path.basename(input_path)) + '.dump'
run_header_abi_dumper_on_file(input_path, output_path, run_header_abi_dumper_on_file(input_path, output_path,
export_include_dirs, cflags) export_include_dirs, cflags, flags)
if remove_absolute_paths: if remove_absolute_paths:
return read_output_content(output_path, AOSP_DIR) return read_output_content(output_path, AOSP_DIR)
with open(output_path, 'r') as f: with open(output_path, 'r') as f: