Merge "Show thunk symbols in vtables"

This commit is contained in:
Hsin-Yi Chen
2018-07-02 02:11:04 +00:00
committed by Gerrit Code Review
12 changed files with 3016 additions and 23 deletions

View File

@@ -633,6 +633,8 @@ bool RecordDeclWrapper::SetupCXXBases(
return true;
}
typedef std::map<uint64_t, clang::ThunkInfo> ThunkMap;
bool RecordDeclWrapper::SetupRecordVTable(
abi_util::RecordTypeIR *record_declp,
const clang::CXXRecordDecl *cxx_record_decl) {
@@ -654,18 +656,29 @@ bool RecordDeclWrapper::SetupRecordVTable(
}
const clang::VTableLayout &vtable_layout =
itanium_vtable_contextp->getVTableLayout(cxx_record_decl);
ThunkMap thunk_map(vtable_layout.vtable_thunk_begin(),
vtable_layout.vtable_thunk_end());
abi_util::VTableLayoutIR vtable_ir_layout;
for (const auto &vtable_component : vtable_layout.vtable_components()) {
abi_util::VTableComponentIR added_component=
SetupRecordVTableComponent(vtable_component);
uint64_t index = 0;
for (auto vtable_component : vtable_layout.vtable_components()) {
clang::ThunkInfo thunk_info;
ThunkMap::iterator it = thunk_map.find(index);
if (it != thunk_map.end()) {
thunk_info = it->second;
}
abi_util::VTableComponentIR added_component =
SetupRecordVTableComponent(vtable_component, thunk_info);
vtable_ir_layout.AddVTableComponent(std::move(added_component));
index++;
}
record_declp->SetVTableLayout(std::move(vtable_ir_layout));
return true;
}
abi_util::VTableComponentIR RecordDeclWrapper::SetupRecordVTableComponent(
const clang::VTableComponent &vtable_component) {
const clang::VTableComponent &vtable_component,
const clang::ThunkInfo &thunk_info) {
abi_util::VTableComponentIR::Kind kind =
abi_util::VTableComponentIR::Kind::RTTI;
std::string mangled_component_name = "";
@@ -673,6 +686,7 @@ abi_util::VTableComponentIR RecordDeclWrapper::SetupRecordVTableComponent(
int64_t value = 0;
clang::VTableComponent::Kind clang_component_kind =
vtable_component.getKind();
switch (clang_component_kind) {
case clang::VTableComponent::CK_VCallOffset:
kind = abi_util::VTableComponentIR::Kind::VCallOffset;
@@ -706,22 +720,36 @@ abi_util::VTableComponentIR RecordDeclWrapper::SetupRecordVTableComponent(
switch (clang_component_kind) {
case clang::VTableComponent::CK_FunctionPointer:
kind = abi_util::VTableComponentIR::Kind::FunctionPointer;
mangled_component_name = GetMangledNameDecl(method_decl,
mangle_contextp_);
break;
case clang::VTableComponent::CK_CompleteDtorPointer:
kind = abi_util::VTableComponentIR::Kind::CompleteDtorPointer;
mangle_contextp_->mangleCXXDtor(
vtable_component.getDestructorDecl(),
clang::CXXDtorType::Dtor_Complete, ostream);
if (thunk_info.isEmpty()) {
mangle_contextp_->mangleName(method_decl, ostream);
} else {
mangle_contextp_->mangleThunk(method_decl, thunk_info, ostream);
}
ostream.flush();
break;
case clang::VTableComponent::CK_CompleteDtorPointer:
case clang::VTableComponent::CK_DeletingDtorPointer:
kind = abi_util::VTableComponentIR::Kind::DeletingDtorPointer;
mangle_contextp_->mangleCXXDtor(
vtable_component.getDestructorDecl(),
clang::CXXDtorType::Dtor_Deleting, ostream);
ostream.flush();
{
clang::CXXDtorType dtor_type;
if (clang_component_kind ==
clang::VTableComponent::CK_CompleteDtorPointer) {
dtor_type = clang::CXXDtorType::Dtor_Complete;
kind = abi_util::VTableComponentIR::Kind::CompleteDtorPointer;
} else {
dtor_type = clang::CXXDtorType::Dtor_Deleting;
kind = abi_util::VTableComponentIR::Kind::DeletingDtorPointer;
}
if (thunk_info.isEmpty()) {
mangle_contextp_->mangleCXXDtor(
vtable_component.getDestructorDecl(), dtor_type, ostream);
} else {
mangle_contextp_->mangleCXXDtorThunk(
vtable_component.getDestructorDecl(), dtor_type,
thunk_info.This, ostream);
}
ostream.flush();
}
break;
case clang::VTableComponent::CK_UnusedFunctionPointer:
kind = abi_util::VTableComponentIR::Kind::UnusedFunctionPointer;

View File

@@ -129,8 +129,9 @@ class RecordDeclWrapper : public ABIWrapper {
std::string GetMangledRTTI(const clang::CXXRecordDecl *cxx_record_decl);
abi_util::VTableComponentIR SetupRecordVTableComponent(
const clang::VTableComponent &vtable_component);
abi_util::VTableComponentIR
SetupRecordVTableComponent(const clang::VTableComponent &vtable_component,
const clang::ThunkInfo &thunk_info);
bool SetupCXXRecordInfo(abi_util::RecordTypeIR *record_declp,
const std::string &source_file);

View File

@@ -209,12 +209,34 @@ DiffStatus AbiDiffHelper::CompareEnumTypes(
return DiffStatus::no_diff;
}
static std::string RemoveThunkInfoFromMangledName(const std::string &name) {
if (name.find("_ZTv") != 0 && name.find("_ZTh") != 0 &&
name.find("_ZTc") != 0) {
return name;
}
size_t base_name_pos = name.find("N");
if (base_name_pos == std::string::npos) {
return name;
}
return "_Z" + name.substr(base_name_pos);
}
bool AbiDiffHelper::CompareVTableComponents(
const abi_util::VTableComponentIR &old_component,
const abi_util::VTableComponentIR &new_component) {
return old_component.GetName() == new_component.GetName() &&
old_component.GetValue() == new_component.GetValue() &&
old_component.GetKind() == new_component.GetKind();
// Vtable components in prebuilts/abi-dumps/vndk/28 don't have thunk info.
if (old_component.GetName() != new_component.GetName()) {
if (RemoveThunkInfoFromMangledName(old_component.GetName()) ==
RemoveThunkInfoFromMangledName(new_component.GetName())) {
llvm::errs() << "WARNING: Ignore difference between "
<< old_component.GetName() << " and "
<< new_component.GetName() << "\n";
} else {
return false;
}
}
return old_component.GetValue() == new_component.GetValue() &&
old_component.GetKind() == new_component.GetKind();
}
bool AbiDiffHelper::CompareVTables(

View File

@@ -26,7 +26,11 @@
float *speaker_float_star;
#endif
#if GOLDEN_CHANGE_INHERITANCE_TYPE
class LowVolumeSpeaker : public virtual SuperSpeaker {
#else
class LowVolumeSpeaker : public SuperSpeaker {
#endif
public:
virtual void Speak() override;
virtual LISTEN_RETURN_TYPE Listen() override;

View File

@@ -458,7 +458,18 @@ TEST_MODULES = [
arch = '',
api = 'current',
),
Module(
name = 'libgolden_cpp_inheritance_type_changed',
srcs = ['integration/cpp/gold/golden_1.cpp',
'integration/cpp/gold/high_volume_speaker.cpp',
'integration/cpp/gold/low_volume_speaker.cpp',
],
version_script = 'integration/cpp/gold/map.txt',
export_include_dirs = ['integration/cpp/gold/include'],
cflags = ['-DGOLDEN_CHANGE_INHERITANCE_TYPE'],
arch = '',
api = 'current',
),
]
TEST_MODULES = { m.name: m for m in TEST_MODULES }

View File

@@ -0,0 +1,487 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 8
alignment: 4
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 32
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types {
type_info {
name: "HighVolumeSpeaker"
size: 8
alignment: 4
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
}
base_specifiers {
referenced_type: "type-1"
is_virtual: false
access: public_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS17HighVolumeSpeaker"
}
}
record_types {
type_info {
name: "LowVolumeSpeaker"
size: 20
alignment: 4
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
}
fields {
referenced_type: "type-6"
field_offset: 32
field_name: "speaker_uint_t"
access: public_access
}
fields {
referenced_type: "type-7"
field_offset: 64
field_name: "speaker_float_star"
access: public_access
}
base_specifiers {
referenced_type: "type-1"
is_virtual: true
access: public_access
}
vtable_layout {
vtable_components {
kind: VBaseOffset
mangled_component_name: ""
component_value: 12
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n12_N16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n16_N16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS16LowVolumeSpeaker"
}
}
enum_types {
type_info {
name: "SuperSpeaker::Volume"
size: 4
alignment: 4
referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
}
underlying_type: "type-6"
enum_fields {
enum_field_value: 1
name: "SuperSpeaker::Volume::Loud"
}
enum_fields {
enum_field_value: 2
name: "SuperSpeaker::Volume::Louder"
}
enum_fields {
enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest"
}
enum_fields {
enum_field_value: 4
name: "SuperSpeaker::Volume::Lower"
}
access: private_access
tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE"
}
}
pointer_types {
type_info {
name: "SuperSpeaker *"
size: 4
alignment: 4
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
}
}
pointer_types {
type_info {
name: "float *"
size: 4
alignment: 4
referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
}
}
builtin_types {
type_info {
name: "float"
size: 4
alignment: 4
referenced_type: "type-3"
source_file: ""
linker_set_key: "float"
self_type: "type-3"
}
is_unsigned: false
is_integral: false
}
builtin_types {
type_info {
name: "int"
size: 4
alignment: 4
referenced_type: "type-2"
source_file: ""
linker_set_key: "int"
self_type: "type-2"
}
is_unsigned: false
is_integral: true
}
builtin_types {
type_info {
name: "unsigned int"
size: 4
alignment: 4
referenced_type: "type-6"
source_file: ""
linker_set_key: "unsigned int"
self_type: "type-6"
}
is_unsigned: true
is_integral: true
}
builtin_types {
type_info {
name: "void"
size: 0
alignment: 0
referenced_type: "type-10"
source_file: ""
linker_set_key: "void"
self_type: "type-10"
}
is_unsigned: false
is_integral: false
}
functions {
return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-2"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access
}
functions {
return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access
}
functions {
return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
parameters {
referenced_type: "type-3"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access
}
elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker"
}
elf_functions {
name: "_ZN12NotReferenced"
}
elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv"
}
elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
}
elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv"
}
elf_objects {
name: "_ZTV16LowVolumeSpeaker"
}
elf_objects {
name: "_ZTV17HighVolumeSpeaker"
}

View File

@@ -0,0 +1,487 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 16
alignment: 8
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 64
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types {
type_info {
name: "HighVolumeSpeaker"
size: 16
alignment: 8
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
}
base_specifiers {
referenced_type: "type-1"
is_virtual: false
access: public_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS17HighVolumeSpeaker"
}
}
record_types {
type_info {
name: "LowVolumeSpeaker"
size: 40
alignment: 8
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
}
fields {
referenced_type: "type-6"
field_offset: 64
field_name: "speaker_uint_t"
access: public_access
}
fields {
referenced_type: "type-7"
field_offset: 128
field_name: "speaker_float_star"
access: public_access
}
base_specifiers {
referenced_type: "type-1"
is_virtual: true
access: public_access
}
vtable_layout {
vtable_components {
kind: VBaseOffset
mangled_component_name: ""
component_value: 24
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n24_N16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n32_N16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS16LowVolumeSpeaker"
}
}
enum_types {
type_info {
name: "SuperSpeaker::Volume"
size: 4
alignment: 4
referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
}
underlying_type: "type-6"
enum_fields {
enum_field_value: 1
name: "SuperSpeaker::Volume::Loud"
}
enum_fields {
enum_field_value: 2
name: "SuperSpeaker::Volume::Louder"
}
enum_fields {
enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest"
}
enum_fields {
enum_field_value: 4
name: "SuperSpeaker::Volume::Lower"
}
access: private_access
tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE"
}
}
pointer_types {
type_info {
name: "SuperSpeaker *"
size: 8
alignment: 8
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
}
}
pointer_types {
type_info {
name: "float *"
size: 8
alignment: 8
referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
}
}
builtin_types {
type_info {
name: "float"
size: 4
alignment: 4
referenced_type: "type-3"
source_file: ""
linker_set_key: "float"
self_type: "type-3"
}
is_unsigned: false
is_integral: false
}
builtin_types {
type_info {
name: "int"
size: 4
alignment: 4
referenced_type: "type-2"
source_file: ""
linker_set_key: "int"
self_type: "type-2"
}
is_unsigned: false
is_integral: true
}
builtin_types {
type_info {
name: "unsigned int"
size: 4
alignment: 4
referenced_type: "type-6"
source_file: ""
linker_set_key: "unsigned int"
self_type: "type-6"
}
is_unsigned: true
is_integral: true
}
builtin_types {
type_info {
name: "void"
size: 0
alignment: 0
referenced_type: "type-10"
source_file: ""
linker_set_key: "void"
self_type: "type-10"
}
is_unsigned: false
is_integral: false
}
functions {
return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-2"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access
}
functions {
return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access
}
functions {
return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
parameters {
referenced_type: "type-3"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access
}
elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker"
}
elf_functions {
name: "_ZN12NotReferenced"
}
elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv"
}
elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
}
elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv"
}
elf_objects {
name: "_ZTV16LowVolumeSpeaker"
}
elf_objects {
name: "_ZTV17HighVolumeSpeaker"
}

View File

@@ -0,0 +1,487 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 8
alignment: 4
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 32
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types {
type_info {
name: "HighVolumeSpeaker"
size: 8
alignment: 4
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
}
base_specifiers {
referenced_type: "type-1"
is_virtual: false
access: public_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS17HighVolumeSpeaker"
}
}
record_types {
type_info {
name: "LowVolumeSpeaker"
size: 20
alignment: 4
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
}
fields {
referenced_type: "type-6"
field_offset: 32
field_name: "speaker_uint_t"
access: public_access
}
fields {
referenced_type: "type-7"
field_offset: 64
field_name: "speaker_float_star"
access: public_access
}
base_specifiers {
referenced_type: "type-1"
is_virtual: true
access: public_access
}
vtable_layout {
vtable_components {
kind: VBaseOffset
mangled_component_name: ""
component_value: 12
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n12_N16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n16_N16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS16LowVolumeSpeaker"
}
}
enum_types {
type_info {
name: "SuperSpeaker::Volume"
size: 4
alignment: 4
referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
}
underlying_type: "type-6"
enum_fields {
enum_field_value: 1
name: "SuperSpeaker::Volume::Loud"
}
enum_fields {
enum_field_value: 2
name: "SuperSpeaker::Volume::Louder"
}
enum_fields {
enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest"
}
enum_fields {
enum_field_value: 4
name: "SuperSpeaker::Volume::Lower"
}
access: private_access
tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE"
}
}
pointer_types {
type_info {
name: "SuperSpeaker *"
size: 4
alignment: 4
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
}
}
pointer_types {
type_info {
name: "float *"
size: 4
alignment: 4
referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
}
}
builtin_types {
type_info {
name: "float"
size: 4
alignment: 4
referenced_type: "type-3"
source_file: ""
linker_set_key: "float"
self_type: "type-3"
}
is_unsigned: false
is_integral: false
}
builtin_types {
type_info {
name: "int"
size: 4
alignment: 4
referenced_type: "type-2"
source_file: ""
linker_set_key: "int"
self_type: "type-2"
}
is_unsigned: false
is_integral: true
}
builtin_types {
type_info {
name: "unsigned int"
size: 4
alignment: 4
referenced_type: "type-6"
source_file: ""
linker_set_key: "unsigned int"
self_type: "type-6"
}
is_unsigned: true
is_integral: true
}
builtin_types {
type_info {
name: "void"
size: 0
alignment: 0
referenced_type: "type-10"
source_file: ""
linker_set_key: "void"
self_type: "type-10"
}
is_unsigned: false
is_integral: false
}
functions {
return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-2"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access
}
functions {
return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access
}
functions {
return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
parameters {
referenced_type: "type-3"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access
}
elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker"
}
elf_functions {
name: "_ZN12NotReferenced"
}
elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv"
}
elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
}
elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv"
}
elf_objects {
name: "_ZTV16LowVolumeSpeaker"
}
elf_objects {
name: "_ZTV17HighVolumeSpeaker"
}

