1#!/bin/sh
2
3# program
4# <- liba.so
5# <- libb.so
6#    <- libb_dependency.so
7#
8# Expected: Undefined symbol in libb.so resolves to symbol in liba.so,
9# not to symbol in libb_dependency.so.
10
11
12. ./test_setup
13
14
15# create liba.so
16cat > liba.c << EOI
17int a() { return 1; }
18EOI
19
20# build
21compile_lib -o liba.so liba.c
22
23
24# create libb_dependency.so
25cat > libb_dependency.c << EOI
26int a() { return 2; }
27EOI
28
29# build
30compile_lib -o libb_dependency.so libb_dependency.c
31
32
33# create libb.so
34cat > libb.c << EOI
35extern int a();
36int b() { return a(); }
37EOI
38
39# build
40compile_lib -o libb.so libb.c ./libb_dependency.so
41
42
43# create program
44cat > program.c << EOI
45extern int b();
46int
47main()
48{
49	return b();
50}
51EOI
52
53# build
54compile_program -o program program.c ./liba.so ./libb.so
55
56# run
57test_run_ok ./program 1
58
59