* Source text_setup with explicitly given current directory path component.

Apparently the source semantics has changed, as the that wasn't necessary
  in older OpenSuse versions.
* Replaced gcc invocations in the test scripts with with
  compile_{lib,program}[_dl]() shell functions defined in test_setup.
* Build libraries with -fPIC, so we don't get complaints for x86_64.

Apparently the runtime loader semantics has changed in OpenSuse 11.2 compared
to older versions. Some tests don't pass any longer (respectively even crash).
Would be interesting to know what happens on a current FreeBSD.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39308 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2010-11-05 16:38:44 +00:00
parent 7aff60b7de
commit 09bd92c5c0
22 changed files with 127 additions and 109 deletions
@@ -12,7 +12,7 @@
# libd.so
. test_setup
. ./test_setup
# create libd.so
@@ -21,7 +21,7 @@ int a() { return 1; }
EOI
# build
gcc -shared -o libd.so libd.c
compile_lib -o libd.so libd.c
# create libb.so
@@ -38,7 +38,7 @@ a()
EOI
# build
gcc -shared -o libb.so libb.c -D_GNU_SOURCE ./libd.so $libdl
compile_lib_dl -o libb.so libb.c ./libd.so
# create liba.so
@@ -54,7 +54,7 @@ a()
EOI
# build
gcc -shared -o liba.so liba.c -D_GNU_SOURCE ./libb.so $libdl
compile_lib_dl -o liba.so liba.c ./libb.so
# create libe.so
@@ -70,7 +70,7 @@ a()
EOI
# build
gcc -shared -o libe.so libe.c -D_GNU_SOURCE $libdl
compile_lib_dl -o libe.so libe.c
# create program
@@ -111,7 +111,7 @@ main()
EOI
# build
gcc -o program program.c -D_GNU_SOURCE $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c
# run
test_run_ok ./program 31
@@ -11,7 +11,7 @@
# libb_dependency.so.
. test_setup
. ./test_setup
# create liba.so
@@ -20,7 +20,7 @@ int a() { return 1; }
EOI
# build
gcc -shared -o liba.so liba.c
compile_lib -o liba.so liba.c
# create libb_dependency.so
@@ -29,7 +29,7 @@ int a() { return 2; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -38,7 +38,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create program
@@ -83,7 +83,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c
# run
test_run_ok ./program 1
@@ -11,7 +11,7 @@
# liba.so.
. test_setup
. ./test_setup
# create liba.so
@@ -20,7 +20,7 @@ int a() { return 1; }
EOI
# build
gcc -shared -o liba.so liba.c
compile_lib -o liba.so liba.c
# create libb_dependency.so
@@ -29,7 +29,7 @@ int a() { return 2; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -38,7 +38,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create program
@@ -83,7 +83,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c
# run
test_run_ok ./program 2
@@ -12,7 +12,7 @@
# libb_dependency.so.
. test_setup
. ./test_setup
# create libb_dependency.so
@@ -21,7 +21,7 @@ int a() { return 1; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -30,7 +30,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create liba.so
@@ -39,7 +39,7 @@ int a() { return 2; }
EOI
# build
gcc -shared -o libd.so libd.c
compile_lib -o libd.so libd.c
# create liba.so
@@ -48,7 +48,7 @@ int c() { return 1; }
EOI
# build
gcc -shared -o liba.so liba.c ./libb.so ./libd.so
compile_lib -o liba.so liba.c ./libb.so ./libd.so
# create program
@@ -79,7 +79,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c
# run
test_run_ok ./program 2
@@ -11,7 +11,7 @@
# symbol in liba.so, since libb.so is loaded RTLD_LOCAL.
. test_setup
. ./test_setup
# create liba.so
@@ -20,7 +20,7 @@ int a() { return 1; }
EOI
# build
gcc -shared -o liba.so liba.c
compile_lib -o liba.so liba.c
# create libb_dependency.so
@@ -29,7 +29,7 @@ int a() { return 2; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -38,7 +38,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create program
@@ -83,7 +83,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c
# run
test_run_ok ./program 1
@@ -8,7 +8,7 @@
# Expected: Undefined symbol in liba.so resolve to symbol in program.
. test_setup
. ./test_setup
# create liba.so
@@ -18,7 +18,7 @@ int a() { return b(); }
EOI
# build
gcc -shared -o liba.so liba.c
compile_lib -o liba.so liba.c
# create program
@@ -53,7 +53,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c
# run
test_run_ok ./program 1
@@ -9,7 +9,7 @@
# Expected: Undefined symbol in liba.so resolves to symbol in libb.so.
. test_setup
. ./test_setup
# create liba.so
@@ -19,7 +19,7 @@ int a() { return b(); }
EOI
# build
gcc -shared -o liba.so liba.c
compile_lib -o liba.so liba.c
# create libb.so
@@ -28,7 +28,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c
compile_lib -o libb.so libb.c
# create program
@@ -60,7 +60,7 @@ main()
EOI
# build
gcc -o program program.c ./libb.so $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c ./libb.so
# run
test_run_ok ./program 1
@@ -11,7 +11,7 @@
# libb_dependency.so.
. test_setup
. ./test_setup
# create libb_dependency.so
@@ -20,7 +20,7 @@ int c() { return 1; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -29,7 +29,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create liba.so
@@ -39,7 +39,7 @@ int a() { return c(); }
EOI
# build
gcc -shared -o liba.so liba.c ./libb.so
compile_lib -o liba.so liba.c ./libb.so
# create program
@@ -70,7 +70,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c
# run
test_run_ok ./program 1
@@ -10,7 +10,7 @@
# to symbol in libb.so.
. test_setup
. ./test_setup
# create liba.so
@@ -20,7 +20,7 @@ int a() { return b(); }
EOI
# build
gcc -shared -o liba.so liba.c
compile_lib -o liba.so liba.c
# create libb.so
@@ -29,7 +29,7 @@ int b() { return 2; }
EOI
# build
gcc -shared -o libb.so libb.c
compile_lib -o libb.so libb.c
# create program
@@ -70,7 +70,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_lib_dl -o program program.c
# run
test_run_ok ./program 1
@@ -12,7 +12,7 @@
# libd.so, not to symbol in libb_dependency.so.
. test_setup
. ./test_setup
# create libb_dependency.so
@@ -21,7 +21,7 @@ int c() { return 1; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -30,7 +30,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create libd.so
@@ -39,7 +39,7 @@ int c() { return 2; }
EOI
# build
gcc -shared -o libd.so libd.c
compile_lib -o libd.so libd.c
# create liba.so
@@ -49,7 +49,7 @@ int a() { return c(); }
EOI
# build
gcc -shared -o liba.so liba.c ./libb.so ./libd.so
compile_lib -o liba.so liba.c ./libb.so ./libd.so
# create program
@@ -80,7 +80,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_lib_dl -o program program.c
# run
test_run_ok ./program 2
@@ -11,7 +11,7 @@
# not to symbol in libb.so.
. test_setup
. ./test_setup
# create libb.so
@@ -20,7 +20,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c
compile_lib -o libb.so libb.c
# create liba.so
@@ -30,7 +30,7 @@ int a() { return b(); }
EOI
# build
gcc -shared -o liba.so liba.c ./libb.so
compile_lib -o liba.so liba.c ./libb.so
# create libd.so
@@ -39,7 +39,7 @@ int b() { return 2; }
EOI
# build
gcc -shared -o libd.so libd.c
compile_lib -o libd.so libd.c
# create program
@@ -76,8 +76,8 @@ main()
}
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
#build
compile_program_dl -o program program.c
# run
test_run_ok ./program 2
@@ -12,7 +12,7 @@
# not to symbol in libb_dependency.so.
. test_setup
. ./test_setup
# create libb_dependency.so
@@ -21,7 +21,7 @@ int c() { return 1; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -30,7 +30,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create liba.so
@@ -40,7 +40,7 @@ int a() { return c(); }
EOI
# build
gcc -shared -o liba.so liba.c ./libb.so
compile_lib -o liba.so liba.c ./libb.so
# create libd.so
@@ -49,7 +49,7 @@ int c() { return 2; }
EOI
# build
gcc -shared -o libd.so libd.c
compile_lib -o libd.so libd.c
# create program
@@ -87,7 +87,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_lib_dl -o program program.c
# run
test_run_ok ./program 2
@@ -13,7 +13,7 @@
# libd.so, not to symbol in libb_dependency.so.
. test_setup
. ./test_setup
# create libb_dependency.so
@@ -22,7 +22,7 @@ int c() { return 1; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -31,7 +31,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create libd.so
@@ -40,7 +40,7 @@ int c() { return 2; }
EOI
# build
gcc -shared -o libd.so libd.c
compile_lib -o libd.so libd.c
# create liba.so
@@ -49,7 +49,7 @@ int e() { return 0; }
EOI
# build
gcc -shared -o liba.so liba.c ./libb.so ./libd.so
compile_lib -o liba.so liba.c ./libb.so ./libd.so
# create libe.so
@@ -59,7 +59,7 @@ int a() { return c(); }
EOI
# build
gcc -shared -o libe.so libe.c
compile_lib -o libe.so libe.c
# create program
@@ -97,7 +97,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c
# run
test_run_ok ./program 2
@@ -13,7 +13,7 @@
# libb_dependency.so, not to symbol in libd.so.
. test_setup
. ./test_setup
# create libb_dependency.so
@@ -22,7 +22,7 @@ int c() { return 1; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -31,7 +31,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create libd.so
@@ -40,7 +40,7 @@ int c() { return 2; }
EOI
# build
gcc -shared -o libd.so libd.c
compile_lib -o libd.so libd.c
# create liba.so
@@ -50,7 +50,7 @@ int e() { return 0; }
EOI
# build
gcc -shared -o liba.so liba.c ./libb.so
compile_lib -o liba.so liba.c ./libb.so
# create libe.so
@@ -60,7 +60,7 @@ int a() { return c(); }
EOI
# build
gcc -shared -o libe.so libe.c
compile_lib -o libe.so libe.c
# create program
@@ -105,8 +105,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c
# run
test_run_ok ./program 1
@@ -11,7 +11,7 @@
# not to symbol in libd.so, since it's loaded RTLD_LOCAL.
. test_setup
. ./test_setup
# create libb.so
@@ -20,7 +20,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c
compile_lib -o libb.so libb.c
# create liba.so
@@ -30,7 +30,7 @@ int a() { return b(); }
EOI
# build
gcc -shared -o liba.so liba.c ./libb.so
compile_lib -o liba.so liba.c ./libb.so
# create libd.so
@@ -39,7 +39,7 @@ int b() { return 2; }
EOI
# build
gcc -shared -o libd.so libd.c
compile_lib -o libd.so libd.c
# create program
@@ -77,7 +77,7 @@ main()
EOI
# build
gcc -o program program.c $libdl -Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c
# run
test_run_ok ./program 1
@@ -8,7 +8,7 @@
# Expected: dlsym(RTLD_NEXT) finds symbol in order liba.so, libb.so, libd.so
. test_setup
. ./test_setup
# create libd.so
@@ -17,7 +17,7 @@ int a() { return 1; }
EOI
# build
gcc -shared -o libd.so libd.c
compile_lib -o libd.so libd.c
# create libb.so
@@ -34,7 +34,7 @@ a()
EOI
# build
gcc -shared -o libb.so libb.c -D_GNU_SOURCE ./libd.so $libdl
compile_lib_dl -o libb.so libb.c ./libd.so
# create liba.so
@@ -50,7 +50,7 @@ a()
EOI
# build
gcc -shared -o liba.so liba.c -D_GNU_SOURCE ./libb.so $libdl
compile_lib_dl -o liba.so liba.c ./libb.so
# create program
@@ -73,8 +73,7 @@ main()
EOI
# build
gcc -o program program.c -D_GNU_SOURCE ./liba.so $libdl \
-Wl,-rpath,.,--export-dynamic
compile_program_dl -o program program.c ./liba.so
# run
test_run_ok ./program 15
@@ -6,7 +6,7 @@
# Expected: Undefined symbol in liba.so resolves to symbol in program.
. test_setup
. ./test_setup
# create liba.so
@@ -16,7 +16,7 @@ int a() { return b(); }
EOI
# build
gcc -shared -o liba.so liba.c
compile_lib -o liba.so liba.c
# create program
@@ -37,7 +37,7 @@ main()
EOI
# build
gcc -o program program.c ./liba.so -Wl,-rpath,.,--export-dynamic
compile_program -o program program.c ./liba.so
# run
test_run_ok ./program 1
@@ -9,7 +9,7 @@
# not to symbol in libb_dependency.so.
. test_setup
. ./test_setup
# create liba.so
@@ -18,7 +18,7 @@ int a() { return 1; }
EOI
# build
gcc -shared -o liba.so liba.c
compile_lib -o liba.so liba.c
# create libb_dependency.so
@@ -27,7 +27,7 @@ int a() { return 2; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -36,7 +36,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create program
@@ -50,7 +50,7 @@ main()
EOI
# build
gcc -o program program.c ./liba.so ./libb.so -Wl,-rpath,.,--export-dynamic
compile_program -o program program.c ./liba.so ./libb.so
# run
test_run_ok ./program 1
@@ -9,7 +9,7 @@
# not to symbol in libb_dependency.so.
. test_setup
. ./test_setup
# create liba.so
@@ -18,7 +18,7 @@ int a() { return 1; }
EOI
# build
gcc -shared -o liba.so liba.c
compile_lib -o liba.so liba.c
# create libb_dependency.so
@@ -27,7 +27,7 @@ int a() { return 2; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -36,7 +36,7 @@ int b() { return 1; }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create program
@@ -50,7 +50,7 @@ main()
EOI
# build
gcc -o program program.c ./libb.so ./liba.so -Wl,-rpath,.,--export-dynamic
compile_program -o program program.c ./libb.so ./liba.so
# run
test_run_ok ./program 1
@@ -9,7 +9,7 @@
# not to symbol in libb_dependency.so.
. test_setup
. ./test_setup
# create liba.so
@@ -18,7 +18,7 @@ int a() { return 1; }
EOI
# build
gcc -shared -o liba.so liba.c
compile_lib -o liba.so liba.c
# create libb_dependency.so
@@ -27,7 +27,7 @@ int a() { return 2; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -37,7 +37,7 @@ int b() { return a(); }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create program
@@ -51,7 +51,7 @@ main()
EOI
# build
gcc -o program program.c ./liba.so ./libb.so -Wl,-rpath,.,--export-dynamic
compile_program -o program program.c ./liba.so ./libb.so
# run
test_run_ok ./program 1
@@ -8,7 +8,7 @@
# not to symbol in libb_dependency.so.
. test_setup
. ./test_setup
# create libb_dependency.so
@@ -17,7 +17,7 @@ int a() { return 2; }
EOI
# build
gcc -shared -o libb_dependency.so libb_dependency.c
compile_lib -o libb_dependency.so libb_dependency.c
# create libb.so
@@ -27,7 +27,7 @@ int b() { return a(); }
EOI
# build
gcc -shared -o libb.so libb.c ./libb_dependency.so
compile_lib -o libb.so libb.c ./libb_dependency.so
# create program
@@ -45,7 +45,7 @@ main()
EOI
# build
gcc -o program program.c ./libb.so -Wl,-rpath,.,--export-dynamic
compile_program -o program program.c ./libb.so
# run
test_run_ok ./program 1
@@ -30,3 +30,23 @@ test_run_ok()
exit 1
fi
}
compile_lib()
{
gcc -shared $@ -D_GNU_SOURCE -fPIC
}
compile_lib_dl()
{
compile_lib $@ $libdl
}
compile_program()
{
gcc $@ -D_GNU_SOURCE -Wl,-rpath,.,--export-dynamic
}
compile_program_dl()
{
compile_program $@ $libdl
}