Files
linux/tools/testing/selftests/nolibc/nolibc-test-linkage.c
Thomas Weißschuh a782d45c86 selftests/nolibc: stop testing constructor order
The execution order of constructors in undefined and depends on the
toolchain.  While recent toolchains seems to have a stable order, it
doesn't work for older ones and may also change at any time.

Stop validating the order and instead only validate that all
constructors are executed.

Reported-by: Willy Tarreau <w@1wt.eu>
Closes: https://lore.kernel.org/lkml/20250301110735.GA18621@1wt.eu/
Link: https://lore.kernel.org/r/20250306-nolibc-constructor-order-v1-1-68fd161cc5ec@weissschuh.net
Acked-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
2025-03-07 07:34:12 +01:00

27 lines
444 B
C

/* SPDX-License-Identifier: GPL-2.0 */
#include "nolibc-test-linkage.h"
#ifndef NOLIBC
#include <errno.h>
#endif
void *linkage_test_errno_addr(void)
{
return &errno;
}
int linkage_test_constructor_test_value = 0;
__attribute__((constructor))
static void constructor1(void)
{
linkage_test_constructor_test_value |= 1 << 0;
}
__attribute__((constructor))
static void constructor2(void)
{
linkage_test_constructor_test_value |= 1 << 1;
}