diff options
| author | Logan Chien <loganchien@google.com> | 2019-03-20 11:15:43 +0800 |
|---|---|---|
| committer | Logan Chien <loganchien@google.com> | 2019-03-20 17:16:09 +0800 |
| commit | 598b869846ece59f98732e18ccc5a39a2e84b09a (patch) | |
| tree | a80360feba6ec6ef5e73ed3479bfe9fba105cc12 /vndk | |
| parent | 37531359beacd9118942d6dee93ca64dfd7d14ca (diff) | |
| download | android_development-598b869846ece59f98732e18ccc5a39a2e84b09a.tar.gz android_development-598b869846ece59f98732e18ccc5a39a2e84b09a.tar.bz2 android_development-598b869846ece59f98732e18ccc5a39a2e84b09a.zip | |
header-checker: header-abi-dumper should use ModuleIR instead
This commit redirects header-abi-dumper output to ModuleIR and then
write ModuleIR with `IRDumper::Dump(module)`. This decouples ABI
information extraction from IRDumper and allows post-processing ModuleIR
before writing to files.
This commit also sorts the reference test data.
Test: ./tests/test.py
Change-Id: Ibc7a9a94c08df496ff76351f951170bddc1a66a9
Diffstat (limited to 'vndk')
29 files changed, 1944 insertions, 1795 deletions
diff --git a/vndk/tools/header-checker/src/dumper/abi_wrappers.cpp b/vndk/tools/header-checker/src/dumper/abi_wrappers.cpp index eff66fbc1..b17a7fc22 100644 --- a/vndk/tools/header-checker/src/dumper/abi_wrappers.cpp +++ b/vndk/tools/header-checker/src/dumper/abi_wrappers.cpp @@ -14,7 +14,6 @@ #include "dumper/abi_wrappers.h" -#include "repr/ir_dumper.h" #include "repr/ir_reader.h" #include "utils/header_abi_util.h" @@ -36,12 +35,12 @@ ABIWrapper::ABIWrapper( clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *cip, - repr::IRDumper *ir_dumper, + repr::ModuleIR *module, ASTCaches *ast_caches) : cip_(cip), mangle_contextp_(mangle_contextp), ast_contextp_(ast_contextp), - ir_dumper_(ir_dumper), + module_(module), ast_caches_(ast_caches) {} std::string ABIWrapper::GetCachedDeclSourceFile( @@ -177,7 +176,7 @@ static repr::AccessSpecifierIR AccessClangToIR( bool ABIWrapper::CreateAnonymousRecord(const clang::RecordDecl *record_decl) { RecordDeclWrapper record_decl_wrapper(mangle_contextp_, ast_contextp_, cip_, - record_decl, ir_dumper_, ast_caches_); + record_decl, module_, ast_caches_); return record_decl_wrapper.GetRecordDecl(); } @@ -239,7 +238,7 @@ bool ABIWrapper::CreateBasicNamedAndTypedDecl(clang::QualType qual_type, } return (CreateBasicNamedAndTypedDecl( canonical_type, typep.get(), source_file) && - ir_dumper_->AddLinkableMessageIR(typep.get())); + module_->AddLinkableMessage(*typep)); } std::string RecordDeclWrapper::GetMangledRTTI( @@ -359,7 +358,7 @@ TypeAndCreationStatus ABIWrapper::SetTypeKind( if (auto &&func_type_ptr = llvm::dyn_cast<const clang::FunctionType>(type_ptr)) { FunctionTypeWrapper function_type_wrapper(mangle_contextp_, ast_contextp_, - cip_, func_type_ptr, ir_dumper_, + cip_, func_type_ptr, module_, ast_caches_, source_file); if (!function_type_wrapper.GetFunctionType()) { llvm::errs() << "FunctionType could not be created\n"; @@ -437,9 +436,9 @@ std::string ABIWrapper::QualTypeToString(const clang::QualType &sweet_qt) { FunctionTypeWrapper::FunctionTypeWrapper( clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, - const clang::FunctionType *function_type, repr::IRDumper *ir_dumper, + const clang::FunctionType *function_type, repr::ModuleIR *module, ASTCaches *ast_caches, const std::string &source_file) - : ABIWrapper(mangle_contextp, ast_contextp, compiler_instance_p, ir_dumper, + : ABIWrapper(mangle_contextp, ast_contextp, compiler_instance_p, module, ast_caches), function_type_(function_type), source_file_(source_file) {} @@ -473,7 +472,7 @@ bool FunctionTypeWrapper::GetFunctionType() { return false; } return SetupFunctionType(abi_decl.get()) && - ir_dumper_->AddLinkableMessageIR(abi_decl.get()); + module_->AddLinkableMessage(*abi_decl); } FunctionDeclWrapper::FunctionDeclWrapper( @@ -481,9 +480,9 @@ FunctionDeclWrapper::FunctionDeclWrapper( clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, const clang::FunctionDecl *decl, - repr::IRDumper *ir_dumper, + repr::ModuleIR *module, ASTCaches *ast_caches) - : ABIWrapper(mangle_contextp, ast_contextp, compiler_instance_p, ir_dumper, + : ABIWrapper(mangle_contextp, ast_contextp, compiler_instance_p, module, ast_caches), function_decl_(decl) {} @@ -585,9 +584,9 @@ RecordDeclWrapper::RecordDeclWrapper( clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, - const clang::RecordDecl *decl, repr::IRDumper *ir_dumper, + const clang::RecordDecl *decl, repr::ModuleIR *module, ASTCaches *ast_caches) - : ABIWrapper(mangle_contextp, ast_contextp, compiler_instance_p, ir_dumper, + : ABIWrapper(mangle_contextp, ast_contextp, compiler_instance_p, module, ast_caches), record_decl_(decl) {} @@ -856,16 +855,16 @@ bool RecordDeclWrapper::GetRecordDecl() { // cached, don't add the record. return true; } - return ir_dumper_->AddLinkableMessageIR(abi_decl.get()); + return module_->AddLinkableMessage(*abi_decl); } EnumDeclWrapper::EnumDeclWrapper( clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, - const clang::EnumDecl *decl, repr::IRDumper *ir_dumper, + const clang::EnumDecl *decl, repr::ModuleIR *module, ASTCaches *ast_caches) - : ABIWrapper(mangle_contextp, ast_contextp, compiler_instance_p, ir_dumper, + : ABIWrapper(mangle_contextp, ast_contextp, compiler_instance_p, module, ast_caches), enum_decl_(decl) {} @@ -908,16 +907,16 @@ bool EnumDeclWrapper::GetEnumDecl() { llvm::errs() << "Setting up Enum failed\n"; return false; } - return ir_dumper_->AddLinkableMessageIR(abi_decl.get()); + return module_->AddLinkableMessage(*abi_decl); } GlobalVarDeclWrapper::GlobalVarDeclWrapper( clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, - const clang::VarDecl *decl, repr::IRDumper *ir_dumper, + const clang::VarDecl *decl, repr::ModuleIR *module, ASTCaches *ast_caches) - : ABIWrapper(mangle_contextp, ast_contextp, compiler_instance_p, ir_dumper, + : ABIWrapper(mangle_contextp, ast_contextp, compiler_instance_p, module, ast_caches), global_var_decl_(decl) {} @@ -943,7 +942,7 @@ bool GlobalVarDeclWrapper::GetGlobalVarDecl() { auto abi_decl = std::make_unique<repr::GlobalVarIR>(); std::string source_file = GetCachedDeclSourceFile(global_var_decl_, cip_); return SetupGlobalVar(abi_decl.get(), source_file) && - ir_dumper_->AddLinkableMessageIR(abi_decl.get()); + module_->AddLinkableMessage(*abi_decl); } diff --git a/vndk/tools/header-checker/src/dumper/abi_wrappers.h b/vndk/tools/header-checker/src/dumper/abi_wrappers.h index 243c3627b..d7c22449d 100644 --- a/vndk/tools/header-checker/src/dumper/abi_wrappers.h +++ b/vndk/tools/header-checker/src/dumper/abi_wrappers.h @@ -16,7 +16,6 @@ #define ABI_WRAPPERS_H_ #include "dumper/ast_util.h" -#include "repr/ir_dumper.h" #include "repr/ir_representation.h" #include <clang/AST/AST.h> @@ -44,7 +43,7 @@ class ABIWrapper { ABIWrapper(clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *cip, - repr::IRDumper *ir_dumper, + repr::ModuleIR *module, ASTCaches *ast_caches); static std::string GetDeclSourceFile(const clang::Decl *decl, @@ -98,7 +97,7 @@ class ABIWrapper { const clang::CompilerInstance *cip_; clang::MangleContext *mangle_contextp_; clang::ASTContext *ast_contextp_; - repr::IRDumper *ir_dumper_; + repr::ModuleIR *module_; ASTCaches *ast_caches_; }; @@ -108,7 +107,7 @@ class RecordDeclWrapper : public ABIWrapper { RecordDeclWrapper( clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, - const clang::RecordDecl *record_decl, repr::IRDumper *ir_dumper, + const clang::RecordDecl *record_decl, repr::ModuleIR *module, ASTCaches *ast_caches); bool GetRecordDecl(); @@ -149,7 +148,7 @@ class FunctionDeclWrapper : public ABIWrapper { FunctionDeclWrapper( clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, - const clang::FunctionDecl *decl, repr::IRDumper *ir_dumper, + const clang::FunctionDecl *decl, repr::ModuleIR *module, ASTCaches *ast_caches); std::unique_ptr<repr::FunctionIR> GetFunctionDecl(); @@ -180,7 +179,7 @@ class FunctionTypeWrapper : public ABIWrapper { FunctionTypeWrapper( clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, - const clang::FunctionType *function_type, repr::IRDumper *ir_dumper, + const clang::FunctionType *function_type, repr::ModuleIR *module, ASTCaches *ast_caches, const std::string &source_file); bool GetFunctionType(); @@ -196,7 +195,7 @@ class EnumDeclWrapper : public ABIWrapper { EnumDeclWrapper( clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, - const clang::EnumDecl *decl, repr::IRDumper *ir_dumper, + const clang::EnumDecl *decl, repr::ModuleIR *module, ASTCaches *ast_caches); bool GetEnumDecl(); @@ -217,7 +216,7 @@ class GlobalVarDeclWrapper : public ABIWrapper { GlobalVarDeclWrapper( clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, - const clang::VarDecl *decl, repr::IRDumper *ir_dumper, + const clang::VarDecl *decl, repr::ModuleIR *module, ASTCaches *ast_caches); bool GetGlobalVarDecl(); diff --git a/vndk/tools/header-checker/src/dumper/ast_processing.cpp b/vndk/tools/header-checker/src/dumper/ast_processing.cpp index 3ce8e5fb5..3df360cca 100644 --- a/vndk/tools/header-checker/src/dumper/ast_processing.cpp +++ b/vndk/tools/header-checker/src/dumper/ast_processing.cpp @@ -15,6 +15,7 @@ #include "dumper/ast_processing.h" #include "dumper/abi_wrappers.h" +#include "repr/ir_dumper.h" #include <clang/Lex/Token.h> #include <clang/AST/QualTypeNames.h> @@ -33,11 +34,11 @@ HeaderASTVisitor::HeaderASTVisitor( const HeaderCheckerOptions &options, clang::MangleContext *mangle_contextp, clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, - const clang::Decl *tu_decl, repr::IRDumper *ir_dumper, + const clang::Decl *tu_decl, repr::ModuleIR *module, ASTCaches *ast_caches) : options_(options), mangle_contextp_(mangle_contextp), ast_contextp_(ast_contextp), cip_(compiler_instance_p), tu_decl_(tu_decl), - ir_dumper_(ir_dumper), ast_caches_(ast_caches) {} + module_(module), ast_caches_(ast_caches) {} bool HeaderASTVisitor::VisitRecordDecl(const clang::RecordDecl *decl) { // Avoid segmentation fault in getASTRecordLayout. @@ -54,7 +55,7 @@ bool HeaderASTVisitor::VisitRecordDecl(const clang::RecordDecl *decl) { return true; } RecordDeclWrapper record_decl_wrapper( - mangle_contextp_, ast_contextp_, cip_, decl, ir_dumper_, ast_caches_); + mangle_contextp_, ast_contextp_, cip_, decl, module_, ast_caches_); return record_decl_wrapper.GetRecordDecl(); } @@ -65,24 +66,24 @@ bool HeaderASTVisitor::VisitEnumDecl(const clang::EnumDecl *decl) { return true; } EnumDeclWrapper enum_decl_wrapper( - mangle_contextp_, ast_contextp_, cip_, decl, ir_dumper_, ast_caches_); + mangle_contextp_, ast_contextp_, cip_, decl, module_, ast_caches_); return enum_decl_wrapper.GetEnumDecl(); } static bool MutateFunctionWithLinkageName(const repr::FunctionIR *function, - repr::IRDumper *ir_dumper, + repr::ModuleIR *module, std::string &linkage_name) { auto added_function = std::make_unique<repr::FunctionIR>(); *added_function = *function; added_function->SetLinkerSetKey(linkage_name); - return ir_dumper->AddLinkableMessageIR(added_function.get()); + return module->AddLinkableMessage(*added_function); } static bool AddMangledFunctions(const repr::FunctionIR *function, - repr:: IRDumper *ir_dumper, + repr:: ModuleIR *module, std::vector<std::string> &manglings) { for (auto &&mangling : manglings) { - if (!MutateFunctionWithLinkageName(function, ir_dumper, mangling)) { + if (!MutateFunctionWithLinkageName(function, module, mangling)) { return false; } } @@ -131,18 +132,18 @@ bool HeaderASTVisitor::VisitFunctionDecl(const clang::FunctionDecl *decl) { return true; } FunctionDeclWrapper function_decl_wrapper( - mangle_contextp_, ast_contextp_, cip_, decl, ir_dumper_, ast_caches_); + mangle_contextp_, ast_contextp_, cip_, decl, module_, ast_caches_); auto function_wrapper = function_decl_wrapper.GetFunctionDecl(); // Destructors and Constructors can have more than 1 symbol generated from the // same Decl. clang::index::CodegenNameGenerator cg(*ast_contextp_); std::vector<std::string> manglings = cg.getAllManglings(decl); if (!manglings.empty()) { - return AddMangledFunctions(function_wrapper.get(), ir_dumper_, manglings); + return AddMangledFunctions(function_wrapper.get(), module_, manglings); } std::string linkage_name = ABIWrapper::GetMangledNameDecl(decl, mangle_contextp_); - return MutateFunctionWithLinkageName(function_wrapper.get(), ir_dumper_, + return MutateFunctionWithLinkageName(function_wrapper.get(), module_, linkage_name); } @@ -153,7 +154,7 @@ bool HeaderASTVisitor::VisitVarDecl(const clang::VarDecl *decl) { return true; } GlobalVarDeclWrapper global_var_decl_wrapper( - mangle_contextp_, ast_contextp_, cip_, decl, ir_dumper_, ast_caches_); + mangle_contextp_, ast_contextp_, cip_, decl, module_, ast_caches_); return global_var_decl_wrapper.GetGlobalVarDecl(); } @@ -205,14 +206,22 @@ void HeaderASTConsumer::HandleTranslationUnit(clang::ASTContext &ctx) { if (!options_.exported_headers_.empty()) { options_.exported_headers_.insert(translation_unit_source); } + + std::unique_ptr<repr::ModuleIR> module( + new repr::ModuleIR(nullptr /*FIXME*/)); + + HeaderASTVisitor v(options_, mangle_contextp.get(), &ctx, cip_, + translation_unit, module.get(), &ast_caches); + if (!v.TraverseDecl(translation_unit)) { + llvm::errs() << "ABI extraction failed\n"; + ::exit(1); + } + std::unique_ptr<repr::IRDumper> ir_dumper = repr::IRDumper::CreateIRDumper(options_.text_format_, options_.dump_name_); - HeaderASTVisitor v(options_, mangle_contextp.get(), &ctx, cip_, - translation_unit, ir_dumper.get(), &ast_caches); - - if (!v.TraverseDecl(translation_unit) || !ir_dumper->Dump()) { - llvm::errs() << "Serialization to ostream failed\n"; + if (!ir_dumper->Dump(*module)) { + llvm::errs() << "Serialization failed\n"; ::exit(1); } } diff --git a/vndk/tools/header-checker/src/dumper/ast_processing.h b/vndk/tools/header-checker/src/dumper/ast_processing.h index 729cc62b1..90443abc4 100644 --- a/vndk/tools/header-checker/src/dumper/ast_processing.h +++ b/vndk/tools/header-checker/src/dumper/ast_processing.h @@ -17,7 +17,6 @@ #include "dumper/ast_util.h" #include "dumper/header_checker.h" -#include "repr/ir_dumper.h" #include <clang/AST/AST.h> #include <clang/AST/ASTConsumer.h> @@ -41,7 +40,7 @@ class HeaderASTVisitor clang::ASTContext *ast_contextp, const clang::CompilerInstance *compiler_instance_p, const clang::Decl *tu_decl, - repr::IRDumper *ir_dumper, + repr::ModuleIR *module, ASTCaches *ast_caches); bool VisitRecordDecl(const clang::RecordDecl *decl); @@ -66,7 +65,7 @@ class HeaderASTVisitor const clang::CompilerInstance *cip_; // To optimize recursion into only exported abi. const clang::Decl *tu_decl_; - repr::IRDumper *ir_dumper_; + repr::ModuleIR *module_; // We cache the source file an AST node corresponds to, to avoid repeated // calls to "realpath". ASTCaches *ast_caches_; diff --git a/vndk/tools/header-checker/src/linker/header_abi_linker.cpp b/vndk/tools/header-checker/src/linker/header_abi_linker.cpp index 99f008dd4..e9890c16e 100644 --- a/vndk/tools/header-checker/src/linker/header_abi_linker.cpp +++ b/vndk/tools/header-checker/src/linker/header_abi_linker.cpp @@ -123,7 +123,7 @@ class HeaderAbiLinker { private: template <typename T> - bool LinkDecl(repr::IRDumper *dst, + bool LinkDecl(repr::ModuleIR *dst, const repr::AbiElementMap<T> &src, const std::function<bool(const std::string &)> &symbol_filter); @@ -135,19 +135,20 @@ class HeaderAbiLinker { bool ReadExportedSymbolsFromSharedObjectFile(); - bool LinkTypes(repr::ModuleIR &module, repr::IRDumper *ir_dumper); + bool LinkTypes(repr::ModuleIR &module, repr::ModuleIR *linked_module); - bool LinkFunctions(repr::ModuleIR &module, repr::IRDumper *ir_dumper); + bool LinkFunctions(repr::ModuleIR &module, repr::ModuleIR *linked_module); - bool LinkGlobalVars(repr::ModuleIR &module, repr::IRDumper *ir_dumper); + bool LinkGlobalVars(repr::ModuleIR &module, repr::ModuleIR *linked_module); - bool LinkExportedSymbols(repr::IRDumper *ir_dumper); + bool LinkExportedSymbols(repr::ModuleIR *linked_module); - bool LinkExportedSymbols(repr::IRDumper *ir_dumper, + bool LinkExportedSymbols(repr::ModuleIR *linked_module, const repr::ExportedSymbolSet &exported_symbols); template <typename SymbolMap> - bool LinkExportedSymbols(repr::IRDumper *ir_dumper, const SymbolMap &symbols); + bool LinkExportedSymbols(repr::ModuleIR *linked_module, + const SymbolMap &symbols); // Check whether a symbol name is considered as exported. If both // `shared_object_symbols_` and `version_script_symbols_` exists, the symbol @@ -247,22 +248,25 @@ bool HeaderAbiLinker::LinkAndDump() { repr::ModuleIR &module = greader->GetModule(); // Link input ABI dumps. - std::unique_ptr<repr::IRDumper> ir_dumper = - repr::IRDumper::CreateIRDumper(output_format, out_dump_name_); - assert(ir_dumper != nullptr); + std::unique_ptr<repr::ModuleIR> linked_module( + new repr::ModuleIR(&exported_headers_)); - if (!LinkExportedSymbols(ir_dumper.get())) { + if (!LinkExportedSymbols(linked_module.get())) { return false; } - if (!LinkTypes(module, ir_dumper.get()) || - !LinkFunctions(module, ir_dumper.get()) || - !LinkGlobalVars(module, ir_dumper.get())) { + if (!LinkTypes(module, linked_module.get()) || + !LinkFunctions(module, linked_module.get()) || + !LinkGlobalVars(module, linked_module.get())) { llvm::errs() << "Failed to link elements\n"; return false; } - if (!ir_dumper->Dump()) { + // Dump the linked module. + std::unique_ptr<repr::IRDumper> ir_dumper = + repr::IRDumper::CreateIRDumper(output_format, out_dump_name_); + assert(ir_dumper != nullptr); + if (!ir_dumper->Dump(*linked_module)) { llvm::errs() << "Failed to serialize the linked output to ostream\n"; return false; } @@ -272,7 +276,7 @@ bool HeaderAbiLinker::LinkAndDump() { template <typename T> bool HeaderAbiLinker::LinkDecl( - repr::IRDumper *dst, const repr::AbiElementMap<T> &src, + repr::ModuleIR *dst, const repr::AbiElementMap<T> &src, const std::function<bool(const std::string &)> &symbol_filter) { assert(dst != nullptr); for (auto &&element : src) { @@ -288,7 +292,7 @@ bool HeaderAbiLinker::LinkDecl( if (!symbol_filter(element.first)) { continue; } - if (!dst->AddLinkableMessageIR(&(element.second))) { + if (!dst->AddLinkableMessage(element.second)) { llvm::errs() << "Failed to add element to linked dump\n"; return false; } @@ -297,17 +301,17 @@ bool HeaderAbiLinker::LinkDecl( } bool HeaderAbiLinker::LinkTypes(repr::ModuleIR &module, - repr::IRDumper *ir_dumper) { + repr::ModuleIR *linked_module) { auto no_filter = [](const std::string &symbol) { return true; }; - return LinkDecl(ir_dumper, module.GetRecordTypes(), no_filter) && - LinkDecl(ir_dumper, module.GetEnumTypes(), no_filter) && - LinkDecl(ir_dumper, module.GetFunctionTypes(), no_filter) && - LinkDecl(ir_dumper, module.GetBuiltinTypes(), no_filter) && - LinkDecl(ir_dumper, module.GetPointerTypes(), no_filter) && - LinkDecl(ir_dumper, module.GetRvalueReferenceTypes(), no_filter) && - LinkDecl(ir_dumper, module.GetLvalueReferenceTypes(), no_filter) && - LinkDecl(ir_dumper, module.GetArrayTypes(), no_filter) && - LinkDecl(ir_dumper, module.GetQualifiedTypes(), no_filter); + return LinkDecl(linked_module, module.GetRecordTypes(), no_filter) && + LinkDecl(linked_module, module.GetEnumTypes(), no_filter) && + LinkDecl(linked_module, module.GetFunctionTypes(), no_filter) && + LinkDecl(linked_module, module.GetBuiltinTypes(), no_filter) && + LinkDecl(linked_module, module.GetPointerTypes(), no_filter) && + LinkDecl(linked_module, module.GetRvalueReferenceTypes(), no_filter) && + LinkDecl(linked_module, module.GetLvalueReferenceTypes(), no_filter) && + LinkDecl(linked_module, module.GetArrayTypes(), no_filter) && + LinkDecl(linked_module, module.GetQualifiedTypes(), no_filter); } bool HeaderAbiLinker::IsSymbolExported(const std::string &name) const { @@ -321,29 +325,29 @@ bool HeaderAbiLinker::IsSymbolExported(const std::string &name) const { } bool HeaderAbiLinker::LinkFunctions(repr::ModuleIR &module, - repr::IRDumper *ir_dumper) { + repr::ModuleIR *linked_module) { auto symbol_filter = [this](const std::string &linker_set_key) { return IsSymbolExported(linker_set_key); }; - return LinkDecl(ir_dumper, module.GetFunctions(), symbol_filter); + return LinkDecl(linked_module, module.GetFunctions(), symbol_filter); } bool HeaderAbiLinker::LinkGlobalVars(repr::ModuleIR &module, - repr::IRDumper *ir_dumper) { + repr::ModuleIR *linked_module) { auto symbol_filter = [this](const std::string &linker_set_key) { return IsSymbolExported(linker_set_key); }; - return LinkDecl(ir_dumper, module.GetGlobalVariables(), symbol_filter); + return LinkDecl(linked_module, module.GetGlobalVariables(), symbol_filter); } template <typename SymbolMap> -bool HeaderAbiLinker::LinkExportedSymbols(repr::IRDumper *dst, +bool HeaderAbiLinker::LinkExportedSymbols(repr::ModuleIR *dst, const SymbolMap &symbols) { for (auto &&symbol : symbols) { if (!IsSymbolExported(symbol.first)) { continue; } - if (!dst->AddElfSymbolMessageIR(&(symbol.second))) { + if (!dst->AddElfSymbol(symbol.second)) { return false; } } @@ -351,19 +355,19 @@ bool HeaderAbiLinker::LinkExportedSymbols(repr::IRDumper *dst, } bool HeaderAbiLinker::LinkExportedSymbols( - repr::IRDumper *ir_dumper, + repr::ModuleIR *linked_module, const repr::ExportedSymbolSet &exported_symbols) { - return (LinkExportedSymbols(ir_dumper, exported_symbols.GetFunctions()) && - LinkExportedSymbols(ir_dumper, exported_symbols.GetVars())); + return (LinkExportedSymbols(linked_module, exported_symbols.GetFunctions()) && + LinkExportedSymbols(linked_module, exported_symbols.GetVars())); } -bool HeaderAbiLinker::LinkExportedSymbols(repr::IRDumper *ir_dumper) { +bool HeaderAbiLinker::LinkExportedSymbols(repr::ModuleIR *linked_module) { if (shared_object_symbols_) { - return LinkExportedSymbols(ir_dumper, *shared_object_symbols_); + return LinkExportedSymbols(linked_module, *shared_object_symbols_); } if (version_script_symbols_) { - return LinkExportedSymbols(ir_dumper, *version_script_symbols_); + return LinkExportedSymbols(linked_module, *version_script_symbols_); } return false; diff --git a/vndk/tools/header-checker/src/repr/ir_dumper.cpp b/vndk/tools/header-checker/src/repr/ir_dumper.cpp index 048359d85..b195eaf15 100644 --- a/vndk/tools/header-checker/src/repr/ir_dumper.cpp +++ b/vndk/tools/header-checker/src/repr/ir_dumper.cpp @@ -17,8 +17,10 @@ #include "repr/json/api.h" #include "repr/protobuf/api.h" +#include <algorithm> #include <memory> #include <string> +#include <vector> #include <llvm/Support/raw_ostream.h> @@ -41,5 +43,69 @@ std::unique_ptr<IRDumper> IRDumper::CreateIRDumper( } +// TODO: Replace AbiElementMap key with linker_set_key and use the natural +// ordering. +template <typename T> +static std::vector<const T *> SortAbiElements(const AbiElementMap<T> &m) { + std::vector<const T *> xs; + + xs.reserve(m.size()); + for (auto &&item : m) { + xs.push_back(&item.second); + } + + auto &&compare = [](const T *lhs, const T *rhs) { + return lhs->GetLinkerSetKey() < rhs->GetLinkerSetKey(); + }; + std::stable_sort(xs.begin(), xs.end(), compare); + + return xs; +} + + +bool IRDumper::DumpModule(const ModuleIR &module) { + for (auto &&item : SortAbiElements(module.GetFunctions())) { + AddLinkableMessageIR(item); + } + for (auto &&item : SortAbiElements(module.GetGlobalVariables())) { + AddLinkableMessageIR(item); + } + for (auto &&item : SortAbiElements(module.GetRecordTypes())) { + AddLinkableMessageIR(item); + } + for (auto &&item : SortAbiElements(module.GetFunctionTypes())) { + AddLinkableMessageIR(item); + } + for (auto &&item : SortAbiElements(module.GetEnumTypes())) { + AddLinkableMessageIR(item); + } + for (auto &&item : SortAbiElements(module.GetLvalueReferenceTypes())) { + AddLinkableMessageIR(item); + } + for (auto &&item : SortAbiElements(module.GetRvalueReferenceTypes())) { + AddLinkableMessageIR(item); + } + for (auto &&item : SortAbiElements(module.GetQualifiedTypes())) { + AddLinkableMessageIR(item); + } + for (auto &&item : SortAbiElements(module.GetArrayTypes())) { + AddLinkableMessageIR(item); + } + for (auto &&item : SortAbiElements(module.GetPointerTypes())) { + AddLinkableMessageIR(item); + } + for (auto &&item : SortAbiElements(module.GetBuiltinTypes())) { + AddLinkableMessageIR(item); + } + for (auto &&item : module.GetElfFunctions()) { + AddElfSymbolMessageIR(&item.second); + } + for (auto &&item : module.GetElfObjects()) { + AddElfSymbolMessageIR(&item.second); + } + return true; +} + + } // namespace repr } // header_checker diff --git a/vndk/tools/header-checker/src/repr/ir_dumper.h b/vndk/tools/header-checker/src/repr/ir_dumper.h index 1e6128d08..e8e30f909 100644 --- a/vndk/tools/header-checker/src/repr/ir_dumper.h +++ b/vndk/tools/header-checker/src/repr/ir_dumper.h @@ -33,12 +33,15 @@ class IRDumper { static std::unique_ptr<IRDumper> CreateIRDumper( TextFormatIR text_format, const std::string &dump_path); + virtual bool Dump(const ModuleIR &module) = 0; + + protected: + bool DumpModule(const ModuleIR &module); + virtual bool AddLinkableMessageIR(const LinkableMessageIR *) = 0; virtual bool AddElfSymbolMessageIR(const ElfSymbolIR *) = 0; - virtual bool Dump() = 0; - protected: const std::string &dump_path_; }; diff --git a/vndk/tools/header-checker/src/repr/ir_representation.cpp b/vndk/tools/header-checker/src/repr/ir_representation.cpp index 73577afdb..e755002de 100644 --- a/vndk/tools/header-checker/src/repr/ir_representation.cpp +++ b/vndk/tools/header-checker/src/repr/ir_representation.cpp @@ -24,6 +24,67 @@ namespace header_checker { namespace repr { +template <typename T, typename U> +static inline T CreateTemp(const U &lm) { + // Cast source const reference to destination const reference and then create + // a temporary copy. + return static_cast<const T &>(lm); +} + + +bool ModuleIR::AddLinkableMessage(const LinkableMessageIR &lm) { + switch (lm.GetKind()) { + case RecordTypeKind: + AddRecordType(CreateTemp<RecordTypeIR>(lm)); + return true; + case EnumTypeKind: + AddEnumType(CreateTemp<EnumTypeIR>(lm)); + return true; + case PointerTypeKind: + AddPointerType(CreateTemp<PointerTypeIR>(lm)); + return true; + case QualifiedTypeKind: + AddQualifiedType(CreateTemp<QualifiedTypeIR>(lm)); + return true; + case ArrayTypeKind: + AddArrayType(CreateTemp<ArrayTypeIR>(lm)); + return true; + case LvalueReferenceTypeKind: + AddLvalueReferenceType(CreateTemp<LvalueReferenceTypeIR>(lm)); + return true; + case RvalueReferenceTypeKind: + AddRvalueReferenceType(CreateTemp<RvalueReferenceTypeIR>(lm)); + return true; + case BuiltinTypeKind: + AddBuiltinType(CreateTemp<BuiltinTypeIR>(lm)); + return true; + case FunctionTypeKind: + AddFunctionType(CreateTemp<FunctionTypeIR>(lm)); + return true; + case GlobalVarKind: + AddGlobalVariable(CreateTemp<GlobalVarIR>(lm)); + return true; + case FunctionKind: + AddFunction(CreateTemp<FunctionIR>(lm)); + return true; + } + return false; +} + + +bool ModuleIR::AddElfSymbol(const ElfSymbolIR &elf_symbol) { + switch (elf_symbol.GetKind()) { + case ElfSymbolIR::ElfFunctionKind: + AddElfFunction(CreateTemp<ElfFunctionIR>(elf_symbol)); + return true; + case ElfSymbolIR::ElfObjectKind: + AddElfObject(CreateTemp<ElfObjectIR>(elf_symbol)); + return true; + } + return false; +} + + void ModuleIR::AddFunction(FunctionIR &&function) { if (!IsLinkableMessageInExportedHeaders(&function)) { return; diff --git a/vndk/tools/header-checker/src/repr/ir_representation.h b/vndk/tools/header-checker/src/repr/ir_representation.h index 5c993ea80..60fe0d01a 100644 --- a/vndk/tools/header-checker/src/repr/ir_representation.h +++ b/vndk/tools/header-checker/src/repr/ir_representation.h @@ -841,6 +841,8 @@ class ModuleIR { } + bool AddLinkableMessage(const LinkableMessageIR &); + void AddFunction(FunctionIR &&function); void AddGlobalVariable(GlobalVarIR &&global_var); @@ -863,6 +865,8 @@ class ModuleIR { void AddBuiltinType(BuiltinTypeIR &&builtin_type); + bool AddElfSymbol(const ElfSymbolIR &); + void AddElfFunction(ElfFunctionIR &&elf_function); void AddElfObject(ElfObjectIR &&elf_object); diff --git a/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp b/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp index f9c56ec46..c3341bea7 100644 --- a/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp +++ b/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp @@ -399,7 +399,8 @@ static void WriteTailTrimmedLinesToFile(const std::string &path, } } -bool JsonIRDumper::Dump() { +bool JsonIRDumper::Dump(const ModuleIR &module) { + DumpModule(module); std::string output_string = DumpJson(translation_unit_); WriteTailTrimmedLinesToFile(dump_path_, output_string); return true; diff --git a/vndk/tools/header-checker/src/repr/json/ir_dumper.h b/vndk/tools/header-checker/src/repr/json/ir_dumper.h index d7fc65c29..0b2871f2c 100644 --- a/vndk/tools/header-checker/src/repr/json/ir_dumper.h +++ b/vndk/tools/header-checker/src/repr/json/ir_dumper.h @@ -85,12 +85,13 @@ class JsonIRDumper : public IRDumper, public IRToJsonConverter { ~JsonIRDumper() override {} + bool Dump(const ModuleIR &module) override; + + private: bool AddLinkableMessageIR(const LinkableMessageIR *) override; bool AddElfSymbolMessageIR(const ElfSymbolIR *) override; - bool Dump() override; - private: JsonObject translation_unit_; }; diff --git a/vndk/tools/header-checker/src/repr/protobuf/ir_dumper.cpp b/vndk/tools/header-checker/src/repr/protobuf/ir_dumper.cpp index d4a0594cb..6bf20b79d 100644 --- a/vndk/tools/header-checker/src/repr/protobuf/ir_dumper.cpp +++ b/vndk/tools/header-checker/src/repr/protobuf/ir_dumper.cpp @@ -483,8 +483,9 @@ bool ProtobufIRDumper::AddRvalueReferenceTypeIR( return true; } -bool ProtobufIRDumper::Dump() { +bool ProtobufIRDumper::Dump(const ModuleIR &module) { GOOGLE_PROTOBUF_VERIFY_VERSION; + DumpModule(module); assert( tu_ptr_.get() != nullptr); std::ofstream text_output(dump_path_); google::protobuf::io::OstreamOutputStream text_os(&text_output); diff --git a/vndk/tools/header-checker/src/repr/protobuf/ir_dumper.h b/vndk/tools/header-checker/src/repr/protobuf/ir_dumper.h index 72bac7e30..e5ed27882 100644 --- a/vndk/tools/header-checker/src/repr/protobuf/ir_dumper.h +++ b/vndk/tools/header-checker/src/repr/protobuf/ir_dumper.h @@ -62,12 +62,14 @@ class ProtobufIRDumper : public IRDumper, public IRToProtobufConverter { ~ProtobufIRDumper() override {} + bool Dump(const ModuleIR &module) override; + + + private: bool AddLinkableMessageIR(const LinkableMessageIR *) override; bool AddElfSymbolMessageIR(const ElfSymbolIR *) override; - bool Dump() override; - private: std::unique_ptr<abi_dump::TranslationUnit> tu_ptr_; diff --git a/vndk/tools/header-checker/tests/expected/example1.cpp b/vndk/tools/header-checker/tests/expected/example1.cpp index 810159cbe..d06d81440 100644 --- a/vndk/tools/header-checker/tests/expected/example1.cpp +++ b/vndk/tools/header-checker/tests/expected/example1.cpp @@ -1,51 +1,33 @@ record_types { type_info { - name: "HiddenBase" - size: 8 - alignment: 4 - referenced_type: "type-1" - source_file: "/development/vndk/tools/header-checker/tests/input/example3.h" - linker_set_key: "HiddenBase" - self_type: "type-1" + name: "CPPHello" + size: 56 + alignment: 8 + referenced_type: "type-23" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "CPPHello" + self_type: "type-23" } fields { - referenced_type: "type-2" - field_offset: 0 - field_name: "hide" - access: private_access + referenced_type: "type-24" + field_offset: 352 + field_name: "cpp_foo" + access: public_access } fields { - referenced_type: "type-3" - field_offset: 32 - field_name: "seek" - access: private_access - } - access: public_access - record_kind: class_kind - tag_info { - unique_id: "_ZTS10HiddenBase" + referenced_type: "type-25" + field_offset: 384 + field_name: "cpp_bar" + access: public_access } -} -record_types { - type_info { - name: "test2::HelloAgain" - size: 40 - alignment: 8 + base_specifiers { referenced_type: "type-4" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test2::HelloAgain" - self_type: "type-4" - } - fields { - referenced_type: "type-5" - field_offset: 64 - field_name: "foo_again" - access: public_access + is_virtual: false + access: private_access } - fields { - referenced_type: "type-2" - field_offset: 256 - field_name: "bar_again" + base_specifiers { + referenced_type: "type-15" + is_virtual: false access: public_access } vtable_layout { @@ -57,25 +39,25 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTIN5test210HelloAgainE" + mangled_component_name: "_ZTI8CPPHello" component_value: 0 is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN5test210HelloAgain5againEv" + mangled_component_name: "_ZN8CPPHello5againEv" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN5test210HelloAgainD1Ev" + mangled_component_name: "_ZN8CPPHelloD1Ev" component_value: 0 is_pure: false } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN5test210HelloAgainD0Ev" + mangled_component_name: "_ZN8CPPHelloD0Ev" component_value: 0 is_pure: false } @@ -83,259 +65,255 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTSN5test210HelloAgainE" + unique_id: "_ZTS8CPPHello" } } record_types { type_info { - name: "test3::ByeAgain<double>" - size: 16 - alignment: 8 - referenced_type: "type-13" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test3::ByeAgain<double>" - self_type: "type-13" + name: "Hello" + size: 32 + alignment: 4 + referenced_type: "type-19" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "Hello" + self_type: "type-19" } fields { - referenced_type: "type-14" + referenced_type: "type-2" field_offset: 0 - field_name: "foo_again" + field_name: "foo" access: public_access } fields { referenced_type: "type-2" + field_offset: 32 + field_name: "bar" + access: public_access + } + fields { + referenced_type: "type-20" field_offset: 64 - field_name: "bar_again" + field_name: "d" access: public_access } - template_info { - elements { - referenced_type: "type-14" - } + fields { + referenced_type: "type-9" + field_offset: 96 + field_name: "enum_field" + access: public_access + } + fields { + referenced_type: "type-9" + field_offset: 128 + field_name: "enum_field2" + access: public_access + } + fields { + referenced_type: "type-21" + field_offset: 160 + field_name: "" + access: public_access } access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTSN5test38ByeAgainIdEE" + unique_id: "Hello" } } record_types { type_info { - name: "test3::ByeAgain<float>" - size: 8 + name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3) at /development/vndk/tools/header-checker/tests/input/example1.h:19:3" + size: 12 alignment: 4 - referenced_type: "type-15" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test3::ByeAgain<float>" - self_type: "type-15" + referenced_type: "type-21" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3) at /development/vndk/tools/header-checker/tests/input/example1.h:19:3" + self_type: "type-21" } fields { - referenced_type: "type-3" + referenced_type: "type-2" field_offset: 0 - field_name: "foo_again" + field_name: "a" access: public_access } fields { - referenced_type: "type-3" + referenced_type: "type-2" field_offset: 32 - field_name: "bar_Again" + field_name: "b" access: public_access } - template_info { - elements { - referenced_type: "type-3" - } + fields { + referenced_type: "type-22" + field_offset: 64 + field_name: "" + access: public_access } access: public_access + is_anonymous: true record_kind: struct_kind tag_info { - unique_id: "_ZTSN5test38ByeAgainIfEE" + unique_id: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)" } } record_types { type_info { - name: "test3::Outer" + name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5) at /development/vndk/tools/header-checker/tests/input/example1.h:22:5" size: 4 alignment: 4 - referenced_type: "type-17" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test3::Outer" - self_type: "type-17" + referenced_type: "type-22" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5) at /development/vndk/tools/header-checker/tests/input/example1.h:22:5" + self_type: "type-22" } fields { referenced_type: "type-2" field_offset: 0 - field_name: "a" + field_name: "c" access: public_access } access: public_access - record_kind: class_kind + is_anonymous: true + record_kind: struct_kind tag_info { - unique_id: "_ZTSN5test35OuterE" + unique_id: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5)" } } record_types { type_info { - name: "test3::Outer::Inner" - size: 4 + name: "HiddenBase" + size: 8 alignment: 4 - referenced_type: "type-18" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test3::Outer::Inner" - self_type: "type-18" + referenced_type: "type-1" + source_file: "/development/vndk/tools/header-checker/tests/input/example3.h" + linker_set_key: "HiddenBase" + self_type: "type-1" } fields { referenced_type: "type-2" field_offset: 0 - field_name: "b" + field_name: "hide" access: private_access } - access: private_access + fields { + referenced_type: "type-3" + field_offset: 32 + field_name: "seek" + access: private_access + } + access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTSN5test35Outer5InnerE" + unique_id: "_ZTS10HiddenBase" } } record_types { type_info { - name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5) at /development/vndk/tools/header-checker/tests/input/example1.h:22:5" - size: 4 - alignment: 4 - referenced_type: "type-22" + name: "List<float>" + size: 8 + alignment: 8 + referenced_type: "type-31" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5) at /development/vndk/tools/header-checker/tests/input/example1.h:22:5" - self_type: "type-22" + linker_set_key: "List<float>" + self_type: "type-31" } fields { - referenced_type: "type-2" + referenced_type: "type-33" field_offset: 0 - field_name: "c" + field_name: "middle" access: public_access } + template_info { + elements { + referenced_type: "type-3" + } + } access: public_access - is_anonymous: true - record_kind: struct_kind + record_kind: class_kind tag_info { - unique_id: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5)" + unique_id: "_ZTS4ListIfE" } } record_types { type_info { - name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3) at /development/vndk/tools/header-checker/tests/input/example1.h:19:3" - size: 12 - alignment: 4 - referenced_type: "type-21" + name: "List<float>::_Node" + size: 24 + alignment: 8 + referenced_type: "type-32" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3) at /development/vndk/tools/header-checker/tests/input/example1.h:19:3" - self_type: "type-21" + linker_set_key: "List<float>::_Node" + self_type: "type-32" } fields { - referenced_type: "type-2" + referenced_type: "type-3" field_offset: 0 - field_name: "a" - access: public_access + field_name: "mVal" + access: private_access } fields { - referenced_type: "type-2" - field_offset: 32 - field_name: "b" - access: public_access + referenced_type: "type-33" + field_offset: 64 + field_name: "mpPrev" + access: private_access } fields { - referenced_type: "type-22" - field_offset: 64 - field_name: "" - access: public_access + referenced_type: "type-33" + field_offset: 128 + field_name: "mpNext" + access: private_access } access: public_access - is_anonymous: true - record_kind: struct_kind + record_kind: class_kind tag_info { - unique_id: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)" + unique_id: "_ZTSN4ListIfE5_NodeE" } } record_types { type_info { - name: "Hello" - size: 32 - alignment: 4 - referenced_type: "type-19" + name: "List<int>" + size: 8 + alignment: 8 + referenced_type: "type-35" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "Hello" - self_type: "type-19" + linker_set_key: "List<int>" + self_type: "type-35" } fields { - referenced_type: "type-2" + referenced_type: "type-37" field_offset: 0 - field_name: "foo" - access: public_access - } - fields { - referenced_type: "type-2" - field_offset: 32 - field_name: "bar" - access: public_access - } - fields { - referenced_type: "type-20" - field_offset: 64 - field_name: "d" - access: public_access - } - fields { - referenced_type: "type-9" - field_offset: 96 - field_name: "enum_field" - access: public_access - } - fields { - referenced_type: "type-9" - field_offset: 128 - field_name: "enum_field2" + field_name: "middle" access: public_access } - fields { - referenced_type: "type-21" - field_offset: 160 - field_name: "" - access: public_access + template_info { + elements { + referenced_type: "type-2" + } } access: public_access - record_kind: struct_kind + record_kind: class_kind tag_info { - unique_id: "Hello" + unique_id: "_ZTS4ListIiE" } } record_types { type_info { - name: "CPPHello" - size: 56 + name: "test2::HelloAgain" + size: 40 alignment: 8 - referenced_type: "type-23" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "CPPHello" - self_type: "type-23" + referenced_type: "type-4" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test2::HelloAgain" + self_type: "type-4" } fields { - referenced_type: "type-24" - field_offset: 352 - field_name: "cpp_foo" + referenced_type: "type-5" + field_offset: 64 + field_name: "foo_again" access: public_access } fields { - referenced_type: "type-25" - field_offset: 384 - field_name: "cpp_bar" - access: public_access - } - base_specifiers { - referenced_type: "type-4" - is_virtual: false - access: private_access - } - base_specifiers { - referenced_type: "type-15" - is_virtual: false + referenced_type: "type-2" + field_offset: 256 + field_name: "bar_again" access: public_access } vtable_layout { @@ -347,25 +325,25 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI8CPPHello" + mangled_component_name: "_ZTIN5test210HelloAgainE" component_value: 0 is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN8CPPHello5againEv" + mangled_component_name: "_ZN5test210HelloAgain5againEv" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN8CPPHelloD1Ev" + mangled_component_name: "_ZN5test210HelloAgainD1Ev" component_value: 0 is_pure: false } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN8CPPHelloD0Ev" + mangled_component_name: "_ZN5test210HelloAgainD0Ev" component_value: 0 is_pure: false } @@ -373,95 +351,137 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS8CPPHello" + unique_id: "_ZTSN5test210HelloAgainE" } } record_types { type_info { - name: "List<float>" - size: 8 + name: "test3::ByeAgain<double>" + size: 16 alignment: 8 - referenced_type: "type-31" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<float>" - self_type: "type-31" + referenced_type: "type-13" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test3::ByeAgain<double>" + self_type: "type-13" } fields { - referenced_type: "type-33" + referenced_type: "type-14" field_offset: 0 - field_name: "middle" + field_name: "foo_again" + access: public_access + } + fields { + referenced_type: "type-2" + field_offset: 64 + field_name: "bar_again" access: public_access } template_info { elements { - referenced_type: "type-3" + referenced_type: "type-14" } } access: public_access - record_kind: class_kind + record_kind: struct_kind tag_info { - unique_id: "_ZTS4ListIfE" + unique_id: "_ZTSN5test38ByeAgainIdEE" } } record_types { type_info { - name: "List<float>::_Node" - size: 24 - alignment: 8 - referenced_type: "type-32" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<float>::_Node" - self_type: "type-32" + name: "test3::ByeAgain<float>" + size: 8 + alignment: 4 + referenced_type: "type-15" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test3::ByeAgain<float>" + self_type: "type-15" } fields { referenced_type: "type-3" field_offset: 0 - field_name: "mVal" - access: private_access + field_name: "foo_again" + access: public_access } fields { - referenced_type: "type-33" - field_offset: 64 - field_name: "mpPrev" - access: private_access + referenced_type: "type-3" + field_offset: 32 + field_name: "bar_Again" + access: public_access + } + template_info { + elements { + referenced_type: "type-3" + } + } + access: public_access + record_kind: struct_kind + tag_info { + unique_id: "_ZTSN5test38ByeAgainIfEE" + } +} +record_types { + type_info { + name: "test3::Outer" + size: 4 + alignment: 4 + referenced_type: "type-17" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test3::Outer" + self_type: "type-17" } fields { - referenced_type: "type-33" - field_offset: 128 - field_name: "mpNext" - access: private_access + referenced_type: "type-2" + field_offset: 0 + field_name: "a" + access: public_access } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTSN4ListIfE5_NodeE" + unique_id: "_ZTSN5test35OuterE" } } record_types { type_info { - name: "List<int>" - size: 8 - alignment: 8 - referenced_type: "type-35" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<int>" - self_type: "type-35" + name: "test3::Outer::Inner" + size: 4 + alignment: 4 + referenced_type: "type-18" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test3::Outer::Inner" + self_type: "type-18" } fields { - referenced_type: "type-37" + referenced_type: "type-2" field_offset: 0 - field_name: "middle" - access: public_access + field_name: "b" + access: private_access } - template_info { - elements { - referenced_type: "type-2" - } + access: private_access + record_kind: class_kind + tag_info { + unique_id: "_ZTSN5test35Outer5InnerE" + } +} +enum_types { + type_info { + name: "CPPHello::Bla" + size: 4 + alignment: 4 + referenced_type: "type-27" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "CPPHello::Bla" + self_type: "type-27" + } + underlying_type: "type-9" + enum_fields { + enum_field_value: 1 + name: "CPPHello::BLA" } access: public_access - record_kind: class_kind tag_info { - unique_id: "_ZTS4ListIiE" + unique_id: "_ZTSN8CPPHello3BlaE" } } enum_types { @@ -512,57 +532,48 @@ enum_types { unique_id: "_ZTSN5test34KindE" } } -enum_types { +pointer_types { type_info { - name: "CPPHello::Bla" - size: 4 - alignment: 4 - referenced_type: "type-27" + name: "CPPHello *" + size: 8 + alignment: 8 + referenced_type: "type-23" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "CPPHello::Bla" - self_type: "type-27" - } - underlying_type: "type-9" - enum_fields { - enum_field_value: 1 - name: "CPPHello::BLA" - } - access: public_access - tag_info { - unique_id: "_ZTSN8CPPHello3BlaE" + linker_set_key: "CPPHello *" + self_type: "type-26" } } pointer_types { type_info { - name: "test2::HelloAgain *" + name: "List<float>::_Node *" size: 8 alignment: 8 - referenced_type: "type-4" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test2::HelloAgain *" - self_type: "type-7" + referenced_type: "type-32" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "List<float>::_Node *" + self_type: "type-33" } } pointer_types { type_info { - name: "CPPHello *" + name: "List<int>::_Node *" size: 8 alignment: 8 - referenced_type: "type-23" + referenced_type: "type-36" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "CPPHello *" - self_type: "type-26" + linker_set_key: "List<int>::_Node *" + self_type: "type-37" } } pointer_types { type_info { - name: "int *" + name: "const char *" size: 8 alignment: 8 - referenced_type: "type-2" + referenced_type: "type-38" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "int *" - self_type: "type-29" + linker_set_key: "const char *" + self_type: "type-39" } } pointer_types { @@ -578,35 +589,24 @@ pointer_types { } pointer_types { type_info { - name: "List<float>::_Node *" - size: 8 - alignment: 8 - referenced_type: "type-32" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<float>::_Node *" - self_type: "type-33" - } -} -pointer_types { - type_info { - name: "List<int>::_Node *" + name: "int *" size: 8 alignment: 8 - referenced_type: "type-36" + referenced_type: "type-2" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<int>::_Node *" - self_type: "type-37" + linker_set_key: "int *" + self_type: "type-29" } } pointer_types { type_info { - name: "const char *" + name: "test2::HelloAgain *" size: 8 alignment: 8 - referenced_type: "type-38" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "const char *" - self_type: "type-39" + referenced_type: "type-4" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test2::HelloAgain *" + self_type: "type-7" } } lvalue_reference_types { @@ -622,19 +622,45 @@ lvalue_reference_types { } builtin_types { type_info { - name: "int" - size: 4 - alignment: 4 - referenced_type: "type-2" + name: "bool" + size: 1 + alignment: 1 + referenced_type: "type-12" source_file: "" - linker_set_key: "int" - self_type: "type-2" + linker_set_key: "bool" + self_type: "type-12" + } + is_unsigned: true + is_integral: true +} +builtin_types { + type_info { + name: "char" + size: 1 + alignment: 1 + referenced_type: "type-40" + source_file: "" + linker_set_key: "char" + self_type: "type-40" } is_unsigned: false is_integral: true } builtin_types { type_info { + name: "double" + size: 8 + alignment: 8 + referenced_type: "type-14" + source_file: "" + linker_set_key: "double" + self_type: "type-14" + } + is_unsigned: false + is_integral: false +} +builtin_types { + type_info { name: "float" size: 4 alignment: 4 @@ -648,16 +674,16 @@ builtin_types { } builtin_types { type_info { - name: "void" - size: 0 - alignment: 0 - referenced_type: "type-6" + name: "int" + size: 4 + alignment: 4 + referenced_type: "type-2" source_file: "" - linker_set_key: "void" - self_type: "type-6" + linker_set_key: "int" + self_type: "type-2" } is_unsigned: false - is_integral: false + is_integral: true } builtin_types { type_info { @@ -674,26 +700,13 @@ builtin_types { } builtin_types { type_info { - name: "bool" - size: 1 - alignment: 1 - referenced_type: "type-12" - source_file: "" - linker_set_key: "bool" - self_type: "type-12" - } - is_unsigned: true - is_integral: true -} -builtin_types { - type_info { - name: "double" - size: 8 - alignment: 8 - referenced_type: "type-14" + name: "void" + size: 0 + alignment: 0 + referenced_type: "type-6" source_file: "" - linker_set_key: "double" - self_type: "type-14" + linker_set_key: "void" + self_type: "type-6" } is_unsigned: false is_integral: false @@ -711,19 +724,6 @@ builtin_types { is_unsigned: false is_integral: true } -builtin_types { - type_info { - name: "char" - size: 1 - alignment: 1 - referenced_type: "type-40" - source_file: "" - linker_set_key: "char" - self_type: "type-40" - } - is_unsigned: false - is_integral: true -} qualified_types { type_info { name: "bool const[2]" @@ -740,13 +740,13 @@ qualified_types { } qualified_types { type_info { - name: "const int" - size: 4 - alignment: 4 - referenced_type: "type-2" + name: "const CPPHello" + size: 56 + alignment: 8 + referenced_type: "type-23" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "const int" - self_type: "type-24" + linker_set_key: "const CPPHello" + self_type: "type-28" } is_const: true is_volatile: false @@ -754,13 +754,13 @@ qualified_types { } qualified_types { type_info { - name: "const float" - size: 4 - alignment: 4 - referenced_type: "type-3" + name: "const char" + size: 1 + alignment: 1 + referenced_type: "type-40" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "const float" - self_type: "type-25" + linker_set_key: "const char" + self_type: "type-38" } is_const: true is_volatile: false @@ -768,13 +768,13 @@ qualified_types { } qualified_types { type_info { - name: "const CPPHello" - size: 56 - alignment: 8 - referenced_type: "type-23" + name: "const float" + size: 4 + alignment: 4 + referenced_type: "type-3" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "const CPPHello" - self_type: "type-28" + linker_set_key: "const float" + self_type: "type-25" } is_const: true is_volatile: false @@ -782,13 +782,13 @@ qualified_types { } qualified_types { type_info { - name: "const char" - size: 1 - alignment: 1 - referenced_type: "type-40" + name: "const int" + size: 4 + alignment: 4 + referenced_type: "type-2" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "const char" - self_type: "type-38" + linker_set_key: "const int" + self_type: "type-24" } is_const: true is_volatile: false @@ -806,99 +806,39 @@ array_types { } } functions { - return_type: "type-6" - function_name: "test2::HelloAgain::~HelloAgain" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - parameters { - referenced_type: "type-7" - default_arg: false - is_this_ptr: true - } - linker_set_key: "_ZN5test210HelloAgainD2Ev" - access: public_access -} -functions { - return_type: "type-6" - function_name: "test2::HelloAgain::~HelloAgain" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - parameters { - referenced_type: "type-7" - default_arg: false - is_this_ptr: true - } - linker_set_key: "_ZN5test210HelloAgainD1Ev" - access: public_access -} -functions { - return_type: "type-6" - function_name: "test2::HelloAgain::~HelloAgain" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + return_type: "type-31" + function_name: "castInterface" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-7" + referenced_type: "type-31" default_arg: false - is_this_ptr: true - } - linker_set_key: "_ZN5test210HelloAgainD0Ev" - access: public_access -} -functions { - return_type: "type-12" - function_name: "test3::End" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - parameters { - referenced_type: "type-3" - default_arg: true is_this_ptr: false } - linker_set_key: "_ZN5test33EndEf" - access: public_access -} -functions { - return_type: "type-2" - function_name: "CPPHello::again" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-26" - default_arg: false - is_this_ptr: true - } - linker_set_key: "_ZN8CPPHello5againEv" - access: public_access -} -functions { - return_type: "type-6" - function_name: "CPPHello::CPPHello" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - parameters { - referenced_type: "type-26" + referenced_type: "type-39" default_arg: false - is_this_ptr: true + is_this_ptr: false } - linker_set_key: "_ZN8CPPHelloC2Ev" - access: public_access -} -functions { - return_type: "type-6" - function_name: "CPPHello::CPPHello" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-26" + referenced_type: "type-12" default_arg: false - is_this_ptr: true + is_this_ptr: false } - linker_set_key: "_ZN8CPPHelloC1Ev" - access: public_access -} -functions { - return_type: "type-2" - function_name: "CPPHello::test_enum" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - parameters { - referenced_type: "type-26" - default_arg: false - is_this_ptr: true + template_info { + elements { + referenced_type: "type-3" + } + elements { + referenced_type: "type-3" + } + elements { + referenced_type: "type-3" + } + elements { + referenced_type: "type-3" + } } - linker_set_key: "_ZN8CPPHello9test_enumEv" + linker_set_key: "_Z13castInterfaceIffffE4ListIT_ES0_IT0_EPKcb" access: public_access } functions { @@ -925,6 +865,13 @@ functions { } functions { return_type: "type-6" + function_name: "format" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "_Z6formatv" + access: public_access +} +functions { + return_type: "type-6" function_name: "List<float>::_Node::_Node" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { @@ -937,7 +884,7 @@ functions { default_arg: false is_this_ptr: false } - linker_set_key: "_ZN4ListIfE5_NodeC2ERKf" + linker_set_key: "_ZN4ListIfE5_NodeC1ERKf" access: public_access } functions { @@ -954,7 +901,7 @@ functions { default_arg: false is_this_ptr: false } - linker_set_key: "_ZN4ListIfE5_NodeC1ERKf" + linker_set_key: "_ZN4ListIfE5_NodeC2ERKf" access: public_access } functions { @@ -966,7 +913,7 @@ functions { default_arg: false is_this_ptr: true } - linker_set_key: "_ZN4ListIfE5_NodeD2Ev" + linker_set_key: "_ZN4ListIfE5_NodeD1Ev" access: public_access } functions { @@ -978,57 +925,103 @@ functions { default_arg: false is_this_ptr: true } - linker_set_key: "_ZN4ListIfE5_NodeD1Ev" + linker_set_key: "_ZN4ListIfE5_NodeD2Ev" access: public_access } functions { - return_type: "type-31" - function_name: "castInterface" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + return_type: "type-6" + function_name: "test2::HelloAgain::~HelloAgain" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" parameters { - referenced_type: "type-31" + referenced_type: "type-7" default_arg: false - is_this_ptr: false + is_this_ptr: true } + linker_set_key: "_ZN5test210HelloAgainD0Ev" + access: public_access +} +functions { + return_type: "type-6" + function_name: "test2::HelloAgain::~HelloAgain" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" parameters { - referenced_type: "type-39" + referenced_type: "type-7" default_arg: false - is_this_ptr: false + is_this_ptr: true } + linker_set_key: "_ZN5test210HelloAgainD1Ev" + access: public_access +} +functions { + return_type: "type-6" + function_name: "test2::HelloAgain::~HelloAgain" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" parameters { - referenced_type: "type-12" + referenced_type: "type-7" default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN5test210HelloAgainD2Ev" + access: public_access +} +functions { + return_type: "type-12" + function_name: "test3::End" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + parameters { + referenced_type: "type-3" + default_arg: true is_this_ptr: false } - template_info { - elements { - referenced_type: "type-3" - } - elements { - referenced_type: "type-3" - } - elements { - referenced_type: "type-3" - } - elements { - referenced_type: "type-3" - } + linker_set_key: "_ZN5test33EndEf" + access: public_access +} +functions { + return_type: "type-2" + function_name: "CPPHello::again" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + parameters { + referenced_type: "type-26" + default_arg: false + is_this_ptr: true } - linker_set_key: "_Z13castInterfaceIffffE4ListIT_ES0_IT0_EPKcb" + linker_set_key: "_ZN8CPPHello5againEv" + access: public_access +} +functions { + return_type: "type-2" + function_name: "CPPHello::test_enum" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + parameters { + referenced_type: "type-26" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN8CPPHello9test_enumEv" access: public_access } functions { return_type: "type-6" - function_name: "format" + function_name: "CPPHello::CPPHello" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "_Z6formatv" + parameters { + referenced_type: "type-26" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN8CPPHelloC1Ev" access: public_access } -global_vars { - name: "test2::HelloAgain::hello_forever" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "_ZN5test210HelloAgain13hello_foreverE" - referenced_type: "type-2" +functions { + return_type: "type-6" + function_name: "CPPHello::CPPHello" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + parameters { + referenced_type: "type-26" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN8CPPHelloC2Ev" access: public_access } global_vars { @@ -1039,9 +1032,9 @@ global_vars { access: public_access } global_vars { - name: "test3::ByeAgain<float>::foo_forever" + name: "test2::HelloAgain::hello_forever" source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "_ZN5test38ByeAgainIfE11foo_foreverE" + linker_set_key: "_ZN5test210HelloAgain13hello_foreverE" referenced_type: "type-2" access: public_access } @@ -1053,6 +1046,13 @@ global_vars { access: public_access } global_vars { + name: "test3::ByeAgain<float>::foo_forever" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "_ZN5test38ByeAgainIfE11foo_foreverE" + referenced_type: "type-2" + access: public_access +} +global_vars { name: "float_list_test" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" linker_set_key: "float_list_test" diff --git a/vndk/tools/header-checker/tests/expected/example1.h b/vndk/tools/header-checker/tests/expected/example1.h index 13ae403b8..f2879f584 100644 --- a/vndk/tools/header-checker/tests/expected/example1.h +++ b/vndk/tools/header-checker/tests/expected/example1.h @@ -1,51 +1,33 @@ record_types { type_info { - name: "HiddenBase" - size: 8 - alignment: 4 - referenced_type: "type-1" - source_file: "/development/vndk/tools/header-checker/tests/input/example3.h" - linker_set_key: "HiddenBase" - self_type: "type-1" + name: "CPPHello" + size: 56 + alignment: 8 + referenced_type: "type-25" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "CPPHello" + self_type: "type-25" } fields { - referenced_type: "type-2" - field_offset: 0 - field_name: "hide" - access: private_access + referenced_type: "type-26" + field_offset: 352 + field_name: "cpp_foo" + access: public_access } fields { - referenced_type: "type-3" - field_offset: 32 - field_name: "seek" - access: private_access - } - access: public_access - record_kind: class_kind - tag_info { - unique_id: "_ZTS10HiddenBase" + referenced_type: "type-27" + field_offset: 384 + field_name: "cpp_bar" + access: public_access } -} -record_types { - type_info { - name: "test2::HelloAgain" - size: 40 - alignment: 8 + base_specifiers { referenced_type: "type-4" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test2::HelloAgain" - self_type: "type-4" - } - fields { - referenced_type: "type-5" - field_offset: 64 - field_name: "foo_again" - access: public_access + is_virtual: false + access: private_access } - fields { - referenced_type: "type-2" - field_offset: 256 - field_name: "bar_again" + base_specifiers { + referenced_type: "type-15" + is_virtual: false access: public_access } vtable_layout { @@ -57,25 +39,25 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTIN5test210HelloAgainE" + mangled_component_name: "_ZTI8CPPHello" component_value: 0 is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN5test210HelloAgain5againEv" + mangled_component_name: "_ZN8CPPHello5againEv" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN5test210HelloAgainD1Ev" + mangled_component_name: "_ZN8CPPHelloD1Ev" component_value: 0 is_pure: false } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN5test210HelloAgainD0Ev" + mangled_component_name: "_ZN8CPPHelloD0Ev" component_value: 0 is_pure: false } @@ -83,259 +65,255 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTSN5test210HelloAgainE" + unique_id: "_ZTS8CPPHello" } } record_types { type_info { - name: "test3::ByeAgain<double>" - size: 16 - alignment: 8 - referenced_type: "type-13" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test3::ByeAgain<double>" - self_type: "type-13" + name: "Hello" + size: 32 + alignment: 4 + referenced_type: "type-21" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "Hello" + self_type: "type-21" } fields { - referenced_type: "type-14" + referenced_type: "type-2" field_offset: 0 - field_name: "foo_again" + field_name: "foo" access: public_access } fields { referenced_type: "type-2" + field_offset: 32 + field_name: "bar" + access: public_access + } + fields { + referenced_type: "type-22" field_offset: 64 - field_name: "bar_again" + field_name: "d" access: public_access } - template_info { - elements { - referenced_type: "type-14" - } + fields { + referenced_type: "type-9" + field_offset: 96 + field_name: "enum_field" + access: public_access + } + fields { + referenced_type: "type-9" + field_offset: 128 + field_name: "enum_field2" + access: public_access + } + fields { + referenced_type: "type-23" + field_offset: 160 + field_name: "" + access: public_access } access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTSN5test38ByeAgainIdEE" + unique_id: "Hello" } } record_types { type_info { - name: "test3::ByeAgain<float>" - size: 8 + name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3) at /development/vndk/tools/header-checker/tests/input/example1.h:19:3" + size: 12 alignment: 4 - referenced_type: "type-15" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test3::ByeAgain<float>" - self_type: "type-15" + referenced_type: "type-23" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3) at /development/vndk/tools/header-checker/tests/input/example1.h:19:3" + self_type: "type-23" } fields { - referenced_type: "type-3" + referenced_type: "type-2" field_offset: 0 - field_name: "foo_again" + field_name: "a" access: public_access } fields { - referenced_type: "type-3" + referenced_type: "type-2" field_offset: 32 - field_name: "bar_Again" + field_name: "b" access: public_access } - template_info { - elements { - referenced_type: "type-3" - } + fields { + referenced_type: "type-24" + field_offset: 64 + field_name: "" + access: public_access } access: public_access + is_anonymous: true record_kind: struct_kind tag_info { - unique_id: "_ZTSN5test38ByeAgainIfEE" + unique_id: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)" } } record_types { type_info { - name: "test3::Outer" + name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5) at /development/vndk/tools/header-checker/tests/input/example1.h:22:5" size: 4 alignment: 4 - referenced_type: "type-17" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test3::Outer" - self_type: "type-17" + referenced_type: "type-24" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5) at /development/vndk/tools/header-checker/tests/input/example1.h:22:5" + self_type: "type-24" } fields { referenced_type: "type-2" field_offset: 0 - field_name: "a" + field_name: "c" access: public_access } access: public_access - record_kind: class_kind + is_anonymous: true + record_kind: struct_kind tag_info { - unique_id: "_ZTSN5test35OuterE" + unique_id: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5)" } } record_types { type_info { - name: "test3::Outer::Inner" - size: 4 + name: "HiddenBase" + size: 8 alignment: 4 - referenced_type: "type-18" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test3::Outer::Inner" - self_type: "type-18" + referenced_type: "type-1" + source_file: "/development/vndk/tools/header-checker/tests/input/example3.h" + linker_set_key: "HiddenBase" + self_type: "type-1" } fields { referenced_type: "type-2" field_offset: 0 - field_name: "b" + field_name: "hide" access: private_access } - access: private_access + fields { + referenced_type: "type-3" + field_offset: 32 + field_name: "seek" + access: private_access + } + access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTSN5test35Outer5InnerE" + unique_id: "_ZTS10HiddenBase" } } record_types { type_info { - name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5) at /development/vndk/tools/header-checker/tests/input/example1.h:22:5" - size: 4 - alignment: 4 - referenced_type: "type-24" + name: "List<float>" + size: 8 + alignment: 8 + referenced_type: "type-34" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5) at /development/vndk/tools/header-checker/tests/input/example1.h:22:5" - self_type: "type-24" + linker_set_key: "List<float>" + self_type: "type-34" } fields { - referenced_type: "type-2" + referenced_type: "type-36" field_offset: 0 - field_name: "c" + field_name: "middle" access: public_access } + template_info { + elements { + referenced_type: "type-3" + } + } access: public_access - is_anonymous: true - record_kind: struct_kind + record_kind: class_kind tag_info { - unique_id: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5)" + unique_id: "_ZTS4ListIfE" } } record_types { type_info { - name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3) at /development/vndk/tools/header-checker/tests/input/example1.h:19:3" - size: 12 - alignment: 4 - referenced_type: "type-23" + name: "List<float>::_Node" + size: 24 + alignment: 8 + referenced_type: "type-35" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3) at /development/vndk/tools/header-checker/tests/input/example1.h:19:3" - self_type: "type-23" + linker_set_key: "List<float>::_Node" + self_type: "type-35" } fields { - referenced_type: "type-2" + referenced_type: "type-3" field_offset: 0 - field_name: "a" - access: public_access + field_name: "mVal" + access: private_access } fields { - referenced_type: "type-2" - field_offset: 32 - field_name: "b" - access: public_access + referenced_type: "type-36" + field_offset: 64 + field_name: "mpPrev" + access: private_access } fields { - referenced_type: "type-24" - field_offset: 64 - field_name: "" - access: public_access + referenced_type: "type-36" + field_offset: 128 + field_name: "mpNext" + access: private_access } access: public_access - is_anonymous: true - record_kind: struct_kind + record_kind: class_kind tag_info { - unique_id: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)" + unique_id: "_ZTSN4ListIfE5_NodeE" } } record_types { type_info { - name: "Hello" - size: 32 - alignment: 4 - referenced_type: "type-21" + name: "List<int>" + size: 8 + alignment: 8 + referenced_type: "type-41" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "Hello" - self_type: "type-21" + linker_set_key: "List<int>" + self_type: "type-41" } fields { - referenced_type: "type-2" + referenced_type: "type-43" field_offset: 0 - field_name: "foo" - access: public_access - } - fields { - referenced_type: "type-2" - field_offset: 32 - field_name: "bar" - access: public_access - } - fields { - referenced_type: "type-22" - field_offset: 64 - field_name: "d" - access: public_access - } - fields { - referenced_type: "type-9" - field_offset: 96 - field_name: "enum_field" - access: public_access - } - fields { - referenced_type: "type-9" - field_offset: 128 - field_name: "enum_field2" + field_name: "middle" access: public_access } - fields { - referenced_type: "type-23" - field_offset: 160 - field_name: "" - access: public_access + template_info { + elements { + referenced_type: "type-2" + } } access: public_access - record_kind: struct_kind + record_kind: class_kind tag_info { - unique_id: "Hello" + unique_id: "_ZTS4ListIiE" } } record_types { type_info { - name: "CPPHello" - size: 56 + name: "test2::HelloAgain" + size: 40 alignment: 8 - referenced_type: "type-25" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "CPPHello" - self_type: "type-25" + referenced_type: "type-4" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test2::HelloAgain" + self_type: "type-4" } fields { - referenced_type: "type-26" - field_offset: 352 - field_name: "cpp_foo" + referenced_type: "type-5" + field_offset: 64 + field_name: "foo_again" access: public_access } fields { - referenced_type: "type-27" - field_offset: 384 - field_name: "cpp_bar" - access: public_access - } - base_specifiers { - referenced_type: "type-4" - is_virtual: false - access: private_access - } - base_specifiers { - referenced_type: "type-15" - is_virtual: false + referenced_type: "type-2" + field_offset: 256 + field_name: "bar_again" access: public_access } vtable_layout { @@ -347,25 +325,25 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI8CPPHello" + mangled_component_name: "_ZTIN5test210HelloAgainE" component_value: 0 is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN8CPPHello5againEv" + mangled_component_name: "_ZN5test210HelloAgain5againEv" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN8CPPHelloD1Ev" + mangled_component_name: "_ZN5test210HelloAgainD1Ev" component_value: 0 is_pure: false } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN8CPPHelloD0Ev" + mangled_component_name: "_ZN5test210HelloAgainD0Ev" component_value: 0 is_pure: false } @@ -373,95 +351,137 @@ record_types { access: public_access record_kind: struct_kind tag_info { - unique_id: "_ZTS8CPPHello" + unique_id: "_ZTSN5test210HelloAgainE" } } record_types { type_info { - name: "List<float>" - size: 8 + name: "test3::ByeAgain<double>" + size: 16 alignment: 8 - referenced_type: "type-34" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<float>" - self_type: "type-34" + referenced_type: "type-13" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test3::ByeAgain<double>" + self_type: "type-13" } fields { - referenced_type: "type-36" + referenced_type: "type-14" field_offset: 0 - field_name: "middle" + field_name: "foo_again" + access: public_access + } + fields { + referenced_type: "type-2" + field_offset: 64 + field_name: "bar_again" access: public_access } template_info { elements { - referenced_type: "type-3" + referenced_type: "type-14" } } access: public_access - record_kind: class_kind + record_kind: struct_kind tag_info { - unique_id: "_ZTS4ListIfE" + unique_id: "_ZTSN5test38ByeAgainIdEE" } } record_types { type_info { - name: "List<float>::_Node" - size: 24 - alignment: 8 - referenced_type: "type-35" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<float>::_Node" - self_type: "type-35" + name: "test3::ByeAgain<float>" + size: 8 + alignment: 4 + referenced_type: "type-15" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test3::ByeAgain<float>" + self_type: "type-15" } fields { referenced_type: "type-3" field_offset: 0 - field_name: "mVal" - access: private_access + field_name: "foo_again" + access: public_access } fields { - referenced_type: "type-36" - field_offset: 64 - field_name: "mpPrev" - access: private_access + referenced_type: "type-3" + field_offset: 32 + field_name: "bar_Again" + access: public_access + } + template_info { + elements { + referenced_type: "type-3" + } + } + access: public_access + record_kind: struct_kind + tag_info { + unique_id: "_ZTSN5test38ByeAgainIfEE" + } +} +record_types { + type_info { + name: "test3::Outer" + size: 4 + alignment: 4 + referenced_type: "type-17" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test3::Outer" + self_type: "type-17" } fields { - referenced_type: "type-36" - field_offset: 128 - field_name: "mpNext" - access: private_access + referenced_type: "type-2" + field_offset: 0 + field_name: "a" + access: public_access } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTSN4ListIfE5_NodeE" + unique_id: "_ZTSN5test35OuterE" } } record_types { type_info { - name: "List<int>" - size: 8 - alignment: 8 - referenced_type: "type-41" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<int>" - self_type: "type-41" + name: "test3::Outer::Inner" + size: 4 + alignment: 4 + referenced_type: "type-18" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test3::Outer::Inner" + self_type: "type-18" } fields { - referenced_type: "type-43" + referenced_type: "type-2" field_offset: 0 - field_name: "middle" - access: public_access + field_name: "b" + access: private_access } - template_info { - elements { - referenced_type: "type-2" - } + access: private_access + record_kind: class_kind + tag_info { + unique_id: "_ZTSN5test35Outer5InnerE" + } +} +enum_types { + type_info { + name: "CPPHello::Bla" + size: 4 + alignment: 4 + referenced_type: "type-29" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "CPPHello::Bla" + self_type: "type-29" + } + underlying_type: "type-9" + enum_fields { + enum_field_value: 1 + name: "CPPHello::BLA" } access: public_access - record_kind: class_kind tag_info { - unique_id: "_ZTS4ListIiE" + unique_id: "_ZTSN8CPPHello3BlaE" } } enum_types { @@ -512,35 +532,15 @@ enum_types { unique_id: "_ZTSN5test34KindE" } } -enum_types { - type_info { - name: "CPPHello::Bla" - size: 4 - alignment: 4 - referenced_type: "type-29" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "CPPHello::Bla" - self_type: "type-29" - } - underlying_type: "type-9" - enum_fields { - enum_field_value: 1 - name: "CPPHello::BLA" - } - access: public_access - tag_info { - unique_id: "_ZTSN8CPPHello3BlaE" - } -} pointer_types { type_info { - name: "test2::HelloAgain *" + name: "CPPHello *" size: 8 alignment: 8 - referenced_type: "type-4" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "test2::HelloAgain *" - self_type: "type-7" + referenced_type: "type-25" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "CPPHello *" + self_type: "type-28" } } pointer_types { @@ -556,46 +556,46 @@ pointer_types { } pointer_types { type_info { - name: "CPPHello *" + name: "List<float>::_Node *" size: 8 alignment: 8 - referenced_type: "type-25" + referenced_type: "type-35" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "CPPHello *" - self_type: "type-28" + linker_set_key: "List<float>::_Node *" + self_type: "type-36" } } pointer_types { type_info { - name: "int *" + name: "List<int> *" size: 8 alignment: 8 - referenced_type: "type-2" + referenced_type: "type-41" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "int *" - self_type: "type-31" + linker_set_key: "List<int> *" + self_type: "type-44" } } pointer_types { type_info { - name: "float *" + name: "List<int>::_Node *" size: 8 alignment: 8 - referenced_type: "type-3" + referenced_type: "type-42" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "float *" - self_type: "type-33" + linker_set_key: "List<int>::_Node *" + self_type: "type-43" } } pointer_types { type_info { - name: "List<float>::_Node *" + name: "StackNode<int> *" size: 8 alignment: 8 - referenced_type: "type-35" + referenced_type: "type-45" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<float>::_Node *" - self_type: "type-36" + linker_set_key: "StackNode<int> *" + self_type: "type-46" } } pointer_types { @@ -611,57 +611,46 @@ pointer_types { } pointer_types { type_info { - name: "List<int>::_Node *" + name: "const char *" size: 8 alignment: 8 - referenced_type: "type-42" + referenced_type: "type-47" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<int>::_Node *" - self_type: "type-43" + linker_set_key: "const char *" + self_type: "type-48" } } pointer_types { type_info { - name: "List<int> *" + name: "float *" size: 8 alignment: 8 - referenced_type: "type-41" + referenced_type: "type-3" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "List<int> *" - self_type: "type-44" + linker_set_key: "float *" + self_type: "type-33" } } pointer_types { type_info { - name: "StackNode<int> *" + name: "int *" size: 8 alignment: 8 - referenced_type: "type-45" + referenced_type: "type-2" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "StackNode<int> *" - self_type: "type-46" + linker_set_key: "int *" + self_type: "type-31" } } pointer_types { type_info { - name: "const char *" - size: 8 - alignment: 8 - referenced_type: "type-47" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "const char *" - self_type: "type-48" - } -} -lvalue_reference_types { - type_info { - name: "int &" + name: "test2::HelloAgain *" size: 8 alignment: 8 - referenced_type: "type-2" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "int &" - self_type: "type-30" + referenced_type: "type-4" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "test2::HelloAgain *" + self_type: "type-7" } } lvalue_reference_types { @@ -686,21 +675,58 @@ lvalue_reference_types { self_type: "type-38" } } -builtin_types { +lvalue_reference_types { type_info { - name: "int" - size: 4 - alignment: 4 + name: "int &" + size: 8 + alignment: 8 referenced_type: "type-2" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "int &" + self_type: "type-30" + } +} +builtin_types { + type_info { + name: "bool" + size: 1 + alignment: 1 + referenced_type: "type-12" source_file: "" - linker_set_key: "int" - self_type: "type-2" + linker_set_key: "bool" + self_type: "type-12" + } + is_unsigned: true + is_integral: true +} +builtin_types { + type_info { + name: "char" + size: 1 + alignment: 1 + referenced_type: "type-49" + source_file: "" + linker_set_key: "char" + self_type: "type-49" } is_unsigned: false is_integral: true } builtin_types { type_info { + name: "double" + size: 8 + alignment: 8 + referenced_type: "type-14" + source_file: "" + linker_set_key: "double" + self_type: "type-14" + } + is_unsigned: false + is_integral: false +} +builtin_types { + type_info { name: "float" size: 4 alignment: 4 @@ -714,16 +740,16 @@ builtin_types { } builtin_types { type_info { - name: "void" - size: 0 - alignment: 0 - referenced_type: "type-6" + name: "int" + size: 4 + alignment: 4 + referenced_type: "type-2" source_file: "" - linker_set_key: "void" - self_type: "type-6" + linker_set_key: "int" + self_type: "type-2" } is_unsigned: false - is_integral: false + is_integral: true } builtin_types { type_info { @@ -740,26 +766,13 @@ builtin_types { } builtin_types { type_info { - name: "bool" - size: 1 - alignment: 1 - referenced_type: "type-12" - source_file: "" - linker_set_key: "bool" - self_type: "type-12" - } - is_unsigned: true - is_integral: true -} -builtin_types { - type_info { - name: "double" - size: 8 - alignment: 8 - referenced_type: "type-14" + name: "void" + size: 0 + alignment: 0 + referenced_type: "type-6" source_file: "" - linker_set_key: "double" - self_type: "type-14" + linker_set_key: "void" + self_type: "type-6" } is_unsigned: false is_integral: false @@ -777,19 +790,6 @@ builtin_types { is_unsigned: false is_integral: true } -builtin_types { - type_info { - name: "char" - size: 1 - alignment: 1 - referenced_type: "type-49" - source_file: "" - linker_set_key: "char" - self_type: "type-49" - } - is_unsigned: false - is_integral: true -} qualified_types { type_info { name: "bool const[2]" @@ -806,34 +806,6 @@ qualified_types { } qualified_types { type_info { - name: "const int" - size: 4 - alignment: 4 - referenced_type: "type-2" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "const int" - self_type: "type-26" - } - is_const: true - is_volatile: false - is_restricted: false -} -qualified_types { - type_info { - name: "const float" - size: 4 - alignment: 4 - referenced_type: "type-3" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "const float" - self_type: "type-27" - } - is_const: true - is_volatile: false - is_restricted: false -} -qualified_types { - type_info { name: "const CPPHello" size: 56 alignment: 8 @@ -874,6 +846,34 @@ qualified_types { is_volatile: false is_restricted: false } +qualified_types { + type_info { + name: "const float" + size: 4 + alignment: 4 + referenced_type: "type-3" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "const float" + self_type: "type-27" + } + is_const: true + is_volatile: false + is_restricted: false +} +qualified_types { + type_info { + name: "const int" + size: 4 + alignment: 4 + referenced_type: "type-2" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "const int" + self_type: "type-26" + } + is_const: true + is_volatile: false + is_restricted: false +} array_types { type_info { name: "bool [2]" @@ -886,128 +886,73 @@ array_types { } } functions { - return_type: "type-6" - function_name: "test2::HelloAgain::~HelloAgain" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - parameters { - referenced_type: "type-7" - default_arg: false - is_this_ptr: true - } - linker_set_key: "_ZN5test210HelloAgainD2Ev" - access: public_access -} -functions { - return_type: "type-6" - function_name: "test2::HelloAgain::~HelloAgain" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - parameters { - referenced_type: "type-7" - default_arg: false - is_this_ptr: true - } - linker_set_key: "_ZN5test210HelloAgainD1Ev" - access: public_access -} -functions { - return_type: "type-6" - function_name: "test2::HelloAgain::~HelloAgain" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - parameters { - referenced_type: "type-7" - default_arg: false - is_this_ptr: true - } - linker_set_key: "_ZN5test210HelloAgainD0Ev" - access: public_access -} -functions { - return_type: "type-12" - function_name: "test3::End" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - parameters { - referenced_type: "type-3" - default_arg: true - is_this_ptr: false - } - linker_set_key: "_ZN5test33EndEf" - access: public_access -} -functions { return_type: "type-2" - function_name: "uses_forward_decl" + function_name: "ListMangle" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-20" + referenced_type: "type-44" default_arg: false is_this_ptr: false } - linker_set_key: "uses_forward_decl" - access: public_access -} -functions { - return_type: "type-2" - function_name: "CPPHello::again" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-28" + referenced_type: "type-46" default_arg: false - is_this_ptr: true + is_this_ptr: false } - linker_set_key: "_ZN8CPPHello5againEv" + linker_set_key: "_Z10ListMangleP4ListIiEP9StackNodeIiE" access: public_access } functions { return_type: "type-6" - function_name: "CPPHello::CPPHello" + function_name: "fooVariadic" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-28" + referenced_type: "type-30" default_arg: false - is_this_ptr: true + is_this_ptr: false } - linker_set_key: "_ZN8CPPHelloC2Ev" - access: public_access -} -functions { - return_type: "type-6" - function_name: "CPPHello::CPPHello" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-28" + referenced_type: "type-31" default_arg: false - is_this_ptr: true + is_this_ptr: false } - linker_set_key: "_ZN8CPPHelloC1Ev" + linker_set_key: "_Z11fooVariadicRiPiz" access: public_access } functions { - return_type: "type-2" - function_name: "CPPHello::test_enum" + return_type: "type-34" + function_name: "castInterface" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-28" + referenced_type: "type-34" default_arg: false - is_this_ptr: true + is_this_ptr: false } - linker_set_key: "_ZN8CPPHello9test_enumEv" - access: public_access -} -functions { - return_type: "type-6" - function_name: "fooVariadic" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-30" + referenced_type: "type-48" default_arg: false is_this_ptr: false } parameters { - referenced_type: "type-31" + referenced_type: "type-12" default_arg: false is_this_ptr: false } - linker_set_key: "_Z11fooVariadicRiPiz" + template_info { + elements { + referenced_type: "type-3" + } + elements { + referenced_type: "type-3" + } + elements { + referenced_type: "type-3" + } + elements { + referenced_type: "type-3" + } + } + linker_set_key: "_Z13castInterfaceIffffE4ListIT_ES0_IT0_EPKcb" access: public_access } functions { @@ -1034,19 +979,33 @@ functions { } functions { return_type: "type-6" - function_name: "List<float>::_Node::_Node" + function_name: "format" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + linker_set_key: "_Z6formatv" + access: public_access +} +functions { + return_type: "type-6" + function_name: "List<float>::_Node::PrivateNode" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { referenced_type: "type-36" default_arg: false is_this_ptr: true } + linker_set_key: "_ZN4ListIfE5_Node11PrivateNodeEv" + access: private_access +} +functions { + return_type: "type-38" + function_name: "List<float>::_Node::getRef" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-37" + referenced_type: "type-36" default_arg: false - is_this_ptr: false + is_this_ptr: true } - linker_set_key: "_ZN4ListIfE5_NodeC2ERKf" + linker_set_key: "_ZN4ListIfE5_Node6getRefEv" access: public_access } functions { @@ -1068,14 +1027,19 @@ functions { } functions { return_type: "type-6" - function_name: "List<float>::_Node::~_Node" + function_name: "List<float>::_Node::_Node" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { referenced_type: "type-36" default_arg: false is_this_ptr: true } - linker_set_key: "_ZN4ListIfE5_NodeD2Ev" + parameters { + referenced_type: "type-37" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN4ListIfE5_NodeC2ERKf" access: public_access } functions { @@ -1091,106 +1055,135 @@ functions { access: public_access } functions { - return_type: "type-38" - function_name: "List<float>::_Node::getRef" + return_type: "type-6" + function_name: "List<float>::_Node::~_Node" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { referenced_type: "type-36" default_arg: false is_this_ptr: true } - linker_set_key: "_ZN4ListIfE5_Node6getRefEv" + linker_set_key: "_ZN4ListIfE5_NodeD2Ev" access: public_access } functions { - return_type: "type-37" - function_name: "List<float>::_Node::getRef" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + return_type: "type-6" + function_name: "test2::HelloAgain::~HelloAgain" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" parameters { - referenced_type: "type-40" + referenced_type: "type-7" default_arg: false is_this_ptr: true } - linker_set_key: "_ZNK4ListIfE5_Node6getRefEv" + linker_set_key: "_ZN5test210HelloAgainD0Ev" access: public_access } functions { return_type: "type-6" - function_name: "List<float>::_Node::PrivateNode" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + function_name: "test2::HelloAgain::~HelloAgain" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" parameters { - referenced_type: "type-36" + referenced_type: "type-7" default_arg: false is_this_ptr: true } - linker_set_key: "_ZN4ListIfE5_Node11PrivateNodeEv" - access: private_access + linker_set_key: "_ZN5test210HelloAgainD1Ev" + access: public_access } functions { - return_type: "type-2" - function_name: "ListMangle" - source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + return_type: "type-6" + function_name: "test2::HelloAgain::~HelloAgain" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" parameters { - referenced_type: "type-44" + referenced_type: "type-7" default_arg: false - is_this_ptr: false + is_this_ptr: true } + linker_set_key: "_ZN5test210HelloAgainD2Ev" + access: public_access +} +functions { + return_type: "type-12" + function_name: "test3::End" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" parameters { - referenced_type: "type-46" - default_arg: false + referenced_type: "type-3" + default_arg: true is_this_ptr: false } - linker_set_key: "_Z10ListMangleP4ListIiEP9StackNodeIiE" + linker_set_key: "_ZN5test33EndEf" access: public_access } functions { - return_type: "type-34" - function_name: "castInterface" + return_type: "type-2" + function_name: "CPPHello::again" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-34" + referenced_type: "type-28" default_arg: false - is_this_ptr: false + is_this_ptr: true } + linker_set_key: "_ZN8CPPHello5againEv" + access: public_access +} +functions { + return_type: "type-2" + function_name: "CPPHello::test_enum" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-48" + referenced_type: "type-28" default_arg: false - is_this_ptr: false + is_this_ptr: true } + linker_set_key: "_ZN8CPPHello9test_enumEv" + access: public_access +} +functions { + return_type: "type-6" + function_name: "CPPHello::CPPHello" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" parameters { - referenced_type: "type-12" + referenced_type: "type-28" default_arg: false - is_this_ptr: false - } - template_info { - elements { - referenced_type: "type-3" - } - elements { - referenced_type: "type-3" - } - elements { - referenced_type: "type-3" - } - elements { - referenced_type: "type-3" - } + is_this_ptr: true } - linker_set_key: "_Z13castInterfaceIffffE4ListIT_ES0_IT0_EPKcb" + linker_set_key: "_ZN8CPPHelloC1Ev" access: public_access } functions { return_type: "type-6" - function_name: "format" + function_name: "CPPHello::CPPHello" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" - linker_set_key: "_Z6formatv" + parameters { + referenced_type: "type-28" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZN8CPPHelloC2Ev" access: public_access } -global_vars { - name: "test2::HelloAgain::hello_forever" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "_ZN5test210HelloAgain13hello_foreverE" - referenced_type: "type-2" +functions { + return_type: "type-37" + function_name: "List<float>::_Node::getRef" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + parameters { + referenced_type: "type-40" + default_arg: false + is_this_ptr: true + } + linker_set_key: "_ZNK4ListIfE5_Node6getRefEv" + access: public_access +} +functions { + return_type: "type-2" + function_name: "uses_forward_decl" + source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" + parameters { + referenced_type: "type-20" + default_arg: false + is_this_ptr: false + } + linker_set_key: "uses_forward_decl" access: public_access } global_vars { @@ -1201,9 +1194,9 @@ global_vars { access: public_access } global_vars { - name: "test3::ByeAgain<float>::foo_forever" + name: "test2::HelloAgain::hello_forever" source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "_ZN5test38ByeAgainIfE11foo_foreverE" + linker_set_key: "_ZN5test210HelloAgain13hello_foreverE" referenced_type: "type-2" access: public_access } @@ -1215,6 +1208,13 @@ global_vars { access: public_access } global_vars { + name: "test3::ByeAgain<float>::foo_forever" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "_ZN5test38ByeAgainIfE11foo_foreverE" + referenced_type: "type-2" + access: public_access +} +global_vars { name: "float_list_test" source_file: "/development/vndk/tools/header-checker/tests/input/example1.h" linker_set_key: "float_list_test" diff --git a/vndk/tools/header-checker/tests/expected/example2.h b/vndk/tools/header-checker/tests/expected/example2.h index 316441c18..686c05160 100644 --- a/vndk/tools/header-checker/tests/expected/example2.h +++ b/vndk/tools/header-checker/tests/expected/example2.h @@ -279,19 +279,32 @@ pointer_types { } builtin_types { type_info { - name: "int" - size: 4 - alignment: 4 - referenced_type: "type-2" + name: "bool" + size: 1 + alignment: 1 + referenced_type: "type-12" source_file: "" - linker_set_key: "int" - self_type: "type-2" + linker_set_key: "bool" + self_type: "type-12" } - is_unsigned: false + is_unsigned: true is_integral: true } builtin_types { type_info { + name: "double" + size: 8 + alignment: 8 + referenced_type: "type-14" + source_file: "" + linker_set_key: "double" + self_type: "type-14" + } + is_unsigned: false + is_integral: false +} +builtin_types { + type_info { name: "float" size: 4 alignment: 4 @@ -305,16 +318,16 @@ builtin_types { } builtin_types { type_info { - name: "void" - size: 0 - alignment: 0 - referenced_type: "type-7" + name: "int" + size: 4 + alignment: 4 + referenced_type: "type-2" source_file: "" - linker_set_key: "void" - self_type: "type-7" + linker_set_key: "int" + self_type: "type-2" } is_unsigned: false - is_integral: false + is_integral: true } builtin_types { type_info { @@ -331,26 +344,13 @@ builtin_types { } builtin_types { type_info { - name: "bool" - size: 1 - alignment: 1 - referenced_type: "type-12" - source_file: "" - linker_set_key: "bool" - self_type: "type-12" - } - is_unsigned: true - is_integral: true -} -builtin_types { - type_info { - name: "double" - size: 8 - alignment: 8 - referenced_type: "type-14" + name: "void" + size: 0 + alignment: 0 + referenced_type: "type-7" source_file: "" - linker_set_key: "double" - self_type: "type-14" + linker_set_key: "void" + self_type: "type-7" } is_unsigned: false is_integral: false @@ -401,7 +401,7 @@ functions { default_arg: false is_this_ptr: true } - linker_set_key: "_ZN5test210HelloAgainD2Ev" + linker_set_key: "_ZN5test210HelloAgainD0Ev" access: public_access } functions { @@ -425,41 +425,19 @@ functions { default_arg: false is_this_ptr: true } - linker_set_key: "_ZN5test210HelloAgainD0Ev" - access: public_access -} -functions { - return_type: "type-14" - function_name: "test3::ByeAgain<double>::method_foo" - source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - parameters { - referenced_type: "type-15" - default_arg: false - is_this_ptr: true - } - parameters { - referenced_type: "type-14" - default_arg: false - is_this_ptr: false - } - linker_set_key: "_ZN5test38ByeAgainIdE10method_fooEd" + linker_set_key: "_ZN5test210HelloAgainD2Ev" access: public_access } functions { - return_type: "type-3" - function_name: "test3::ByeAgain<float>::method_foo" + return_type: "type-12" + function_name: "test3::End" source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" parameters { - referenced_type: "type-17" - default_arg: false - is_this_ptr: true - } - parameters { - referenced_type: "type-2" - default_arg: false + referenced_type: "type-3" + default_arg: true is_this_ptr: false } - linker_set_key: "_ZN5test38ByeAgainIfE10method_fooEi" + linker_set_key: "_ZN5test33EndEf" access: public_access } functions { @@ -493,34 +471,49 @@ functions { access: public_access } functions { - return_type: "type-12" - function_name: "test3::End" + return_type: "type-21" + function_name: "test3::Dummy" source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" parameters { - referenced_type: "type-3" - default_arg: true + referenced_type: "type-2" + default_arg: false is_this_ptr: false } - linker_set_key: "_ZN5test33EndEf" + linker_set_key: "_ZN5test35DummyEi" access: public_access } functions { - return_type: "type-21" - function_name: "test3::Dummy" + return_type: "type-14" + function_name: "test3::ByeAgain<double>::method_foo" source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" parameters { - referenced_type: "type-2" + referenced_type: "type-15" + default_arg: false + is_this_ptr: true + } + parameters { + referenced_type: "type-14" default_arg: false is_this_ptr: false } - linker_set_key: "_ZN5test35DummyEi" + linker_set_key: "_ZN5test38ByeAgainIdE10method_fooEd" access: public_access } -global_vars { - name: "test2::HelloAgain::hello_forever" +functions { + return_type: "type-3" + function_name: "test3::ByeAgain<float>::method_foo" source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "_ZN5test210HelloAgain13hello_foreverE" - referenced_type: "type-2" + parameters { + referenced_type: "type-17" + default_arg: false + is_this_ptr: true + } + parameters { + referenced_type: "type-2" + default_arg: false + is_this_ptr: false + } + linker_set_key: "_ZN5test38ByeAgainIfE10method_fooEi" access: public_access } global_vars { @@ -531,9 +524,9 @@ global_vars { access: public_access } global_vars { - name: "test3::ByeAgain<float>::foo_forever" + name: "test2::HelloAgain::hello_forever" source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" - linker_set_key: "_ZN5test38ByeAgainIfE11foo_foreverE" + linker_set_key: "_ZN5test210HelloAgain13hello_foreverE" referenced_type: "type-2" access: public_access } @@ -544,3 +537,10 @@ global_vars { referenced_type: "type-13" access: public_access } +global_vars { + name: "test3::ByeAgain<float>::foo_forever" + source_file: "/development/vndk/tools/header-checker/tests/input/example2.h" + linker_set_key: "_ZN5test38ByeAgainIfE11foo_foreverE" + referenced_type: "type-2" + access: public_access +} diff --git a/vndk/tools/header-checker/tests/expected/example3.h b/vndk/tools/header-checker/tests/expected/example3.h index 473bac19f..25d3048dd 100644 --- a/vndk/tools/header-checker/tests/expected/example3.h +++ b/vndk/tools/header-checker/tests/expected/example3.h @@ -28,27 +28,27 @@ record_types { } builtin_types { type_info { - name: "int" + name: "float" size: 4 alignment: 4 - referenced_type: "type-2" + referenced_type: "type-3" source_file: "" - linker_set_key: "int" - self_type: "type-2" + linker_set_key: "float" + self_type: "type-3" } is_unsigned: false - is_integral: true + is_integral: false } builtin_types { type_info { - name: "float" + name: "int" size: 4 alignment: 4 - referenced_type: "type-3" + referenced_type: "type-2" source_file: "" - linker_set_key: "float" - self_type: "type-3" + linker_set_key: "int" + self_type: "type-2" } is_unsigned: false - is_integral: false + is_integral: true } diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump index 81603fc92..f102bf251 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump @@ -228,15 +228,6 @@ [ { "alignment" : 4, - "linker_set_key" : "SuperSpeaker *", - "name" : "SuperSpeaker *", - "referenced_type" : "type-1", - "self_type" : "type-9", - "size" : 4, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" - }, - { - "alignment" : 4, "linker_set_key" : "HighVolumeSpeaker *", "name" : "HighVolumeSpeaker *", "referenced_type" : "type-11", @@ -246,19 +237,28 @@ }, { "alignment" : 4, - "linker_set_key" : "float *", - "name" : "float *", - "referenced_type" : "type-3", - "self_type" : "type-7", + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", "size" : 4, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" }, { "alignment" : 4, - "linker_set_key" : "LowVolumeSpeaker *", - "name" : "LowVolumeSpeaker *", - "referenced_type" : "type-5", - "self_type" : "type-4", + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + { + "alignment" : 4, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", "size" : 4, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" } @@ -268,52 +268,6 @@ [ { "alignment" : 4, - "fields" : - [ - { - "access" : "private", - "field_name" : "mSpeakderId", - "field_offset" : 32, - "referenced_type" : "type-2" - } - ], - "linker_set_key" : "SuperSpeaker", - "name" : "SuperSpeaker", - "record_kind" : "class", - "referenced_type" : "type-1", - "self_type" : "type-1", - "size" : 8, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", - "unique_id" : "_ZTS12SuperSpeaker", - "vtable_components" : - [ - { - "kind" : "offset_to_top" - }, - { - "kind" : "rtti", - "mangled_component_name" : "_ZTI12SuperSpeaker" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" - }, - { - "kind" : "complete_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" - }, - { - "kind" : "deleting_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" - } - ] - }, - { - "alignment" : 4, "base_specifiers" : [ { @@ -406,6 +360,52 @@ "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" } ] + }, + { + "alignment" : 4, + "fields" : + [ + { + "access" : "private", + "field_name" : "mSpeakderId", + "field_offset" : 32, + "referenced_type" : "type-2" + } + ], + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "record_kind" : "class", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "unique_id" : "_ZTS12SuperSpeaker", + "vtable_components" : + [ + { + "kind" : "offset_to_top" + }, + { + "kind" : "rtti", + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + { + "kind" : "complete_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + { + "kind" : "deleting_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] } ], "rvalue_reference_types" : [] diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libpure_virtual_function.so.lsdump index 29a106d81..9040218ae 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm/libpure_virtual_function.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libpure_virtual_function.so.lsdump @@ -1,12 +1,17 @@ record_types { type_info { - name: "PureVirtualBase" + name: "DerivedBar" size: 4 alignment: 4 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase" - self_type: "type-1" + linker_set_key: "DerivedBar" + self_type: "type-4" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access } vtable_layout { vtable_components { @@ -17,55 +22,50 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI15PureVirtualBase" + mangled_component_name: "_ZTI10DerivedBar" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD1Ev" + mangled_component_name: "_ZN10DerivedBarD1Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD0Ev" + mangled_component_name: "_ZN10DerivedBarD0Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" + mangled_component_name: "_ZN10DerivedBar8foo_pureEv" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" + mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" component_value: 0 - is_pure: false + is_pure: true } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS15PureVirtualBase" + unique_id: "_ZTS10DerivedBar" } } record_types { type_info { - name: "DerivedBar" + name: "PureVirtualBase" size: 4 alignment: 4 - referenced_type: "type-4" - source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar" - self_type: "type-4" - } - base_specifiers { referenced_type: "type-1" - is_virtual: false - access: public_access + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" + linker_set_key: "PureVirtualBase" + self_type: "type-1" } vtable_layout { vtable_components { @@ -76,61 +76,61 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI10DerivedBar" + mangled_component_name: "_ZTI15PureVirtualBase" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN10DerivedBarD1Ev" + mangled_component_name: "_ZN15PureVirtualBaseD1Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN10DerivedBarD0Ev" + mangled_component_name: "_ZN15PureVirtualBaseD0Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar8foo_pureEv" + mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" + mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" component_value: 0 - is_pure: true + is_pure: false } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS10DerivedBar" + unique_id: "_ZTS15PureVirtualBase" } } pointer_types { type_info { - name: "PureVirtualBase *" + name: "DerivedBar *" size: 4 alignment: 4 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase *" - self_type: "type-3" + linker_set_key: "DerivedBar *" + self_type: "type-5" } } pointer_types { type_info { - name: "DerivedBar *" + name: "PureVirtualBase *" size: 4 alignment: 4 - referenced_type: "type-4" + referenced_type: "type-1" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar *" - self_type: "type-5" + linker_set_key: "PureVirtualBase *" + self_type: "type-3" } } builtin_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump index 3732e9382..83e05383d 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump @@ -228,15 +228,6 @@ [ { "alignment" : 8, - "linker_set_key" : "SuperSpeaker *", - "name" : "SuperSpeaker *", - "referenced_type" : "type-1", - "self_type" : "type-9", - "size" : 8, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" - }, - { - "alignment" : 8, "linker_set_key" : "HighVolumeSpeaker *", "name" : "HighVolumeSpeaker *", "referenced_type" : "type-11", @@ -246,19 +237,28 @@ }, { "alignment" : 8, - "linker_set_key" : "float *", - "name" : "float *", - "referenced_type" : "type-3", - "self_type" : "type-7", + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", "size" : 8, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" }, { "alignment" : 8, - "linker_set_key" : "LowVolumeSpeaker *", - "name" : "LowVolumeSpeaker *", - "referenced_type" : "type-5", - "self_type" : "type-4", + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + { + "alignment" : 8, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", "size" : 8, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" } @@ -268,52 +268,6 @@ [ { "alignment" : 8, - "fields" : - [ - { - "access" : "private", - "field_name" : "mSpeakderId", - "field_offset" : 64, - "referenced_type" : "type-2" - } - ], - "linker_set_key" : "SuperSpeaker", - "name" : "SuperSpeaker", - "record_kind" : "class", - "referenced_type" : "type-1", - "self_type" : "type-1", - "size" : 16, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", - "unique_id" : "_ZTS12SuperSpeaker", - "vtable_components" : - [ - { - "kind" : "offset_to_top" - }, - { - "kind" : "rtti", - "mangled_component_name" : "_ZTI12SuperSpeaker" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" - }, - { - "kind" : "complete_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" - }, - { - "kind" : "deleting_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" - } - ] - }, - { - "alignment" : 8, "base_specifiers" : [ { @@ -406,6 +360,52 @@ "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" } ] + }, + { + "alignment" : 8, + "fields" : + [ + { + "access" : "private", + "field_name" : "mSpeakderId", + "field_offset" : 64, + "referenced_type" : "type-2" + } + ], + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "record_kind" : "class", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "unique_id" : "_ZTS12SuperSpeaker", + "vtable_components" : + [ + { + "kind" : "offset_to_top" + }, + { + "kind" : "rtti", + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + { + "kind" : "complete_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + { + "kind" : "deleting_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] } ], "rvalue_reference_types" : [] diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libpure_virtual_function.so.lsdump index 573df854e..bedbba33f 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libpure_virtual_function.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libpure_virtual_function.so.lsdump @@ -1,12 +1,17 @@ record_types { type_info { - name: "PureVirtualBase" + name: "DerivedBar" size: 8 alignment: 8 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase" - self_type: "type-1" + linker_set_key: "DerivedBar" + self_type: "type-4" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access } vtable_layout { vtable_components { @@ -17,55 +22,50 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI15PureVirtualBase" + mangled_component_name: "_ZTI10DerivedBar" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD1Ev" + mangled_component_name: "_ZN10DerivedBarD1Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD0Ev" + mangled_component_name: "_ZN10DerivedBarD0Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" + mangled_component_name: "_ZN10DerivedBar8foo_pureEv" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" + mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" component_value: 0 - is_pure: false + is_pure: true } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS15PureVirtualBase" + unique_id: "_ZTS10DerivedBar" } } record_types { type_info { - name: "DerivedBar" + name: "PureVirtualBase" size: 8 alignment: 8 - referenced_type: "type-4" - source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar" - self_type: "type-4" - } - base_specifiers { referenced_type: "type-1" - is_virtual: false - access: public_access + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" + linker_set_key: "PureVirtualBase" + self_type: "type-1" } vtable_layout { vtable_components { @@ -76,61 +76,61 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI10DerivedBar" + mangled_component_name: "_ZTI15PureVirtualBase" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN10DerivedBarD1Ev" + mangled_component_name: "_ZN15PureVirtualBaseD1Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN10DerivedBarD0Ev" + mangled_component_name: "_ZN15PureVirtualBaseD0Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar8foo_pureEv" + mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" + mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" component_value: 0 - is_pure: true + is_pure: false } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS10DerivedBar" + unique_id: "_ZTS15PureVirtualBase" } } pointer_types { type_info { - name: "PureVirtualBase *" + name: "DerivedBar *" size: 8 alignment: 8 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase *" - self_type: "type-3" + linker_set_key: "DerivedBar *" + self_type: "type-5" } } pointer_types { type_info { - name: "DerivedBar *" + name: "PureVirtualBase *" size: 8 alignment: 8 - referenced_type: "type-4" + referenced_type: "type-1" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar *" - self_type: "type-5" + linker_set_key: "PureVirtualBase *" + self_type: "type-3" } } builtin_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump index 81603fc92..f102bf251 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump @@ -228,15 +228,6 @@ [ { "alignment" : 4, - "linker_set_key" : "SuperSpeaker *", - "name" : "SuperSpeaker *", - "referenced_type" : "type-1", - "self_type" : "type-9", - "size" : 4, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" - }, - { - "alignment" : 4, "linker_set_key" : "HighVolumeSpeaker *", "name" : "HighVolumeSpeaker *", "referenced_type" : "type-11", @@ -246,19 +237,28 @@ }, { "alignment" : 4, - "linker_set_key" : "float *", - "name" : "float *", - "referenced_type" : "type-3", - "self_type" : "type-7", + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", "size" : 4, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" }, { "alignment" : 4, - "linker_set_key" : "LowVolumeSpeaker *", - "name" : "LowVolumeSpeaker *", - "referenced_type" : "type-5", - "self_type" : "type-4", + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + { + "alignment" : 4, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", "size" : 4, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" } @@ -268,52 +268,6 @@ [ { "alignment" : 4, - "fields" : - [ - { - "access" : "private", - "field_name" : "mSpeakderId", - "field_offset" : 32, - "referenced_type" : "type-2" - } - ], - "linker_set_key" : "SuperSpeaker", - "name" : "SuperSpeaker", - "record_kind" : "class", - "referenced_type" : "type-1", - "self_type" : "type-1", - "size" : 8, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", - "unique_id" : "_ZTS12SuperSpeaker", - "vtable_components" : - [ - { - "kind" : "offset_to_top" - }, - { - "kind" : "rtti", - "mangled_component_name" : "_ZTI12SuperSpeaker" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" - }, - { - "kind" : "complete_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" - }, - { - "kind" : "deleting_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" - } - ] - }, - { - "alignment" : 4, "base_specifiers" : [ { @@ -406,6 +360,52 @@ "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" } ] + }, + { + "alignment" : 4, + "fields" : + [ + { + "access" : "private", + "field_name" : "mSpeakderId", + "field_offset" : 32, + "referenced_type" : "type-2" + } + ], + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "record_kind" : "class", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "unique_id" : "_ZTS12SuperSpeaker", + "vtable_components" : + [ + { + "kind" : "offset_to_top" + }, + { + "kind" : "rtti", + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + { + "kind" : "complete_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + { + "kind" : "deleting_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] } ], "rvalue_reference_types" : [] diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libpure_virtual_function.so.lsdump index 29a106d81..9040218ae 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips/libpure_virtual_function.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libpure_virtual_function.so.lsdump @@ -1,12 +1,17 @@ record_types { type_info { - name: "PureVirtualBase" + name: "DerivedBar" size: 4 alignment: 4 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase" - self_type: "type-1" + linker_set_key: "DerivedBar" + self_type: "type-4" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access } vtable_layout { vtable_components { @@ -17,55 +22,50 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI15PureVirtualBase" + mangled_component_name: "_ZTI10DerivedBar" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD1Ev" + mangled_component_name: "_ZN10DerivedBarD1Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD0Ev" + mangled_component_name: "_ZN10DerivedBarD0Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" + mangled_component_name: "_ZN10DerivedBar8foo_pureEv" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" + mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" component_value: 0 - is_pure: false + is_pure: true } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS15PureVirtualBase" + unique_id: "_ZTS10DerivedBar" } } record_types { type_info { - name: "DerivedBar" + name: "PureVirtualBase" size: 4 alignment: 4 - referenced_type: "type-4" - source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar" - self_type: "type-4" - } - base_specifiers { referenced_type: "type-1" - is_virtual: false - access: public_access + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" + linker_set_key: "PureVirtualBase" + self_type: "type-1" } vtable_layout { vtable_components { @@ -76,61 +76,61 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI10DerivedBar" + mangled_component_name: "_ZTI15PureVirtualBase" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN10DerivedBarD1Ev" + mangled_component_name: "_ZN15PureVirtualBaseD1Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN10DerivedBarD0Ev" + mangled_component_name: "_ZN15PureVirtualBaseD0Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar8foo_pureEv" + mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" + mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" component_value: 0 - is_pure: true + is_pure: false } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS10DerivedBar" + unique_id: "_ZTS15PureVirtualBase" } } pointer_types { type_info { - name: "PureVirtualBase *" + name: "DerivedBar *" size: 4 alignment: 4 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase *" - self_type: "type-3" + linker_set_key: "DerivedBar *" + self_type: "type-5" } } pointer_types { type_info { - name: "DerivedBar *" + name: "PureVirtualBase *" size: 4 alignment: 4 - referenced_type: "type-4" + referenced_type: "type-1" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar *" - self_type: "type-5" + linker_set_key: "PureVirtualBase *" + self_type: "type-3" } } builtin_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump index 3732e9382..83e05383d 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump @@ -228,15 +228,6 @@ [ { "alignment" : 8, - "linker_set_key" : "SuperSpeaker *", - "name" : "SuperSpeaker *", - "referenced_type" : "type-1", - "self_type" : "type-9", - "size" : 8, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" - }, - { - "alignment" : 8, "linker_set_key" : "HighVolumeSpeaker *", "name" : "HighVolumeSpeaker *", "referenced_type" : "type-11", @@ -246,19 +237,28 @@ }, { "alignment" : 8, - "linker_set_key" : "float *", - "name" : "float *", - "referenced_type" : "type-3", - "self_type" : "type-7", + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", "size" : 8, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" }, { "alignment" : 8, - "linker_set_key" : "LowVolumeSpeaker *", - "name" : "LowVolumeSpeaker *", - "referenced_type" : "type-5", - "self_type" : "type-4", + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + { + "alignment" : 8, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", "size" : 8, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" } @@ -268,52 +268,6 @@ [ { "alignment" : 8, - "fields" : - [ - { - "access" : "private", - "field_name" : "mSpeakderId", - "field_offset" : 64, - "referenced_type" : "type-2" - } - ], - "linker_set_key" : "SuperSpeaker", - "name" : "SuperSpeaker", - "record_kind" : "class", - "referenced_type" : "type-1", - "self_type" : "type-1", - "size" : 16, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", - "unique_id" : "_ZTS12SuperSpeaker", - "vtable_components" : - [ - { - "kind" : "offset_to_top" - }, - { - "kind" : "rtti", - "mangled_component_name" : "_ZTI12SuperSpeaker" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" - }, - { - "kind" : "complete_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" - }, - { - "kind" : "deleting_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" - } - ] - }, - { - "alignment" : 8, "base_specifiers" : [ { @@ -406,6 +360,52 @@ "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" } ] + }, + { + "alignment" : 8, + "fields" : + [ + { + "access" : "private", + "field_name" : "mSpeakderId", + "field_offset" : 64, + "referenced_type" : "type-2" + } + ], + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "record_kind" : "class", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "unique_id" : "_ZTS12SuperSpeaker", + "vtable_components" : + [ + { + "kind" : "offset_to_top" + }, + { + "kind" : "rtti", + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + { + "kind" : "complete_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + { + "kind" : "deleting_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] } ], "rvalue_reference_types" : [] diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libpure_virtual_function.so.lsdump index 573df854e..bedbba33f 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libpure_virtual_function.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libpure_virtual_function.so.lsdump @@ -1,12 +1,17 @@ record_types { type_info { - name: "PureVirtualBase" + name: "DerivedBar" size: 8 alignment: 8 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase" - self_type: "type-1" + linker_set_key: "DerivedBar" + self_type: "type-4" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access } vtable_layout { vtable_components { @@ -17,55 +22,50 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI15PureVirtualBase" + mangled_component_name: "_ZTI10DerivedBar" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD1Ev" + mangled_component_name: "_ZN10DerivedBarD1Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD0Ev" + mangled_component_name: "_ZN10DerivedBarD0Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" + mangled_component_name: "_ZN10DerivedBar8foo_pureEv" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" + mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" component_value: 0 - is_pure: false + is_pure: true } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS15PureVirtualBase" + unique_id: "_ZTS10DerivedBar" } } record_types { type_info { - name: "DerivedBar" + name: "PureVirtualBase" size: 8 alignment: 8 - referenced_type: "type-4" - source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar" - self_type: "type-4" - } - base_specifiers { referenced_type: "type-1" - is_virtual: false - access: public_access + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" + linker_set_key: "PureVirtualBase" + self_type: "type-1" } vtable_layout { vtable_components { @@ -76,61 +76,61 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI10DerivedBar" + mangled_component_name: "_ZTI15PureVirtualBase" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN10DerivedBarD1Ev" + mangled_component_name: "_ZN15PureVirtualBaseD1Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN10DerivedBarD0Ev" + mangled_component_name: "_ZN15PureVirtualBaseD0Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar8foo_pureEv" + mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" + mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" component_value: 0 - is_pure: true + is_pure: false } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS10DerivedBar" + unique_id: "_ZTS15PureVirtualBase" } } pointer_types { type_info { - name: "PureVirtualBase *" + name: "DerivedBar *" size: 8 alignment: 8 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase *" - self_type: "type-3" + linker_set_key: "DerivedBar *" + self_type: "type-5" } } pointer_types { type_info { - name: "DerivedBar *" + name: "PureVirtualBase *" size: 8 alignment: 8 - referenced_type: "type-4" + referenced_type: "type-1" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar *" - self_type: "type-5" + linker_set_key: "PureVirtualBase *" + self_type: "type-3" } } builtin_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump index 81603fc92..f102bf251 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump @@ -228,15 +228,6 @@ [ { "alignment" : 4, - "linker_set_key" : "SuperSpeaker *", - "name" : "SuperSpeaker *", - "referenced_type" : "type-1", - "self_type" : "type-9", - "size" : 4, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" - }, - { - "alignment" : 4, "linker_set_key" : "HighVolumeSpeaker *", "name" : "HighVolumeSpeaker *", "referenced_type" : "type-11", @@ -246,19 +237,28 @@ }, { "alignment" : 4, - "linker_set_key" : "float *", - "name" : "float *", - "referenced_type" : "type-3", - "self_type" : "type-7", + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", "size" : 4, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" }, { "alignment" : 4, - "linker_set_key" : "LowVolumeSpeaker *", - "name" : "LowVolumeSpeaker *", - "referenced_type" : "type-5", - "self_type" : "type-4", + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 4, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + { + "alignment" : 4, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", "size" : 4, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" } @@ -268,52 +268,6 @@ [ { "alignment" : 4, - "fields" : - [ - { - "access" : "private", - "field_name" : "mSpeakderId", - "field_offset" : 32, - "referenced_type" : "type-2" - } - ], - "linker_set_key" : "SuperSpeaker", - "name" : "SuperSpeaker", - "record_kind" : "class", - "referenced_type" : "type-1", - "self_type" : "type-1", - "size" : 8, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", - "unique_id" : "_ZTS12SuperSpeaker", - "vtable_components" : - [ - { - "kind" : "offset_to_top" - }, - { - "kind" : "rtti", - "mangled_component_name" : "_ZTI12SuperSpeaker" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" - }, - { - "kind" : "complete_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" - }, - { - "kind" : "deleting_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" - } - ] - }, - { - "alignment" : 4, "base_specifiers" : [ { @@ -406,6 +360,52 @@ "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" } ] + }, + { + "alignment" : 4, + "fields" : + [ + { + "access" : "private", + "field_name" : "mSpeakderId", + "field_offset" : 32, + "referenced_type" : "type-2" + } + ], + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "record_kind" : "class", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "unique_id" : "_ZTS12SuperSpeaker", + "vtable_components" : + [ + { + "kind" : "offset_to_top" + }, + { + "kind" : "rtti", + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + { + "kind" : "complete_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + { + "kind" : "deleting_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] } ], "rvalue_reference_types" : [] diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libpure_virtual_function.so.lsdump index 29a106d81..9040218ae 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86/libpure_virtual_function.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libpure_virtual_function.so.lsdump @@ -1,12 +1,17 @@ record_types { type_info { - name: "PureVirtualBase" + name: "DerivedBar" size: 4 alignment: 4 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase" - self_type: "type-1" + linker_set_key: "DerivedBar" + self_type: "type-4" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access } vtable_layout { vtable_components { @@ -17,55 +22,50 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI15PureVirtualBase" + mangled_component_name: "_ZTI10DerivedBar" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD1Ev" + mangled_component_name: "_ZN10DerivedBarD1Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD0Ev" + mangled_component_name: "_ZN10DerivedBarD0Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" + mangled_component_name: "_ZN10DerivedBar8foo_pureEv" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" + mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" component_value: 0 - is_pure: false + is_pure: true } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS15PureVirtualBase" + unique_id: "_ZTS10DerivedBar" } } record_types { type_info { - name: "DerivedBar" + name: "PureVirtualBase" size: 4 alignment: 4 - referenced_type: "type-4" - source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar" - self_type: "type-4" - } - base_specifiers { referenced_type: "type-1" - is_virtual: false - access: public_access + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" + linker_set_key: "PureVirtualBase" + self_type: "type-1" } vtable_layout { vtable_components { @@ -76,61 +76,61 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI10DerivedBar" + mangled_component_name: "_ZTI15PureVirtualBase" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN10DerivedBarD1Ev" + mangled_component_name: "_ZN15PureVirtualBaseD1Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN10DerivedBarD0Ev" + mangled_component_name: "_ZN15PureVirtualBaseD0Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar8foo_pureEv" + mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" + mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" component_value: 0 - is_pure: true + is_pure: false } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS10DerivedBar" + unique_id: "_ZTS15PureVirtualBase" } } pointer_types { type_info { - name: "PureVirtualBase *" + name: "DerivedBar *" size: 4 alignment: 4 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase *" - self_type: "type-3" + linker_set_key: "DerivedBar *" + self_type: "type-5" } } pointer_types { type_info { - name: "DerivedBar *" + name: "PureVirtualBase *" size: 4 alignment: 4 - referenced_type: "type-4" + referenced_type: "type-1" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar *" - self_type: "type-5" + linker_set_key: "PureVirtualBase *" + self_type: "type-3" } } builtin_types { diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump index 3732e9382..83e05383d 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump @@ -228,15 +228,6 @@ [ { "alignment" : 8, - "linker_set_key" : "SuperSpeaker *", - "name" : "SuperSpeaker *", - "referenced_type" : "type-1", - "self_type" : "type-9", - "size" : 8, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" - }, - { - "alignment" : 8, "linker_set_key" : "HighVolumeSpeaker *", "name" : "HighVolumeSpeaker *", "referenced_type" : "type-11", @@ -246,19 +237,28 @@ }, { "alignment" : 8, - "linker_set_key" : "float *", - "name" : "float *", - "referenced_type" : "type-3", - "self_type" : "type-7", + "linker_set_key" : "LowVolumeSpeaker *", + "name" : "LowVolumeSpeaker *", + "referenced_type" : "type-5", + "self_type" : "type-4", "size" : 8, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" }, { "alignment" : 8, - "linker_set_key" : "LowVolumeSpeaker *", - "name" : "LowVolumeSpeaker *", - "referenced_type" : "type-5", - "self_type" : "type-4", + "linker_set_key" : "SuperSpeaker *", + "name" : "SuperSpeaker *", + "referenced_type" : "type-1", + "self_type" : "type-9", + "size" : 8, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h" + }, + { + "alignment" : 8, + "linker_set_key" : "float *", + "name" : "float *", + "referenced_type" : "type-3", + "self_type" : "type-7", "size" : 8, "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h" } @@ -268,52 +268,6 @@ [ { "alignment" : 8, - "fields" : - [ - { - "access" : "private", - "field_name" : "mSpeakderId", - "field_offset" : 64, - "referenced_type" : "type-2" - } - ], - "linker_set_key" : "SuperSpeaker", - "name" : "SuperSpeaker", - "record_kind" : "class", - "referenced_type" : "type-1", - "self_type" : "type-1", - "size" : 16, - "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", - "unique_id" : "_ZTS12SuperSpeaker", - "vtable_components" : - [ - { - "kind" : "offset_to_top" - }, - { - "kind" : "rtti", - "mangled_component_name" : "_ZTI12SuperSpeaker" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" - }, - { - "is_pure" : true, - "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" - }, - { - "kind" : "complete_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" - }, - { - "kind" : "deleting_dtor_pointer", - "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" - } - ] - }, - { - "alignment" : 8, "base_specifiers" : [ { @@ -406,6 +360,52 @@ "mangled_component_name" : "_ZN16LowVolumeSpeakerD0Ev" } ] + }, + { + "alignment" : 8, + "fields" : + [ + { + "access" : "private", + "field_name" : "mSpeakderId", + "field_offset" : 64, + "referenced_type" : "type-2" + } + ], + "linker_set_key" : "SuperSpeaker", + "name" : "SuperSpeaker", + "record_kind" : "class", + "referenced_type" : "type-1", + "self_type" : "type-1", + "size" : 16, + "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h", + "unique_id" : "_ZTS12SuperSpeaker", + "vtable_components" : + [ + { + "kind" : "offset_to_top" + }, + { + "kind" : "rtti", + "mangled_component_name" : "_ZTI12SuperSpeaker" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker5SpeakEv" + }, + { + "is_pure" : true, + "mangled_component_name" : "_ZN12SuperSpeaker6ListenEv" + }, + { + "kind" : "complete_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD1Ev" + }, + { + "kind" : "deleting_dtor_pointer", + "mangled_component_name" : "_ZN12SuperSpeakerD0Ev" + } + ] } ], "rvalue_reference_types" : [] diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libpure_virtual_function.so.lsdump index 573df854e..bedbba33f 100644 --- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libpure_virtual_function.so.lsdump +++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libpure_virtual_function.so.lsdump @@ -1,12 +1,17 @@ record_types { type_info { - name: "PureVirtualBase" + name: "DerivedBar" size: 8 alignment: 8 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase" - self_type: "type-1" + linker_set_key: "DerivedBar" + self_type: "type-4" + } + base_specifiers { + referenced_type: "type-1" + is_virtual: false + access: public_access } vtable_layout { vtable_components { @@ -17,55 +22,50 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI15PureVirtualBase" + mangled_component_name: "_ZTI10DerivedBar" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD1Ev" + mangled_component_name: "_ZN10DerivedBarD1Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN15PureVirtualBaseD0Ev" + mangled_component_name: "_ZN10DerivedBarD0Ev" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" + mangled_component_name: "_ZN10DerivedBar8foo_pureEv" component_value: 0 - is_pure: true + is_pure: false } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" + mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" component_value: 0 - is_pure: false + is_pure: true } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS15PureVirtualBase" + unique_id: "_ZTS10DerivedBar" } } record_types { type_info { - name: "DerivedBar" + name: "PureVirtualBase" size: 8 alignment: 8 - referenced_type: "type-4" - source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar" - self_type: "type-4" - } - base_specifiers { referenced_type: "type-1" - is_virtual: false - access: public_access + source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" + linker_set_key: "PureVirtualBase" + self_type: "type-1" } vtable_layout { vtable_components { @@ -76,61 +76,61 @@ record_types { } vtable_components { kind: RTTI - mangled_component_name: "_ZTI10DerivedBar" + mangled_component_name: "_ZTI15PureVirtualBase" component_value: 0 is_pure: false } vtable_components { kind: CompleteDtorPointer - mangled_component_name: "_ZN10DerivedBarD1Ev" + mangled_component_name: "_ZN15PureVirtualBaseD1Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: DeletingDtorPointer - mangled_component_name: "_ZN10DerivedBarD0Ev" + mangled_component_name: "_ZN15PureVirtualBaseD0Ev" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar8foo_pureEv" + mangled_component_name: "_ZN15PureVirtualBase8foo_pureEv" component_value: 0 - is_pure: false + is_pure: true } vtable_components { kind: FunctionPointer - mangled_component_name: "_ZN10DerivedBar11foo_virtualEv" + mangled_component_name: "_ZN15PureVirtualBase11foo_virtualEv" component_value: 0 - is_pure: true + is_pure: false } } access: public_access record_kind: class_kind tag_info { - unique_id: "_ZTS10DerivedBar" + unique_id: "_ZTS15PureVirtualBase" } } pointer_types { type_info { - name: "PureVirtualBase *" + name: "DerivedBar *" size: 8 alignment: 8 - referenced_type: "type-1" + referenced_type: "type-4" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "PureVirtualBase *" - self_type: "type-3" + linker_set_key: "DerivedBar *" + self_type: "type-5" } } pointer_types { type_info { - name: "DerivedBar *" + name: "PureVirtualBase *" size: 8 alignment: 8 - referenced_type: "type-4" + referenced_type: "type-1" source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h" - linker_set_key: "DerivedBar *" - self_type: "type-5" + linker_set_key: "PureVirtualBase *" + self_type: "type-3" } } builtin_types { |
