Merge "Allow adding class/struct members to padding space" am: 4f2576b93a am: 4384b4cdd0 am: 5c30332ddd

Original change: https://android-review.googlesource.com/c/platform/development/+/2238294

Change-Id: If0702c9163353438f11ec363e8e048826bc14b19
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Hsin-Yi Chen
2022-09-30 03:38:08 +00:00
committed by Automerger Merge Worker
5 changed files with 46 additions and 18 deletions

View File

@@ -53,15 +53,6 @@ bool RecordTypeDiffIR::IsExtended() const {
return false;
}
if (fields_added_.size() != 0) {
if (type_diff_ != nullptr) {
const uint64_t old_size = type_diff_->GetSizes().first;
for (const RecordFieldIR *field_added : fields_added_) {
// The offset is in bits; the size is in bytes.
if (field_added->GetOffset() < old_size * 8) {
return false;
}
}
}
is_extended = true;
}
return is_extended;

View File

@@ -1,6 +1,7 @@
struct Struct1 {
protected:
int member;
short offset_0;
int offset_32;
};
struct Struct2 {

View File

@@ -1,7 +1,9 @@
struct Struct1 {
public:
int member;
int added_member;
short offset_0;
short offset_16;
int offset_32;
int offset_64;
};
struct Struct2 {

View File

@@ -21,6 +21,15 @@
"referenced_type" : "_ZTIi",
"self_type" : "_ZTIi",
"size" : 4
},
{
"alignment" : 2,
"is_integral" : true,
"linker_set_key" : "_ZTIs",
"name" : "short",
"referenced_type" : "_ZTIs",
"self_type" : "_ZTIs",
"size" : 2
}
],
"elf_functions" :
@@ -81,12 +90,22 @@
"fields" :
[
{
"field_name" : "member",
"field_name" : "offset_0",
"referenced_type" : "_ZTIs"
},
{
"field_name" : "offset_16",
"field_offset" : 16,
"referenced_type" : "_ZTIs"
},
{
"field_name" : "offset_32",
"field_offset" : 32,
"referenced_type" : "_ZTIi"
},
{
"field_name" : "added_member",
"field_offset" : 32,
"field_name" : "offset_64",
"field_offset" : 64,
"referenced_type" : "_ZTIi"
}
],
@@ -94,7 +113,7 @@
"name" : "Struct1",
"referenced_type" : "_ZTI7Struct1",
"self_type" : "_ZTI7Struct1",
"size" : 8,
"size" : 12,
"source_file" : "development/vndk/tools/header-checker/tests/integration/struct_extensions/include/extensions.h"
},
{

View File

@@ -10,6 +10,15 @@
"referenced_type" : "_ZTIi",
"self_type" : "_ZTIi",
"size" : 4
},
{
"alignment" : 2,
"is_integral" : true,
"linker_set_key" : "_ZTIs",
"name" : "short",
"referenced_type" : "_ZTIs",
"self_type" : "_ZTIs",
"size" : 2
}
],
"elf_functions" :
@@ -71,7 +80,13 @@
[
{
"access" : "protected",
"field_name" : "member",
"field_name" : "offset_0",
"referenced_type" : "_ZTIs"
},
{
"access" : "protected",
"field_name" : "offset_32",
"field_offset" : 32,
"referenced_type" : "_ZTIi"
}
],
@@ -79,7 +94,7 @@
"name" : "Struct1",
"referenced_type" : "_ZTI7Struct1",
"self_type" : "_ZTI7Struct1",
"size" : 4,
"size" : 8,
"source_file" : "development/vndk/tools/header-checker/tests/integration/struct_extensions/include/base.h"
},
{