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 56792bb33..6ae0ada3f 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 @@ -205,10 +205,13 @@ std::string RecordDeclWrapper::GetMangledRTTI( std::string ABIWrapper::GetTypeUniqueId(const clang::TagDecl *tag_decl) { clang::QualType qual_type = tag_decl->getTypeForDecl()->getCanonicalTypeInternal(); - llvm::SmallString<256> uid; - llvm::raw_svector_ostream out(uid); - mangle_contextp_->mangleCXXRTTIName(qual_type, out); - return uid.str(); + if (!tag_decl->isExternCContext() && ast_contextp_->getLangOpts().CPlusPlus) { + llvm::SmallString<256> uid; + llvm::raw_svector_ostream out(uid); + mangle_contextp_->mangleCXXRTTIName(qual_type, out); + return uid.str(); + } + return QualTypeToString(qual_type); } // CreateBasicNamedAndTypedDecl creates a BasicNamedAndTypedDecl : that'll diff --git a/vndk/tools/header-checker/header-abi-dumper/src/ast_processing.cpp b/vndk/tools/header-checker/header-abi-dumper/src/ast_processing.cpp index 038f64b08..71bd19df2 100644 --- a/vndk/tools/header-checker/header-abi-dumper/src/ast_processing.cpp +++ b/vndk/tools/header-checker/header-abi-dumper/src/ast_processing.cpp @@ -51,7 +51,8 @@ bool HeaderASTVisitor::VisitRecordDecl(const clang::RecordDecl *decl) { if (!decl->isThisDeclarationADefinition() || decl->getTypeForDecl()->isDependentType() || decl->isAnonymousStructOrUnion() || - !decl->hasNameForLinkage()) { + !decl->hasNameForLinkage() || + !decl->isExternallyVisible()) { return true; } RecordDeclWrapper record_decl_wrapper( diff --git a/vndk/tools/header-checker/tests/expected/example1.cpp b/vndk/tools/header-checker/tests/expected/example1.cpp index ebc3f7549..b1770a2a3 100644 --- a/vndk/tools/header-checker/tests/expected/example1.cpp +++ b/vndk/tools/header-checker/tests/expected/example1.cpp @@ -211,7 +211,7 @@ record_types { is_anonymous: true record_kind: struct_kind tag_info { - unique_id: "_ZTSN5HelloUt1_Ut_E" + unique_id: "Hello::(anonymous)::(anonymous)" } } record_types { @@ -246,7 +246,7 @@ record_types { is_anonymous: true record_kind: struct_kind tag_info { - unique_id: "_ZTSN5HelloUt1_E" + unique_id: "Hello::(anonymous)" } } record_types { @@ -298,7 +298,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS5Hello" + unique_id: "Hello" } } record_types { diff --git a/vndk/tools/header-checker/tests/expected/example1.h b/vndk/tools/header-checker/tests/expected/example1.h index ebc3f7549..b1770a2a3 100644 --- a/vndk/tools/header-checker/tests/expected/example1.h +++ b/vndk/tools/header-checker/tests/expected/example1.h @@ -211,7 +211,7 @@ record_types { is_anonymous: true record_kind: struct_kind tag_info { - unique_id: "_ZTSN5HelloUt1_Ut_E" + unique_id: "Hello::(anonymous)::(anonymous)" } } record_types { @@ -246,7 +246,7 @@ record_types { is_anonymous: true record_kind: struct_kind tag_info { - unique_id: "_ZTSN5HelloUt1_E" + unique_id: "Hello::(anonymous)" } } record_types { @@ -298,7 +298,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS5Hello" + unique_id: "Hello" } } record_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp.so.lsdump index 90514f7f8..0b2bc23ec 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp.so.lsdump @@ -51,7 +51,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -73,7 +73,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } pointer_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp_with_unused_struct.so.lsdump index 610c5c615..03a7bd98d 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp_with_unused_struct.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp_with_unused_struct.so.lsdump @@ -45,7 +45,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -67,7 +67,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } record_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_global_variable.so.lsdump index e2e0214aa..e427156f9 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_global_variable.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_global_variable.so.lsdump @@ -401,6 +401,13 @@ functions { linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } +global_vars { + name: "HighVolumeSpeaker::global_unprotected_id" + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE" + referenced_type: "type-2" + access: public_access +} elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" } diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp.so.lsdump index d72294e6e..d08357cbb 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp.so.lsdump @@ -51,7 +51,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -73,7 +73,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } pointer_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp_with_unused_struct.so.lsdump index 0e9e1da52..498122ac2 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp_with_unused_struct.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp_with_unused_struct.so.lsdump @@ -45,7 +45,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -67,7 +67,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } record_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_global_variable.so.lsdump index e8367b575..4cf33736d 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_global_variable.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_global_variable.so.lsdump @@ -401,6 +401,13 @@ functions { linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } +global_vars { + name: "HighVolumeSpeaker::global_unprotected_id" + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE" + referenced_type: "type-2" + access: public_access +} elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" } diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp.so.lsdump index 90514f7f8..0b2bc23ec 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp.so.lsdump @@ -51,7 +51,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -73,7 +73,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } pointer_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp_with_unused_struct.so.lsdump index 610c5c615..03a7bd98d 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp_with_unused_struct.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp_with_unused_struct.so.lsdump @@ -45,7 +45,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -67,7 +67,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } record_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_global_variable.so.lsdump index e2e0214aa..e427156f9 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_global_variable.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_global_variable.so.lsdump @@ -401,6 +401,13 @@ functions { linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } +global_vars { + name: "HighVolumeSpeaker::global_unprotected_id" + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE" + referenced_type: "type-2" + access: public_access +} elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" } diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp.so.lsdump index d72294e6e..d08357cbb 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp.so.lsdump @@ -51,7 +51,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -73,7 +73,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } pointer_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp_with_unused_struct.so.lsdump index 0e9e1da52..498122ac2 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp_with_unused_struct.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp_with_unused_struct.so.lsdump @@ -45,7 +45,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -67,7 +67,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } record_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_global_variable.so.lsdump index e8367b575..4cf33736d 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_global_variable.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_global_variable.so.lsdump @@ -401,6 +401,13 @@ functions { linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } +global_vars { + name: "HighVolumeSpeaker::global_unprotected_id" + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE" + referenced_type: "type-2" + access: public_access +} elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" } diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp.so.lsdump index 90514f7f8..0b2bc23ec 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp.so.lsdump @@ -51,7 +51,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -73,7 +73,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } pointer_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp_with_unused_struct.so.lsdump index 610c5c615..03a7bd98d 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp_with_unused_struct.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp_with_unused_struct.so.lsdump @@ -45,7 +45,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -67,7 +67,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } record_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_global_variable.so.lsdump index e2e0214aa..e427156f9 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_global_variable.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_global_variable.so.lsdump @@ -401,6 +401,13 @@ functions { linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } +global_vars { + name: "HighVolumeSpeaker::global_unprotected_id" + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE" + referenced_type: "type-2" + access: public_access +} elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" } diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp.so.lsdump index d72294e6e..d08357cbb 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp.so.lsdump @@ -51,7 +51,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -73,7 +73,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } pointer_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp_with_unused_struct.so.lsdump index 0e9e1da52..498122ac2 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp_with_unused_struct.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp_with_unused_struct.so.lsdump @@ -45,7 +45,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS7Cstruct" + unique_id: "Cstruct" } } record_types { @@ -67,7 +67,7 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS6Cinner" + unique_id: "Cinner" } } record_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_global_variable.so.lsdump index e8367b575..4cf33736d 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_global_variable.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_global_variable.so.lsdump @@ -401,6 +401,13 @@ functions { linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv" access: public_access } +global_vars { + name: "HighVolumeSpeaker::global_unprotected_id" + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h" + linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE" + referenced_type: "type-2" + access: public_access +} elf_functions { name: "_Z26test_virtual_function_callP12SuperSpeaker" }