From ac842581b195db5861c5a3c9e5d55a067564a64c Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Thu, 21 Jan 2021 23:01:06 +0000 Subject: HidlInstrumentor - fix w/ Wpadded For reasons unrelated to HidlInstrumentor, -Wpadded is enabled in libhidl_test for this class. However, due to (a bug in?) -Wpadded not looking into protected fields, this error is only caught in certain versions of clang or in clang tidy. Bug: 178056347 Test: static_asserting size of this struct (it's unfortunately exported and used by HIDL generated libs which freeze the ABI), and manually checking offsets of these fields. This was also verified locally by temporarily opening up visibility, such that compiling libhidl_test checks for padding here. Change-Id: I7e883f74b2ecba1bb5100723e114bd48245c6b7a --- base/include/hidl/HidlInternal.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'base') diff --git a/base/include/hidl/HidlInternal.h b/base/include/hidl/HidlInternal.h index 3cd246a..3d1a444 100644 --- a/base/include/hidl/HidlInternal.h +++ b/base/include/hidl/HidlInternal.h @@ -201,7 +201,10 @@ struct HidlInstrumentor { // A list of registered instrumentation callbacks. std::vector mInstrumentationCallbacks; // Flag whether to enable instrumentation. - bool mEnableInstrumentation; + union { + bool mEnableInstrumentation; + void* mReserved0; + }; // Prefix to lookup the instrumentation libraries. std::string mInstrumentationLibPackage; // Used for dlsym to load the profiling method for given interface. @@ -209,6 +212,12 @@ struct HidlInstrumentor { }; +#ifdef __LP64__ +static_assert(sizeof(HidlInstrumentor) == 88, "HidlInstrumentor size frozen by prebuilts"); +#else +static_assert(sizeof(HidlInstrumentor) == 44, "HidlInstrumentor size frozen by prebuilts"); +#endif + } // namespace details } // namespace hardware } // namespace android -- cgit v1.2.3