1bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner
2bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner# See README for details.
3bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner
4bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' TurnerLIBFILE=libfoo.so
5bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner
6bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner# Compile shared library
7bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner#
8bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner
957202329aa0243c59145c0e6964a4ca3762ef47dAndrew Hsieh$CXX $LDFLAGS $CXXFLAGS -shared -o $LIBFILE foo.cpp
10bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerif [ $? != 0 ]; then
11bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner    echo "ERROR: Can't build shared library!"
12bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner    exit 1
13bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerfi
14bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner
15bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner# Check that there is no .ctors section
16bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner${PREFIX}readelf -S libfoo.so | grep -q -e .ctors
17bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerif [ $? = 0 ]; then
18bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner    echo "ERROR: Shared library should not have a .ctors section!"
19bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner    exit 1
20bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerfi
21bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner
22bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner# Check that there is no .dtors section
23bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner${PREFIX}readelf -S libfoo.so | grep -q -e .dtors
24bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerif [ $? = 0 ]; then
25bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner    echo "ERROR: Shared library should not have a .dtors section!"
26bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner    exit 1
27bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerfi
28bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner
29bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner# Check that there is an .init_array section
30bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner${PREFIX}readelf -S $LIBFILE | grep -q -e .init_array
31bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerif [ $? != 0 ]; then
32bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner    echo "ERROR: Shared library is missing an .init_array section!"
33bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner    exit 1
34bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerfi
35bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner
36bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner# Check that there is a .fini_array section
37bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner${PREFIX}readelf -S $LIBFILE | grep -q -e .fini_array
38bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerif [ $? != 0 ]; then
39bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner    echo "ERROR: Shared library is missing an .fini_array section!"
40bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner    exit 1
41bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerfi
42bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner
43bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turner# Everything's good
44bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerecho "Shared library is ok."
45bf301a8e25f4d0481776445b15d87a1adfc5d6e0David 'Digit' Turnerexit 0
46