diff --git a/vndk/tools/header-checker/header-abi-dumper/src/abi_wrappers.cpp b/vndk/tools/header-checker/header-abi-dumper/src/abi_wrappers.cpp index 2fc0d71e5..c6dd1e299 100644 --- a/vndk/tools/header-checker/header-abi-dumper/src/abi_wrappers.cpp +++ b/vndk/tools/header-checker/header-abi-dumper/src/abi_wrappers.cpp @@ -633,6 +633,8 @@ bool RecordDeclWrapper::SetupCXXBases( return true; } +typedef std::map ThunkMap; + bool RecordDeclWrapper::SetupRecordVTable( abi_util::RecordTypeIR *record_declp, const clang::CXXRecordDecl *cxx_record_decl) { @@ -654,18 +656,29 @@ bool RecordDeclWrapper::SetupRecordVTable( } const clang::VTableLayout &vtable_layout = itanium_vtable_contextp->getVTableLayout(cxx_record_decl); + ThunkMap thunk_map(vtable_layout.vtable_thunk_begin(), + vtable_layout.vtable_thunk_end()); abi_util::VTableLayoutIR vtable_ir_layout; - for (const auto &vtable_component : vtable_layout.vtable_components()) { - abi_util::VTableComponentIR added_component= - SetupRecordVTableComponent(vtable_component); + + uint64_t index = 0; + for (auto vtable_component : vtable_layout.vtable_components()) { + clang::ThunkInfo thunk_info; + ThunkMap::iterator it = thunk_map.find(index); + if (it != thunk_map.end()) { + thunk_info = it->second; + } + abi_util::VTableComponentIR added_component = + SetupRecordVTableComponent(vtable_component, thunk_info); vtable_ir_layout.AddVTableComponent(std::move(added_component)); + index++; } record_declp->SetVTableLayout(std::move(vtable_ir_layout)); return true; } abi_util::VTableComponentIR RecordDeclWrapper::SetupRecordVTableComponent( - const clang::VTableComponent &vtable_component) { + const clang::VTableComponent &vtable_component, + const clang::ThunkInfo &thunk_info) { abi_util::VTableComponentIR::Kind kind = abi_util::VTableComponentIR::Kind::RTTI; std::string mangled_component_name = ""; @@ -673,6 +686,7 @@ abi_util::VTableComponentIR RecordDeclWrapper::SetupRecordVTableComponent( int64_t value = 0; clang::VTableComponent::Kind clang_component_kind = vtable_component.getKind(); + switch (clang_component_kind) { case clang::VTableComponent::CK_VCallOffset: kind = abi_util::VTableComponentIR::Kind::VCallOffset; @@ -706,22 +720,36 @@ abi_util::VTableComponentIR RecordDeclWrapper::SetupRecordVTableComponent( switch (clang_component_kind) { case clang::VTableComponent::CK_FunctionPointer: kind = abi_util::VTableComponentIR::Kind::FunctionPointer; - mangled_component_name = GetMangledNameDecl(method_decl, - mangle_contextp_); - break; - case clang::VTableComponent::CK_CompleteDtorPointer: - kind = abi_util::VTableComponentIR::Kind::CompleteDtorPointer; - mangle_contextp_->mangleCXXDtor( - vtable_component.getDestructorDecl(), - clang::CXXDtorType::Dtor_Complete, ostream); + if (thunk_info.isEmpty()) { + mangle_contextp_->mangleName(method_decl, ostream); + } else { + mangle_contextp_->mangleThunk(method_decl, thunk_info, ostream); + } ostream.flush(); break; + case clang::VTableComponent::CK_CompleteDtorPointer: case clang::VTableComponent::CK_DeletingDtorPointer: - kind = abi_util::VTableComponentIR::Kind::DeletingDtorPointer; - mangle_contextp_->mangleCXXDtor( - vtable_component.getDestructorDecl(), - clang::CXXDtorType::Dtor_Deleting, ostream); - ostream.flush(); + { + clang::CXXDtorType dtor_type; + if (clang_component_kind == + clang::VTableComponent::CK_CompleteDtorPointer) { + dtor_type = clang::CXXDtorType::Dtor_Complete; + kind = abi_util::VTableComponentIR::Kind::CompleteDtorPointer; + } else { + dtor_type = clang::CXXDtorType::Dtor_Deleting; + kind = abi_util::VTableComponentIR::Kind::DeletingDtorPointer; + } + + if (thunk_info.isEmpty()) { + mangle_contextp_->mangleCXXDtor( + vtable_component.getDestructorDecl(), dtor_type, ostream); + } else { + mangle_contextp_->mangleCXXDtorThunk( + vtable_component.getDestructorDecl(), dtor_type, + thunk_info.This, ostream); + } + ostream.flush(); + } break; case clang::VTableComponent::CK_UnusedFunctionPointer: kind = abi_util::VTableComponentIR::Kind::UnusedFunctionPointer; diff --git a/vndk/tools/header-checker/header-abi-dumper/src/abi_wrappers.h b/vndk/tools/header-checker/header-abi-dumper/src/abi_wrappers.h index 4e1c2bc2d..cd068fb92 100644 --- a/vndk/tools/header-checker/header-abi-dumper/src/abi_wrappers.h +++ b/vndk/tools/header-checker/header-abi-dumper/src/abi_wrappers.h @@ -129,8 +129,9 @@ class RecordDeclWrapper : public ABIWrapper { std::string GetMangledRTTI(const clang::CXXRecordDecl *cxx_record_decl); - abi_util::VTableComponentIR SetupRecordVTableComponent( - const clang::VTableComponent &vtable_component); + abi_util::VTableComponentIR + SetupRecordVTableComponent(const clang::VTableComponent &vtable_component, + const clang::ThunkInfo &thunk_info); bool SetupCXXRecordInfo(abi_util::RecordTypeIR *record_declp, const std::string &source_file); diff --git a/vndk/tools/header-checker/header-abi-util/src/abi_diff_helpers.cpp b/vndk/tools/header-checker/header-abi-util/src/abi_diff_helpers.cpp index 616f28f18..05482b891 100644 --- a/vndk/tools/header-checker/header-abi-util/src/abi_diff_helpers.cpp +++ b/vndk/tools/header-checker/header-abi-util/src/abi_diff_helpers.cpp @@ -209,12 +209,34 @@ DiffStatus AbiDiffHelper::CompareEnumTypes( return DiffStatus::no_diff; } +static std::string RemoveThunkInfoFromMangledName(const std::string &name) { + if (name.find("_ZTv") != 0 && name.find("_ZTh") != 0 && + name.find("_ZTc") != 0) { + return name; + } + size_t base_name_pos = name.find("N"); + if (base_name_pos == std::string::npos) { + return name; + } + return "_Z" + name.substr(base_name_pos); +} + bool AbiDiffHelper::CompareVTableComponents( const abi_util::VTableComponentIR &old_component, const abi_util::VTableComponentIR &new_component) { - return old_component.GetName() == new_component.GetName() && - old_component.GetValue() == new_component.GetValue() && - old_component.GetKind() == new_component.GetKind(); + // Vtable components in prebuilts/abi-dumps/vndk/28 don't have thunk info. + if (old_component.GetName() != new_component.GetName()) { + if (RemoveThunkInfoFromMangledName(old_component.GetName()) == + RemoveThunkInfoFromMangledName(new_component.GetName())) { + llvm::errs() << "WARNING: Ignore difference between " + << old_component.GetName() << " and " + << new_component.GetName() << "\n"; + } else { + return false; + } + } + return old_component.GetValue() == new_component.GetValue() && + old_component.GetKind() == new_component.GetKind(); } bool AbiDiffHelper::CompareVTables( diff --git a/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h b/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h index 11b573ba5..4a440fd6c 100644 --- a/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h +++ b/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h @@ -26,7 +26,11 @@ float *speaker_float_star; #endif +#if GOLDEN_CHANGE_INHERITANCE_TYPE +class LowVolumeSpeaker : public virtual SuperSpeaker { +#else class LowVolumeSpeaker : public SuperSpeaker { +#endif public: virtual void Speak() override; virtual LISTEN_RETURN_TYPE Listen() override; diff --git a/vndk/tools/header-checker/tests/module.py b/vndk/tools/header-checker/tests/module.py index b7f9cde4b..daa4c8b2f 100755 --- a/vndk/tools/header-checker/tests/module.py +++ b/vndk/tools/header-checker/tests/module.py @@ -458,7 +458,18 @@ TEST_MODULES = [ arch = '', api = 'current', ), - + Module( + name = 'libgolden_cpp_inheritance_type_changed', + srcs = ['integration/cpp/gold/golden_1.cpp', + 'integration/cpp/gold/high_volume_speaker.cpp', + 'integration/cpp/gold/low_volume_speaker.cpp', + ], + version_script = 'integration/cpp/gold/map.txt', + export_include_dirs = ['integration/cpp/gold/include'], + cflags = ['-DGOLDEN_CHANGE_INHERITANCE_TYPE'], + arch = '', + api = 'current', + ), ] TEST_MODULES = { m.name: m for m in TEST_MODULES } diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_inheritance_type_changed.so.lsdump new file mode 100644 index 000000000..ea2e78acd --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_inheritance_type_changed.so.lsdump @@ -0,0 +1,487 @@ +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 + } + 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" + } +} +record_types { + type_info { + name: "HighVolumeSpeaker" + size: 8 + 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-11" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access + } + vtable_layout { + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI17HighVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS17HighVolumeSpeaker" + } +} +record_types { + type_info { + name: "LowVolumeSpeaker" + size: 20 + 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-5" + } + fields { + referenced_type: "type-6" + field_offset: 32 + field_name: "speaker_uint_t" + access: public_access + } + fields { + referenced_type: "type-7" + field_offset: 64 + field_name: "speaker_float_star" + access: public_access + } + base_specifiers { + referenced_type: "type-1" + is_virtual: true + access: public_access + } + vtable_layout { + vtable_components { + kind: VBaseOffset + mangled_component_name: "" + component_value: 12 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" + component_value: 0 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n12_N16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n16_N16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS16LowVolumeSpeaker" + } +} +enum_types { + type_info { + name: "SuperSpeaker::Volume" + size: 4 + alignment: 4 + 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: "type-6" + enum_fields { + enum_field_value: 1 + name: "SuperSpeaker::Volume::Loud" + } + enum_fields { + enum_field_value: 2 + name: "SuperSpeaker::Volume::Louder" + } + enum_fields { + enum_field_value: 3 + name: "SuperSpeaker::Volume::Loudest" + } + enum_fields { + enum_field_value: 4 + name: "SuperSpeaker::Volume::Lower" + } + access: private_access + tag_info { + unique_id: "_ZTSN12SuperSpeaker6VolumeE" + } +} +pointer_types { + type_info { + name: "SuperSpeaker *" + size: 4 + 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-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 { + type_info { + name: "float *" + size: 4 + alignment: 4 + 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 { + type_info { + name: "float" + size: 4 + alignment: 4 + referenced_type: "type-3" + source_file: "" + linker_set_key: "float" + self_type: "type-3" + } + is_unsigned: false + is_integral: false +} +builtin_types { + type_info { + name: "int" + size: 4 + alignment: 4 + referenced_type: "type-2" + source_file: "" + linker_set_key: "int" + self_type: "type-2" + } + is_unsigned: false + is_integral: true +} +builtin_types { + type_info { + name: "unsigned int" + size: 4 + alignment: 4 + referenced_type: "type-6" + source_file: "" + linker_set_key: "unsigned int" + self_type: "type-6" + } + is_unsigned: true + is_integral: true +} +builtin_types { + type_info { + name: "void" + size: 0 + alignment: 0 + referenced_type: "type-10" + source_file: "" + linker_set_key: "void" + self_type: "type-10" + } + is_unsigned: false + is_integral: false +} +functions { + 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: "type-2" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + access: public_access +} +functions { + 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: "type-9" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + parameters { + referenced_type: "type-3" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" + access: public_access +} +elf_functions { + name: "_Z26test_virtual_function_callP12SuperSpeaker" +} +elf_functions { + name: "_ZN12NotReferenced" +} +elf_functions { + name: "_ZN12SuperSpeaker11SpeakLouderEv" +} +elf_functions { + name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" +} +elf_functions { + name: "_ZN12SuperSpeaker9SpeakLoudEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker6ListenEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker11BadPracticeEf" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker6ListenEv" +} +elf_objects { + name: "_ZTV16LowVolumeSpeaker" +} +elf_objects { + name: "_ZTV17HighVolumeSpeaker" +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_inheritance_type_changed.so.lsdump new file mode 100644 index 000000000..cbac71c05 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_inheritance_type_changed.so.lsdump @@ -0,0 +1,487 @@ +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 + } + 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" + } +} +record_types { + type_info { + name: "HighVolumeSpeaker" + size: 16 + 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-11" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access + } + vtable_layout { + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI17HighVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS17HighVolumeSpeaker" + } +} +record_types { + type_info { + name: "LowVolumeSpeaker" + size: 40 + 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-5" + } + fields { + referenced_type: "type-6" + field_offset: 64 + field_name: "speaker_uint_t" + access: public_access + } + fields { + referenced_type: "type-7" + field_offset: 128 + field_name: "speaker_float_star" + access: public_access + } + base_specifiers { + referenced_type: "type-1" + is_virtual: true + access: public_access + } + vtable_layout { + vtable_components { + kind: VBaseOffset + mangled_component_name: "" + component_value: 24 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" + component_value: 0 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n24_N16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n32_N16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS16LowVolumeSpeaker" + } +} +enum_types { + type_info { + name: "SuperSpeaker::Volume" + size: 4 + alignment: 4 + 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: "type-6" + enum_fields { + enum_field_value: 1 + name: "SuperSpeaker::Volume::Loud" + } + enum_fields { + enum_field_value: 2 + name: "SuperSpeaker::Volume::Louder" + } + enum_fields { + enum_field_value: 3 + name: "SuperSpeaker::Volume::Loudest" + } + enum_fields { + enum_field_value: 4 + name: "SuperSpeaker::Volume::Lower" + } + access: private_access + tag_info { + unique_id: "_ZTSN12SuperSpeaker6VolumeE" + } +} +pointer_types { + type_info { + name: "SuperSpeaker *" + size: 8 + 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-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 { + type_info { + name: "float *" + size: 8 + alignment: 8 + 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 { + type_info { + name: "float" + size: 4 + alignment: 4 + referenced_type: "type-3" + source_file: "" + linker_set_key: "float" + self_type: "type-3" + } + is_unsigned: false + is_integral: false +} +builtin_types { + type_info { + name: "int" + size: 4 + alignment: 4 + referenced_type: "type-2" + source_file: "" + linker_set_key: "int" + self_type: "type-2" + } + is_unsigned: false + is_integral: true +} +builtin_types { + type_info { + name: "unsigned int" + size: 4 + alignment: 4 + referenced_type: "type-6" + source_file: "" + linker_set_key: "unsigned int" + self_type: "type-6" + } + is_unsigned: true + is_integral: true +} +builtin_types { + type_info { + name: "void" + size: 0 + alignment: 0 + referenced_type: "type-10" + source_file: "" + linker_set_key: "void" + self_type: "type-10" + } + is_unsigned: false + is_integral: false +} +functions { + 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: "type-2" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + access: public_access +} +functions { + 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: "type-9" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + parameters { + referenced_type: "type-3" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" + access: public_access +} +elf_functions { + name: "_Z26test_virtual_function_callP12SuperSpeaker" +} +elf_functions { + name: "_ZN12NotReferenced" +} +elf_functions { + name: "_ZN12SuperSpeaker11SpeakLouderEv" +} +elf_functions { + name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" +} +elf_functions { + name: "_ZN12SuperSpeaker9SpeakLoudEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker6ListenEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker11BadPracticeEf" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker6ListenEv" +} +elf_objects { + name: "_ZTV16LowVolumeSpeaker" +} +elf_objects { + name: "_ZTV17HighVolumeSpeaker" +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_inheritance_type_changed.so.lsdump new file mode 100644 index 000000000..ea2e78acd --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_inheritance_type_changed.so.lsdump @@ -0,0 +1,487 @@ +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 + } + 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" + } +} +record_types { + type_info { + name: "HighVolumeSpeaker" + size: 8 + 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-11" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access + } + vtable_layout { + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI17HighVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS17HighVolumeSpeaker" + } +} +record_types { + type_info { + name: "LowVolumeSpeaker" + size: 20 + 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-5" + } + fields { + referenced_type: "type-6" + field_offset: 32 + field_name: "speaker_uint_t" + access: public_access + } + fields { + referenced_type: "type-7" + field_offset: 64 + field_name: "speaker_float_star" + access: public_access + } + base_specifiers { + referenced_type: "type-1" + is_virtual: true + access: public_access + } + vtable_layout { + vtable_components { + kind: VBaseOffset + mangled_component_name: "" + component_value: 12 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" + component_value: 0 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n12_N16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n16_N16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS16LowVolumeSpeaker" + } +} +enum_types { + type_info { + name: "SuperSpeaker::Volume" + size: 4 + alignment: 4 + 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: "type-6" + enum_fields { + enum_field_value: 1 + name: "SuperSpeaker::Volume::Loud" + } + enum_fields { + enum_field_value: 2 + name: "SuperSpeaker::Volume::Louder" + } + enum_fields { + enum_field_value: 3 + name: "SuperSpeaker::Volume::Loudest" + } + enum_fields { + enum_field_value: 4 + name: "SuperSpeaker::Volume::Lower" + } + access: private_access + tag_info { + unique_id: "_ZTSN12SuperSpeaker6VolumeE" + } +} +pointer_types { + type_info { + name: "SuperSpeaker *" + size: 4 + 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-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 { + type_info { + name: "float *" + size: 4 + alignment: 4 + 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 { + type_info { + name: "float" + size: 4 + alignment: 4 + referenced_type: "type-3" + source_file: "" + linker_set_key: "float" + self_type: "type-3" + } + is_unsigned: false + is_integral: false +} +builtin_types { + type_info { + name: "int" + size: 4 + alignment: 4 + referenced_type: "type-2" + source_file: "" + linker_set_key: "int" + self_type: "type-2" + } + is_unsigned: false + is_integral: true +} +builtin_types { + type_info { + name: "unsigned int" + size: 4 + alignment: 4 + referenced_type: "type-6" + source_file: "" + linker_set_key: "unsigned int" + self_type: "type-6" + } + is_unsigned: true + is_integral: true +} +builtin_types { + type_info { + name: "void" + size: 0 + alignment: 0 + referenced_type: "type-10" + source_file: "" + linker_set_key: "void" + self_type: "type-10" + } + is_unsigned: false + is_integral: false +} +functions { + 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: "type-2" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + access: public_access +} +functions { + 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: "type-9" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + parameters { + referenced_type: "type-3" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" + access: public_access +} +elf_functions { + name: "_Z26test_virtual_function_callP12SuperSpeaker" +} +elf_functions { + name: "_ZN12NotReferenced" +} +elf_functions { + name: "_ZN12SuperSpeaker11SpeakLouderEv" +} +elf_functions { + name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" +} +elf_functions { + name: "_ZN12SuperSpeaker9SpeakLoudEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker6ListenEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker11BadPracticeEf" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker6ListenEv" +} +elf_objects { + name: "_ZTV16LowVolumeSpeaker" +} +elf_objects { + name: "_ZTV17HighVolumeSpeaker" +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_inheritance_type_changed.so.lsdump new file mode 100644 index 000000000..cbac71c05 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_inheritance_type_changed.so.lsdump @@ -0,0 +1,487 @@ +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 + } + 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" + } +} +record_types { + type_info { + name: "HighVolumeSpeaker" + size: 16 + 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-11" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access + } + vtable_layout { + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI17HighVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS17HighVolumeSpeaker" + } +} +record_types { + type_info { + name: "LowVolumeSpeaker" + size: 40 + 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-5" + } + fields { + referenced_type: "type-6" + field_offset: 64 + field_name: "speaker_uint_t" + access: public_access + } + fields { + referenced_type: "type-7" + field_offset: 128 + field_name: "speaker_float_star" + access: public_access + } + base_specifiers { + referenced_type: "type-1" + is_virtual: true + access: public_access + } + vtable_layout { + vtable_components { + kind: VBaseOffset + mangled_component_name: "" + component_value: 24 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" + component_value: 0 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n24_N16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n32_N16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS16LowVolumeSpeaker" + } +} +enum_types { + type_info { + name: "SuperSpeaker::Volume" + size: 4 + alignment: 4 + 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: "type-6" + enum_fields { + enum_field_value: 1 + name: "SuperSpeaker::Volume::Loud" + } + enum_fields { + enum_field_value: 2 + name: "SuperSpeaker::Volume::Louder" + } + enum_fields { + enum_field_value: 3 + name: "SuperSpeaker::Volume::Loudest" + } + enum_fields { + enum_field_value: 4 + name: "SuperSpeaker::Volume::Lower" + } + access: private_access + tag_info { + unique_id: "_ZTSN12SuperSpeaker6VolumeE" + } +} +pointer_types { + type_info { + name: "SuperSpeaker *" + size: 8 + 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-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 { + type_info { + name: "float *" + size: 8 + alignment: 8 + 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 { + type_info { + name: "float" + size: 4 + alignment: 4 + referenced_type: "type-3" + source_file: "" + linker_set_key: "float" + self_type: "type-3" + } + is_unsigned: false + is_integral: false +} +builtin_types { + type_info { + name: "int" + size: 4 + alignment: 4 + referenced_type: "type-2" + source_file: "" + linker_set_key: "int" + self_type: "type-2" + } + is_unsigned: false + is_integral: true +} +builtin_types { + type_info { + name: "unsigned int" + size: 4 + alignment: 4 + referenced_type: "type-6" + source_file: "" + linker_set_key: "unsigned int" + self_type: "type-6" + } + is_unsigned: true + is_integral: true +} +builtin_types { + type_info { + name: "void" + size: 0 + alignment: 0 + referenced_type: "type-10" + source_file: "" + linker_set_key: "void" + self_type: "type-10" + } + is_unsigned: false + is_integral: false +} +functions { + 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: "type-2" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + access: public_access +} +functions { + 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: "type-9" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + parameters { + referenced_type: "type-3" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" + access: public_access +} +elf_functions { + name: "_Z26test_virtual_function_callP12SuperSpeaker" +} +elf_functions { + name: "_ZN12NotReferenced" +} +elf_functions { + name: "_ZN12SuperSpeaker11SpeakLouderEv" +} +elf_functions { + name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" +} +elf_functions { + name: "_ZN12SuperSpeaker9SpeakLoudEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker6ListenEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker11BadPracticeEf" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker6ListenEv" +} +elf_objects { + name: "_ZTV16LowVolumeSpeaker" +} +elf_objects { + name: "_ZTV17HighVolumeSpeaker" +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_inheritance_type_changed.so.lsdump new file mode 100644 index 000000000..ea2e78acd --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_inheritance_type_changed.so.lsdump @@ -0,0 +1,487 @@ +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 + } + 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" + } +} +record_types { + type_info { + name: "HighVolumeSpeaker" + size: 8 + 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-11" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access + } + vtable_layout { + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI17HighVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS17HighVolumeSpeaker" + } +} +record_types { + type_info { + name: "LowVolumeSpeaker" + size: 20 + 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-5" + } + fields { + referenced_type: "type-6" + field_offset: 32 + field_name: "speaker_uint_t" + access: public_access + } + fields { + referenced_type: "type-7" + field_offset: 64 + field_name: "speaker_float_star" + access: public_access + } + base_specifiers { + referenced_type: "type-1" + is_virtual: true + access: public_access + } + vtable_layout { + vtable_components { + kind: VBaseOffset + mangled_component_name: "" + component_value: 12 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" + component_value: 0 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: -12 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n12_N16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n16_N16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS16LowVolumeSpeaker" + } +} +enum_types { + type_info { + name: "SuperSpeaker::Volume" + size: 4 + alignment: 4 + 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: "type-6" + enum_fields { + enum_field_value: 1 + name: "SuperSpeaker::Volume::Loud" + } + enum_fields { + enum_field_value: 2 + name: "SuperSpeaker::Volume::Louder" + } + enum_fields { + enum_field_value: 3 + name: "SuperSpeaker::Volume::Loudest" + } + enum_fields { + enum_field_value: 4 + name: "SuperSpeaker::Volume::Lower" + } + access: private_access + tag_info { + unique_id: "_ZTSN12SuperSpeaker6VolumeE" + } +} +pointer_types { + type_info { + name: "SuperSpeaker *" + size: 4 + 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-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 { + type_info { + name: "float *" + size: 4 + alignment: 4 + 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 { + type_info { + name: "float" + size: 4 + alignment: 4 + referenced_type: "type-3" + source_file: "" + linker_set_key: "float" + self_type: "type-3" + } + is_unsigned: false + is_integral: false +} +builtin_types { + type_info { + name: "int" + size: 4 + alignment: 4 + referenced_type: "type-2" + source_file: "" + linker_set_key: "int" + self_type: "type-2" + } + is_unsigned: false + is_integral: true +} +builtin_types { + type_info { + name: "unsigned int" + size: 4 + alignment: 4 + referenced_type: "type-6" + source_file: "" + linker_set_key: "unsigned int" + self_type: "type-6" + } + is_unsigned: true + is_integral: true +} +builtin_types { + type_info { + name: "void" + size: 0 + alignment: 0 + referenced_type: "type-10" + source_file: "" + linker_set_key: "void" + self_type: "type-10" + } + is_unsigned: false + is_integral: false +} +functions { + 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: "type-2" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + access: public_access +} +functions { + 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: "type-9" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + parameters { + referenced_type: "type-3" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" + access: public_access +} +elf_functions { + name: "_Z26test_virtual_function_callP12SuperSpeaker" +} +elf_functions { + name: "_ZN12NotReferenced" +} +elf_functions { + name: "_ZN12SuperSpeaker11SpeakLouderEv" +} +elf_functions { + name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" +} +elf_functions { + name: "_ZN12SuperSpeaker9SpeakLoudEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker6ListenEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker11BadPracticeEf" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker6ListenEv" +} +elf_objects { + name: "_ZTV16LowVolumeSpeaker" +} +elf_objects { + name: "_ZTV17HighVolumeSpeaker" +} diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_inheritance_type_changed.so.lsdump new file mode 100644 index 000000000..cbac71c05 --- /dev/null +++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_inheritance_type_changed.so.lsdump @@ -0,0 +1,487 @@ +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 + } + 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" + } +} +record_types { + type_info { + name: "HighVolumeSpeaker" + size: 16 + 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-11" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access + } + vtable_layout { + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI17HighVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS17HighVolumeSpeaker" + } +} +record_types { + type_info { + name: "LowVolumeSpeaker" + size: 40 + 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-5" + } + fields { + referenced_type: "type-6" + field_offset: 64 + field_name: "speaker_uint_t" + access: public_access + } + fields { + referenced_type: "type-7" + field_offset: 128 + field_name: "speaker_float_star" + access: public_access + } + base_specifiers { + referenced_type: "type-1" + is_virtual: true + access: public_access + } + vtable_layout { + vtable_components { + kind: VBaseOffset + mangled_component_name: "" + component_value: 24 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: 0 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev" + component_value: 0 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: VCallOffset + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: OffsetToTop + mangled_component_name: "" + component_value: -24 + } + vtable_components { + kind: RTTI + mangled_component_name: "_ZTI16LowVolumeSpeaker" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n24_N16LowVolumeSpeaker5SpeakEv" + component_value: 0 + } + vtable_components { + kind: FunctionPointer + mangled_component_name: "_ZTv0_n32_N16LowVolumeSpeaker6ListenEv" + component_value: 0 + } + vtable_components { + kind: CompleteDtorPointer + mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD1Ev" + component_value: 0 + } + vtable_components { + kind: DeletingDtorPointer + mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD0Ev" + component_value: 0 + } + } + access: public_access + record_kind: class_kind + tag_info { + unique_id: "_ZTS16LowVolumeSpeaker" + } +} +enum_types { + type_info { + name: "SuperSpeaker::Volume" + size: 4 + alignment: 4 + 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: "type-6" + enum_fields { + enum_field_value: 1 + name: "SuperSpeaker::Volume::Loud" + } + enum_fields { + enum_field_value: 2 + name: "SuperSpeaker::Volume::Louder" + } + enum_fields { + enum_field_value: 3 + name: "SuperSpeaker::Volume::Loudest" + } + enum_fields { + enum_field_value: 4 + name: "SuperSpeaker::Volume::Lower" + } + access: private_access + tag_info { + unique_id: "_ZTSN12SuperSpeaker6VolumeE" + } +} +pointer_types { + type_info { + name: "SuperSpeaker *" + size: 8 + 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-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 { + type_info { + name: "float *" + size: 8 + alignment: 8 + 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 { + type_info { + name: "float" + size: 4 + alignment: 4 + referenced_type: "type-3" + source_file: "" + linker_set_key: "float" + self_type: "type-3" + } + is_unsigned: false + is_integral: false +} +builtin_types { + type_info { + name: "int" + size: 4 + alignment: 4 + referenced_type: "type-2" + source_file: "" + linker_set_key: "int" + self_type: "type-2" + } + is_unsigned: false + is_integral: true +} +builtin_types { + type_info { + name: "unsigned int" + size: 4 + alignment: 4 + referenced_type: "type-6" + source_file: "" + linker_set_key: "unsigned int" + self_type: "type-6" + } + is_unsigned: true + is_integral: true +} +builtin_types { + type_info { + name: "void" + size: 0 + alignment: 0 + referenced_type: "type-10" + source_file: "" + linker_set_key: "void" + self_type: "type-10" + } + is_unsigned: false + is_integral: false +} +functions { + 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: "type-2" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" + access: public_access +} +functions { + 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: "type-9" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv" + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-4" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + parameters { + referenced_type: "type-3" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv" + access: public_access +} +functions { + 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: "type-12" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" + access: public_access +} +elf_functions { + name: "_Z26test_virtual_function_callP12SuperSpeaker" +} +elf_functions { + name: "_ZN12NotReferenced" +} +elf_functions { + name: "_ZN12SuperSpeaker11SpeakLouderEv" +} +elf_functions { + name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi" +} +elf_functions { + name: "_ZN12SuperSpeaker9SpeakLoudEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN16LowVolumeSpeaker6ListenEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker11BadPracticeEf" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker5SpeakEv" +} +elf_functions { + name: "_ZN17HighVolumeSpeaker6ListenEv" +} +elf_objects { + name: "_ZTV16LowVolumeSpeaker" +} +elf_objects { + name: "_ZTV17HighVolumeSpeaker" +} diff --git a/vndk/tools/header-checker/tests/test.py b/vndk/tools/header-checker/tests/test.py index 8196a33c4..bac578730 100755 --- a/vndk/tools/header-checker/tests/test.py +++ b/vndk/tools/header-checker/tests/test.py @@ -267,6 +267,11 @@ class MyTest(unittest.TestCase): "libgolden_cpp_internal_private_struct", 8, [], True, True) + def test_libgolden_cpp_inheritance_type_changed(self): + self.prepare_and_run_abi_diff_all_archs( + "libgolden_cpp", "libgolden_cpp_inheritance_type_changed", 8, [], + True, True) + if __name__ == '__main__': unittest.main()