Add __NDK_FPABI__ to function taking/returning float/double

Allow user code to be compiled with "-mhard-float" for armeabi-v7a
(which implies -mfloat-abi=hard), and either link with
1. Android native APIs which use softfp, or
2. A customized libm_hard.a which is compiled with -mhard-float. Need
   -D_NDK_MATH_NO_SOFTFP=1

See tests/device/hard-float/jni/Android.mk for details and restriction
on Clang

Change-Id: I773a842c73368e08b9a6cda0441e95a96fa303b2
diff --git a/ndk/platforms/android-13/include/android/input.h b/ndk/platforms/android-13/include/android/input.h
index e5ae83c..7717a50 100644
--- a/ndk/platforms/android-13/include/android/input.h
+++ b/ndk/platforms/android-13/include/android/input.h
@@ -541,23 +541,23 @@
  * For touch events on the screen, this is the delta that was added to the raw
  * screen coordinates to adjust for the absolute position of the containing windows
  * and views. */
-float AMotionEvent_getXOffset(const AInputEvent* motion_event);
+float AMotionEvent_getXOffset(const AInputEvent* motion_event) __NDK_FPABI__;
 
 /* Get the precision of the Y coordinates being reported.
  * For touch events on the screen, this is the delta that was added to the raw
  * screen coordinates to adjust for the absolute position of the containing windows
  * and views. */
-float AMotionEvent_getYOffset(const AInputEvent* motion_event);
+float AMotionEvent_getYOffset(const AInputEvent* motion_event) __NDK_FPABI__;
 
 /* Get the precision of the X coordinates being reported.
  * You can multiply this number with an X coordinate sample to find the
  * actual hardware value of the X coordinate. */
-float AMotionEvent_getXPrecision(const AInputEvent* motion_event);
+float AMotionEvent_getXPrecision(const AInputEvent* motion_event) __NDK_FPABI__;
 
 /* Get the precision of the Y coordinates being reported.
  * You can multiply this number with a Y coordinate sample to find the
  * actual hardware value of the Y coordinate. */
-float AMotionEvent_getYPrecision(const AInputEvent* motion_event);
+float AMotionEvent_getYPrecision(const AInputEvent* motion_event) __NDK_FPABI__;
 
 /* Get the number of pointers of data contained in this event.
  * Always >= 1. */
@@ -573,29 +573,29 @@
  * For touch events on the screen, this is the original location of the event
  * on the screen, before it had been adjusted for the containing window
  * and views. */
