On Fri, May 17, 2024 at 08:45:04PM +0900, Masahiro Yamada wrote:
This series refactors __constructor_order because __constructor_order_last() is unneeded.
BTW, the comments in kselftest_harness.h was confusing to me.
As far as I tested, all arches executed constructors in the forward order.
[test code]
#include <stdio.h>
static int x;
static void __attribute__((constructor)) increment(void) { x += 1; }
static void __attribute__((constructor)) multiply(void) { x *= 2; }
int main(void) { printf("foo = %d\n", x); return 0; }
It should print 2 for forward order systems, 1 for reverse order systems.
I executed it on some archtes by using QEMU. I always got 2.
IIRC, and it was a long time ago now, it was actually a difference between libc implementations where I encountered the problem. Maybe glibc vs Bionic?
-Kees