tests: Bump alignment for test structures to 64 bytes

Our core test structure is 36 bytes wide. Declaring it with a 32-bit
alignment should thus stripe it to 64 bytes. For some reason, clang+lld
lays them out with a 96-byte stride within the section (does it want an
entire 32-bit word when building with ASan?), getting the code wildly
confused when it tries to step through the structures.

So we could fix all our tests to avoid the fragile section dance, or we
could just waste another 4 bytes per test definition by bumping the
alignment up to 64 bytes, which seems to do enough to magically accord
with what clang+lld+ASan expect.

Signed-off-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
Daniel Stone 2021-08-03 14:35:04 +01:00
parent fa6ae44719
commit ccb64f301c
3 changed files with 3 additions and 3 deletions

View File

@ -47,7 +47,7 @@ struct test_context;
struct runner_test {
const char *name;
void (*run)(struct test_context *);
} __attribute__ ((aligned (32)));
} __attribute__ ((aligned (64)));
#define RUNNER_TEST(name) \
static void runner_func_##name(struct test_context *); \

View File

@ -55,7 +55,7 @@ struct weston_test_entry {
const void *table_data;
size_t element_size;
int n_elements;
} __attribute__ ((aligned (32)));
} __attribute__ ((aligned (64)));
#define TEST_BEGIN(name, arg) \
static void name(arg)

View File

@ -77,7 +77,7 @@ struct zuc_registration {
zucimpl_test_fn fn; /**< function implementing base test. */
zucimpl_test_fn_f fn_f; /**< function implementing test with
fixture. */
} __attribute__ ((aligned (32)));
} __attribute__ ((aligned (64)));
int