mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-19 16:24:21 +00:00
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>
27 lines
444 B
C
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;
|
|
}
|