# 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