View File

@@ -0,0 +1,487 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 16
alignment: 8
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 64
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types {
type_info {
name: "HighVolumeSpeaker"
size: 16
alignment: 8
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
}
base_specifiers {
referenced_type: "type-1"
is_virtual: false
access: public_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS17HighVolumeSpeaker"
}
}
record_types {
type_info {
name: "LowVolumeSpeaker"
size: 40
alignment: 8
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
}
fields {
referenced_type: "type-6"
field_offset: 64
field_name: "speaker_uint_t"
access: public_access
}
fields {
referenced_type: "type-7"
field_offset: 128
field_name: "speaker_float_star"
access: public_access
}
base_specifiers {
referenced_type: "type-1"
is_virtual: true
access: public_access
}
vtable_layout {
vtable_components {
kind: VBaseOffset
mangled_component_name: ""
component_value: 24
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n24_N16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n32_N16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS16LowVolumeSpeaker"
}
}
enum_types {
type_info {
name: "SuperSpeaker::Volume"
size: 4
alignment: 4
referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
}
underlying_type: "type-6"
enum_fields {
enum_field_value: 1
name: "SuperSpeaker::Volume::Loud"
}
enum_fields {
enum_field_value: 2
name: "SuperSpeaker::Volume::Louder"
}
enum_fields {
enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest"
}
enum_fields {
enum_field_value: 4
name: "SuperSpeaker::Volume::Lower"
}
access: private_access
tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE"
}
}
pointer_types {
type_info {
name: "SuperSpeaker *"
size: 8
alignment: 8
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
}
}
pointer_types {
type_info {
name: "float *"
size: 8
alignment: 8
referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
}
}
builtin_types {
type_info {
name: "float"
size: 4
alignment: 4
referenced_type: "type-3"
source_file: ""
linker_set_key: "float"
self_type: "type-3"
}
is_unsigned: false
is_integral: false
}
builtin_types {
type_info {
name: "int"
size: 4
alignment: 4
referenced_type: "type-2"
source_file: ""
linker_set_key: "int"
self_type: "type-2"
}
is_unsigned: false
is_integral: true
}
builtin_types {
type_info {
name: "unsigned int"
size: 4
alignment: 4
referenced_type: "type-6"
source_file: ""
linker_set_key: "unsigned int"
self_type: "type-6"
}
is_unsigned: true
is_integral: true
}
builtin_types {
type_info {
name: "void"
size: 0
alignment: 0
referenced_type: "type-10"
source_file: ""
linker_set_key: "void"
self_type: "type-10"
}
is_unsigned: false
is_integral: false
}
functions {
return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-2"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access
}
functions {
return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access
}
functions {
return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
parameters {
referenced_type: "type-3"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access
}
elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker"
}
elf_functions {
name: "_ZN12NotReferenced"
}
elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv"
}
elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
}
elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv"
}
elf_objects {
name: "_ZTV16LowVolumeSpeaker"
}
elf_objects {
name: "_ZTV17HighVolumeSpeaker"
}

