# Check that the libc.so for all platforms, and all architectures # Does not export 'atexit' and '__dso_handle' symbols. # export ANDROID_NDK_ROOT=$NDK NDK_BUILDTOOLS_PATH=$NDK/build/tools . $NDK/build/tools/prebuilt-common.sh echo DEFAULT_ARCHS=$DEFAULT_ARCHS LIBRARIES= for ARCH in $DEFAULT_ARCHS; do LIB=$(cd $NDK && find platforms -name "libc.so" | sed -e 's!^!'$NDK'/!' | grep arch-$ARCH) LIBRARIES=$LIBRARIES" $LIB" done FAILURE= COUNT=0 for LIB in $LIBRARIES; do COUNT=$(( $COUNT + 1 )) echo "Checking: $LIB" readelf -s $LIB | grep -q -F " atexit" if [ $? = 0 ]; then echo "ERROR: $NDK/$LIB exposes 'atexit'!" >&2 FAILURE=true fi readelf -s $LIB | grep -q -F " __dso_handle" if [ $? = 0 ]; then echo "ERROR: $NDK/$LIB exposes '__dso_handle'!" >&2 FAILURE=true fi done if [ "$COUNT" = 0 ]; then echo "ERROR: Did not find any libc.so in $NDK/platforms!" exit 1 fi if [ "$FAILURE" ]; then exit 1 else echo "All $COUNT libc.so are ok!" exit 0 fi