Merge changes I6345a10d,Ieed81827

* changes:
  Refactor header-checker tests
  Replace test data for test_libgolden_cpp_fabricated_function_ast_removed_diff
This commit is contained in:
Hsin-Yi Chen
2018-12-25 03:48:18 +00:00
committed by Gerrit Code Review
10 changed files with 1310 additions and 826 deletions

View File

@@ -9,25 +9,18 @@ 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
from utils import copy_reference_dump_content
from module import Module from module import Module
from test import INPUT_DIR
from test import EXPECTED_DIR
from test import make_and_copy_reference_dumps
SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
INPUT_DIR = os.path.join(SCRIPT_DIR, 'input')
EXPECTED_DIR = os.path.join(SCRIPT_DIR, 'expected')
REFERENCE_DUMP_DIR = os.path.join(SCRIPT_DIR, 'reference_dumps')
FILE_EXTENSIONS = ['h', 'hpp', 'hxx', 'cpp', 'cc', 'c'] 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_dump(default_cflags)
return copy_reference_dump_content(module.get_dump_name(), lsdump_content,
reference_dump_dir, '', module.arch)
def main(): def main():
patt = re.compile( patt = re.compile(
'^.*\\.(?:' + \ '^.*\\.(?:' +
'|'.join('(?:' + re.escape(ext) + ')' for ext in FILE_EXTENSIONS) + \ '|'.join('(?:' + re.escape(ext) + ')' for ext in FILE_EXTENSIONS) +
')$') ')$')
input_dir_prefix_len = len(INPUT_DIR) + 1 input_dir_prefix_len = len(INPUT_DIR) + 1
for base, dirnames, filenames in os.walk(INPUT_DIR): for base, dirnames, filenames in os.walk(INPUT_DIR):
@@ -48,9 +41,10 @@ def main():
f.write(output_content) f.write(output_content)
modules = Module.get_test_modules() modules = Module.get_test_modules()
for module in modules: for module in modules:
make_and_copy_reference_dumps(module) print('Created abi dump at', make_and_copy_reference_dumps(module))
return 0 return 0
if __name__ == '__main__': if __name__ == '__main__':
sys.exit(main()) sys.exit(main())

View File