-float AMotionEvent_getRawX(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getRawX(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the original raw X coordinate of this event.
  * For touch events on the screen, this is the original location of the event
  * on the screen, before it had been adjusted for the containing window
  * and views. */
-float AMotionEvent_getRawY(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getRawY(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the current X coordinate of this event for the given pointer index.
  * Whole numbers are pixels; the value may have a fraction for input devices
  * that are sub-pixel precise. */
-float AMotionEvent_getX(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getX(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the current Y coordinate of this event for the given pointer index.
  * Whole numbers are pixels; the value may have a fraction for input devices
  * that are sub-pixel precise. */
-float AMotionEvent_getY(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getY(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the current pressure of this event for the given pointer index.
  * The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure),
  * although values higher than 1 may be generated depending on the calibration of
  * the input device. */
-float AMotionEvent_getPressure(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getPressure(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the current scaled value of the approximate size for the given pointer index.
  * This represents some approximation of the area of the screen being
@@ -603,27 +603,27 @@
  * touch is normalized with the device specific range of values
  * and scaled to a value between 0 and 1.  The value of size can be used to
  * determine fat touch events. */
-float AMotionEvent_getSize(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getSize(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the current length of the major axis of an ellipse that describes the touch area
  * at the point of contact for the given pointer index. */
-float AMotionEvent_getTouchMajor(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getTouchMajor(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the current length of the minor axis of an ellipse that describes the touch area
  * at the point of contact for the given pointer index. */
-float AMotionEvent_getTouchMinor(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getTouchMinor(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the current length of the major axis of an ellipse that describes the size
  * of the approaching tool for the given pointer index.
  * The tool area represents the estimated size of the finger or pen that is
  * touching the device independent of its actual touch area at the point of contact. */
-float AMotionEvent_getToolMajor(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getToolMajor(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the current length of the minor axis of an ellipse that describes the size
  * of the approaching tool for the given pointer index.
  * The tool area represents the estimated size of the finger or pen that is
  * touching the device independent of its actual touch area at the point of contact. */
-float AMotionEvent_getToolMinor(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getToolMinor(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the current orientation of the touch area and tool area in radians clockwise from
  * vertical for the given pointer index.
@@ -633,11 +633,11 @@
  * indicates that the major axis of contact is oriented to the left.
  * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians
  * (finger pointing fully right). */
-float AMotionEvent_getOrientation(const AInputEvent* motion_event, size_t pointer_index);
+float AMotionEvent_getOrientation(const AInputEvent* motion_event, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the value of the request axis for the given pointer index. */
 float AMotionEvent_getAxisValue(const AInputEvent* motion_event,
-        int32_t axis, size_t pointer_index);
+        int32_t axis, size_t pointer_index) __NDK_FPABI__;
 
 /* Get the number of historical points in this event.  These are movements that
  * have occurred between this event and the previous event.  This only applies
@@ -658,7 +658,7 @@
  * Whole numbers are pixels; the value may have a fraction for input devices
  * that are sub-pixel precise. */
 float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the historical raw Y coordinate of this event for the given pointer index that
  * occurred between this event and the previous motion event.
@@ -668,21 +668,21 @@
  * Whole numbers are pixels; the value may have a fraction for input devices
  * that are sub-pixel precise. */
 float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the historical X coordinate of this event for the given pointer index that
  * occurred between this event and the previous motion event.
  * Whole numbers are pixels; the value may have a fraction for input devices
  * that are sub-pixel precise. */
 float AMotionEvent_getHistoricalX(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the historical Y coordinate of this event for the given pointer index that
  * occurred between this event and the previous motion event.
  * Whole numbers are pixels; the value may have a fraction for input devices
  * that are sub-pixel precise. */
 float AMotionEvent_getHistoricalY(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the historical pressure of this event for the given pointer index that
  * occurred between this event and the previous motion event.
@@ -690,7 +690,7 @@
  * although values higher than 1 may be generated depending on the calibration of
  * the input device. */
 float AMotionEvent_getHistoricalPressure(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the current scaled value of the approximate size for the given pointer index that
  * occurred between this event and the previous motion event.
@@ -700,19 +700,19 @@
  * and scaled to a value between 0 and 1.  The value of size can be used to
  * determine fat touch events. */
 float AMotionEvent_getHistoricalSize(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the historical length of the major axis of an ellipse that describes the touch area
  * at the point of contact for the given pointer index that
  * occurred between this event and the previous motion event. */
 float AMotionEvent_getHistoricalTouchMajor(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the historical length of the minor axis of an ellipse that describes the touch area
  * at the point of contact for the given pointer index that
  * occurred between this event and the previous motion event. */
 float AMotionEvent_getHistoricalTouchMinor(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the historical length of the major axis of an ellipse that describes the size
  * of the approaching tool for the given pointer index that
@@ -720,7 +720,7 @@
  * The tool area represents the estimated size of the finger or pen that is
  * touching the device independent of its actual touch area at the point of contact. */
 float AMotionEvent_getHistoricalToolMajor(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the historical length of the minor axis of an ellipse that describes the size
  * of the approaching tool for the given pointer index that
@@ -728,7 +728,7 @@
  * The tool area represents the estimated size of the finger or pen that is
  * touching the device independent of its actual touch area at the point of contact. */
 float AMotionEvent_getHistoricalToolMinor(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the historical orientation of the touch area and tool area in radians clockwise from
  * vertical for the given pointer index that
@@ -740,12 +740,12 @@
  * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians
  * (finger pointing fully right). */
 float AMotionEvent_getHistoricalOrientation(const AInputEvent* motion_event, size_t pointer_index,
-        size_t history_index);
+        size_t history_index) __NDK_FPABI__;
 
 /* Get the historical value of the request axis for the given pointer index
  * that occurred between this event and the previous motion event. */
 float AMotionEvent_getHistoricalAxisValue(const AInputEvent* motion_event,
-        int32_t axis, size_t pointer_index, size_t history_index);
+        int32_t axis, size_t pointer_index, size_t history_index) __NDK_FPABI__;
 
 
 /*
diff --git a/ndk/platforms/android-13/include/math.h b/ndk/platforms/android-13/include/math.h
index 541f605..e46cf46 100644
--- a/ndk/platforms/android-13/include/math.h
+++ b/ndk/platforms/android-13/include/math.h
@@ -183,222 +183,222 @@
 /*
  * ANSI/POSIX
  */
-int	__fpclassifyd(double) __pure2;
-int	__fpclassifyf(float) __pure2;
-int	__fpclassifyl(long double) __pure2;
-int	__isfinitef(float) __pure2;
-int	__isfinite(double) __pure2;
-int	__isfinitel(long double) __pure2;
-int	__isinff(float) __pure2;
-int     __isinf(double) __pure2;
-int	__isinfl(long double) __pure2;
-int	__isnanl(long double) __pure2;
-int	__isnormalf(float) __pure2;
-int	__isnormal(double) __pure2;
-int	__isnormall(long double) __pure2;
-int	__signbit(double) __pure2;
-int	__signbitf(float) __pure2;
-int	__signbitl(long double) __pure2;
+int	__fpclassifyd(double) __NDK_FPABI_MATH__ __pure2;
+int	__fpclassifyf(float) __NDK_FPABI_MATH__ __pure2;
+int	__fpclassifyl(long double) __NDK_FPABI_MATH__ __pure2;
+int	__isfinitef(float) __NDK_FPABI_MATH__ __pure2;
+int	__isfinite(double) __NDK_FPABI_MATH__ __pure2;
+int	__isfinitel(long double) __NDK_FPABI_MATH__ __pure2;
+int	__isinff(float) __NDK_FPABI_MATH__ __pure2;
+int     __isinf(double) __NDK_FPABI_MATH__ __pure2;
+int	__isinfl(long double) __NDK_FPABI_MATH__ __pure2;
+int	__isnanl(long double) __NDK_FPABI_MATH__ __pure2;
+int	__isnormalf(float) __NDK_FPABI_MATH__ __pure2;
+int	__isnormal(double) __NDK_FPABI_MATH__ __pure2;
+int	__isnormall(long double) __NDK_FPABI_MATH__ __pure2;
+int	__signbit(double) __NDK_FPABI_MATH__ __pure2;
+int	__signbitf(float) __NDK_FPABI_MATH__ __pure2;
+int	__signbitl(long double) __NDK_FPABI_MATH__ __pure2;
 
-double	acos(double);
-double	asin(double);
-double	atan(double);
-double	atan2(double, double);
-double	cos(double);
-double	sin(double);
-double	tan(double);
+double	acos(double) __NDK_FPABI_MATH__;
+double	asin(double) __NDK_FPABI_MATH__;
+double	atan(double) __NDK_FPABI_MATH__;
+double	atan2(double, double) __NDK_FPABI_MATH__;
+double	cos(double) __NDK_FPABI_MATH__;
+double	sin(double) __NDK_FPABI_MATH__;
+double	tan(double) __NDK_FPABI_MATH__;
 
-double	cosh(double);
-double	sinh(double);
-double	tanh(double);
+double	cosh(double) __NDK_FPABI_MATH__;
+double	sinh(double) __NDK_FPABI_MATH__;
+double	tanh(double) __NDK_FPABI_MATH__;
 
-double	exp(double);
-double	frexp(double, int *);	/* fundamentally !__pure2 */
-double	ldexp(double, int);
-double	log(double);
-double	log10(double);
-double	modf(double, double *);	/* fundamentally !__pure2 */
+double	exp(double) __NDK_FPABI_MATH__;
+double	frexp(double, int *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
+double	ldexp(double, int) __NDK_FPABI_MATH__;
+double	log(double) __NDK_FPABI_MATH__;
+double	log10(double) __NDK_FPABI_MATH__;
+double	modf(double, double *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
 
-double	pow(double, double);
-double	sqrt(double);
+double	pow(double, double) __NDK_FPABI_MATH__;
+double	sqrt(double) __NDK_FPABI_MATH__;
 
-double	ceil(double);
-double	fabs(double) __pure2;
-double	floor(double);
-double	fmod(double, double);
+double	ceil(double) __NDK_FPABI_MATH__;
+double	fabs(double) __NDK_FPABI_MATH__ __pure2;
+double	floor(double) __NDK_FPABI_MATH__;
+double	fmod(double, double) __NDK_FPABI_MATH__;
 
 /*
  * These functions are not in C90.
  */
 /* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
-double	acosh(double);
-double	asinh(double);
-double	atanh(double);
-double	cbrt(double);
-double	erf(double);
-double	erfc(double);
-double	exp2(double);
-double	expm1(double);
-double	fma(double, double, double);
-double	hypot(double, double);
-int	ilogb(double) __pure2;
-/* int	(isinf)(double) __pure2; */
-int	(isnan)(double) __pure2;
-double	lgamma(double);
-long long llrint(double);
-long long llround(double);
-double	log1p(double);
-double	logb(double);
-long	lrint(double);
-long	lround(double);
-double	nan(const char *) __pure2;
-double	nextafter(double, double);
-double	remainder(double, double);
-double	remquo(double, double, int *);
-double	rint(double);
+double	acosh(double) __NDK_FPABI_MATH__;
+double	asinh(double) __NDK_FPABI_MATH__;
+double	atanh(double) __NDK_FPABI_MATH__;
+double	cbrt(double) __NDK_FPABI_MATH__;
+double	erf(double) __NDK_FPABI_MATH__;
+double	erfc(double) __NDK_FPABI_MATH__;
+double	exp2(double) __NDK_FPABI_MATH__;
+double	expm1(double) __NDK_FPABI_MATH__;
+double	fma(double, double, double) __NDK_FPABI_MATH__;
+double	hypot(double, double) __NDK_FPABI_MATH__;
+int	ilogb(double) __NDK_FPABI_MATH__ __pure2;
+/* int	(isinf)(double) __NDK_FPABI_MATH__ __pure2; */
+int	(isnan)(double) __NDK_FPABI_MATH__ __pure2;
+double	lgamma(double) __NDK_FPABI_MATH__;
+long long llrint(double) __NDK_FPABI_MATH__;
+long long llround(double) __NDK_FPABI_MATH__;
+double	log1p(double) __NDK_FPABI_MATH__;
+double	logb(double) __NDK_FPABI_MATH__;
+long	lrint(double) __NDK_FPABI_MATH__;
+long	lround(double) __NDK_FPABI_MATH__;
+double	nan(const char *) __NDK_FPABI_MATH__ __pure2;
+double	nextafter(double, double) __NDK_FPABI_MATH__;
+double	remainder(double, double) __NDK_FPABI_MATH__;
+double	remquo(double, double, int *) __NDK_FPABI_MATH__;
+double	rint(double) __NDK_FPABI_MATH__;
 /* #endif */ /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
 
 /* #if __BSD_VISIBLE || __XSI_VISIBLE */
-double	j0(double);
-double	j1(double);
-double	jn(int, double);
-double	scalb(double, double);
-double	y0(double);
-double	y1(double);
-double	yn(int, double);
+double	j0(double) __NDK_FPABI_MATH__;
+double	j1(double) __NDK_FPABI_MATH__;
+double	jn(int, double) __NDK_FPABI_MATH__;
+double	scalb(double, double) __NDK_FPABI_MATH__;
+double	y0(double) __NDK_FPABI_MATH__;
+double	y1(double) __NDK_FPABI_MATH__;
+double	yn(int, double) __NDK_FPABI_MATH__;
 
 /* #if __XSI_VISIBLE <= 500 || __BSD_VISIBLE */
-double	gamma(double);
+double	gamma(double) __NDK_FPABI_MATH__;
 /* #endif */
 /* #endif */ /* __BSD_VISIBLE || __XSI_VISIBLE */
 
 /* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 */
-double	copysign(double, double) __pure2;
-double	fdim(double, double);
-double	fmax(double, double) __pure2;
-double	fmin(double, double) __pure2;
-double	nearbyint(double);
-double	round(double);
-double	scalbln(double, long);
-double	scalbn(double, int);
-double	tgamma(double);
-double	trunc(double);
+double	copysign(double, double) __NDK_FPABI_MATH__ __pure2;
+double	fdim(double, double) __NDK_FPABI_MATH__;
+double	fmax(double, double) __NDK_FPABI_MATH__ __pure2;
+double	fmin(double, double) __NDK_FPABI_MATH__ __pure2;
+double	nearbyint(double) __NDK_FPABI_MATH__;
+double	round(double) __NDK_FPABI_MATH__;
+double	scalbln(double, long) __NDK_FPABI_MATH__;
+double	scalbn(double, int) __NDK_FPABI_MATH__;
+double	tgamma(double) __NDK_FPABI_MATH__;
+double	trunc(double) __NDK_FPABI_MATH__;
 /* #endif */
 
 /*
  * BSD math library entry points
  */
 /* #if __BSD_VISIBLE */
-double	drem(double, double);
-int	finite(double) __pure2;
-int	isnanf(float) __pure2;
+double	drem(double, double) __NDK_FPABI_MATH__;
+int	finite(double) __NDK_FPABI_MATH__ __pure2;
+int	isnanf(float) __NDK_FPABI_MATH__ __pure2;
 
 /*
  * Reentrant version of gamma & lgamma; passes signgam back by reference
  * as the second argument; user must allocate space for signgam.
  */
-double	gamma_r(double, int *);
-double	lgamma_r(double, int *);
+double	gamma_r(double, int *) __NDK_FPABI_MATH__;
+double	lgamma_r(double, int *) __NDK_FPABI_MATH__;
 
 /*
  * IEEE Test Vector
  */
-double	significand(double);
+double	significand(double) __NDK_FPABI_MATH__;
 /* #endif */ /* __BSD_VISIBLE */
 
 /* float versions of ANSI/POSIX functions */
 /*#if __ISO_C_VISIBLE >= 1999 */
-float	acosf(float);
-float	asinf(float);
-float	atanf(float);
-float	atan2f(float, float);
-float	cosf(float);
-float	sinf(float);
-float	tanf(float);
+float	acosf(float) __NDK_FPABI_MATH__;
+float	asinf(float) __NDK_FPABI_MATH__;
+float	atanf(float) __NDK_FPABI_MATH__;
+float	atan2f(float, float) __NDK_FPABI_MATH__;
+float	cosf(float) __NDK_FPABI_MATH__;
+float	sinf(float) __NDK_FPABI_MATH__;
+float	tanf(float) __NDK_FPABI_MATH__;
 
-float	coshf(float);
-float	sinhf(float);
-float	tanhf(float);
+float	coshf(float) __NDK_FPABI_MATH__;
+float	sinhf(float) __NDK_FPABI_MATH__;
+float	tanhf(float) __NDK_FPABI_MATH__;
 
-float	exp2f(float);
-float	expf(float);
-float	expm1f(float);
-float	frexpf(float, int *);	/* fundamentally !__pure2 */
-int	ilogbf(float) __pure2;
-float	ldexpf(float, int);
-float	log10f(float);
-float	log1pf(float);
-float	logf(float);
-float	modff(float, float *);	/* fundamentally !__pure2 */
+float	exp2f(float) __NDK_FPABI_MATH__;
+float	expf(float) __NDK_FPABI_MATH__;
+float	expm1f(float) __NDK_FPABI_MATH__;
+float	frexpf(float, int *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
+int	ilogbf(float) __NDK_FPABI_MATH__ __pure2;
+float	ldexpf(float, int) __NDK_FPABI_MATH__;
+float	log10f(float) __NDK_FPABI_MATH__;
+float	log1pf(float) __NDK_FPABI_MATH__;
+float	logf(float) __NDK_FPABI_MATH__;
+float	modff(float, float *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
 
-float	powf(float, float);
-float	sqrtf(float);
+float	powf(float, float) __NDK_FPABI_MATH__;
+float	sqrtf(float) __NDK_FPABI_MATH__;
 
-float	ceilf(float);
-float	fabsf(float) __pure2;
-float	floorf(float);
-float	fmodf(float, float);
-float	roundf(float);
+float	ceilf(float) __NDK_FPABI_MATH__;
+float	fabsf(float) __NDK_FPABI_MATH__ __pure2;
+float	floorf(float) __NDK_FPABI_MATH__;
+float	fmodf(float, float) __NDK_FPABI_MATH__;
+float	roundf(float) __NDK_FPABI_MATH__;
 
-float	erff(float);
-float	erfcf(float);
-float	hypotf(float, float);
-float	lgammaf(float);
-float	tgammaf(float);
+float	erff(float) __NDK_FPABI_MATH__;
+float	erfcf(float) __NDK_FPABI_MATH__;
+float	hypotf(float, float) __NDK_FPABI_MATH__;
+float	lgammaf(float) __NDK_FPABI_MATH__;
+float	tgammaf(float) __NDK_FPABI_MATH__;
 
-float	acoshf(float);
-float	asinhf(float);
-float	atanhf(float);
-float	cbrtf(float);
-float	logbf(float);
-float	copysignf(float, float) __pure2;
-long long llrintf(float);
-long long llroundf(float);
-long	lrintf(float);
-long	lroundf(float);
-float	nanf(const char *) __pure2;
-float	nearbyintf(float);
-float	nextafterf(float, float);
-float	remainderf(float, float);
-float	remquof(float, float, int *);
-float	rintf(float);
-float	scalblnf(float, long);
-float	scalbnf(float, int);
-float	truncf(float);
+float	acoshf(float) __NDK_FPABI_MATH__;
+float	asinhf(float) __NDK_FPABI_MATH__;
+float	atanhf(float) __NDK_FPABI_MATH__;
+float	cbrtf(float) __NDK_FPABI_MATH__;
+float	logbf(float) __NDK_FPABI_MATH__;
+float	copysignf(float, float) __NDK_FPABI_MATH__ __pure2;
+long long llrintf(float) __NDK_FPABI_MATH__;
+long long llroundf(float) __NDK_FPABI_MATH__;
+long	lrintf(float) __NDK_FPABI_MATH__;
+long	lroundf(float) __NDK_FPABI_MATH__;
+float	nanf(const char *) __NDK_FPABI_MATH__ __pure2;
+float	nearbyintf(float) __NDK_FPABI_MATH__;
+float	nextafterf(float, float) __NDK_FPABI_MATH__;
+float	remainderf(float, float) __NDK_FPABI_MATH__;
+float	remquof(float, float, int *) __NDK_FPABI_MATH__;
+float	rintf(float) __NDK_FPABI_MATH__;
+float	scalblnf(float, long) __NDK_FPABI_MATH__;
+float	scalbnf(float, int) __NDK_FPABI_MATH__;
+float	truncf(float) __NDK_FPABI_MATH__;
 
-float	fdimf(float, float);
-float	fmaf(float, float, float);
-float	fmaxf(float, float) __pure2;
-float	fminf(float, float) __pure2;
+float	fdimf(float, float) __NDK_FPABI_MATH__;
+float	fmaf(float, float, float) __NDK_FPABI_MATH__;
+float	fmaxf(float, float) __NDK_FPABI_MATH__ __pure2;
+float	fminf(float, float) __NDK_FPABI_MATH__ __pure2;
 /* #endif */
 
 /*
  * float versions of BSD math library entry points
  */
 /* #if __BSD_VISIBLE */
-float	dremf(float, float);
-int	finitef(float) __pure2;
-float	gammaf(float);
-float	j0f(float);
-float	j1f(float);
-float	jnf(int, float);
-float	scalbf(float, float);
-float	y0f(float);
-float	y1f(float);
-float	ynf(int, float);
+float	dremf(float, float) __NDK_FPABI_MATH__;
+int	finitef(float) __NDK_FPABI_MATH__ __pure2;
+float	gammaf(float) __NDK_FPABI_MATH__;
+float	j0f(float) __NDK_FPABI_MATH__;
+float	j1f(float) __NDK_FPABI_MATH__;
+float	jnf(int, float) __NDK_FPABI_MATH__;
+float	scalbf(float, float) __NDK_FPABI_MATH__;
+float	y0f(float) __NDK_FPABI_MATH__;
+float	y1f(float) __NDK_FPABI_MATH__;
+float	ynf(int, float) __NDK_FPABI_MATH__;
 
 /*
  * Float versions of reentrant version of gamma & lgamma; passes
  * signgam back by reference as the second argument; user must
  * allocate space for signgam.
  */
-float	gammaf_r(float, int *);
-float	lgammaf_r(float, int *);
+float	gammaf_r(float, int *) __NDK_FPABI_MATH__;
+float	lgammaf_r(float, int *) __NDK_FPABI_MATH__;
 
 /*
  * float version of IEEE Test Vector
  */
-float	significandf(float);
+float	significandf(float) __NDK_FPABI_MATH__;
 /* #endif */	/* __BSD_VISIBLE */ 
 
 /*
@@ -406,90 +406,90 @@
  */
 /* #if __ISO_C_VISIBLE >= 1999 */
 #if 0
-long double	acoshl(long double);
-long double	acosl(long double);
-long double	asinhl(long double);
-long double	asinl(long double);
-long double	atan2l(long double, long double);
-long double	atanhl(long double);
-long double	atanl(long double);
-long double	cbrtl(long double);
+long double	acoshl(long double) __NDK_FPABI_MATH__;
+long double	acosl(long double) __NDK_FPABI_MATH__;
+long double	asinhl(long double) __NDK_FPABI_MATH__;
+long double	asinl(long double) __NDK_FPABI_MATH__;
+long double	atan2l(long double, long double) __NDK_FPABI_MATH__;
+long double	atanhl(long double) __NDK_FPABI_MATH__;
+long double	atanl(long double) __NDK_FPABI_MATH__;
+long double	cbrtl(long double) __NDK_FPABI_MATH__;
 #endif
-long double	ceill(long double);
-long double	copysignl(long double, long double) __pure2;
+long double	ceill(long double) __NDK_FPABI_MATH__;
+long double	copysignl(long double, long double) __NDK_FPABI_MATH__ __pure2;
 #if 0
-long double	coshl(long double);
-long double	cosl(long double);
-long double	erfcl(long double);
-long double	erfl(long double);
-long double	exp2l(long double);
-long double	expl(long double);
-long double	expm1l(long double);
+long double	coshl(long double) __NDK_FPABI_MATH__;
+long double	cosl(long double) __NDK_FPABI_MATH__;
+long double	erfcl(long double) __NDK_FPABI_MATH__;
+long double	erfl(long double) __NDK_FPABI_MATH__;
+long double	exp2l(long double) __NDK_FPABI_MATH__;
+long double	expl(long double) __NDK_FPABI_MATH__;
+long double	expm1l(long double) __NDK_FPABI_MATH__;
 #endif
-long double	fabsl(long double) __pure2;
-long double	fdiml(long double, long double);
-long double	floorl(long double);
-long double	fmal(long double, long double, long double);
-long double	fmaxl(long double, long double) __pure2;
-long double	fminl(long double, long double) __pure2;
+long double	fabsl(long double) __NDK_FPABI_MATH__ __pure2;
+long double	fdiml(long double, long double) __NDK_FPABI_MATH__;
+long double	floorl(long double) __NDK_FPABI_MATH__;
+long double	fmal(long double, long double, long double) __NDK_FPABI_MATH__;
+long double	fmaxl(long double, long double) __NDK_FPABI_MATH__ __pure2;
+long double	fminl(long double, long double) __NDK_FPABI_MATH__ __pure2;
 #if 0
-long double	fmodl(long double, long double);
+long double	fmodl(long double, long double) __NDK_FPABI_MATH__;
 #endif
-long double	frexpl(long double value, int *); /* fundamentally !__pure2 */
+long double	frexpl(long double value, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
 #if 0
-long double	hypotl(long double, long double);
+long double	hypotl(long double, long double) __NDK_FPABI_MATH__;
 #endif
-int		ilogbl(long double) __pure2;
-long double	ldexpl(long double, int);
+int		ilogbl(long double) __NDK_FPABI_MATH__ __pure2;
+long double	ldexpl(long double, int) __NDK_FPABI_MATH__;
 #if 0
-long double	lgammal(long double);
-long long	llrintl(long double);
+long double	lgammal(long double) __NDK_FPABI_MATH__;
+long long	llrintl(long double) __NDK_FPABI_MATH__;
 #endif
-long long	llroundl(long double);
+long long	llroundl(long double) __NDK_FPABI_MATH__;
 #if 0
-long double	log10l(long double);
-long double	log1pl(long double);
-long double	log2l(long double);
-long double	logbl(long double);
-long double	logl(long double);
-long		lrintl(long double);
+long double	log10l(long double) __NDK_FPABI_MATH__;
+long double	log1pl(long double) __NDK_FPABI_MATH__;
+long double	log2l(long double) __NDK_FPABI_MATH__;
+long double	logbl(long double) __NDK_FPABI_MATH__;
+long double	logl(long double) __NDK_FPABI_MATH__;
+long		lrintl(long double) __NDK_FPABI_MATH__;
 #endif
-long		lroundl(long double);
+long		lroundl(long double) __NDK_FPABI_MATH__;
 #if 0
-long double	modfl(long double, long double *); /* fundamentally !__pure2 */
+long double	modfl(long double, long double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
 #endif
-long double	nanl(const char *) __pure2;
+long double	nanl(const char *) __NDK_FPABI_MATH__ __pure2;
 #if 0
-long double	nearbyintl(long double);
+long double	nearbyintl(long double) __NDK_FPABI_MATH__;
 #endif
-long double	nextafterl(long double, long double);
-double		nexttoward(double, long double);
-float		nexttowardf(float, long double);
-long double	nexttowardl(long double, long double);
+long double	nextafterl(long double, long double) __NDK_FPABI_MATH__;
+double		nexttoward(double, long double) __NDK_FPABI_MATH__;
+float		nexttowardf(float, long double) __NDK_FPABI_MATH__;
+long double	nexttowardl(long double, long double) __NDK_FPABI_MATH__;
 #if 0
-long double	powl(long double, long double);
-long double	remainderl(long double, long double);
-long double	remquol(long double, long double, int *);
-long double	rintl(long double);
+long double	powl(long double, long double) __NDK_FPABI_MATH__;
+long double	remainderl(long double, long double) __NDK_FPABI_MATH__;
+long double	remquol(long double, long double, int *) __NDK_FPABI_MATH__;
+long double	rintl(long double) __NDK_FPABI_MATH__;
 #endif
-long double	roundl(long double);
-long double	scalblnl(long double, long);
-long double	scalbnl(long double, int);
+long double	roundl(long double) __NDK_FPABI_MATH__;
+long double	scalblnl(long double, long) __NDK_FPABI_MATH__;
+long double	scalbnl(long double, int) __NDK_FPABI_MATH__;
 #if 0
-long double	sinhl(long double);
-long double	sinl(long double);
-long double	sqrtl(long double);
-long double	tanhl(long double);
-long double	tanl(long double);
-long double	tgammal(long double);
+long double	sinhl(long double) __NDK_FPABI_MATH__;
+long double	sinl(long double) __NDK_FPABI_MATH__;
+long double	sqrtl(long double) __NDK_FPABI_MATH__;
+long double	tanhl(long double) __NDK_FPABI_MATH__;
+long double	tanl(long double) __NDK_FPABI_MATH__;
+long double	tgammal(long double) __NDK_FPABI_MATH__;
 #endif
-long double	truncl(long double);
+long double	truncl(long double) __NDK_FPABI_MATH__;
 
 /* BIONIC: GLibc compatibility - required by the ARM toolchain */
 #ifdef _GNU_SOURCE
-void  sincos(double x, double *sin, double *cos);
-void  sincosf(float x, float *sin, float *cos);
-void  sincosl(long double x, long double *sin, long double *cos);
+void  sincos(double x, double *sin, double *cos) __NDK_FPABI_MATH__;
+void  sincosf(float x, float *sin, float *cos) __NDK_FPABI_MATH__;
+void  sincosl(long double x, long double *sin, long double *cos) __NDK_FPABI_MATH__;
 #endif
 
 /* #endif */ /* __ISO_C_VISIBLE >= 1999 */