Instead of creating a runtime generated struct type:
struct {
Arch struct {
Arm struct {
Armv7-a struct {
...
}
}
...
}
Multilib struct {
Lib32 struct {
...
}
...
}
Target struct {
Android struct {
...
}
...
}
}
Replace it with a top-level struct of empty interfaces:
type archPropRoot struct {
Arch, Multilib, Target interface{}
}
And then embed nil pointers to smaller structs inside it:
struct {
Arm struct {
Armv7-a struct {
...
}
}
...
}
This reduces the maximum number of times the archecture specific
properties are embedded in a runtime generated struct from 139
to 97, which makes it easier to avoid hitting the runtime generated
struct name size limit of 64kB.
Bug: 146234651
Test: all soong tests
Change-Id: I901c434ac9a1d99c74fc2370c5e6803b3682dc73