@@ -11,26 +11,25 @@ sys.path.insert(1, import_path)
from utils import run_header_abi_dumper 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 SOURCE_ABI_DUMP_EXT from utils import SOURCE_ABI_DUMP_EXT
SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
INPUT_DIR = os.path.join(SCRIPT_DIR, 'input')
EXPECTED_DIR = os.path.join(SCRIPT_DIR, 'expected')
REF_DUMP_DIR = os.path.join(SCRIPT_DIR, 'reference_dumps')
ARCH_TARGET_CFLAGS = { ARCH_TARGET_CFLAGS = {
'arm': ['-target', 'arm-linux-androideabi'], 'arm': ('-target', 'arm-linux-androideabi'),
'arm64': ['-target', 'aarch64-linux-android'], 'arm64': ('-target', 'aarch64-linux-android'),
'x86': ['-target', 'i386-linux-androideabi'], 'x86': ('-target', 'i386-linux-androideabi'),
'x86_64': ['-target', 'x86_64-linux-android'], 'x86_64': ('-target', 'x86_64-linux-android'),
'mips': ['-target', 'mips-linux-androideabi'], 'mips': ('-target', 'mips-linux-androideabi'),
'mips64': ['-target', 'mips64-linux-android'], 'mips64': ('-target', 'mips64-linux-android'),
} }
TARGET_ARCHES = ['arm', 'arm64', 'x86', 'x86_64', 'mips', 'mips64']
def relative_to_abs_path(relative_path): def relative_to_abs_path(relative_path):
return os.path.join(SCRIPT_DIR, relative_path) return os.path.join(SCRIPT_DIR, relative_path)
def relative_to_abs_path_list(relative_path_list): def relative_to_abs_path_list(relative_path_list):
abs_paths = [] abs_paths = []
for relative_path in relative_path_list: for relative_path in relative_path_list:
@@ -42,17 +41,16 @@ class Module(object):
def __init__(self, name, arch, cflags, export_include_dirs): def __init__(self, name, arch, cflags, export_include_dirs):
self.name = name self.name = name
self.arch = arch self.arch = arch
self.cflags = cflags self.cflags = tuple(cflags)
self.arch_cflags = [''] self.arch_cflags = ARCH_TARGET_CFLAGS.get(self.arch, tuple())
if self.arch != '': self.export_include_dirs = relative_to_abs_path_list(
self.arch_cflags = ARCH_TARGET_CFLAGS.get(self.arch) export_include_dirs)
self.export_include_dirs = relative_to_abs_path_list(export_include_dirs)
def get_dump_name(self): def get_dump_name(self):
"""Returns the module name followed by file extension.""" """Returns the module name followed by file extension."""
raise NotImplementedError() raise NotImplementedError()
def make_dump(self, default_cflags): def make_dump(self):
"""Returns the dump content as a string.""" """Returns the dump content as a string."""
raise NotImplementedError() raise NotImplementedError()
@@ -61,8 +59,10 @@ class Module(object):
raise NotImplementedError() raise NotImplementedError()
def mutate_for_all_arches(self): def mutate_for_all_arches(self):
if self.arch:
return [self]
modules = [] modules = []
for target_arch in TARGET_ARCHS: for target_arch in TARGET_ARCHES:
modules.append(self.mutate_for_arch(target_arch)) modules.append(self.mutate_for_arch(target_arch))
return modules return modules
@@ -70,13 +70,12 @@ class Module(object):
def get_test_modules(): def get_test_modules():
modules = [] modules = []
for module in TEST_MODULES.values(): for module in TEST_MODULES.values():
if module.arch == '':
modules += module.mutate_for_all_arches() modules += module.mutate_for_all_arches()
return modules return modules
@staticmethod @staticmethod
def get_test_module_by_name(name): def get_test_modules_by_name(name):
return TEST_MODULES.get(name) return TEST_MODULES.get(name).mutate_for_all_arches()
class SdumpModule(Module): class SdumpModule(Module):
@@ -90,7 +89,7 @@ class SdumpModule(Module):
def get_dump_name(self): def get_dump_name(self):
return self.name + '.sdump' return self.name + '.sdump'
def make_dump(self, default_cflags): def make_dump(self):
return run_header_abi_dumper( return run_header_abi_dumper(
self.src, remove_absolute_paths=True, cflags=self.cflags, self.src, remove_absolute_paths=True, cflags=self.cflags,
export_include_dirs=self.export_include_dirs, export_include_dirs=self.export_include_dirs,
@@ -102,8 +101,8 @@ class SdumpModule(Module):
class LsdumpModule(Module): class LsdumpModule(Module):
def __init__(self, name, arch, srcs, version_script, cflags, def __init__(self, name, srcs, version_script, export_include_dirs,
export_include_dirs, api, dumper_flags=tuple(), cflags=tuple(), arch='', api='current', dumper_flags=tuple(),
linker_flags=tuple()): linker_flags=tuple()):
super(LsdumpModule, self).__init__(name, arch, cflags, super(LsdumpModule, self).__init__(name, arch, cflags,
export_include_dirs) export_include_dirs)
@@ -116,28 +115,28 @@ class LsdumpModule(Module):
def get_dump_name(self): def get_dump_name(self):
return self.name + SOURCE_ABI_DUMP_EXT return self.name + SOURCE_ABI_DUMP_EXT
def make_dump(self, default_cflags): def make_dump(self):
"""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.get_dump_name()) 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)
run_header_abi_dumper_on_file( run_header_abi_dumper_on_file(
src, output_path, self.export_include_dirs, src, output_path, self.export_include_dirs,
self.cflags + self.arch_cflags + default_cflags, self.cflags + self.arch_cflags,
self.dumper_flags) self.dumper_flags)
return run_header_abi_linker(output_lsdump, dumps_to_link, return run_header_abi_linker(output_lsdump, dumps_to_link,
self.version_script, self.api, self.version_script, self.api,
self.arch, self.linker_flags) self.arch, self.linker_flags)
def mutate_for_arch(self, target_arch): def mutate_for_arch(self, target_arch):
return LsdumpModule(self.name, target_arch, self.srcs, return LsdumpModule(self.name, self.srcs, self.version_script,
self.version_script, self.cflags, self.export_include_dirs, self.cflags, target_arch,
self.export_include_dirs, self.api, self.api, self.dumper_flags, self.linker_flags)
self.dumper_flags, self.linker_flags)
TEST_MODULES = [ TEST_MODULES = [
@@ -159,9 +158,6 @@ TEST_MODULES = [
], ],
version_script='integration/c_and_cpp/map.txt', version_script='integration/c_and_cpp/map.txt',
export_include_dirs=['integration/c_and_cpp/include'], export_include_dirs=['integration/c_and_cpp/include'],
cflags=[],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libc_and_cpp_with_opaque_ptr_a', name='libc_and_cpp_with_opaque_ptr_a',
@@ -172,8 +168,6 @@ TEST_MODULES = [
version_script='integration/c_and_cpp/map.txt', version_script='integration/c_and_cpp/map.txt',
export_include_dirs=['integration/c_and_cpp/include'], export_include_dirs=['integration/c_and_cpp/include'],
cflags=['-DOPAQUE_STRUCT_A=1'], cflags=['-DOPAQUE_STRUCT_A=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libc_and_cpp_with_opaque_ptr_b', name='libc_and_cpp_with_opaque_ptr_b',
@@ -184,8 +178,6 @@ TEST_MODULES = [
version_script='integration/c_and_cpp/map.txt', version_script='integration/c_and_cpp/map.txt',
export_include_dirs=['integration/c_and_cpp/include'], export_include_dirs=['integration/c_and_cpp/include'],
cflags=['-DOPAQUE_STRUCT_B=1'], cflags=['-DOPAQUE_STRUCT_B=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libc_and_cpp_with_unused_struct', name='libc_and_cpp_with_unused_struct',
@@ -196,8 +188,6 @@ TEST_MODULES = [
version_script='integration/c_and_cpp/map.txt', version_script='integration/c_and_cpp/map.txt',
export_include_dirs=['integration/c_and_cpp/include'], export_include_dirs=['integration/c_and_cpp/include'],
cflags=['-DINCLUDE_UNUSED_STRUCTS=1'], cflags=['-DINCLUDE_UNUSED_STRUCTS=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libc_and_cpp_with_unused_cstruct', name='libc_and_cpp_with_unused_cstruct',
@@ -208,8 +198,6 @@ TEST_MODULES = [
version_script='integration/c_and_cpp/map.txt', version_script='integration/c_and_cpp/map.txt',
export_include_dirs=['integration/c_and_cpp/include'], export_include_dirs=['integration/c_and_cpp/include'],
cflags=['-DINCLUDE_UNUSED_STRUCTS=1', '-DMAKE_UNUSED_STRUCT_C=1'], cflags=['-DINCLUDE_UNUSED_STRUCTS=1', '-DMAKE_UNUSED_STRUCT_C=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp', name='libgolden_cpp',
@@ -220,9 +208,6 @@ TEST_MODULES = [
], ],
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=[],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_odr', name='libgolden_cpp_odr',
@@ -234,8 +219,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DTEST_ODR'], cflags=['-DTEST_ODR'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_add_function', name='libgolden_cpp_add_function',
@@ -247,8 +230,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map_add_function.txt', version_script='integration/cpp/gold/map_add_function.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_ADD_FUNCTION=1'], cflags=['-DGOLDEN_ADD_FUNCTION=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_add_function_and_unexported_elf', name='libgolden_cpp_add_function_and_unexported_elf',
@@ -263,6 +244,16 @@ TEST_MODULES = [
arch='', arch='',
api='current', api='current',
), ),
LsdumpModule(
name='libgolden_cpp_add_function_sybmol_only',
srcs=[
'integration/cpp/gold/golden_1.cpp',
'integration/cpp/gold/high_volume_speaker.cpp',
'integration/cpp/gold/low_volume_speaker.cpp',
],
version_script='integration/cpp/gold/map_add_function.txt',
export_include_dirs=['integration/cpp/gold/include'],
),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_change_function_access', name='libgolden_cpp_change_function_access',
srcs=[ srcs=[
@@ -273,8 +264,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_CHANGE_FUNCTION_ACCESS=1'], cflags=['-DGOLDEN_CHANGE_FUNCTION_ACCESS=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_add_global_variable', name='libgolden_cpp_add_global_variable',
@@ -286,8 +275,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map_added_globvar.txt', version_script='integration/cpp/gold/map_added_globvar.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_ADD_GLOBVAR=1'], cflags=['-DGOLDEN_ADD_GLOBVAR=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_add_global_variable_private', name='libgolden_cpp_add_global_variable_private',
@@ -299,8 +286,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map_added_globvar.txt', version_script='integration/cpp/gold/map_added_globvar.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_ADD_GLOBVAR=1', '-DGOLDEN_ADD_GLOBVAR_PRIVATE'], cflags=['-DGOLDEN_ADD_GLOBVAR=1', '-DGOLDEN_ADD_GLOBVAR_PRIVATE'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_return_type_diff', name='libgolden_cpp_return_type_diff',
@@ -312,8 +297,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_RETURN_TYPE_DIFF=1'], cflags=['-DGOLDEN_RETURN_TYPE_DIFF=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_parameter_type_diff', name='libgolden_cpp_parameter_type_diff',
@@ -325,8 +308,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map_parameter_type_diff.txt', version_script='integration/cpp/gold/map_parameter_type_diff.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_PARAMETER_TYPE_DIFF=1'], cflags=['-DGOLDEN_PARAMETER_TYPE_DIFF=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_vtable_diff', name='libgolden_cpp_vtable_diff',
@@ -338,8 +319,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_VTABLE_DIFF=1'], cflags=['-DGOLDEN_VTABLE_DIFF=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_member_diff', name='libgolden_cpp_member_diff',
@@ -351,8 +330,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_MEMBER_DIFF=1'], cflags=['-DGOLDEN_MEMBER_DIFF=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_member_fake_diff', name='libgolden_cpp_member_fake_diff',
@@ -364,8 +341,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_MEMBER_FAKE_DIFF=1'], cflags=['-DGOLDEN_MEMBER_FAKE_DIFF=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_member_cv_diff', name='libgolden_cpp_member_cv_diff',
@@ -377,8 +352,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_MEMBER_CV_DIFF=1'], cflags=['-DGOLDEN_MEMBER_CV_DIFF=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_change_member_access', name='libgolden_cpp_change_member_access',
@@ -390,8 +363,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_CHANGE_MEMBER_ACCESS=1'], cflags=['-DGOLDEN_CHANGE_MEMBER_ACCESS=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_member_integral_type_diff', name='libgolden_cpp_member_integral_type_diff',
@@ -403,8 +374,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_MEMBER_INTEGRAL_TYPE_DIFF=1'], cflags=['-DGOLDEN_MEMBER_INTEGRAL_TYPE_DIFF=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_enum_diff', name='libgolden_cpp_enum_diff',
@@ -416,8 +385,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_ENUM_DIFF=1'], cflags=['-DGOLDEN_ENUM_DIFF=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_enum_extended', name='libgolden_cpp_enum_extended',
@@ -429,8 +396,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_ENUM_EXTENSION=1'], cflags=['-DGOLDEN_ENUM_EXTENSION=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_unreferenced_elf_symbol_removed', name='libgolden_cpp_unreferenced_elf_symbol_removed',
@@ -441,18 +406,12 @@ TEST_MODULES = [
], ],
version_script='integration/cpp/gold/map_elf_symbol_removed.txt', version_script='integration/cpp/gold/map_elf_symbol_removed.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=[],
arch='',
api='current',
), ),
LsdumpModule( 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',
export_include_dirs=['integration/c_and_cpp/include'], export_include_dirs=['integration/c_and_cpp/include'],
cflags=[],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_member_name_changed', name='libgolden_cpp_member_name_changed',
@@ -464,8 +423,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_CHANGE_MEMBER_NAME_SAME_OFFSET=1'], cflags=['-DGOLDEN_CHANGE_MEMBER_NAME_SAME_OFFSET=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_function_pointer', name='libgolden_cpp_function_pointer',
@@ -477,8 +434,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_FUNCTION_POINTER=1'], cflags=['-DGOLDEN_FUNCTION_POINTER=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_function_pointer_parameter_added', name='libgolden_cpp_function_pointer_parameter_added',
@@ -491,8 +446,6 @@ TEST_MODULES = [
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_FUNCTION_POINTER_ADD_PARAM=1', cflags=['-DGOLDEN_FUNCTION_POINTER_ADD_PARAM=1',
'-DGOLDEN_FUNCTION_POINTER=1'], '-DGOLDEN_FUNCTION_POINTER=1'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_internal_public_struct', name='libgolden_cpp_internal_public_struct',
@@ -505,8 +458,6 @@ TEST_MODULES = [
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_WITH_INTERNAL_STRUCT', cflags=['-DGOLDEN_WITH_INTERNAL_STRUCT',
'-DGOLDEN_WITH_PUBLIC_INTERNAL_STRUCT'], '-DGOLDEN_WITH_PUBLIC_INTERNAL_STRUCT'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_internal_private_struct', name='libgolden_cpp_internal_private_struct',
@@ -518,8 +469,6 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_WITH_INTERNAL_STRUCT'], cflags=['-DGOLDEN_WITH_INTERNAL_STRUCT'],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_inheritance_type_changed', name='libgolden_cpp_inheritance_type_changed',
@@ -531,17 +480,12 @@ TEST_MODULES = [
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=['-DGOLDEN_CHANGE_INHERITANCE_TYPE'], cflags=['-DGOLDEN_CHANGE_INHERITANCE_TYPE'],
arch='',
api='current',
), ),
LsdumpModule( 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'],
version_script='', version_script='',
cflags=[],
arch='',
api='current',
), ),
LsdumpModule( LsdumpModule(
name='libgolden_cpp_json', name='libgolden_cpp_json',
@@ -552,9 +496,6 @@ TEST_MODULES = [
], ],
version_script='integration/cpp/gold/map.txt', version_script='integration/cpp/gold/map.txt',
export_include_dirs=['integration/cpp/gold/include'], export_include_dirs=['integration/cpp/gold/include'],
cflags=[],
arch='',
api='current',
dumper_flags=['-output-format', 'Json'], dumper_flags=['-output-format', 'Json'],
linker_flags=['-input-format', 'Json', '-output-format', 'Json'] linker_flags=['-input-format', 'Json', '-output-format', 'Json']
), ),

View File

@@ -1,14 +1,75 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 8
alignment: 4
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 32
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
is_pure: false
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
is_pure: false
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
is_pure: false
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
is_pure: false
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types { record_types {
type_info { type_info {
name: "HighVolumeSpeaker" name: "HighVolumeSpeaker"
size: 8 size: 8
alignment: 4 alignment: 4
referenced_type: "HighVolumeSpeaker" referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker" linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -17,31 +78,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker" mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -55,24 +122,25 @@ record_types {
name: "LowVolumeSpeaker" name: "LowVolumeSpeaker"
size: 16 size: 16
alignment: 4 alignment: 4
referenced_type: "LowVolumeSpeaker" referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker" linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
} }
fields { fields {
referenced_type: "unsigned int" referenced_type: "type-6"
field_offset: 64 field_offset: 64
field_name: "speaker_uint_t" field_name: "speaker_uint_t"
access: public_access access: public_access
} }
fields { fields {
referenced_type: "float *" referenced_type: "type-7"
field_offset: 96 field_offset: 96
field_name: "speaker_float_star" field_name: "speaker_float_star"
access: public_access access: public_access
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -81,31 +149,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker" mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -114,118 +188,58 @@ record_types {
unique_id: "_ZTS16LowVolumeSpeaker" unique_id: "_ZTS16LowVolumeSpeaker"
} }
} }
record_types {
type_info {
name: "SuperSpeaker"
size: 8
alignment: 4
referenced_type: "SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
}
fields {
referenced_type: "int"
field_offset: 32
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
enum_types { enum_types {
type_info { type_info {
name: "SuperSpeaker::Volume" name: "SuperSpeaker::Volume"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "SuperSpeaker::Volume" referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume" linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
} }
underlying_type: "unsigned int" underlying_type: "type-6"
enum_fields { enum_fields {
enum_field_value: 1 enum_field_value: 1
name: "SuperSpeaker::Volume::Loud" name: "SuperSpeaker::Loud"
} }
enum_fields { enum_fields {
enum_field_value: 2 enum_field_value: 2
name: "SuperSpeaker::Volume::Louder" name: "SuperSpeaker::Louder"
} }
enum_fields { enum_fields {
enum_field_value: 3 enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest" name: "SuperSpeaker::Loudest"
} }
enum_fields { enum_fields {
enum_field_value: 4 enum_field_value: 0
name: "SuperSpeaker::Volume::Lower" name: "SuperSpeaker::Lower"
} }
access: private_access access: private_access
tag_info { tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE" unique_id: "_ZTSN12SuperSpeaker6VolumeE"
} }
} }
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "HighVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "LowVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
}
}
pointer_types { pointer_types {
type_info { type_info {
name: "SuperSpeaker *" name: "SuperSpeaker *"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "SuperSpeaker" referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *" linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
} }
} }
pointer_types { pointer_types {
@@ -233,9 +247,21 @@ pointer_types {
name: "float *" name: "float *"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "float" referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *" linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
} }
} }
builtin_types { builtin_types {
@@ -243,9 +269,10 @@ builtin_types {
name: "float" name: "float"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "float" referenced_type: "type-3"
source_file: "" source_file: ""
linker_set_key: "float" linker_set_key: "float"
self_type: "type-3"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
@@ -255,9 +282,10 @@ builtin_types {
name: "int" name: "int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "int" referenced_type: "type-2"
source_file: "" source_file: ""
linker_set_key: "int" linker_set_key: "int"
self_type: "type-2"
} }
is_unsigned: false is_unsigned: false
is_integral: true is_integral: true
@@ -267,9 +295,10 @@ builtin_types {
name: "unsigned int" name: "unsigned int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "unsigned int" referenced_type: "type-6"
source_file: "" source_file: ""
linker_set_key: "unsigned int" linker_set_key: "unsigned int"
self_type: "type-6"
} }
is_unsigned: true is_unsigned: true
is_integral: true is_integral: true
@@ -279,127 +308,188 @@ builtin_types {
name: "void" name: "void"
size: 0 size: 0
alignment: 0 alignment: 0
referenced_type: "void" referenced_type: "type-10"
source_file: "" source_file: ""
linker_set_key: "void" linker_set_key: "void"
self_type: "type-10"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
} }
functions { functions {
return_type: "SuperSpeaker *" return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker" function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "int" referenced_type: "type-2"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access access: public_access
} }
functions { functions {
return_type: "SuperSpeaker::Volume" return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud" function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "SuperSpeaker *" referenced_type: "type-9"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "SuperSpeaker::~SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeakerD2Ev"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak" function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen" function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "HighVolumeSpeaker *" return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice" function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
parameters { parameters {
referenced_type: "float" referenced_type: "type-3"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak" function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen" function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
elf_functions { elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker" name: "_Z26test_virtual_function_callP12SuperSpeaker"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12NotReferenced" name: "_ZN12NotReferenced"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv" name: "_ZN12SuperSpeaker11SpeakLouderEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv" name: "_ZN12SuperSpeaker9SpeakLoudEv"
binding: Global
}
elf_functions {
name: "_ZN12SuperSpeakerD2Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv" name: "_ZN16LowVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv" name: "_ZN16LowVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN16LowVolumeSpeakerD0Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf" name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeaker13AddedFunctionEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv" name: "_ZN17HighVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv" name: "_ZN17HighVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeakerD0Ev"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV16LowVolumeSpeaker" name: "_ZTV16LowVolumeSpeaker"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV17HighVolumeSpeaker" name: "_ZTV17HighVolumeSpeaker"
binding: Global
} }

View File

@@ -1,14 +1,75 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 16
alignment: 8
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 64
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
is_pure: false
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
is_pure: false
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
is_pure: false
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
is_pure: false
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types { record_types {
type_info { type_info {
name: "HighVolumeSpeaker" name: "HighVolumeSpeaker"
size: 16 size: 16
alignment: 8 alignment: 8
referenced_type: "HighVolumeSpeaker" referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker" linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -17,31 +78,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker" mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -55,24 +122,25 @@ record_types {
name: "LowVolumeSpeaker" name: "LowVolumeSpeaker"
size: 24 size: 24
alignment: 8 alignment: 8
referenced_type: "LowVolumeSpeaker" referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker" linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
} }
fields { fields {
referenced_type: "unsigned int" referenced_type: "type-6"
field_offset: 96 field_offset: 96
field_name: "speaker_uint_t" field_name: "speaker_uint_t"
access: public_access access: public_access
} }
fields { fields {
referenced_type: "float *" referenced_type: "type-7"
field_offset: 128 field_offset: 128
field_name: "speaker_float_star" field_name: "speaker_float_star"
access: public_access access: public_access
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -81,31 +149,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker" mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -114,118 +188,58 @@ record_types {
unique_id: "_ZTS16LowVolumeSpeaker" unique_id: "_ZTS16LowVolumeSpeaker"
} }
} }
record_types {
type_info {
name: "SuperSpeaker"
size: 16
alignment: 8
referenced_type: "SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
}
fields {
referenced_type: "int"
field_offset: 64
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
enum_types { enum_types {
type_info { type_info {
name: "SuperSpeaker::Volume" name: "SuperSpeaker::Volume"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "SuperSpeaker::Volume" referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume" linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
} }
underlying_type: "unsigned int" underlying_type: "type-6"
enum_fields { enum_fields {
enum_field_value: 1 enum_field_value: 1
name: "SuperSpeaker::Volume::Loud" name: "SuperSpeaker::Loud"
} }
enum_fields { enum_fields {
enum_field_value: 2 enum_field_value: 2
name: "SuperSpeaker::Volume::Louder" name: "SuperSpeaker::Louder"
} }
enum_fields { enum_fields {
enum_field_value: 3 enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest" name: "SuperSpeaker::Loudest"
} }
enum_fields { enum_fields {
enum_field_value: 4 enum_field_value: 0
name: "SuperSpeaker::Volume::Lower" name: "SuperSpeaker::Lower"
} }
access: private_access access: private_access
tag_info { tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE" unique_id: "_ZTSN12SuperSpeaker6VolumeE"
} }
} }
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "HighVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "LowVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
}
}
pointer_types { pointer_types {
type_info { type_info {
name: "SuperSpeaker *" name: "SuperSpeaker *"
size: 8 size: 8
alignment: 8 alignment: 8
referenced_type: "SuperSpeaker" referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *" linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
} }
} }
pointer_types { pointer_types {
@@ -233,9 +247,21 @@ pointer_types {
name: "float *" name: "float *"
size: 8 size: 8
alignment: 8 alignment: 8
referenced_type: "float" referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *" linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
} }
} }
builtin_types { builtin_types {
@@ -243,9 +269,10 @@ builtin_types {
name: "float" name: "float"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "float" referenced_type: "type-3"
source_file: "" source_file: ""
linker_set_key: "float" linker_set_key: "float"
self_type: "type-3"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
@@ -255,9 +282,10 @@ builtin_types {
name: "int" name: "int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "int" referenced_type: "type-2"
source_file: "" source_file: ""
linker_set_key: "int" linker_set_key: "int"
self_type: "type-2"
} }
is_unsigned: false is_unsigned: false
is_integral: true is_integral: true
@@ -267,9 +295,10 @@ builtin_types {
name: "unsigned int" name: "unsigned int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "unsigned int" referenced_type: "type-6"
source_file: "" source_file: ""
linker_set_key: "unsigned int" linker_set_key: "unsigned int"
self_type: "type-6"
} }
is_unsigned: true is_unsigned: true
is_integral: true is_integral: true
@@ -279,127 +308,188 @@ builtin_types {
name: "void" name: "void"
size: 0 size: 0
alignment: 0 alignment: 0
referenced_type: "void" referenced_type: "type-10"
source_file: "" source_file: ""
linker_set_key: "void" linker_set_key: "void"
self_type: "type-10"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
} }
functions { functions {
return_type: "SuperSpeaker *" return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker" function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "int" referenced_type: "type-2"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access access: public_access
} }
functions { functions {
return_type: "SuperSpeaker::Volume" return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud" function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "SuperSpeaker *" referenced_type: "type-9"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "SuperSpeaker::~SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeakerD2Ev"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak" function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen" function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "HighVolumeSpeaker *" return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice" function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
parameters { parameters {
referenced_type: "float" referenced_type: "type-3"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak" function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen" function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
elf_functions { elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker" name: "_Z26test_virtual_function_callP12SuperSpeaker"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12NotReferenced" name: "_ZN12NotReferenced"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv" name: "_ZN12SuperSpeaker11SpeakLouderEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv" name: "_ZN12SuperSpeaker9SpeakLoudEv"
binding: Global
}
elf_functions {
name: "_ZN12SuperSpeakerD2Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv" name: "_ZN16LowVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv" name: "_ZN16LowVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN16LowVolumeSpeakerD0Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf" name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeaker13AddedFunctionEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv" name: "_ZN17HighVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv" name: "_ZN17HighVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeakerD0Ev"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV16LowVolumeSpeaker" name: "_ZTV16LowVolumeSpeaker"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV17HighVolumeSpeaker" name: "_ZTV17HighVolumeSpeaker"
binding: Global
} }

View File

@@ -1,14 +1,75 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 8
alignment: 4
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 32
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
is_pure: false
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
is_pure: false
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
is_pure: false
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
is_pure: false
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types { record_types {
type_info { type_info {
name: "HighVolumeSpeaker" name: "HighVolumeSpeaker"
size: 8 size: 8
alignment: 4 alignment: 4
referenced_type: "HighVolumeSpeaker" referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker" linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -17,31 +78,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker" mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -55,24 +122,25 @@ record_types {
name: "LowVolumeSpeaker" name: "LowVolumeSpeaker"
size: 16 size: 16
alignment: 4 alignment: 4
referenced_type: "LowVolumeSpeaker" referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker" linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
} }
fields { fields {
referenced_type: "unsigned int" referenced_type: "type-6"
field_offset: 64 field_offset: 64
field_name: "speaker_uint_t" field_name: "speaker_uint_t"
access: public_access access: public_access
} }
fields { fields {
referenced_type: "float *" referenced_type: "type-7"
field_offset: 96 field_offset: 96
field_name: "speaker_float_star" field_name: "speaker_float_star"
access: public_access access: public_access
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -81,31 +149,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker" mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -114,118 +188,58 @@ record_types {
unique_id: "_ZTS16LowVolumeSpeaker" unique_id: "_ZTS16LowVolumeSpeaker"
} }
} }
record_types {
type_info {
name: "SuperSpeaker"
size: 8
alignment: 4
referenced_type: "SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
}
fields {
referenced_type: "int"
field_offset: 32
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
enum_types { enum_types {
type_info { type_info {
name: "SuperSpeaker::Volume" name: "SuperSpeaker::Volume"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "SuperSpeaker::Volume" referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume" linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
} }
underlying_type: "unsigned int" underlying_type: "type-6"
enum_fields { enum_fields {
enum_field_value: 1 enum_field_value: 1
name: "SuperSpeaker::Volume::Loud" name: "SuperSpeaker::Loud"
} }
enum_fields { enum_fields {
enum_field_value: 2 enum_field_value: 2
name: "SuperSpeaker::Volume::Louder" name: "SuperSpeaker::Louder"
} }
enum_fields { enum_fields {
enum_field_value: 3 enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest" name: "SuperSpeaker::Loudest"
} }
enum_fields { enum_fields {
enum_field_value: 4 enum_field_value: 0
name: "SuperSpeaker::Volume::Lower" name: "SuperSpeaker::Lower"
} }
access: private_access access: private_access
tag_info { tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE" unique_id: "_ZTSN12SuperSpeaker6VolumeE"
} }
} }
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "HighVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "LowVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
}
}
pointer_types { pointer_types {
type_info { type_info {
name: "SuperSpeaker *" name: "SuperSpeaker *"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "SuperSpeaker" referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *" linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
} }
} }
pointer_types { pointer_types {
@@ -233,9 +247,21 @@ pointer_types {
name: "float *" name: "float *"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "float" referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *" linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
} }
} }
builtin_types { builtin_types {
@@ -243,9 +269,10 @@ builtin_types {
name: "float" name: "float"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "float" referenced_type: "type-3"
source_file: "" source_file: ""
linker_set_key: "float" linker_set_key: "float"
self_type: "type-3"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
@@ -255,9 +282,10 @@ builtin_types {
name: "int" name: "int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "int" referenced_type: "type-2"
source_file: "" source_file: ""
linker_set_key: "int" linker_set_key: "int"
self_type: "type-2"
} }
is_unsigned: false is_unsigned: false
is_integral: true is_integral: true
@@ -267,9 +295,10 @@ builtin_types {
name: "unsigned int" name: "unsigned int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "unsigned int" referenced_type: "type-6"
source_file: "" source_file: ""
linker_set_key: "unsigned int" linker_set_key: "unsigned int"
self_type: "type-6"
} }
is_unsigned: true is_unsigned: true
is_integral: true is_integral: true
@@ -279,127 +308,188 @@ builtin_types {
name: "void" name: "void"
size: 0 size: 0
alignment: 0 alignment: 0
referenced_type: "void" referenced_type: "type-10"
source_file: "" source_file: ""
linker_set_key: "void" linker_set_key: "void"
self_type: "type-10"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
} }
functions { functions {
return_type: "SuperSpeaker *" return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker" function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "int" referenced_type: "type-2"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access access: public_access
} }
functions { functions {
return_type: "SuperSpeaker::Volume" return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud" function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "SuperSpeaker *" referenced_type: "type-9"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "SuperSpeaker::~SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeakerD2Ev"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak" function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen" function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "HighVolumeSpeaker *" return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice" function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
parameters { parameters {
referenced_type: "float" referenced_type: "type-3"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak" function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen" function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
elf_functions { elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker" name: "_Z26test_virtual_function_callP12SuperSpeaker"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12NotReferenced" name: "_ZN12NotReferenced"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv" name: "_ZN12SuperSpeaker11SpeakLouderEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv" name: "_ZN12SuperSpeaker9SpeakLoudEv"
binding: Global
}
elf_functions {
name: "_ZN12SuperSpeakerD2Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv" name: "_ZN16LowVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv" name: "_ZN16LowVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN16LowVolumeSpeakerD0Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf" name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeaker13AddedFunctionEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv" name: "_ZN17HighVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv" name: "_ZN17HighVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeakerD0Ev"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV16LowVolumeSpeaker" name: "_ZTV16LowVolumeSpeaker"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV17HighVolumeSpeaker" name: "_ZTV17HighVolumeSpeaker"
binding: Global
} }

View File

@@ -1,14 +1,75 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 16
alignment: 8
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 64
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
is_pure: false
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
is_pure: false
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
is_pure: false
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
is_pure: false
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types { record_types {
type_info { type_info {
name: "HighVolumeSpeaker" name: "HighVolumeSpeaker"
size: 16 size: 16
alignment: 8 alignment: 8
referenced_type: "HighVolumeSpeaker" referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker" linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -17,31 +78,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker" mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -55,24 +122,25 @@ record_types {
name: "LowVolumeSpeaker" name: "LowVolumeSpeaker"
size: 24 size: 24
alignment: 8 alignment: 8
referenced_type: "LowVolumeSpeaker" referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker" linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
} }
fields { fields {
referenced_type: "unsigned int" referenced_type: "type-6"
field_offset: 96 field_offset: 96
field_name: "speaker_uint_t" field_name: "speaker_uint_t"
access: public_access access: public_access
} }
fields { fields {
referenced_type: "float *" referenced_type: "type-7"
field_offset: 128 field_offset: 128
field_name: "speaker_float_star" field_name: "speaker_float_star"
access: public_access access: public_access
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -81,31 +149,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker" mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -114,118 +188,58 @@ record_types {
unique_id: "_ZTS16LowVolumeSpeaker" unique_id: "_ZTS16LowVolumeSpeaker"
} }
} }
record_types {
type_info {
name: "SuperSpeaker"
size: 16
alignment: 8
referenced_type: "SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
}
fields {
referenced_type: "int"
field_offset: 64
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
enum_types { enum_types {
type_info { type_info {
name: "SuperSpeaker::Volume" name: "SuperSpeaker::Volume"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "SuperSpeaker::Volume" referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume" linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
} }
underlying_type: "unsigned int" underlying_type: "type-6"
enum_fields { enum_fields {
enum_field_value: 1 enum_field_value: 1
name: "SuperSpeaker::Volume::Loud" name: "SuperSpeaker::Loud"
} }
enum_fields { enum_fields {
enum_field_value: 2 enum_field_value: 2
name: "SuperSpeaker::Volume::Louder" name: "SuperSpeaker::Louder"
} }
enum_fields { enum_fields {
enum_field_value: 3 enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest" name: "SuperSpeaker::Loudest"
} }
enum_fields { enum_fields {
enum_field_value: 4 enum_field_value: 0
name: "SuperSpeaker::Volume::Lower" name: "SuperSpeaker::Lower"
} }
access: private_access access: private_access
tag_info { tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE" unique_id: "_ZTSN12SuperSpeaker6VolumeE"
} }
} }
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "HighVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "LowVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
}
}
pointer_types { pointer_types {
type_info { type_info {
name: "SuperSpeaker *" name: "SuperSpeaker *"
size: 8 size: 8
alignment: 8 alignment: 8
referenced_type: "SuperSpeaker" referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *" linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
} }
} }
pointer_types { pointer_types {
@@ -233,9 +247,21 @@ pointer_types {
name: "float *" name: "float *"
size: 8 size: 8
alignment: 8 alignment: 8
referenced_type: "float" referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *" linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
} }
} }
builtin_types { builtin_types {
@@ -243,9 +269,10 @@ builtin_types {
name: "float" name: "float"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "float" referenced_type: "type-3"
source_file: "" source_file: ""
linker_set_key: "float" linker_set_key: "float"
self_type: "type-3"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
@@ -255,9 +282,10 @@ builtin_types {
name: "int" name: "int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "int" referenced_type: "type-2"
source_file: "" source_file: ""
linker_set_key: "int" linker_set_key: "int"
self_type: "type-2"
} }
is_unsigned: false is_unsigned: false
is_integral: true is_integral: true
@@ -267,9 +295,10 @@ builtin_types {
name: "unsigned int" name: "unsigned int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "unsigned int" referenced_type: "type-6"
source_file: "" source_file: ""
linker_set_key: "unsigned int" linker_set_key: "unsigned int"
self_type: "type-6"
} }
is_unsigned: true is_unsigned: true
is_integral: true is_integral: true
@@ -279,127 +308,188 @@ builtin_types {
name: "void" name: "void"
size: 0 size: 0
alignment: 0 alignment: 0
referenced_type: "void" referenced_type: "type-10"
source_file: "" source_file: ""
linker_set_key: "void" linker_set_key: "void"
self_type: "type-10"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
} }
functions { functions {
return_type: "SuperSpeaker *" return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker" function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "int" referenced_type: "type-2"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access access: public_access
} }
functions { functions {
return_type: "SuperSpeaker::Volume" return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud" function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "SuperSpeaker *" referenced_type: "type-9"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "SuperSpeaker::~SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeakerD2Ev"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak" function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen" function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "HighVolumeSpeaker *" return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice" function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
parameters { parameters {
referenced_type: "float" referenced_type: "type-3"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak" function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen" function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
elf_functions { elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker" name: "_Z26test_virtual_function_callP12SuperSpeaker"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12NotReferenced" name: "_ZN12NotReferenced"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv" name: "_ZN12SuperSpeaker11SpeakLouderEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv" name: "_ZN12SuperSpeaker9SpeakLoudEv"
binding: Global
}
elf_functions {
name: "_ZN12SuperSpeakerD2Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv" name: "_ZN16LowVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv" name: "_ZN16LowVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN16LowVolumeSpeakerD0Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf" name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeaker13AddedFunctionEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv" name: "_ZN17HighVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv" name: "_ZN17HighVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeakerD0Ev"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV16LowVolumeSpeaker" name: "_ZTV16LowVolumeSpeaker"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV17HighVolumeSpeaker" name: "_ZTV17HighVolumeSpeaker"
binding: Global
} }

View File

@@ -1,14 +1,75 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 8
alignment: 4
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 32
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
is_pure: false
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
is_pure: false
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
is_pure: false
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
is_pure: false
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types { record_types {
type_info { type_info {
name: "HighVolumeSpeaker" name: "HighVolumeSpeaker"
size: 8 size: 8
alignment: 4 alignment: 4
referenced_type: "HighVolumeSpeaker" referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker" linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -17,31 +78,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker" mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -55,24 +122,25 @@ record_types {
name: "LowVolumeSpeaker" name: "LowVolumeSpeaker"
size: 16 size: 16
alignment: 4 alignment: 4
referenced_type: "LowVolumeSpeaker" referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker" linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
} }
fields { fields {
referenced_type: "unsigned int" referenced_type: "type-6"
field_offset: 64 field_offset: 64
field_name: "speaker_uint_t" field_name: "speaker_uint_t"
access: public_access access: public_access
} }
fields { fields {
referenced_type: "float *" referenced_type: "type-7"
field_offset: 96 field_offset: 96
field_name: "speaker_float_star" field_name: "speaker_float_star"
access: public_access access: public_access
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -81,31 +149,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker" mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -114,118 +188,58 @@ record_types {
unique_id: "_ZTS16LowVolumeSpeaker" unique_id: "_ZTS16LowVolumeSpeaker"
} }
} }
record_types {
type_info {
name: "SuperSpeaker"
size: 8
alignment: 4
referenced_type: "SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
}
fields {
referenced_type: "int"
field_offset: 32
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
enum_types { enum_types {
type_info { type_info {
name: "SuperSpeaker::Volume" name: "SuperSpeaker::Volume"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "SuperSpeaker::Volume" referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume" linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
} }
underlying_type: "unsigned int" underlying_type: "type-6"
enum_fields { enum_fields {
enum_field_value: 1 enum_field_value: 1
name: "SuperSpeaker::Volume::Loud" name: "SuperSpeaker::Loud"
} }
enum_fields { enum_fields {
enum_field_value: 2 enum_field_value: 2
name: "SuperSpeaker::Volume::Louder" name: "SuperSpeaker::Louder"
} }
enum_fields { enum_fields {
enum_field_value: 3 enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest" name: "SuperSpeaker::Loudest"
} }
enum_fields { enum_fields {
enum_field_value: 4 enum_field_value: 0
name: "SuperSpeaker::Volume::Lower" name: "SuperSpeaker::Lower"
} }
access: private_access access: private_access
tag_info { tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE" unique_id: "_ZTSN12SuperSpeaker6VolumeE"
} }
} }
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "HighVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "LowVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
}
}
pointer_types { pointer_types {
type_info { type_info {
name: "SuperSpeaker *" name: "SuperSpeaker *"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "SuperSpeaker" referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *" linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
} }
} }
pointer_types { pointer_types {
@@ -233,9 +247,21 @@ pointer_types {
name: "float *" name: "float *"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "float" referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *" linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
} }
} }
builtin_types { builtin_types {
@@ -243,9 +269,10 @@ builtin_types {
name: "float" name: "float"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "float" referenced_type: "type-3"
source_file: "" source_file: ""
linker_set_key: "float" linker_set_key: "float"
self_type: "type-3"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
@@ -255,9 +282,10 @@ builtin_types {
name: "int" name: "int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "int" referenced_type: "type-2"
source_file: "" source_file: ""
linker_set_key: "int" linker_set_key: "int"
self_type: "type-2"
} }
is_unsigned: false is_unsigned: false
is_integral: true is_integral: true
@@ -267,9 +295,10 @@ builtin_types {
name: "unsigned int" name: "unsigned int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "unsigned int" referenced_type: "type-6"
source_file: "" source_file: ""
linker_set_key: "unsigned int" linker_set_key: "unsigned int"
self_type: "type-6"
} }
is_unsigned: true is_unsigned: true
is_integral: true is_integral: true
@@ -279,127 +308,188 @@ builtin_types {
name: "void" name: "void"
size: 0 size: 0
alignment: 0 alignment: 0
referenced_type: "void" referenced_type: "type-10"
source_file: "" source_file: ""
linker_set_key: "void" linker_set_key: "void"
self_type: "type-10"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
} }
functions { functions {
return_type: "SuperSpeaker *" return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker" function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "int" referenced_type: "type-2"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access access: public_access
} }
functions { functions {
return_type: "SuperSpeaker::Volume" return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud" function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "SuperSpeaker *" referenced_type: "type-9"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "SuperSpeaker::~SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeakerD2Ev"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak" function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen" function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "HighVolumeSpeaker *" return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice" function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
parameters { parameters {
referenced_type: "float" referenced_type: "type-3"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak" function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen" function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
elf_functions { elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker" name: "_Z26test_virtual_function_callP12SuperSpeaker"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12NotReferenced" name: "_ZN12NotReferenced"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv" name: "_ZN12SuperSpeaker11SpeakLouderEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv" name: "_ZN12SuperSpeaker9SpeakLoudEv"
binding: Global
}
elf_functions {
name: "_ZN12SuperSpeakerD2Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv" name: "_ZN16LowVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv" name: "_ZN16LowVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN16LowVolumeSpeakerD0Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf" name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeaker13AddedFunctionEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv" name: "_ZN17HighVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv" name: "_ZN17HighVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeakerD0Ev"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV16LowVolumeSpeaker" name: "_ZTV16LowVolumeSpeaker"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV17HighVolumeSpeaker" name: "_ZTV17HighVolumeSpeaker"
binding: Global
} }

View File

@@ -1,14 +1,75 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 16
alignment: 8
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 64
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
is_pure: false
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
is_pure: false
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
is_pure: true
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
is_pure: false
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
is_pure: false
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types { record_types {
type_info { type_info {
name: "HighVolumeSpeaker" name: "HighVolumeSpeaker"
size: 16 size: 16
alignment: 8 alignment: 8
referenced_type: "HighVolumeSpeaker" referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker" linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -17,31 +78,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker" mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -55,24 +122,25 @@ record_types {
name: "LowVolumeSpeaker" name: "LowVolumeSpeaker"
size: 24 size: 24
alignment: 8 alignment: 8
referenced_type: "LowVolumeSpeaker" referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker" linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
} }
fields { fields {
referenced_type: "unsigned int" referenced_type: "type-6"
field_offset: 96 field_offset: 96
field_name: "speaker_uint_t" field_name: "speaker_uint_t"
access: public_access access: public_access
} }
fields { fields {
referenced_type: "float *" referenced_type: "type-7"
field_offset: 128 field_offset: 128
field_name: "speaker_float_star" field_name: "speaker_float_star"
access: public_access access: public_access
} }
base_specifiers { base_specifiers {
referenced_type: "SuperSpeaker" referenced_type: "type-1"
is_virtual: false is_virtual: false
access: public_access access: public_access
} }
@@ -81,31 +149,37 @@ record_types {
kind: OffsetToTop kind: OffsetToTop
mangled_component_name: "" mangled_component_name: ""
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: RTTI kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker" mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: FunctionPointer kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: CompleteDtorPointer kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0 component_value: 0
is_pure: false
} }
vtable_components { vtable_components {
kind: DeletingDtorPointer kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0 component_value: 0
is_pure: false
} }
} }
access: public_access access: public_access
@@ -114,118 +188,58 @@ record_types {
unique_id: "_ZTS16LowVolumeSpeaker" unique_id: "_ZTS16LowVolumeSpeaker"
} }
} }
record_types {
type_info {
name: "SuperSpeaker"
size: 16
alignment: 8
referenced_type: "SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
}
fields {
referenced_type: "int"
field_offset: 64
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
enum_types { enum_types {
type_info { type_info {
name: "SuperSpeaker::Volume" name: "SuperSpeaker::Volume"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "SuperSpeaker::Volume" referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume" linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
} }
underlying_type: "unsigned int" underlying_type: "type-6"
enum_fields { enum_fields {
enum_field_value: 1 enum_field_value: 1
name: "SuperSpeaker::Volume::Loud" name: "SuperSpeaker::Loud"
} }
enum_fields { enum_fields {
enum_field_value: 2 enum_field_value: 2
name: "SuperSpeaker::Volume::Louder" name: "SuperSpeaker::Louder"
} }
enum_fields { enum_fields {
enum_field_value: 3 enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest" name: "SuperSpeaker::Loudest"
} }
enum_fields { enum_fields {
enum_field_value: 4 enum_field_value: 0
name: "SuperSpeaker::Volume::Lower" name: "SuperSpeaker::Lower"
} }
access: private_access access: private_access
tag_info { tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE" unique_id: "_ZTSN12SuperSpeaker6VolumeE"
} }
} }
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "HighVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "LowVolumeSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
}
}
pointer_types { pointer_types {
type_info { type_info {
name: "SuperSpeaker *" name: "SuperSpeaker *"
size: 8 size: 8
alignment: 8 alignment: 8
referenced_type: "SuperSpeaker" referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *" linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
} }
} }
pointer_types { pointer_types {
@@ -233,9 +247,21 @@ pointer_types {
name: "float *" name: "float *"
size: 8 size: 8
alignment: 8 alignment: 8
referenced_type: "float" referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *" linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
} }
} }
builtin_types { builtin_types {
@@ -243,9 +269,10 @@ builtin_types {
name: "float" name: "float"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "float" referenced_type: "type-3"
source_file: "" source_file: ""
linker_set_key: "float" linker_set_key: "float"
self_type: "type-3"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
@@ -255,9 +282,10 @@ builtin_types {
name: "int" name: "int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "int" referenced_type: "type-2"
source_file: "" source_file: ""
linker_set_key: "int" linker_set_key: "int"
self_type: "type-2"
} }
is_unsigned: false is_unsigned: false
is_integral: true is_integral: true
@@ -267,9 +295,10 @@ builtin_types {
name: "unsigned int" name: "unsigned int"
size: 4 size: 4
alignment: 4 alignment: 4
referenced_type: "unsigned int" referenced_type: "type-6"
source_file: "" source_file: ""
linker_set_key: "unsigned int" linker_set_key: "unsigned int"
self_type: "type-6"
} }
is_unsigned: true is_unsigned: true
is_integral: true is_integral: true
@@ -279,127 +308,188 @@ builtin_types {
name: "void" name: "void"
size: 0 size: 0
alignment: 0 alignment: 0
referenced_type: "void" referenced_type: "type-10"
source_file: "" source_file: ""
linker_set_key: "void" linker_set_key: "void"
self_type: "type-10"
} }
is_unsigned: false is_unsigned: false
is_integral: false is_integral: false
} }
functions { functions {
return_type: "SuperSpeaker *" return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker" function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "int" referenced_type: "type-2"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access access: public_access
} }
functions { functions {
return_type: "SuperSpeaker::Volume" return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud" function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters { parameters {
referenced_type: "SuperSpeaker *" referenced_type: "type-9"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "SuperSpeaker::~SuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeakerD2Ev"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak" function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen" function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters { parameters {
referenced_type: "LowVolumeSpeaker *" referenced_type: "type-4"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "HighVolumeSpeaker *" return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice" function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
parameters { parameters {
referenced_type: "float" referenced_type: "type-3"
default_arg: false default_arg: false
is_this_ptr: false
} }
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak" function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access access: public_access
} }
functions { functions {
return_type: "void" return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen" function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters { parameters {
referenced_type: "HighVolumeSpeaker *" referenced_type: "type-12"
default_arg: false default_arg: false
is_this_ptr: true
} }
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access access: public_access
} }
elf_functions { elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker" name: "_Z26test_virtual_function_callP12SuperSpeaker"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12NotReferenced" name: "_ZN12NotReferenced"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv" name: "_ZN12SuperSpeaker11SpeakLouderEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv" name: "_ZN12SuperSpeaker9SpeakLoudEv"
binding: Global
}
elf_functions {
name: "_ZN12SuperSpeakerD2Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv" name: "_ZN16LowVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv" name: "_ZN16LowVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN16LowVolumeSpeakerD0Ev"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf" name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeaker13AddedFunctionEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv" name: "_ZN17HighVolumeSpeaker5SpeakEv"
binding: Global
} }
elf_functions { elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv" name: "_ZN17HighVolumeSpeaker6ListenEv"
binding: Global
}
elf_functions {
name: "_ZN17HighVolumeSpeakerD0Ev"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV16LowVolumeSpeaker" name: "_ZTV16LowVolumeSpeaker"
binding: Global
} }
elf_objects { elf_objects {
name: "_ZTV17HighVolumeSpeaker" name: "_ZTV17HighVolumeSpeaker"
binding: Global
} }

View File

@@ -9,11 +9,9 @@ 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 ( from utils import (AOSP_DIR, read_output_content, run_abi_diff,
AOSP_DIR, SOURCE_ABI_DUMP_EXT, TARGET_ARCHS, read_output_content, run_header_abi_dumper)
run_abi_diff, run_header_abi_dumper)
from module import Module from module import Module
from gen_all import make_and_copy_reference_dumps
SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
@@ -22,11 +20,37 @@ EXPECTED_DIR = os.path.join(SCRIPT_DIR, 'expected')
REF_DUMP_DIR = os.path.join(SCRIPT_DIR, 'reference_dumps') REF_DUMP_DIR = os.path.join(SCRIPT_DIR, 'reference_dumps')
class MyTest(unittest.TestCase): def make_and_copy_reference_dumps(module, reference_dump_dir=REF_DUMP_DIR):
output_content = module.make_dump()
dump_dir = os.path.join(reference_dump_dir, module.arch)
os.makedirs(dump_dir, exist_ok=True)
dump_path = os.path.join(dump_dir, module.get_dump_name())
with open(dump_path, 'w') as f:
f.write(output_content)
return dump_path
class HeaderCheckerTest(unittest.TestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
cls.maxDiff = None cls.maxDiff = None
def setUp(self):
self.tmp_dir = None
def tearDown(self):
if self.tmp_dir:
self.tmp_dir.cleanup()
self.tmp_dir = None
def get_tmp_dir(self):
if not self.tmp_dir:
self.tmp_dir = tempfile.TemporaryDirectory()
return self.tmp_dir.name
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()
@@ -53,41 +77,40 @@ class MyTest(unittest.TestCase):
def prepare_and_run_abi_diff(self, old_ref_dump_path, new_ref_dump_path, def prepare_and_run_abi_diff(self, old_ref_dump_path, new_ref_dump_path,
target_arch, expected_return_code, flags=[]): target_arch, expected_return_code, flags=[]):
self.run_and_compare_abi_diff(old_ref_dump_path, new_ref_dump_path, self.run_and_compare_abi_diff(old_ref_dump_path, new_ref_dump_path,
'test', target_arch, expected_return_code, 'test', target_arch,
flags) expected_return_code, flags)
def create_ref_dump(self, module_bare, dir_name, target_arch): def get_or_create_ref_dump(self, module, create):
module = module_bare.mutate_for_arch(target_arch) if create:
return make_and_copy_reference_dumps(module, [], dir_name) return make_and_copy_reference_dumps(module, self.get_tmp_dir())
return os.path.join(REF_DUMP_DIR, module.arch, module.get_dump_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(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, def prepare_and_run_abi_diff_all_archs(self, old_lib, new_lib,
expected_return_code, flags=[], expected_return_code, flags=[],
create_old=False, create_new=True): create_old=False, create_new=True):
with tempfile.TemporaryDirectory() as tmp: old_modules = Module.get_test_modules_by_name(old_lib)
for target_arch in TARGET_ARCHS: new_modules = Module.get_test_modules_by_name(new_lib)
old_ref_dump_path = self.get_or_create_ref_dump( self.assertEqual(len(old_modules), len(new_modules))
old_lib, target_arch, tmp, create_old)
new_ref_dump_path = self.get_or_create_ref_dump( for old_module, new_module in zip(old_modules, new_modules):
new_lib, target_arch, tmp, create_new) self.assertEqual(old_module.arch, new_module.arch)
old_ref_dump_path = self.get_or_create_ref_dump(old_module,
create_old)
new_ref_dump_path = self.get_or_create_ref_dump(new_module,
create_new)
self.prepare_and_run_abi_diff( self.prepare_and_run_abi_diff(
old_ref_dump_path, new_ref_dump_path, target_arch, old_ref_dump_path, new_ref_dump_path, new_module.arch,
expected_return_code, flags) expected_return_code, flags)
def prepare_and_absolute_diff_all_archs(self, old_lib, new_lib, def prepare_and_absolute_diff_all_archs(self, old_lib, new_lib):
flags=[], create=True): old_modules = Module.get_test_modules_by_name(old_lib)
with tempfile.TemporaryDirectory() as tmp: new_modules = Module.get_test_modules_by_name(new_lib)
for target_arch in TARGET_ARCHS: self.assertEqual(len(old_modules), len(new_modules))
old_ref_dump_path = self.get_or_create_ref_dump(
old_lib, target_arch, tmp, False) for old_module, new_module in zip(old_modules, new_modules):
new_ref_dump_path = self.get_or_create_ref_dump( self.assertEqual(old_module.arch, new_module.arch)
new_lib, target_arch, tmp, create) old_ref_dump_path = self.get_or_create_ref_dump(old_module, False)
new_ref_dump_path = self.get_or_create_ref_dump(new_module, True)
self.assertEqual( self.assertEqual(
read_output_content(old_ref_dump_path, AOSP_DIR), read_output_content(old_ref_dump_path, AOSP_DIR),
read_output_content(new_ref_dump_path, AOSP_DIR)) read_output_content(new_ref_dump_path, AOSP_DIR))
@@ -169,7 +192,13 @@ class MyTest(unittest.TestCase):
def test_libgolden_cpp_add_function_and_elf_symbol(self): def test_libgolden_cpp_add_function_and_elf_symbol(self):
self.prepare_and_run_abi_diff_all_archs( self.prepare_and_run_abi_diff_all_archs(
"libgolden_cpp", "libgolden_cpp_add_function_and_unexported_elf", 4) "libgolden_cpp", "libgolden_cpp_add_function_and_unexported_elf",
4)
def test_libgolden_cpp_fabricated_function_ast_removed_diff(self):
self.prepare_and_run_abi_diff_all_archs(
"libgolden_cpp_add_function_sybmol_only",
"libgolden_cpp_add_function", 0, [], False, False)
def test_libgolden_cpp_change_function_access(self): def test_libgolden_cpp_change_function_access(self):
self.prepare_and_run_abi_diff_all_archs( self.prepare_and_run_abi_diff_all_archs(
@@ -212,11 +241,6 @@ class MyTest(unittest.TestCase):
self.prepare_and_run_abi_diff_all_archs( self.prepare_and_run_abi_diff_all_archs(
"libgolden_cpp", "libgolden_cpp_enum_diff", 8) "libgolden_cpp", "libgolden_cpp_enum_diff", 8)
def test_libgolden_cpp_fabricated_function_ast_removed_diff(self):
self.prepare_and_run_abi_diff_all_archs(
"libgolden_cpp_fabricated_function_ast_removed.so.lsdump",
"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(
"libgolden_cpp", "libgolden_cpp_member_fake_diff", 0) "libgolden_cpp", "libgolden_cpp_member_fake_diff", 0)
@@ -245,7 +269,8 @@ class MyTest(unittest.TestCase):
def test_libgolden_cpp_member_function_pointer_changed(self): def test_libgolden_cpp_member_function_pointer_changed(self):
self.prepare_and_run_abi_diff_all_archs( self.prepare_and_run_abi_diff_all_archs(
"libgolden_cpp_function_pointer", "libgolden_cpp_function_pointer",
"libgolden_cpp_function_pointer_parameter_added", 8, [], True, True) "libgolden_cpp_function_pointer_parameter_added", 8, [],
True, True)
def test_libgolden_cpp_internal_struct_access_upgraded(self): def test_libgolden_cpp_internal_struct_access_upgraded(self):
self.prepare_and_run_abi_diff_all_archs( self.prepare_and_run_abi_diff_all_archs(

View File

@@ -19,7 +19,8 @@ except KeyError:
BUILTIN_HEADERS_DIR = ( BUILTIN_HEADERS_DIR = (
os.path.join(AOSP_DIR, 'bionic', 'libc', 'include'), os.path.join(AOSP_DIR, 'bionic', 'libc', 'include'),
os.path.join(AOSP_DIR, 'external', 'libcxx', 'include'), os.path.join(AOSP_DIR, 'external', 'libcxx', 'include'),
os.path.join(AOSP_DIR, 'prebuilts', 'clang-tools', 'linux-x86', 'clang-headers'), os.path.join(AOSP_DIR, 'prebuilts', 'clang-tools', 'linux-x86',
'clang-headers'),
) )
EXPORTED_HEADERS_DIR = ( EXPORTED_HEADERS_DIR = (
@@ -38,8 +39,6 @@ DEFAULT_CFLAGS = ['-std=gnu99']
DEFAULT_HEADER_FLAGS = ["-dump-function-declarations"] DEFAULT_HEADER_FLAGS = ["-dump-function-declarations"]
DEFAULT_FORMAT = 'ProtobufTextFormat' DEFAULT_FORMAT = 'ProtobufTextFormat'
TARGET_ARCHS = ['arm', 'arm64', 'x86', 'x86_64', 'mips', 'mips64']
def get_reference_dump_dir(reference_dump_dir_stem, def get_reference_dump_dir(reference_dump_dir_stem,
reference_dump_dir_insertion, lib_arch): reference_dump_dir_insertion, lib_arch):
@@ -78,21 +77,6 @@ def copy_reference_dump(lib_path, reference_dump_dir, compress):
return reference_dump_path return reference_dump_path
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, 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)
print('Created abi dump at', reference_dump_path)
return reference_dump_path
def read_output_content(output_path, replace_str): def read_output_content(output_path, replace_str):
with open(output_path, 'r') as f: with open(output_path, 'r') as f:
return f.read().replace(replace_str, '') return f.read().replace(replace_str, '')
@@ -115,7 +99,7 @@ def run_header_abi_dumper_on_file(input_path, output_path,
export_include_dirs=tuple(), cflags=tuple(), export_include_dirs=tuple(), cflags=tuple(),
flags=tuple()): flags=tuple()):
input_ext = os.path.splitext(input_path)[1] input_ext = os.path.splitext(input_path)[1]
cmd = ['header-abi-dumper', '-o', output_path, input_path,] cmd = ['header-abi-dumper', '-o', output_path, input_path]
for dir in export_include_dirs: for dir in export_include_dirs:
cmd += ['-I', dir] cmd += ['-I', dir]
cmd += flags cmd += flags
@@ -188,15 +172,15 @@ def find_lib_lsdumps(target_arch, target_arch_variant,
cpu_variant = '_' + target_cpu_variant cpu_variant = '_' + target_cpu_variant
arch_variant = '_' + target_arch_variant arch_variant = '_' + target_arch_variant
arch_lsdump_paths = [] arch_lsdump_paths = []
if target_cpu_variant == 'generic' or target_cpu_variant is None or\ if (target_cpu_variant == 'generic' or target_cpu_variant is None or
target_cpu_variant == '': target_cpu_variant == ''):
cpu_variant = '' cpu_variant = ''
if target_arch_variant == target_arch or target_arch_variant is None or\ if (target_arch_variant == target_arch or target_arch_variant is None or
target_arch_variant == '': target_arch_variant == ''):
arch_variant = '' arch_variant = ''
target_dir = 'android_' + target_arch + arch_variant +\ target_dir = ('android_' + target_arch + arch_variant +
cpu_variant + core_or_vendor_shared_str cpu_variant + core_or_vendor_shared_str)
for key in lsdump_paths: for key in lsdump_paths:
if libs and key not in libs: if libs and key not in libs:
continue continue