summaryrefslogtreecommitdiffstats
path: root/vndk
diff options
context:
space:
mode:
authorLogan Chien <loganchien@google.com>2019-03-20 11:15:43 +0800
committerLogan Chien <loganchien@google.com>2019-03-20 17:16:09 +0800
commit598b869846ece59f98732e18ccc5a39a2e84b09a (patch)
treea80360feba6ec6ef5e73ed3479bfe9fba105cc12 /vndk
parent37531359beacd9118942d6dee93ca64dfd7d14ca (diff)
downloadandroid_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')
-rw-r--r--vndk/tools/header-checker/src/dumper/abi_wrappers.cpp39
-rw-r--r--vndk/tools/header-checker/src/dumper/abi_wrappers.h15
-rw-r--r--vndk/tools/header-checker/src/dumper/ast_processing.cpp43
-rw-r--r--vndk/tools/header-checker/src/dumper/ast_processing.h5
-rw-r--r--vndk/tools/header-checker/src/linker/header_abi_linker.cpp82
-rw-r--r--vndk/tools/header-checker/src/repr/ir_dumper.cpp66
-rw-r--r--vndk/tools/header-checker/src/repr/ir_dumper.h7
-rw-r--r--vndk/tools/header-checker/src/repr/ir_representation.cpp61
-rw-r--r--vndk/tools/header-checker/src/repr/ir_representation.h4
-rw-r--r--vndk/tools/header-checker/src/repr/json/ir_dumper.cpp3
-rw-r--r--vndk/tools/header-checker/src/repr/json/ir_dumper.h5
-rw-r--r--vndk/tools/header-checker/src/repr/protobuf/ir_dumper.cpp3
-rw-r--r--vndk/tools/header-checker/src/repr/protobuf/ir_dumper.h6
-rw-r--r--vndk/tools/header-checker/tests/expected/example1.cpp936
-rw-r--r--vndk/tools/header-checker/tests/expected/example1.h1042
-rw-r--r--vndk/tools/header-checker/tests/expected/example2.h154
-rw-r--r--vndk/tools/header-checker/tests/expected/example3.h20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump126
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libpure_virtual_function.so.lsdump82
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump126
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libpure_virtual_function.so.lsdump82
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump126
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libpure_virtual_function.so.lsdump82
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump126
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libpure_virtual_function.so.lsdump82
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump126
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libpure_virtual_function.so.lsdump82
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump126
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libpure_virtual_function.so.lsdump82
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 {