View File

@@ -0,0 +1,487 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 8
alignment: 4
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 32
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types {
type_info {
name: "HighVolumeSpeaker"
size: 8
alignment: 4
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
}
base_specifiers {
referenced_type: "type-1"
is_virtual: false
access: public_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS17HighVolumeSpeaker"
}
}
record_types {
type_info {
name: "LowVolumeSpeaker"
size: 20
alignment: 4
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
}
fields {
referenced_type: "type-6"
field_offset: 32
field_name: "speaker_uint_t"
access: public_access
}
fields {
referenced_type: "type-7"
field_offset: 64
field_name: "speaker_float_star"
access: public_access
}
base_specifiers {
referenced_type: "type-1"
is_virtual: true
access: public_access
}
vtable_layout {
vtable_components {
kind: VBaseOffset
mangled_component_name: ""
component_value: 12
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: -12
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n12_N16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n16_N16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZTv0_n20_N16LowVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS16LowVolumeSpeaker"
}
}
enum_types {
type_info {
name: "SuperSpeaker::Volume"
size: 4
alignment: 4
referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
}
underlying_type: "type-6"
enum_fields {
enum_field_value: 1
name: "SuperSpeaker::Volume::Loud"
}
enum_fields {
enum_field_value: 2
name: "SuperSpeaker::Volume::Louder"
}
enum_fields {
enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest"
}
enum_fields {
enum_field_value: 4
name: "SuperSpeaker::Volume::Lower"
}
access: private_access
tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE"
}
}
pointer_types {
type_info {
name: "SuperSpeaker *"
size: 4
alignment: 4
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
}
}
pointer_types {
type_info {
name: "float *"
size: 4
alignment: 4
referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 4
alignment: 4
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
}
}
builtin_types {
type_info {
name: "float"
size: 4
alignment: 4
referenced_type: "type-3"
source_file: ""
linker_set_key: "float"
self_type: "type-3"
}
is_unsigned: false
is_integral: false
}
builtin_types {
type_info {
name: "int"
size: 4
alignment: 4
referenced_type: "type-2"
source_file: ""
linker_set_key: "int"
self_type: "type-2"
}
is_unsigned: false
is_integral: true
}
builtin_types {
type_info {
name: "unsigned int"
size: 4
alignment: 4
referenced_type: "type-6"
source_file: ""
linker_set_key: "unsigned int"
self_type: "type-6"
}
is_unsigned: true
is_integral: true
}
builtin_types {
type_info {
name: "void"
size: 0
alignment: 0
referenced_type: "type-10"
source_file: ""
linker_set_key: "void"
self_type: "type-10"
}
is_unsigned: false
is_integral: false
}
functions {
return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-2"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access
}
functions {
return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access
}
functions {
return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
parameters {
referenced_type: "type-3"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access
}
elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker"
}
elf_functions {
name: "_ZN12NotReferenced"
}
elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv"
}
elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
}
elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv"
}
elf_objects {
name: "_ZTV16LowVolumeSpeaker"
}
elf_objects {
name: "_ZTV17HighVolumeSpeaker"
}

