⛏️ index : haiku.git

#!/bin/sh

# program
# <- liba.so
#   <- libb.so
# <- libb.so
# Expected: symbol in program resolves to weak alias in liba.so,
# not to symbol in libb.so.


. ./test_setup


# create libb.so
cat > libb.c << EOI
int a() { return 4; }
EOI

# build
compile_lib -o libb.so libb.c


# create liba.so
cat > liba.c << EOI
int __a() { return 2; }
int a() __attribute__((weak, alias("__a")));
EOI

# build
compile_lib -o liba.so liba.c ./libb.so

# create program
cat > program.c << EOI
extern int a();

int
main()
{
	return a();
}
EOI

# build
compile_program -o program program.c ./liba.so ./libb.so

# run
test_run_ok ./program 2