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