From 8ea6b735a64da7d97a556832209c0bb70ea00a21 Mon Sep 17 00:00:00 2001 From: lntue Date: Sun, 23 Feb 2025 13:41:51 -0500 Subject: [PATCH] [libc] Fix alignment issue for HermeticTestUtils.cpp. (#128426) Full build precommit bots were failing due to mis-alignment of atomics in hermetic tests. This PR enforces the alignment for the bump allocator of hermetic test framework. Fixes https://github.com/llvm/llvm-project/issues/128185. --- libc/test/UnitTest/HermeticTestUtils.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libc/test/UnitTest/HermeticTestUtils.cpp b/libc/test/UnitTest/HermeticTestUtils.cpp index 47f813b0b7a4..a9494af746d5 100644 --- a/libc/test/UnitTest/HermeticTestUtils.cpp +++ b/libc/test/UnitTest/HermeticTestUtils.cpp @@ -33,6 +33,8 @@ int atexit(void (*func)(void)); } // namespace LIBC_NAMESPACE_DECL +constexpr uint64_t ALIGNMENT = alignof(uintptr_t); + namespace { // Integration tests cannot use the SCUDO standalone allocator as SCUDO pulls @@ -42,7 +44,7 @@ namespace { // which just hands out continuous blocks from a statically allocated chunk of // memory. static constexpr uint64_t MEMORY_SIZE = 65336; -static uint8_t memory[MEMORY_SIZE]; +alignas(ALIGNMENT) static uint8_t memory[MEMORY_SIZE]; static uint8_t *ptr = memory; } // anonymous namespace @@ -74,8 +76,6 @@ void *memset(void *ptr, int value, size_t count) { // This is needed if the test was compiled with '-fno-use-cxa-atexit'. int atexit(void (*func)(void)) { return LIBC_NAMESPACE::atexit(func); } -constexpr uint64_t ALIGNMENT = alignof(uintptr_t); - void *malloc(size_t s) { // Keep the bump pointer aligned on an eight byte boundary. s = ((s + ALIGNMENT - 1) / ALIGNMENT) * ALIGNMENT;