From 8741dcd7f26d96c248e7cc991138323d42c734bc Mon Sep 17 00:00:00 2001 From: Hsin-Yi Chen Date: Thu, 20 Dec 2018 15:43:23 +0800 Subject: [PATCH 1/2] Replace test data for test_libgolden_cpp_fabricated_function_ast_removed_diff The difference between libgolden_cpp.so.lsdump and libgolden_cpp_fabricated_function_ast_removed.so.lsdump is that the latter one doesn't have the declaration of "SuperSpeaker::SpeakLouder", but both of the lsdumps have the ELF symbol. The source code of libgolden_cpp_fabricated_function_ast_removed is missing. This commit replaces the test data with libgolden_cpp_add_function and libgolden_cpp_add_function_sybmol_only. Test: ./test.py Bug: 117582158 Change-Id: Ieed8182731372f9ec7b3bdd209af23b0081cb778 --- vndk/tools/header-checker/tests/module.py | 13 + ...en_cpp_add_function_sybmol_only.so.lsdump} | 304 ++++++++++++------ ...en_cpp_add_function_sybmol_only.so.lsdump} | 304 ++++++++++++------ ...en_cpp_add_function_sybmol_only.so.lsdump} | 304 ++++++++++++------ ...en_cpp_add_function_sybmol_only.so.lsdump} | 304 ++++++++++++------ ...en_cpp_add_function_sybmol_only.so.lsdump} | 304 ++++++++++++------ ...en_cpp_add_function_sybmol_only.so.lsdump} | 304 ++++++++++++------ vndk/tools/header-checker/tests/test.py | 13 +- 8 files changed, 1201 insertions(+), 649 deletions(-) rename vndk/tools/header-checker/tests/reference_dumps/arm/{libgolden_cpp_fabricated_function_ast_removed.so.lsdump => libgolden_cpp_add_function_sybmol_only.so.lsdump} (73%) rename vndk/tools/header-checker/tests/reference_dumps/{x86_64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump => arm64/libgolden_cpp_add_function_sybmol_only.so.lsdump} (73%) rename vndk/tools/header-checker/tests/reference_dumps/{x86/libgolden_cpp_fabricated_function_ast_removed.so.lsdump => mips/libgolden_cpp_add_function_sybmol_only.so.lsdump} (73%) rename vndk/tools/header-checker/tests/reference_dumps/{arm64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump => mips64/libgolden_cpp_add_function_sybmol_only.so.lsdump} (73%) rename vndk/tools/header-checker/tests/reference_dumps/{mips/libgolden_cpp_fabricated_function_ast_removed.so.lsdump => x86/libgolden_cpp_add_function_sybmol_only.so.lsdump} (73%) rename vndk/tools/header-checker/tests/reference_dumps/{mips64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump => x86_64/libgolden_cpp_add_function_sybmol_only.so.lsdump} (73%) diff --git a/vndk/tools/header-checker/tests/module.py b/vndk/tools/header-checker/tests/module.py index e25aa5c77..8ef024612 100755 --- a/vndk/tools/header-checker/tests/module.py +++ b/vndk/tools/header-checker/tests/module.py @@ -263,6 +263,19 @@ TEST_MODULES = [ arch='', 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'], + cflags=[], + arch='', + api='current', + ), LsdumpModule( name='libgolden_cpp_change_function_access', srcs=[ diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_fabricated_function_ast_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function_sybmol_only.so.lsdump similarity index 73% rename from vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_fabricated_function_ast_removed.so.lsdump rename to vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function_sybmol_only.so.lsdump index d4d4ce7f5..bd1e28308 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_fabricated_function_ast_removed.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function_sybmol_only.so.lsdump @@ -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 { type_info { name: "HighVolumeSpeaker" size: 8 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" linker_set_key: "HighVolumeSpeaker" + self_type: "type-11" } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -17,31 +78,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI17HighVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -55,24 +122,25 @@ record_types { name: "LowVolumeSpeaker" size: 16 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" linker_set_key: "LowVolumeSpeaker" + self_type: "type-5" } fields { - referenced_type: "unsigned int" + referenced_type: "type-6" field_offset: 64 field_name: "speaker_uint_t" access: public_access } fields { - referenced_type: "float *" + referenced_type: "type-7" field_offset: 96 field_name: "speaker_float_star" access: public_access } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -81,31 +149,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI16LowVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -114,118 +188,58 @@ record_types { 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 { type_info { name: "SuperSpeaker::Volume" size: 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" linker_set_key: "SuperSpeaker::Volume" + self_type: "type-8" } - underlying_type: "unsigned int" + underlying_type: "type-6" enum_fields { enum_field_value: 1 - name: "SuperSpeaker::Volume::Loud" + name: "SuperSpeaker::Loud" } enum_fields { enum_field_value: 2 - name: "SuperSpeaker::Volume::Louder" + name: "SuperSpeaker::Louder" } enum_fields { enum_field_value: 3 - name: "SuperSpeaker::Volume::Loudest" + name: "SuperSpeaker::Loudest" } enum_fields { - enum_field_value: 4 - name: "SuperSpeaker::Volume::Lower" + enum_field_value: 0 + name: "SuperSpeaker::Lower" } access: private_access tag_info { 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 { type_info { name: "SuperSpeaker *" size: 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" 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 { @@ -233,9 +247,21 @@ pointer_types { name: "float *" size: 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" 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 { @@ -243,9 +269,10 @@ builtin_types { name: "float" size: 4 alignment: 4 - referenced_type: "float" + referenced_type: "type-3" source_file: "" linker_set_key: "float" + self_type: "type-3" } is_unsigned: false is_integral: false @@ -255,9 +282,10 @@ builtin_types { name: "int" size: 4 alignment: 4 - referenced_type: "int" + referenced_type: "type-2" source_file: "" linker_set_key: "int" + self_type: "type-2" } is_unsigned: false is_integral: true @@ -267,9 +295,10 @@ builtin_types { name: "unsigned int" size: 4 alignment: 4 - referenced_type: "unsigned int" + referenced_type: "type-6" source_file: "" linker_set_key: "unsigned int" + self_type: "type-6" } is_unsigned: true is_integral: true @@ -279,127 +308,188 @@ builtin_types { name: "void" size: 0 alignment: 0 - referenced_type: "void" + referenced_type: "type-10" source_file: "" linker_set_key: "void" + self_type: "type-10" } is_unsigned: false is_integral: false } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "int" + referenced_type: "type-2" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" access: public_access } functions { - return_type: "SuperSpeaker::Volume" + return_type: "type-8" function_name: "SuperSpeaker::SpeakLoud" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "SuperSpeaker *" + referenced_type: "type-9" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" access: public_access } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "LowVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" access: public_access } functions { - return_type: "HighVolumeSpeaker *" + return_type: "type-12" function_name: "HighVolumeSpeaker::BadPractice" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } parameters { - referenced_type: "float" + referenced_type: "type-3" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Speak" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" + binding: Global } elf_functions { name: "_ZN12NotReferenced" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker11SpeakLouderEv" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker9SpeakLoudEv" + binding: Global +} +elf_functions { + name: "_ZN12SuperSpeakerD2Ev" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN16LowVolumeSpeakerD0Ev" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker11BadPracticeEf" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeaker13AddedFunctionEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeakerD0Ev" + binding: Global } elf_objects { name: "_ZTV16LowVolumeSpeaker" + binding: Global } elf_objects { name: "_ZTV17HighVolumeSpeaker" + binding: Global } diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function_sybmol_only.so.lsdump similarity index 73% rename from vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump rename to vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function_sybmol_only.so.lsdump index c8dc7f941..7f2114ffc 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function_sybmol_only.so.lsdump @@ -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 { type_info { name: "HighVolumeSpeaker" size: 16 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" linker_set_key: "HighVolumeSpeaker" + self_type: "type-11" } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -17,31 +78,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI17HighVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -55,24 +122,25 @@ record_types { name: "LowVolumeSpeaker" size: 24 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" linker_set_key: "LowVolumeSpeaker" + self_type: "type-5" } fields { - referenced_type: "unsigned int" + referenced_type: "type-6" field_offset: 96 field_name: "speaker_uint_t" access: public_access } fields { - referenced_type: "float *" + referenced_type: "type-7" field_offset: 128 field_name: "speaker_float_star" access: public_access } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -81,31 +149,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI16LowVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -114,118 +188,58 @@ record_types { 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 { type_info { name: "SuperSpeaker::Volume" size: 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" linker_set_key: "SuperSpeaker::Volume" + self_type: "type-8" } - underlying_type: "unsigned int" + underlying_type: "type-6" enum_fields { enum_field_value: 1 - name: "SuperSpeaker::Volume::Loud" + name: "SuperSpeaker::Loud" } enum_fields { enum_field_value: 2 - name: "SuperSpeaker::Volume::Louder" + name: "SuperSpeaker::Louder" } enum_fields { enum_field_value: 3 - name: "SuperSpeaker::Volume::Loudest" + name: "SuperSpeaker::Loudest" } enum_fields { - enum_field_value: 4 - name: "SuperSpeaker::Volume::Lower" + enum_field_value: 0 + name: "SuperSpeaker::Lower" } access: private_access tag_info { 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 { type_info { name: "SuperSpeaker *" size: 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" 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 { @@ -233,9 +247,21 @@ pointer_types { name: "float *" size: 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" 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 { @@ -243,9 +269,10 @@ builtin_types { name: "float" size: 4 alignment: 4 - referenced_type: "float" + referenced_type: "type-3" source_file: "" linker_set_key: "float" + self_type: "type-3" } is_unsigned: false is_integral: false @@ -255,9 +282,10 @@ builtin_types { name: "int" size: 4 alignment: 4 - referenced_type: "int" + referenced_type: "type-2" source_file: "" linker_set_key: "int" + self_type: "type-2" } is_unsigned: false is_integral: true @@ -267,9 +295,10 @@ builtin_types { name: "unsigned int" size: 4 alignment: 4 - referenced_type: "unsigned int" + referenced_type: "type-6" source_file: "" linker_set_key: "unsigned int" + self_type: "type-6" } is_unsigned: true is_integral: true @@ -279,127 +308,188 @@ builtin_types { name: "void" size: 0 alignment: 0 - referenced_type: "void" + referenced_type: "type-10" source_file: "" linker_set_key: "void" + self_type: "type-10" } is_unsigned: false is_integral: false } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "int" + referenced_type: "type-2" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" access: public_access } functions { - return_type: "SuperSpeaker::Volume" + return_type: "type-8" function_name: "SuperSpeaker::SpeakLoud" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "SuperSpeaker *" + referenced_type: "type-9" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" access: public_access } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "LowVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" access: public_access } functions { - return_type: "HighVolumeSpeaker *" + return_type: "type-12" function_name: "HighVolumeSpeaker::BadPractice" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } parameters { - referenced_type: "float" + referenced_type: "type-3" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Speak" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" + binding: Global } elf_functions { name: "_ZN12NotReferenced" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker11SpeakLouderEv" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker9SpeakLoudEv" + binding: Global +} +elf_functions { + name: "_ZN12SuperSpeakerD2Ev" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN16LowVolumeSpeakerD0Ev" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker11BadPracticeEf" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeaker13AddedFunctionEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeakerD0Ev" + binding: Global } elf_objects { name: "_ZTV16LowVolumeSpeaker" + binding: Global } elf_objects { name: "_ZTV17HighVolumeSpeaker" + binding: Global } diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_fabricated_function_ast_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function_sybmol_only.so.lsdump similarity index 73% rename from vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_fabricated_function_ast_removed.so.lsdump rename to vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function_sybmol_only.so.lsdump index d4d4ce7f5..bd1e28308 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_fabricated_function_ast_removed.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function_sybmol_only.so.lsdump @@ -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 { type_info { name: "HighVolumeSpeaker" size: 8 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" linker_set_key: "HighVolumeSpeaker" + self_type: "type-11" } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -17,31 +78,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI17HighVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -55,24 +122,25 @@ record_types { name: "LowVolumeSpeaker" size: 16 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" linker_set_key: "LowVolumeSpeaker" + self_type: "type-5" } fields { - referenced_type: "unsigned int" + referenced_type: "type-6" field_offset: 64 field_name: "speaker_uint_t" access: public_access } fields { - referenced_type: "float *" + referenced_type: "type-7" field_offset: 96 field_name: "speaker_float_star" access: public_access } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -81,31 +149,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI16LowVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -114,118 +188,58 @@ record_types { 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 { type_info { name: "SuperSpeaker::Volume" size: 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" linker_set_key: "SuperSpeaker::Volume" + self_type: "type-8" } - underlying_type: "unsigned int" + underlying_type: "type-6" enum_fields { enum_field_value: 1 - name: "SuperSpeaker::Volume::Loud" + name: "SuperSpeaker::Loud" } enum_fields { enum_field_value: 2 - name: "SuperSpeaker::Volume::Louder" + name: "SuperSpeaker::Louder" } enum_fields { enum_field_value: 3 - name: "SuperSpeaker::Volume::Loudest" + name: "SuperSpeaker::Loudest" } enum_fields { - enum_field_value: 4 - name: "SuperSpeaker::Volume::Lower" + enum_field_value: 0 + name: "SuperSpeaker::Lower" } access: private_access tag_info { 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 { type_info { name: "SuperSpeaker *" size: 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" 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 { @@ -233,9 +247,21 @@ pointer_types { name: "float *" size: 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" 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 { @@ -243,9 +269,10 @@ builtin_types { name: "float" size: 4 alignment: 4 - referenced_type: "float" + referenced_type: "type-3" source_file: "" linker_set_key: "float" + self_type: "type-3" } is_unsigned: false is_integral: false @@ -255,9 +282,10 @@ builtin_types { name: "int" size: 4 alignment: 4 - referenced_type: "int" + referenced_type: "type-2" source_file: "" linker_set_key: "int" + self_type: "type-2" } is_unsigned: false is_integral: true @@ -267,9 +295,10 @@ builtin_types { name: "unsigned int" size: 4 alignment: 4 - referenced_type: "unsigned int" + referenced_type: "type-6" source_file: "" linker_set_key: "unsigned int" + self_type: "type-6" } is_unsigned: true is_integral: true @@ -279,127 +308,188 @@ builtin_types { name: "void" size: 0 alignment: 0 - referenced_type: "void" + referenced_type: "type-10" source_file: "" linker_set_key: "void" + self_type: "type-10" } is_unsigned: false is_integral: false } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "int" + referenced_type: "type-2" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" access: public_access } functions { - return_type: "SuperSpeaker::Volume" + return_type: "type-8" function_name: "SuperSpeaker::SpeakLoud" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "SuperSpeaker *" + referenced_type: "type-9" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" access: public_access } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "LowVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" access: public_access } functions { - return_type: "HighVolumeSpeaker *" + return_type: "type-12" function_name: "HighVolumeSpeaker::BadPractice" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } parameters { - referenced_type: "float" + referenced_type: "type-3" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Speak" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" + binding: Global } elf_functions { name: "_ZN12NotReferenced" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker11SpeakLouderEv" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker9SpeakLoudEv" + binding: Global +} +elf_functions { + name: "_ZN12SuperSpeakerD2Ev" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN16LowVolumeSpeakerD0Ev" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker11BadPracticeEf" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeaker13AddedFunctionEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeakerD0Ev" + binding: Global } elf_objects { name: "_ZTV16LowVolumeSpeaker" + binding: Global } elf_objects { name: "_ZTV17HighVolumeSpeaker" + binding: Global } diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function_sybmol_only.so.lsdump similarity index 73% rename from vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump rename to vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function_sybmol_only.so.lsdump index c8dc7f941..7f2114ffc 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function_sybmol_only.so.lsdump @@ -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 { type_info { name: "HighVolumeSpeaker" size: 16 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" linker_set_key: "HighVolumeSpeaker" + self_type: "type-11" } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -17,31 +78,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI17HighVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -55,24 +122,25 @@ record_types { name: "LowVolumeSpeaker" size: 24 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" linker_set_key: "LowVolumeSpeaker" + self_type: "type-5" } fields { - referenced_type: "unsigned int" + referenced_type: "type-6" field_offset: 96 field_name: "speaker_uint_t" access: public_access } fields { - referenced_type: "float *" + referenced_type: "type-7" field_offset: 128 field_name: "speaker_float_star" access: public_access } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -81,31 +149,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI16LowVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -114,118 +188,58 @@ record_types { 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 { type_info { name: "SuperSpeaker::Volume" size: 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" linker_set_key: "SuperSpeaker::Volume" + self_type: "type-8" } - underlying_type: "unsigned int" + underlying_type: "type-6" enum_fields { enum_field_value: 1 - name: "SuperSpeaker::Volume::Loud" + name: "SuperSpeaker::Loud" } enum_fields { enum_field_value: 2 - name: "SuperSpeaker::Volume::Louder" + name: "SuperSpeaker::Louder" } enum_fields { enum_field_value: 3 - name: "SuperSpeaker::Volume::Loudest" + name: "SuperSpeaker::Loudest" } enum_fields { - enum_field_value: 4 - name: "SuperSpeaker::Volume::Lower" + enum_field_value: 0 + name: "SuperSpeaker::Lower" } access: private_access tag_info { 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 { type_info { name: "SuperSpeaker *" size: 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" 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 { @@ -233,9 +247,21 @@ pointer_types { name: "float *" size: 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" 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 { @@ -243,9 +269,10 @@ builtin_types { name: "float" size: 4 alignment: 4 - referenced_type: "float" + referenced_type: "type-3" source_file: "" linker_set_key: "float" + self_type: "type-3" } is_unsigned: false is_integral: false @@ -255,9 +282,10 @@ builtin_types { name: "int" size: 4 alignment: 4 - referenced_type: "int" + referenced_type: "type-2" source_file: "" linker_set_key: "int" + self_type: "type-2" } is_unsigned: false is_integral: true @@ -267,9 +295,10 @@ builtin_types { name: "unsigned int" size: 4 alignment: 4 - referenced_type: "unsigned int" + referenced_type: "type-6" source_file: "" linker_set_key: "unsigned int" + self_type: "type-6" } is_unsigned: true is_integral: true @@ -279,127 +308,188 @@ builtin_types { name: "void" size: 0 alignment: 0 - referenced_type: "void" + referenced_type: "type-10" source_file: "" linker_set_key: "void" + self_type: "type-10" } is_unsigned: false is_integral: false } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "int" + referenced_type: "type-2" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" access: public_access } functions { - return_type: "SuperSpeaker::Volume" + return_type: "type-8" function_name: "SuperSpeaker::SpeakLoud" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "SuperSpeaker *" + referenced_type: "type-9" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" access: public_access } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "LowVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" access: public_access } functions { - return_type: "HighVolumeSpeaker *" + return_type: "type-12" function_name: "HighVolumeSpeaker::BadPractice" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } parameters { - referenced_type: "float" + referenced_type: "type-3" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Speak" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" + binding: Global } elf_functions { name: "_ZN12NotReferenced" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker11SpeakLouderEv" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker9SpeakLoudEv" + binding: Global +} +elf_functions { + name: "_ZN12SuperSpeakerD2Ev" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN16LowVolumeSpeakerD0Ev" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker11BadPracticeEf" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeaker13AddedFunctionEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeakerD0Ev" + binding: Global } elf_objects { name: "_ZTV16LowVolumeSpeaker" + binding: Global } elf_objects { name: "_ZTV17HighVolumeSpeaker" + binding: Global } diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_fabricated_function_ast_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function_sybmol_only.so.lsdump similarity index 73% rename from vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_fabricated_function_ast_removed.so.lsdump rename to vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function_sybmol_only.so.lsdump index d4d4ce7f5..bd1e28308 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_fabricated_function_ast_removed.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function_sybmol_only.so.lsdump @@ -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 { type_info { name: "HighVolumeSpeaker" size: 8 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" linker_set_key: "HighVolumeSpeaker" + self_type: "type-11" } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -17,31 +78,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI17HighVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -55,24 +122,25 @@ record_types { name: "LowVolumeSpeaker" size: 16 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" linker_set_key: "LowVolumeSpeaker" + self_type: "type-5" } fields { - referenced_type: "unsigned int" + referenced_type: "type-6" field_offset: 64 field_name: "speaker_uint_t" access: public_access } fields { - referenced_type: "float *" + referenced_type: "type-7" field_offset: 96 field_name: "speaker_float_star" access: public_access } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -81,31 +149,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI16LowVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -114,118 +188,58 @@ record_types { 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 { type_info { name: "SuperSpeaker::Volume" size: 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" linker_set_key: "SuperSpeaker::Volume" + self_type: "type-8" } - underlying_type: "unsigned int" + underlying_type: "type-6" enum_fields { enum_field_value: 1 - name: "SuperSpeaker::Volume::Loud" + name: "SuperSpeaker::Loud" } enum_fields { enum_field_value: 2 - name: "SuperSpeaker::Volume::Louder" + name: "SuperSpeaker::Louder" } enum_fields { enum_field_value: 3 - name: "SuperSpeaker::Volume::Loudest" + name: "SuperSpeaker::Loudest" } enum_fields { - enum_field_value: 4 - name: "SuperSpeaker::Volume::Lower" + enum_field_value: 0 + name: "SuperSpeaker::Lower" } access: private_access tag_info { 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 { type_info { name: "SuperSpeaker *" size: 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" 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 { @@ -233,9 +247,21 @@ pointer_types { name: "float *" size: 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" 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 { @@ -243,9 +269,10 @@ builtin_types { name: "float" size: 4 alignment: 4 - referenced_type: "float" + referenced_type: "type-3" source_file: "" linker_set_key: "float" + self_type: "type-3" } is_unsigned: false is_integral: false @@ -255,9 +282,10 @@ builtin_types { name: "int" size: 4 alignment: 4 - referenced_type: "int" + referenced_type: "type-2" source_file: "" linker_set_key: "int" + self_type: "type-2" } is_unsigned: false is_integral: true @@ -267,9 +295,10 @@ builtin_types { name: "unsigned int" size: 4 alignment: 4 - referenced_type: "unsigned int" + referenced_type: "type-6" source_file: "" linker_set_key: "unsigned int" + self_type: "type-6" } is_unsigned: true is_integral: true @@ -279,127 +308,188 @@ builtin_types { name: "void" size: 0 alignment: 0 - referenced_type: "void" + referenced_type: "type-10" source_file: "" linker_set_key: "void" + self_type: "type-10" } is_unsigned: false is_integral: false } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "int" + referenced_type: "type-2" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" access: public_access } functions { - return_type: "SuperSpeaker::Volume" + return_type: "type-8" function_name: "SuperSpeaker::SpeakLoud" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "SuperSpeaker *" + referenced_type: "type-9" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" access: public_access } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "LowVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" access: public_access } functions { - return_type: "HighVolumeSpeaker *" + return_type: "type-12" function_name: "HighVolumeSpeaker::BadPractice" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } parameters { - referenced_type: "float" + referenced_type: "type-3" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Speak" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" + binding: Global } elf_functions { name: "_ZN12NotReferenced" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker11SpeakLouderEv" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker9SpeakLoudEv" + binding: Global +} +elf_functions { + name: "_ZN12SuperSpeakerD2Ev" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN16LowVolumeSpeakerD0Ev" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker11BadPracticeEf" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeaker13AddedFunctionEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeakerD0Ev" + binding: Global } elf_objects { name: "_ZTV16LowVolumeSpeaker" + binding: Global } elf_objects { name: "_ZTV17HighVolumeSpeaker" + binding: Global } diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function_sybmol_only.so.lsdump similarity index 73% rename from vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump rename to vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function_sybmol_only.so.lsdump index c8dc7f941..7f2114ffc 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_fabricated_function_ast_removed.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function_sybmol_only.so.lsdump @@ -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 { type_info { name: "HighVolumeSpeaker" size: 16 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" linker_set_key: "HighVolumeSpeaker" + self_type: "type-11" } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -17,31 +78,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI17HighVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -55,24 +122,25 @@ record_types { name: "LowVolumeSpeaker" size: 24 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" linker_set_key: "LowVolumeSpeaker" + self_type: "type-5" } fields { - referenced_type: "unsigned int" + referenced_type: "type-6" field_offset: 96 field_name: "speaker_uint_t" access: public_access } fields { - referenced_type: "float *" + referenced_type: "type-7" field_offset: 128 field_name: "speaker_float_star" access: public_access } base_specifiers { - referenced_type: "SuperSpeaker" + referenced_type: "type-1" is_virtual: false access: public_access } @@ -81,31 +149,37 @@ record_types { kind: OffsetToTop mangled_component_name: "" component_value: 0 + is_pure: false } vtable_components { kind: RTTI mangled_component_name: "_ZTI16LowVolumeSpeaker" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" component_value: 0 + is_pure: false } vtable_components { kind: FunctionPointer mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" component_value: 0 + is_pure: false } vtable_components { kind: CompleteDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" component_value: 0 + is_pure: false } vtable_components { kind: DeletingDtorPointer mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" component_value: 0 + is_pure: false } } access: public_access @@ -114,118 +188,58 @@ record_types { 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 { type_info { name: "SuperSpeaker::Volume" size: 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" linker_set_key: "SuperSpeaker::Volume" + self_type: "type-8" } - underlying_type: "unsigned int" + underlying_type: "type-6" enum_fields { enum_field_value: 1 - name: "SuperSpeaker::Volume::Loud" + name: "SuperSpeaker::Loud" } enum_fields { enum_field_value: 2 - name: "SuperSpeaker::Volume::Louder" + name: "SuperSpeaker::Louder" } enum_fields { enum_field_value: 3 - name: "SuperSpeaker::Volume::Loudest" + name: "SuperSpeaker::Loudest" } enum_fields { - enum_field_value: 4 - name: "SuperSpeaker::Volume::Lower" + enum_field_value: 0 + name: "SuperSpeaker::Lower" } access: private_access tag_info { 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 { type_info { name: "SuperSpeaker *" size: 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" 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 { @@ -233,9 +247,21 @@ pointer_types { name: "float *" size: 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" 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 { @@ -243,9 +269,10 @@ builtin_types { name: "float" size: 4 alignment: 4 - referenced_type: "float" + referenced_type: "type-3" source_file: "" linker_set_key: "float" + self_type: "type-3" } is_unsigned: false is_integral: false @@ -255,9 +282,10 @@ builtin_types { name: "int" size: 4 alignment: 4 - referenced_type: "int" + referenced_type: "type-2" source_file: "" linker_set_key: "int" + self_type: "type-2" } is_unsigned: false is_integral: true @@ -267,9 +295,10 @@ builtin_types { name: "unsigned int" size: 4 alignment: 4 - referenced_type: "unsigned int" + referenced_type: "type-6" source_file: "" linker_set_key: "unsigned int" + self_type: "type-6" } is_unsigned: true is_integral: true @@ -279,127 +308,188 @@ builtin_types { name: "void" size: 0 alignment: 0 - referenced_type: "void" + referenced_type: "type-10" source_file: "" linker_set_key: "void" + self_type: "type-10" } is_unsigned: false is_integral: false } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "int" + referenced_type: "type-2" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" access: public_access } functions { - return_type: "SuperSpeaker::Volume" + return_type: "type-8" function_name: "SuperSpeaker::SpeakLoud" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" parameters { - referenced_type: "SuperSpeaker *" + referenced_type: "type-9" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" access: public_access } 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" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "LowVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" parameters { - referenced_type: "LowVolumeSpeaker *" + referenced_type: "type-4" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" access: public_access } functions { - return_type: "HighVolumeSpeaker *" + return_type: "type-12" function_name: "HighVolumeSpeaker::BadPractice" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } parameters { - referenced_type: "float" + referenced_type: "type-3" default_arg: false + is_this_ptr: false } linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Speak" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" access: public_access } functions { - return_type: "void" + return_type: "type-10" function_name: "HighVolumeSpeaker::Listen" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" parameters { - referenced_type: "HighVolumeSpeaker *" + referenced_type: "type-12" default_arg: false + is_this_ptr: true } linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" + binding: Global } elf_functions { name: "_ZN12NotReferenced" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker11SpeakLouderEv" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + binding: Global } elf_functions { name: "_ZN12SuperSpeaker9SpeakLoudEv" + binding: Global +} +elf_functions { + name: "_ZN12SuperSpeakerD2Ev" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN16LowVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN16LowVolumeSpeakerD0Ev" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker11BadPracticeEf" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeaker13AddedFunctionEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker5SpeakEv" + binding: Global } elf_functions { name: "_ZN17HighVolumeSpeaker6ListenEv" + binding: Global +} +elf_functions { + name: "_ZN17HighVolumeSpeakerD0Ev" + binding: Global } elf_objects { name: "_ZTV16LowVolumeSpeaker" + binding: Global } elf_objects { name: "_ZTV17HighVolumeSpeaker" + binding: Global } diff --git a/vndk/tools/header-checker/tests/test.py b/vndk/tools/header-checker/tests/test.py index 7540bc8b0..bef8e74de 100755 --- a/vndk/tools/header-checker/tests/test.py +++ b/vndk/tools/header-checker/tests/test.py @@ -64,8 +64,7 @@ class MyTest(unittest.TestCase): 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) + return os.path.join(REF_DUMP_DIR, target_arch, module.get_dump_name()) def prepare_and_run_abi_diff_all_archs(self, old_lib, new_lib, expected_return_code, flags=[], @@ -171,6 +170,11 @@ class MyTest(unittest.TestCase): self.prepare_and_run_abi_diff_all_archs( "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): self.prepare_and_run_abi_diff_all_archs( "libgolden_cpp", "libgolden_cpp_change_function_access", 8) @@ -212,11 +216,6 @@ class MyTest(unittest.TestCase): self.prepare_and_run_abi_diff_all_archs( "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): self.prepare_and_run_abi_diff_all_archs( "libgolden_cpp", "libgolden_cpp_member_fake_diff", 0) From e89977ad7e6034770b08272bdcbb5cac36e29c84 Mon Sep 17 00:00:00 2001 From: Hsin-Yi Chen Date: Fri, 16 Nov 2018 18:53:41 +0800 Subject: [PATCH 2/2] Refactor header-checker tests - Rename the unit test class to HeaderCheckerTest. - Create/delete temporary directory in setUp/tearDown. - Move make_and_copy_reference_dumps from gen_all.py to test.py. - Remove duplicate constant paths. - Add default arguments to LsdumpModule. - Fix coding style. Bug: 117582158 Test: ./gen_all.py Test: ./test.py Change-Id: I6345a10da5431e8057e4a9321ecce4168b7d5292 --- vndk/tools/header-checker/tests/gen_all.py | 20 ++- vndk/tools/header-checker/tests/module.py | 136 +++++---------------- vndk/tools/header-checker/tests/test.py | 102 ++++++++++------ vndk/tools/header-checker/utils/utils.py | 36 ++---- 4 files changed, 113 insertions(+), 181 deletions(-) diff --git a/vndk/tools/header-checker/tests/gen_all.py b/vndk/tools/header-checker/tests/gen_all.py index 9bb62e9a8..474b7228a 100755 --- a/vndk/tools/header-checker/tests/gen_all.py +++ b/vndk/tools/header-checker/tests/gen_all.py @@ -9,25 +9,18 @@ import_path = os.path.abspath(os.path.join(import_path, 'utils')) sys.path.insert(1, import_path) from utils import run_header_abi_dumper -from utils import copy_reference_dump_content 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'] -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(): 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 for base, dirnames, filenames in os.walk(INPUT_DIR): @@ -48,9 +41,10 @@ def main(): f.write(output_content) modules = Module.get_test_modules() for module in modules: - make_and_copy_reference_dumps(module) + print('Created abi dump at', make_and_copy_reference_dumps(module)) return 0 + if __name__ == '__main__': sys.exit(main()) diff --git a/vndk/tools/header-checker/tests/module.py b/vndk/tools/header-checker/tests/module.py index 8ef024612..a3ae37946 100755 --- a/vndk/tools/header-checker/tests/module.py +++ b/vndk/tools/header-checker/tests/module.py @@ -11,26 +11,25 @@ sys.path.insert(1, import_path) from utils import run_header_abi_dumper from utils import run_header_abi_dumper_on_file from utils import run_header_abi_linker -from utils import TARGET_ARCHS from utils import SOURCE_ABI_DUMP_EXT 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 = { - 'arm': ['-target', 'arm-linux-androideabi'], - 'arm64': ['-target', 'aarch64-linux-android'], - 'x86': ['-target', 'i386-linux-androideabi'], - 'x86_64': ['-target', 'x86_64-linux-android'], - 'mips': ['-target', 'mips-linux-androideabi'], - 'mips64': ['-target', 'mips64-linux-android'], + 'arm': ('-target', 'arm-linux-androideabi'), + 'arm64': ('-target', 'aarch64-linux-android'), + 'x86': ('-target', 'i386-linux-androideabi'), + 'x86_64': ('-target', 'x86_64-linux-android'), + 'mips': ('-target', 'mips-linux-androideabi'), + 'mips64': ('-target', 'mips64-linux-android'), } +TARGET_ARCHES = ['arm', 'arm64', 'x86', 'x86_64', 'mips', 'mips64'] + def relative_to_abs_path(relative_path): return os.path.join(SCRIPT_DIR, relative_path) + def relative_to_abs_path_list(relative_path_list): abs_paths = [] for relative_path in relative_path_list: @@ -42,17 +41,16 @@ class Module(object): def __init__(self, name, arch, cflags, export_include_dirs): self.name = name self.arch = arch - self.cflags = cflags - self.arch_cflags = [''] - if self.arch != '': - self.arch_cflags = ARCH_TARGET_CFLAGS.get(self.arch) - self.export_include_dirs = relative_to_abs_path_list(export_include_dirs) + self.cflags = tuple(cflags) + self.arch_cflags = ARCH_TARGET_CFLAGS.get(self.arch, tuple()) + self.export_include_dirs = relative_to_abs_path_list( + export_include_dirs) def get_dump_name(self): """Returns the module name followed by file extension.""" raise NotImplementedError() - def make_dump(self, default_cflags): + def make_dump(self): """Returns the dump content as a string.""" raise NotImplementedError() @@ -61,8 +59,10 @@ class Module(object): raise NotImplementedError() def mutate_for_all_arches(self): + if self.arch: + return [self] modules = [] - for target_arch in TARGET_ARCHS: + for target_arch in TARGET_ARCHES: modules.append(self.mutate_for_arch(target_arch)) return modules @@ -70,13 +70,12 @@ class Module(object): def get_test_modules(): modules = [] for module in TEST_MODULES.values(): - if module.arch == '': - modules += module.mutate_for_all_arches() + modules += module.mutate_for_all_arches() return modules @staticmethod - def get_test_module_by_name(name): - return TEST_MODULES.get(name) + def get_test_modules_by_name(name): + return TEST_MODULES.get(name).mutate_for_all_arches() class SdumpModule(Module): @@ -90,7 +89,7 @@ class SdumpModule(Module): def get_dump_name(self): return self.name + '.sdump' - def make_dump(self, default_cflags): + def make_dump(self): return run_header_abi_dumper( self.src, remove_absolute_paths=True, cflags=self.cflags, export_include_dirs=self.export_include_dirs, @@ -102,8 +101,8 @@ class SdumpModule(Module): class LsdumpModule(Module): - def __init__(self, name, arch, srcs, version_script, cflags, - export_include_dirs, api, dumper_flags=tuple(), + def __init__(self, name, srcs, version_script, export_include_dirs, + cflags=tuple(), arch='', api='current', dumper_flags=tuple(), linker_flags=tuple()): super(LsdumpModule, self).__init__(name, arch, cflags, export_include_dirs) @@ -116,28 +115,28 @@ class LsdumpModule(Module): def get_dump_name(self): return self.name + SOURCE_ABI_DUMP_EXT - def make_dump(self, default_cflags): - """ For each source file, produce a .sdump file, and link them to form - an lsump file""" + def make_dump(self): + """For each source file, produce a .sdump file, and link them to form + an lsump file.""" dumps_to_link = [] with tempfile.TemporaryDirectory() as tmp: output_lsdump = os.path.join(tmp, self.get_dump_name()) 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) run_header_abi_dumper_on_file( src, output_path, self.export_include_dirs, - self.cflags + self.arch_cflags + default_cflags, + self.cflags + self.arch_cflags, self.dumper_flags) return run_header_abi_linker(output_lsdump, dumps_to_link, self.version_script, self.api, self.arch, self.linker_flags) def mutate_for_arch(self, target_arch): - return LsdumpModule(self.name, target_arch, self.srcs, - self.version_script, self.cflags, - self.export_include_dirs, self.api, - self.dumper_flags, self.linker_flags) + return LsdumpModule(self.name, self.srcs, self.version_script, + self.export_include_dirs, self.cflags, target_arch, + self.api, self.dumper_flags, self.linker_flags) TEST_MODULES = [ @@ -159,9 +158,6 @@ TEST_MODULES = [ ], version_script='integration/c_and_cpp/map.txt', export_include_dirs=['integration/c_and_cpp/include'], - cflags=[], - arch='', - api='current', ), LsdumpModule( name='libc_and_cpp_with_opaque_ptr_a', @@ -172,8 +168,6 @@ TEST_MODULES = [ version_script='integration/c_and_cpp/map.txt', export_include_dirs=['integration/c_and_cpp/include'], cflags=['-DOPAQUE_STRUCT_A=1'], - arch='', - api='current', ), LsdumpModule( name='libc_and_cpp_with_opaque_ptr_b', @@ -184,8 +178,6 @@ TEST_MODULES = [ version_script='integration/c_and_cpp/map.txt', export_include_dirs=['integration/c_and_cpp/include'], cflags=['-DOPAQUE_STRUCT_B=1'], - arch='', - api='current', ), LsdumpModule( name='libc_and_cpp_with_unused_struct', @@ -196,8 +188,6 @@ TEST_MODULES = [ version_script='integration/c_and_cpp/map.txt', export_include_dirs=['integration/c_and_cpp/include'], cflags=['-DINCLUDE_UNUSED_STRUCTS=1'], - arch='', - api='current', ), LsdumpModule( name='libc_and_cpp_with_unused_cstruct', @@ -208,8 +198,6 @@ TEST_MODULES = [ version_script='integration/c_and_cpp/map.txt', export_include_dirs=['integration/c_and_cpp/include'], cflags=['-DINCLUDE_UNUSED_STRUCTS=1', '-DMAKE_UNUSED_STRUCT_C=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp', @@ -220,9 +208,6 @@ TEST_MODULES = [ ], version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], - cflags=[], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_odr', @@ -234,8 +219,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DTEST_ODR'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_add_function', @@ -247,8 +230,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map_add_function.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_ADD_FUNCTION=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_add_function_and_unexported_elf', @@ -272,9 +253,6 @@ TEST_MODULES = [ ], version_script='integration/cpp/gold/map_add_function.txt', export_include_dirs=['integration/cpp/gold/include'], - cflags=[], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_change_function_access', @@ -286,8 +264,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_CHANGE_FUNCTION_ACCESS=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_add_global_variable', @@ -299,8 +275,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map_added_globvar.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_ADD_GLOBVAR=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_add_global_variable_private', @@ -312,8 +286,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map_added_globvar.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_ADD_GLOBVAR=1', '-DGOLDEN_ADD_GLOBVAR_PRIVATE'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_return_type_diff', @@ -325,8 +297,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_RETURN_TYPE_DIFF=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_parameter_type_diff', @@ -338,8 +308,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map_parameter_type_diff.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_PARAMETER_TYPE_DIFF=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_vtable_diff', @@ -351,8 +319,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_VTABLE_DIFF=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_member_diff', @@ -364,8 +330,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_MEMBER_DIFF=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_member_fake_diff', @@ -377,8 +341,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_MEMBER_FAKE_DIFF=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_member_cv_diff', @@ -390,8 +352,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_MEMBER_CV_DIFF=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_change_member_access', @@ -403,8 +363,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_CHANGE_MEMBER_ACCESS=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_member_integral_type_diff', @@ -416,8 +374,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_MEMBER_INTEGRAL_TYPE_DIFF=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_enum_diff', @@ -429,8 +385,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_ENUM_DIFF=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_enum_extended', @@ -442,8 +396,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_ENUM_EXTENSION=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_unreferenced_elf_symbol_removed', @@ -454,18 +406,12 @@ TEST_MODULES = [ ], version_script='integration/cpp/gold/map_elf_symbol_removed.txt', export_include_dirs=['integration/cpp/gold/include'], - cflags=[], - arch='', - api='current', ), LsdumpModule( name='libreproducability', srcs=['integration/c_and_cpp/reproducability.c'], version_script='integration/c_and_cpp/repro_map.txt', export_include_dirs=['integration/c_and_cpp/include'], - cflags=[], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_member_name_changed', @@ -477,8 +423,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_CHANGE_MEMBER_NAME_SAME_OFFSET=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_function_pointer', @@ -490,8 +434,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_FUNCTION_POINTER=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_function_pointer_parameter_added', @@ -504,8 +446,6 @@ TEST_MODULES = [ export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_FUNCTION_POINTER_ADD_PARAM=1', '-DGOLDEN_FUNCTION_POINTER=1'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_internal_public_struct', @@ -518,8 +458,6 @@ TEST_MODULES = [ export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_WITH_INTERNAL_STRUCT', '-DGOLDEN_WITH_PUBLIC_INTERNAL_STRUCT'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_internal_private_struct', @@ -531,8 +469,6 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_WITH_INTERNAL_STRUCT'], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_inheritance_type_changed', @@ -544,17 +480,12 @@ TEST_MODULES = [ version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], cflags=['-DGOLDEN_CHANGE_INHERITANCE_TYPE'], - arch='', - api='current', ), LsdumpModule( name='libpure_virtual_function', srcs=['integration/cpp/pure_virtual/pure_virtual_function.cpp'], export_include_dirs=['integration/cpp/pure_virtual/include'], version_script='', - cflags=[], - arch='', - api='current', ), LsdumpModule( name='libgolden_cpp_json', @@ -565,9 +496,6 @@ TEST_MODULES = [ ], version_script='integration/cpp/gold/map.txt', export_include_dirs=['integration/cpp/gold/include'], - cflags=[], - arch='', - api='current', dumper_flags=['-output-format', 'Json'], linker_flags=['-input-format', 'Json', '-output-format', 'Json'] ), diff --git a/vndk/tools/header-checker/tests/test.py b/vndk/tools/header-checker/tests/test.py index bef8e74de..71d626087 100755 --- a/vndk/tools/header-checker/tests/test.py +++ b/vndk/tools/header-checker/tests/test.py @@ -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')) sys.path.insert(1, import_path) -from utils import ( - AOSP_DIR, SOURCE_ABI_DUMP_EXT, TARGET_ARCHS, read_output_content, - run_abi_diff, run_header_abi_dumper) +from utils import (AOSP_DIR, read_output_content, run_abi_diff, + run_header_abi_dumper) from module import Module -from gen_all import make_and_copy_reference_dumps 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') -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 def setUpClass(cls): 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=[]): with open(expected_path, 'r') as f: expected_output = f.read() @@ -53,43 +77,43 @@ class MyTest(unittest.TestCase): def prepare_and_run_abi_diff(self, old_ref_dump_path, new_ref_dump_path, target_arch, expected_return_code, flags=[]): self.run_and_compare_abi_diff(old_ref_dump_path, new_ref_dump_path, - 'test', target_arch, expected_return_code, - flags) + 'test', target_arch, + expected_return_code, flags) - def create_ref_dump(self, module_bare, dir_name, target_arch): - module = module_bare.mutate_for_arch(target_arch) - return make_and_copy_reference_dumps(module, [], dir_name) - - def get_or_create_ref_dump(self, name, target_arch, dir_name, create): - module = Module.get_test_module_by_name(name) - if create == True: - return self.create_ref_dump(module, dir_name, target_arch) - return os.path.join(REF_DUMP_DIR, target_arch, module.get_dump_name()) + def get_or_create_ref_dump(self, module, create): + if create: + 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 prepare_and_run_abi_diff_all_archs(self, old_lib, new_lib, expected_return_code, flags=[], create_old=False, create_new=True): - with tempfile.TemporaryDirectory() as tmp: - for target_arch in TARGET_ARCHS: - old_ref_dump_path = self.get_or_create_ref_dump( - old_lib, target_arch, tmp, create_old) - new_ref_dump_path = self.get_or_create_ref_dump( - new_lib, target_arch, tmp, create_new) - self.prepare_and_run_abi_diff( - old_ref_dump_path, new_ref_dump_path, target_arch, - expected_return_code, flags) + old_modules = Module.get_test_modules_by_name(old_lib) + new_modules = Module.get_test_modules_by_name(new_lib) + self.assertEqual(len(old_modules), len(new_modules)) - def prepare_and_absolute_diff_all_archs(self, old_lib, new_lib, - flags=[], create=True): - with tempfile.TemporaryDirectory() as tmp: - for target_arch in TARGET_ARCHS: - old_ref_dump_path = self.get_or_create_ref_dump( - old_lib, target_arch, tmp, False) - new_ref_dump_path = self.get_or_create_ref_dump( - new_lib, target_arch, tmp, create) - self.assertEqual( - read_output_content(old_ref_dump_path, AOSP_DIR), - read_output_content(new_ref_dump_path, AOSP_DIR)) + for old_module, new_module in zip(old_modules, new_modules): + 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( + old_ref_dump_path, new_ref_dump_path, new_module.arch, + expected_return_code, flags) + + def prepare_and_absolute_diff_all_archs(self, old_lib, new_lib): + old_modules = Module.get_test_modules_by_name(old_lib) + new_modules = Module.get_test_modules_by_name(new_lib) + self.assertEqual(len(old_modules), len(new_modules)) + + for old_module, new_module in zip(old_modules, new_modules): + self.assertEqual(old_module.arch, new_module.arch) + 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( + read_output_content(old_ref_dump_path, AOSP_DIR), + read_output_content(new_ref_dump_path, AOSP_DIR)) def test_example1_cpp(self): self.run_and_compare_name_cpp('example1.cpp') @@ -168,7 +192,8 @@ class MyTest(unittest.TestCase): def test_libgolden_cpp_add_function_and_elf_symbol(self): 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( @@ -244,7 +269,8 @@ class MyTest(unittest.TestCase): def test_libgolden_cpp_member_function_pointer_changed(self): self.prepare_and_run_abi_diff_all_archs( "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): self.prepare_and_run_abi_diff_all_archs( diff --git a/vndk/tools/header-checker/utils/utils.py b/vndk/tools/header-checker/utils/utils.py index 88982afd6..842e99ce4 100644 --- a/vndk/tools/header-checker/utils/utils.py +++ b/vndk/tools/header-checker/utils/utils.py @@ -19,7 +19,8 @@ except KeyError: BUILTIN_HEADERS_DIR = ( os.path.join(AOSP_DIR, 'bionic', 'libc', '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 = ( @@ -38,8 +39,6 @@ DEFAULT_CFLAGS = ['-std=gnu99'] DEFAULT_HEADER_FLAGS = ["-dump-function-declarations"] DEFAULT_FORMAT = 'ProtobufTextFormat' -TARGET_ARCHS = ['arm', 'arm64', 'x86', 'x86_64', 'mips', 'mips64'] - def get_reference_dump_dir(reference_dump_dir_stem, reference_dump_dir_insertion, lib_arch): @@ -78,21 +77,6 @@ def copy_reference_dump(lib_path, reference_dump_dir, compress): 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): with open(output_path, 'r') as f: 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(), flags=tuple()): 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: cmd += ['-I', dir] cmd += flags @@ -188,15 +172,15 @@ def find_lib_lsdumps(target_arch, target_arch_variant, cpu_variant = '_' + target_cpu_variant arch_variant = '_' + target_arch_variant arch_lsdump_paths = [] - if target_cpu_variant == 'generic' or target_cpu_variant is None or\ - target_cpu_variant == '': + if (target_cpu_variant == 'generic' or target_cpu_variant is None or + target_cpu_variant == ''): cpu_variant = '' - if target_arch_variant == target_arch or target_arch_variant is None or\ - target_arch_variant == '': + if (target_arch_variant == target_arch or target_arch_variant is None or + target_arch_variant == ''): arch_variant = '' - target_dir = 'android_' + target_arch + arch_variant +\ - cpu_variant + core_or_vendor_shared_str + target_dir = ('android_' + target_arch + arch_variant + + cpu_variant + core_or_vendor_shared_str) for key in lsdump_paths: if libs and key not in libs: continue @@ -245,7 +229,7 @@ def get_build_vars_for_product(names, product=None): out, err = proc.communicate() if proc.returncode != 0: - print ("error: %s" % err.decode('utf-8'), file=sys.stderr) + print("error: %s" % err.decode('utf-8'), file=sys.stderr) return None build_vars = out.decode('utf-8').strip().splitlines()