View File

@@ -0,0 +1,487 @@
record_types {
type_info {
name: "SuperSpeaker"
size: 16
alignment: 8
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker"
self_type: "type-1"
}
fields {
referenced_type: "type-2"
field_offset: 64
field_name: "mSpeakderId"
access: private_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI12SuperSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN12SuperSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN12SuperSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS12SuperSpeaker"
}
}
record_types {
type_info {
name: "HighVolumeSpeaker"
size: 16
alignment: 8
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker"
self_type: "type-11"
}
base_specifiers {
referenced_type: "type-1"
is_virtual: false
access: public_access
}
vtable_layout {
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI17HighVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN17HighVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN17HighVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS17HighVolumeSpeaker"
}
}
record_types {
type_info {
name: "LowVolumeSpeaker"
size: 40
alignment: 8
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker"
self_type: "type-5"
}
fields {
referenced_type: "type-6"
field_offset: 64
field_name: "speaker_uint_t"
access: public_access
}
fields {
referenced_type: "type-7"
field_offset: 128
field_name: "speaker_float_star"
access: public_access
}
base_specifiers {
referenced_type: "type-1"
is_virtual: true
access: public_access
}
vtable_layout {
vtable_components {
kind: VBaseOffset
mangled_component_name: ""
component_value: 24
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: 0
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZN16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZN16LowVolumeSpeakerD0Ev"
component_value: 0
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: VCallOffset
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: OffsetToTop
mangled_component_name: ""
component_value: -24
}
vtable_components {
kind: RTTI
mangled_component_name: "_ZTI16LowVolumeSpeaker"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n24_N16LowVolumeSpeaker5SpeakEv"
component_value: 0
}
vtable_components {
kind: FunctionPointer
mangled_component_name: "_ZTv0_n32_N16LowVolumeSpeaker6ListenEv"
component_value: 0
}
vtable_components {
kind: CompleteDtorPointer
mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD1Ev"
component_value: 0
}
vtable_components {
kind: DeletingDtorPointer
mangled_component_name: "_ZTv0_n40_N16LowVolumeSpeakerD0Ev"
component_value: 0
}
}
access: public_access
record_kind: class_kind
tag_info {
unique_id: "_ZTS16LowVolumeSpeaker"
}
}
enum_types {
type_info {
name: "SuperSpeaker::Volume"
size: 4
alignment: 4
referenced_type: "type-8"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker::Volume"
self_type: "type-8"
}
underlying_type: "type-6"
enum_fields {
enum_field_value: 1
name: "SuperSpeaker::Volume::Loud"
}
enum_fields {
enum_field_value: 2
name: "SuperSpeaker::Volume::Louder"
}
enum_fields {
enum_field_value: 3
name: "SuperSpeaker::Volume::Loudest"
}
enum_fields {
enum_field_value: 4
name: "SuperSpeaker::Volume::Lower"
}
access: private_access
tag_info {
unique_id: "_ZTSN12SuperSpeaker6VolumeE"
}
}
pointer_types {
type_info {
name: "SuperSpeaker *"
size: 8
alignment: 8
referenced_type: "type-1"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "SuperSpeaker *"
self_type: "type-9"
}
}
pointer_types {
type_info {
name: "HighVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-11"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "HighVolumeSpeaker *"
self_type: "type-12"
}
}
pointer_types {
type_info {
name: "float *"
size: 8
alignment: 8
referenced_type: "type-3"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "float *"
self_type: "type-7"
}
}
pointer_types {
type_info {
name: "LowVolumeSpeaker *"
size: 8
alignment: 8
referenced_type: "type-5"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "LowVolumeSpeaker *"
self_type: "type-4"
}
}
builtin_types {
type_info {
name: "float"
size: 4
alignment: 4
referenced_type: "type-3"
source_file: ""
linker_set_key: "float"
self_type: "type-3"
}
is_unsigned: false
is_integral: false
}
builtin_types {
type_info {
name: "int"
size: 4
alignment: 4
referenced_type: "type-2"
source_file: ""
linker_set_key: "int"
self_type: "type-2"
}
is_unsigned: false
is_integral: true
}
builtin_types {
type_info {
name: "unsigned int"
size: 4
alignment: 4
referenced_type: "type-6"
source_file: ""
linker_set_key: "unsigned int"
self_type: "type-6"
}
is_unsigned: true
is_integral: true
}
builtin_types {
type_info {
name: "void"
size: 0
alignment: 0
referenced_type: "type-10"
source_file: ""
linker_set_key: "void"
self_type: "type-10"
}
is_unsigned: false
is_integral: false
}
functions {
return_type: "type-10"
function_name: "SuperSpeaker::SpeakLouder"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "type-9"
function_name: "SuperSpeaker::CreateSuperSpeaker"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-2"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
access: public_access
}
functions {
return_type: "type-8"
function_name: "SuperSpeaker::SpeakLoud"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "type-9"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN12SuperSpeaker9SpeakLoudEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "LowVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "type-4"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN16LowVolumeSpeaker6ListenEv"
access: public_access
}
functions {
return_type: "type-12"
function_name: "HighVolumeSpeaker::BadPractice"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
parameters {
referenced_type: "type-3"
default_arg: false
is_this_ptr: false
}
linker_set_key: "_ZN17HighVolumeSpeaker11BadPracticeEf"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Speak"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker5SpeakEv"
access: public_access
}
functions {
return_type: "type-10"
function_name: "HighVolumeSpeaker::Listen"
source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "type-12"
default_arg: false
is_this_ptr: true
}
linker_set_key: "_ZN17HighVolumeSpeaker6ListenEv"
access: public_access
}
elf_functions {
name: "_Z26test_virtual_function_callP12SuperSpeaker"
}
elf_functions {
name: "_ZN12NotReferenced"
}
elf_functions {
name: "_ZN12SuperSpeaker11SpeakLouderEv"
}
elf_functions {
name: "_ZN12SuperSpeaker18CreateSuperSpeakerEi"
}
elf_functions {
name: "_ZN12SuperSpeaker9SpeakLoudEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN16LowVolumeSpeaker6ListenEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker11BadPracticeEf"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker5SpeakEv"
}
elf_functions {
name: "_ZN17HighVolumeSpeaker6ListenEv"
}
elf_objects {
name: "_ZTV16LowVolumeSpeaker"
}
elf_objects {
name: "_ZTV17HighVolumeSpeaker"
}

View File

@@ -267,6 +267,11 @@ class MyTest(unittest.TestCase):
"libgolden_cpp_internal_private_struct", 8, [], True,
True)
def test_libgolden_cpp_inheritance_type_changed(self):
self.prepare_and_run_abi_diff_all_archs(
"libgolden_cpp", "libgolden_cpp_inheritance_type_changed", 8, [],
True, True)
if __name__ == '__main__':
unittest.main()