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
This commit is contained in:
Andrew Hsieh
2013-10-16 16:26:26 +08:00
parent a36935be21
commit 5881b5cbe7
20 changed files with 1064 additions and 985 deletions

View File

@@ -541,23 +541,23 @@ int64_t AMotionEvent_getEventTime(const AInputEvent* motion_event);
* 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 @@ int32_t AMotionEvent_getPointerId(const AInputEvent* motion_event, size_t pointe
* 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 @@ float AMotionEvent_getPressure(const AInputEvent* motion_event, size_t pointer_i
* 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 @@ float AMotionEvent_getToolMinor(const AInputEvent* motion_event, size_t pointer_
* 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 @@ int64_t AMotionEvent_getHistoricalEventTime(const AInputEvent* motion_event,
* 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 @@ float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t poi
* 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 @@ float AMotionEvent_getHistoricalY(const AInputEvent* motion_event, size_t pointe
* 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 @@ float AMotionEvent_getHistoricalPressure(const AInputEvent* motion_event, size_t
* 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 @@ float AMotionEvent_getHistoricalTouchMinor(const AInputEvent* motion_event, size
* 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 @@ float AMotionEvent_getHistoricalToolMajor(const AInputEvent* motion_event, size_
* 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 @@ float AMotionEvent_getHistoricalToolMinor(const AInputEvent* motion_event, size_
* 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__;
/*

View File

@@ -183,222 +183,222 @@ __BEGIN_DECLS
/*
* 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 @@ float significandf(float);
*/
/* #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 */

View File

@@ -579,23 +579,23 @@ int64_t AMotionEvent_getEventTime(const AInputEvent* motion_event);
* 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. */
@@ -616,29 +616,29 @@ int32_t AMotionEvent_getToolType(const AInputEvent* motion_event, size_t pointer
* 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
@@ -646,27 +646,27 @@ float AMotionEvent_getPressure(const AInputEvent* motion_event, size_t pointer_i
* 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.
@@ -676,11 +676,11 @@ float AMotionEvent_getToolMinor(const AInputEvent* motion_event, size_t pointer_
* 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
@@ -701,7 +701,7 @@ int64_t AMotionEvent_getHistoricalEventTime(const AInputEvent* motion_event,
* 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.
@@ -711,21 +711,21 @@ float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t poi
* 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.
@@ -733,7 +733,7 @@ float AMotionEvent_getHistoricalY(const AInputEvent* motion_event, size_t pointe
* 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.
@@ -743,19 +743,19 @@ float AMotionEvent_getHistoricalPressure(const AInputEvent* motion_event, size_t
* 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
@@ -763,7 +763,7 @@ float AMotionEvent_getHistoricalTouchMinor(const AInputEvent* motion_event, size
* 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
@@ -771,7 +771,7 @@ float AMotionEvent_getHistoricalToolMajor(const AInputEvent* motion_event, size_
* 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
@@ -783,12 +783,12 @@ float AMotionEvent_getHistoricalToolMinor(const AInputEvent* motion_event, size_
* 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__;
/*

View File

@@ -183,224 +183,224 @@ __BEGIN_DECLS
/*
* 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 log2(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 log2(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 log2f(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 log2f(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 */
/*
@@ -408,95 +408,95 @@ float significandf(float);
*/
/* #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 log10l(long double) __NDK_FPABI_MATH__;
long double log1pl(long double) __NDK_FPABI_MATH__;
long double log2l(long double) __NDK_FPABI_MATH__;
#endif
long double logbl(long double);
long double logbl(long double) __NDK_FPABI_MATH__;
#if 0
long lrintl(long double);
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 */
long double log2l(long double);
long double log2l(long double) __NDK_FPABI_MATH__;
__END_DECLS
#endif /* !_MATH_H_ */

View File

@@ -24,6 +24,7 @@
#ifndef JNI_H_
#define JNI_H_
#include <sys/cdefs.h>
#include <stdarg.h>
/*
@@ -231,12 +232,12 @@ struct JNINativeInterface {
jlong (*CallLongMethod)(JNIEnv*, jobject, jmethodID, ...);
jlong (*CallLongMethodV)(JNIEnv*, jobject, jmethodID, va_list);
jlong (*CallLongMethodA)(JNIEnv*, jobject, jmethodID, jvalue*);
jfloat (*CallFloatMethod)(JNIEnv*, jobject, jmethodID, ...);
jfloat (*CallFloatMethodV)(JNIEnv*, jobject, jmethodID, va_list);
jfloat (*CallFloatMethodA)(JNIEnv*, jobject, jmethodID, jvalue*);
jdouble (*CallDoubleMethod)(JNIEnv*, jobject, jmethodID, ...);
jdouble (*CallDoubleMethodV)(JNIEnv*, jobject, jmethodID, va_list);
jdouble (*CallDoubleMethodA)(JNIEnv*, jobject, jmethodID, jvalue*);
jfloat (*CallFloatMethod)(JNIEnv*, jobject, jmethodID, ...) __NDK_FPABI__;
jfloat (*CallFloatMethodV)(JNIEnv*, jobject, jmethodID, va_list) __NDK_FPABI__;
jfloat (*CallFloatMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) __NDK_FPABI__;
jdouble (*CallDoubleMethod)(JNIEnv*, jobject, jmethodID, ...) __NDK_FPABI__;
jdouble (*CallDoubleMethodV)(JNIEnv*, jobject, jmethodID, va_list) __NDK_FPABI__;
jdouble (*CallDoubleMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) __NDK_FPABI__;
void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...);
void (*CallVoidMethodV)(JNIEnv*, jobject, jmethodID, va_list);
void (*CallVoidMethodA)(JNIEnv*, jobject, jmethodID, jvalue*);
@@ -284,17 +285,17 @@ struct JNINativeInterface {
jlong (*CallNonvirtualLongMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*);
jfloat (*CallNonvirtualFloatMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...);
jmethodID, ...) __NDK_FPABI__;
jfloat (*CallNonvirtualFloatMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list);
jmethodID, va_list) __NDK_FPABI__;
jfloat (*CallNonvirtualFloatMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*);
jmethodID, jvalue*) __NDK_FPABI__;
jdouble (*CallNonvirtualDoubleMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...);
jmethodID, ...) __NDK_FPABI__;
jdouble (*CallNonvirtualDoubleMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list);
jmethodID, va_list) __NDK_FPABI__;
jdouble (*CallNonvirtualDoubleMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*);
jmethodID, jvalue*) __NDK_FPABI__;
void (*CallNonvirtualVoidMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...);
void (*CallNonvirtualVoidMethodV)(JNIEnv*, jobject, jclass,
@@ -311,8 +312,8 @@ struct JNINativeInterface {
jshort (*GetShortField)(JNIEnv*, jobject, jfieldID);
jint (*GetIntField)(JNIEnv*, jobject, jfieldID);
jlong (*GetLongField)(JNIEnv*, jobject, jfieldID);
jfloat (*GetFloatField)(JNIEnv*, jobject, jfieldID);
jdouble (*GetDoubleField)(JNIEnv*, jobject, jfieldID);
jfloat (*GetFloatField)(JNIEnv*, jobject, jfieldID) __NDK_FPABI__;
jdouble (*GetDoubleField)(JNIEnv*, jobject, jfieldID) __NDK_FPABI__;
void (*SetObjectField)(JNIEnv*, jobject, jfieldID, jobject);
void (*SetBooleanField)(JNIEnv*, jobject, jfieldID, jboolean);
@@ -321,8 +322,8 @@ struct JNINativeInterface {
void (*SetShortField)(JNIEnv*, jobject, jfieldID, jshort);
void (*SetIntField)(JNIEnv*, jobject, jfieldID, jint);
void (*SetLongField)(JNIEnv*, jobject, jfieldID, jlong);
void (*SetFloatField)(JNIEnv*, jobject, jfieldID, jfloat);
void (*SetDoubleField)(JNIEnv*, jobject, jfieldID, jdouble);
void (*SetFloatField)(JNIEnv*, jobject, jfieldID, jfloat) __NDK_FPABI__;
void (*SetDoubleField)(JNIEnv*, jobject, jfieldID, jdouble) __NDK_FPABI__;
jmethodID (*GetStaticMethodID)(JNIEnv*, jclass, const char*, const char*);
@@ -349,12 +350,12 @@ struct JNINativeInterface {
jlong (*CallStaticLongMethod)(JNIEnv*, jclass, jmethodID, ...);
jlong (*CallStaticLongMethodV)(JNIEnv*, jclass, jmethodID, va_list);
jlong (*CallStaticLongMethodA)(JNIEnv*, jclass, jmethodID, jvalue*);
jfloat (*CallStaticFloatMethod)(JNIEnv*, jclass, jmethodID, ...);
jfloat (*CallStaticFloatMethodV)(JNIEnv*, jclass, jmethodID, va_list);
jfloat (*CallStaticFloatMethodA)(JNIEnv*, jclass, jmethodID, jvalue*);
jdouble (*CallStaticDoubleMethod)(JNIEnv*, jclass, jmethodID, ...);
jdouble (*CallStaticDoubleMethodV)(JNIEnv*, jclass, jmethodID, va_list);
jdouble (*CallStaticDoubleMethodA)(JNIEnv*, jclass, jmethodID, jvalue*);
jfloat (*CallStaticFloatMethod)(JNIEnv*, jclass, jmethodID, ...) __NDK_FPABI__;
jfloat (*CallStaticFloatMethodV)(JNIEnv*, jclass, jmethodID, va_list) __NDK_FPABI__;
jfloat (*CallStaticFloatMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) __NDK_FPABI__;
jdouble (*CallStaticDoubleMethod)(JNIEnv*, jclass, jmethodID, ...) __NDK_FPABI__;
jdouble (*CallStaticDoubleMethodV)(JNIEnv*, jclass, jmethodID, va_list) __NDK_FPABI__;
jdouble (*CallStaticDoubleMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) __NDK_FPABI__;
void (*CallStaticVoidMethod)(JNIEnv*, jclass, jmethodID, ...);
void (*CallStaticVoidMethodV)(JNIEnv*, jclass, jmethodID, va_list);
void (*CallStaticVoidMethodA)(JNIEnv*, jclass, jmethodID, jvalue*);
@@ -369,8 +370,8 @@ struct JNINativeInterface {
jshort (*GetStaticShortField)(JNIEnv*, jclass, jfieldID);
jint (*GetStaticIntField)(JNIEnv*, jclass, jfieldID);
jlong (*GetStaticLongField)(JNIEnv*, jclass, jfieldID);
jfloat (*GetStaticFloatField)(JNIEnv*, jclass, jfieldID);
jdouble (*GetStaticDoubleField)(JNIEnv*, jclass, jfieldID);
jfloat (*GetStaticFloatField)(JNIEnv*, jclass, jfieldID) __NDK_FPABI__;
jdouble (*GetStaticDoubleField)(JNIEnv*, jclass, jfieldID) __NDK_FPABI__;
void (*SetStaticObjectField)(JNIEnv*, jclass, jfieldID, jobject);
void (*SetStaticBooleanField)(JNIEnv*, jclass, jfieldID, jboolean);
@@ -379,8 +380,8 @@ struct JNINativeInterface {
void (*SetStaticShortField)(JNIEnv*, jclass, jfieldID, jshort);
void (*SetStaticIntField)(JNIEnv*, jclass, jfieldID, jint);
void (*SetStaticLongField)(JNIEnv*, jclass, jfieldID, jlong);
void (*SetStaticFloatField)(JNIEnv*, jclass, jfieldID, jfloat);
void (*SetStaticDoubleField)(JNIEnv*, jclass, jfieldID, jdouble);
void (*SetStaticFloatField)(JNIEnv*, jclass, jfieldID, jfloat) __NDK_FPABI__;
void (*SetStaticDoubleField)(JNIEnv*, jclass, jfieldID, jdouble) __NDK_FPABI__;
jstring (*NewString)(JNIEnv*, const jchar*, jsize);
jsize (*GetStringLength)(JNIEnv*, jstring);
@@ -605,6 +606,7 @@ struct _JNIEnv {
{ return functions->GetMethodID(this, clazz, name, sig); }
#define CALL_TYPE_METHOD(_jtype, _jname) \
__NDK_FPABI__ \
_jtype Call##_jname##Method(jobject obj, jmethodID methodID, ...) \
{ \
_jtype result; \
@@ -616,10 +618,12 @@ struct _JNIEnv {
return result; \
}
#define CALL_TYPE_METHODV(_jtype, _jname) \
__NDK_FPABI__ \
_jtype Call##_jname##MethodV(jobject obj, jmethodID methodID, \
va_list args) \
{ return functions->Call##_jname##MethodV(this, obj, methodID, args); }
#define CALL_TYPE_METHODA(_jtype, _jname) \
__NDK_FPABI__ \
_jtype Call##_jname##MethodA(jobject obj, jmethodID methodID, \
jvalue* args) \
{ return functions->Call##_jname##MethodA(this, obj, methodID, args); }
@@ -652,6 +656,7 @@ struct _JNIEnv {
{ functions->CallVoidMethodA(this, obj, methodID, args); }
#define CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \
__NDK_FPABI__ \
_jtype CallNonvirtual##_jname##Method(jobject obj, jclass clazz, \
jmethodID methodID, ...) \
{ \
@@ -664,11 +669,13 @@ struct _JNIEnv {
return result; \
}
#define CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \
__NDK_FPABI__ \
_jtype CallNonvirtual##_jname##MethodV(jobject obj, jclass clazz, \
jmethodID methodID, va_list args) \
{ return functions->CallNonvirtual##_jname##MethodV(this, obj, clazz, \
methodID, args); }
#define CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) \
__NDK_FPABI__ \
_jtype CallNonvirtual##_jname##MethodA(jobject obj, jclass clazz, \
jmethodID methodID, jvalue* args) \
{ return functions->CallNonvirtual##_jname##MethodA(this, obj, clazz, \
@@ -721,8 +728,10 @@ struct _JNIEnv {
{ return functions->GetIntField(this, obj, fieldID); }
jlong GetLongField(jobject obj, jfieldID fieldID)
{ return functions->GetLongField(this, obj, fieldID); }
__NDK_FPABI__
jfloat GetFloatField(jobject obj, jfieldID fieldID)
{ return functions->GetFloatField(this, obj, fieldID); }
__NDK_FPABI__
jdouble GetDoubleField(jobject obj, jfieldID fieldID)
{ return functions->GetDoubleField(this, obj, fieldID); }
@@ -740,8 +749,10 @@ struct _JNIEnv {
{ functions->SetIntField(this, obj, fieldID, value); }
void SetLongField(jobject obj, jfieldID fieldID, jlong value)
{ functions->SetLongField(this, obj, fieldID, value); }
__NDK_FPABI__
void SetFloatField(jobject obj, jfieldID fieldID, jfloat value)
{ functions->SetFloatField(this, obj, fieldID, value); }
__NDK_FPABI__
void SetDoubleField(jobject obj, jfieldID fieldID, jdouble value)
{ functions->SetDoubleField(this, obj, fieldID, value); }
@@ -749,6 +760,7 @@ struct _JNIEnv {
{ return functions->GetStaticMethodID(this, clazz, name, sig); }
#define CALL_STATIC_TYPE_METHOD(_jtype, _jname) \
__NDK_FPABI__ \
_jtype CallStatic##_jname##Method(jclass clazz, jmethodID methodID, \
...) \
{ \
@@ -761,11 +773,13 @@ struct _JNIEnv {
return result; \
}
#define CALL_STATIC_TYPE_METHODV(_jtype, _jname) \
__NDK_FPABI__ \
_jtype CallStatic##_jname##MethodV(jclass clazz, jmethodID methodID, \
va_list args) \
{ return functions->CallStatic##_jname##MethodV(this, clazz, methodID, \
args); }
#define CALL_STATIC_TYPE_METHODA(_jtype, _jname) \
__NDK_FPABI__ \
_jtype CallStatic##_jname##MethodA(jclass clazz, jmethodID methodID, \
jvalue* args) \
{ return functions->CallStatic##_jname##MethodA(this, clazz, methodID, \
@@ -815,8 +829,10 @@ struct _JNIEnv {
{ return functions->GetStaticIntField(this, clazz, fieldID); }
jlong GetStaticLongField(jclass clazz, jfieldID fieldID)
{ return functions->GetStaticLongField(this, clazz, fieldID); }
__NDK_FPABI__
jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID)
{ return functions->GetStaticFloatField(this, clazz, fieldID); }
__NDK_FPABI__
jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID)
{ return functions->GetStaticDoubleField(this, clazz, fieldID); }
@@ -834,8 +850,10 @@ struct _JNIEnv {
{ functions->SetStaticIntField(this, clazz, fieldID, value); }
void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value)
{ functions->SetStaticLongField(this, clazz, fieldID, value); }
__NDK_FPABI__
void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value)
{ functions->SetStaticFloatField(this, clazz, fieldID, value); }
__NDK_FPABI__
void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value)
{ functions->SetStaticDoubleField(this, clazz, fieldID, value); }

View File

@@ -183,219 +183,219 @@ __BEGIN_DECLS
/*
* 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 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 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 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 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 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 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 */
/*
@@ -403,82 +403,82 @@ float significandf(float);
*/
/* #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 nanl(const char *) __pure2;
long double nearbyintl(long double);
long double modfl(long double, long double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
long double nanl(const char *) __NDK_FPABI_MATH__ __pure2;
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__;
/* #endif */ /* __ISO_C_VISIBLE >= 1999 */
__END_DECLS

View File

@@ -63,8 +63,9 @@ extern long strtol(const char *, char **, int);
extern long long strtoll(const char *, char **, int);
extern unsigned long strtoul(const char *, char **, int);
extern unsigned long long strtoull(const char *, char **, int);
extern double strtod(const char *nptr, char **endptr);
extern double strtod(const char *nptr, char **endptr) __NDK_FPABI__;
__NDK_FPABI__
static __inline__ float strtof(const char *nptr, char **endptr)
{
return (float)strtod(nptr, endptr);
@@ -74,6 +75,7 @@ extern int atoi(const char *);
extern long atol(const char *);
extern long long atoll(const char *);
__NDK_FPABI__
static __inline__ double atof(const char *nptr)
{
return (strtod(nptr, NULL));
@@ -105,8 +107,8 @@ extern long mrand48(void);
extern long nrand48(unsigned short *);
extern long lrand48(void);
extern unsigned short *seed48(unsigned short*);
extern double erand48(unsigned short xsubi[3]);
extern double drand48(void);
extern double erand48(unsigned short xsubi[3]) __NDK_FPABI__;
extern double drand48(void) __NDK_FPABI__;
extern void srand48(long);
extern unsigned int arc4random(void);
extern void arc4random_stir(void);

View File

@@ -530,4 +530,31 @@
#define __BIONIC__ 1
#include <android/api-level.h>
/* __NDK_FPABI__ or __NDK_FPABI_MATH__ are applied to APIs taking or returning float or
[long] double, to ensure even at the presence of -mhard-float (which implies
-mfloat-abi=hard), calling to 32-bit Android native APIs still follow -mfloat-abi=softfp.
__NDK_FPABI_MATH__ is applied to APIs in math.h. It normally equals to __NDK_FPABI__,
but allows use of customized libm.a compiled with -mhard-float by -D_NDK_MATH_NO_SOFTFP=1
NOTE: Disable for clang for now unless _NDK_MATH_NO_SOFTFP=1, because clang before 3.4 doesn't
allow change of calling convension for builtin and produces error message reads:
a.i:564:6: error: function declared 'aapcs' here was previously declared without calling convention
int sin(double d) __attribute__((pcs("aapcs")));
^
a.i:564:6: note: previous declaration is here
*/
#if defined(__ANDROID__) && !__LP64__ && defined( __arm__)
#define __NDK_FPABI__ __attribute__((pcs("aapcs")))
#else
#define __NDK_FPABI__
#endif
#if (!defined(_NDK_MATH_NO_SOFTFP) || _NDK_MATH_NO_SOFTFP != 1) && !defined(__clang__)
#define __NDK_FPABI_MATH__ __NDK_FPABI__
#else
#define __NDK_FPABI_MATH__ /* nothing */
#endif
#endif /* !_SYS_CDEFS_H_ */

View File

@@ -67,7 +67,7 @@ extern char* asctime(const struct tm* a);
extern char* asctime_r(const struct tm* a, char* buf);
/* Return the difference between TIME1 and TIME0. */
extern double difftime (time_t __time1, time_t __time0);
extern double difftime (time_t __time1, time_t __time0) __NDK_FPABI__;
extern time_t mktime (struct tm *a);
extern struct tm* localtime(const time_t *t);

View File

@@ -134,7 +134,7 @@ extern wchar_t *wcsrchr(const wchar_t *, wchar_t);
extern size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
extern size_t wcsspn(const wchar_t *, const wchar_t *);
extern wchar_t *wcsstr(const wchar_t *, const wchar_t *);
extern double wcstod(const wchar_t *, wchar_t **);
extern double wcstod(const wchar_t *, wchar_t **) __NDK_FPABI__;
extern wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **);
extern long int wcstol(const wchar_t *, wchar_t **, int);
extern unsigned long int wcstoul(const wchar_t *, wchar_t **, int);

View File

@@ -92,7 +92,8 @@
#elif defined (__SYMBIAN32__)
# define KHRONOS_APICALL IMPORT_C
#elif defined(__ANDROID__)
# define KHRONOS_APICALL __attribute__((visibility("default")))
# include <sys/cdefs.h>
# define KHRONOS_APICALL __attribute__((visibility("default"))) __NDK_FPABI__
#else
# define KHRONOS_APICALL
#endif

View File

@@ -64,8 +64,9 @@ extern long strtol(const char *, char **, int);
extern long long strtoll(const char *, char **, int);
extern unsigned long strtoul(const char *, char **, int);
extern unsigned long long strtoull(const char *, char **, int);
extern double strtod(const char *nptr, char **endptr);
extern double strtod(const char *nptr, char **endptr) __NDK_FPABI__;
__NDK_FPABI__
static __inline__ float strtof(const char *nptr, char **endptr)
{
return (float)strtod(nptr, endptr);
@@ -75,6 +76,7 @@ extern int atoi(const char *);
extern long atol(const char *);
extern long long atoll(const char *);
__NDK_FPABI__
static __inline__ double atof(const char *nptr)
{
return (strtod(nptr, NULL));
@@ -106,8 +108,8 @@ extern long mrand48(void);
extern long nrand48(unsigned short *);
extern long lrand48(void);
extern unsigned short *seed48(unsigned short*);
extern double erand48(unsigned short xsubi[3]);
extern double drand48(void);
extern double erand48(unsigned short xsubi[3]) __NDK_FPABI__;
extern double drand48(void) __NDK_FPABI__;
extern void srand48(long);
extern unsigned int arc4random(void);
extern void arc4random_stir(void);

View File

@@ -67,7 +67,7 @@ extern char* asctime(const struct tm* a);
extern char* asctime_r(const struct tm* a, char* buf);
/* Return the difference between TIME1 and TIME0. */
extern double difftime (time_t __time1, time_t __time0);
extern double difftime (time_t __time1, time_t __time0) __NDK_FPABI__;
extern time_t mktime (struct tm *a);
extern struct tm* localtime(const time_t *t);

View File

@@ -140,7 +140,7 @@ extern wchar_t *wcsrchr(const wchar_t *, wchar_t);
extern size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
extern size_t wcsspn(const wchar_t *, const wchar_t *);
extern wchar_t *wcsstr(const wchar_t *, const wchar_t *);
extern double wcstod(const wchar_t *, wchar_t **);
extern double wcstod(const wchar_t *, wchar_t **) __NDK_FPABI__;
extern wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **);
extern long int wcstol(const wchar_t *, wchar_t **, int);
extern size_t wcstombs(char *, const wchar_t *, size_t);

View File

@@ -433,23 +433,23 @@ int64_t AMotionEvent_getEventTime(const AInputEvent* motion_event);
* 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. */
@@ -465,29 +465,29 @@ int32_t AMotionEvent_getPointerId(const AInputEvent* motion_event, size_t pointe
* 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
@@ -495,27 +495,27 @@ float AMotionEvent_getPressure(const AInputEvent* motion_event, size_t pointer_i
* 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.
@@ -525,7 +525,7 @@ float AMotionEvent_getToolMinor(const AInputEvent* motion_event, size_t pointer_
* 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 number of historical points in this event. These are movements that
* have occurred between this event and the previous event. This only applies
@@ -546,7 +546,7 @@ int64_t AMotionEvent_getHistoricalEventTime(const AInputEvent* motion_event,
* 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.
@@ -556,21 +556,21 @@ float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t poi
* 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.
@@ -578,7 +578,7 @@ float AMotionEvent_getHistoricalY(const AInputEvent* motion_event, size_t pointe
* 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.
@@ -588,19 +588,19 @@ float AMotionEvent_getHistoricalPressure(const AInputEvent* motion_event, size_t
* 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
@@ -608,7 +608,7 @@ float AMotionEvent_getHistoricalTouchMinor(const AInputEvent* motion_event, size
* 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
@@ -616,7 +616,7 @@ float AMotionEvent_getHistoricalToolMajor(const AInputEvent* motion_event, size_
* 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
@@ -628,7 +628,7 @@ float AMotionEvent_getHistoricalToolMinor(const AInputEvent* motion_event, size_
* 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__;
/*

View File

@@ -239,7 +239,7 @@ int ASensor_getType(ASensor const* sensor);
/*
* Returns this sensors's resolution
*/
float ASensor_getResolution(ASensor const* sensor);
float ASensor_getResolution(ASensor const* sensor) __NDK_FPABI__;
/*
* Returns the minimum delay allowed between events in microseconds.

View File

@@ -183,219 +183,219 @@ __BEGIN_DECLS
/*
* 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 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 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 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 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 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 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 */
/*
@@ -403,88 +403,88 @@ float significandf(float);
*/
/* #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 nanl(const char *) __pure2;
long double nearbyintl(long double);
long double modfl(long double, long double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
long double nanl(const char *) __NDK_FPABI_MATH__ __pure2;
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 */

View File

@@ -64,8 +64,9 @@ extern long strtol(const char *, char **, int);
extern long long strtoll(const char *, char **, int);
extern unsigned long strtoul(const char *, char **, int);
extern unsigned long long strtoull(const char *, char **, int);
extern double strtod(const char *nptr, char **endptr);
extern double strtod(const char *nptr, char **endptr) __NDK_FPABI__;
__NDK_FPABI__
static __inline__ float strtof(const char *nptr, char **endptr)
{
return (float)strtod(nptr, endptr);
@@ -75,6 +76,7 @@ extern int atoi(const char *);
extern long atol(const char *);
extern long long atoll(const char *);
__NDK_FPABI__
static __inline__ double atof(const char *nptr)
{
return (strtod(nptr, NULL));
@@ -106,8 +108,8 @@ extern long mrand48(void);
extern long nrand48(unsigned short *);
extern long lrand48(void);
extern unsigned short *seed48(unsigned short*);
extern double erand48(unsigned short xsubi[3]);
extern double drand48(void);
extern double erand48(unsigned short xsubi[3]) __NDK_FPABI__;
extern double drand48(void) __NDK_FPABI__;
extern void srand48(long);
extern unsigned int arc4random(void);
extern void arc4random_stir(void);

View File

@@ -499,4 +499,31 @@
#define __BIONIC__ 1
#include <android/api-level.h>
/* __NDK_FPABI__ or __NDK_FPABI_MATH__ are applied to APIs taking or returning float or
[long] double, to ensure even at the presence of -mhard-float (which implies
-mfloat-abi=hard), calling to 32-bit Android native APIs still follow -mfloat-abi=softfp.
__NDK_FPABI_MATH__ is applied to APIs in math.h. It normally equals to __NDK_FPABI__,
but allows use of customized libm.a compiled with -mhard-float by -D_NDK_MATH_NO_SOFTFP=1
NOTE: Disable for clang for now unless _NDK_MATH_NO_SOFTFP=1, because clang before 3.4 doesn't
allow change of calling convension for builtin and produces error message reads:
a.i:564:6: error: function declared 'aapcs' here was previously declared without calling convention
int sin(double d) __attribute__((pcs("aapcs")));
^
a.i:564:6: note: previous declaration is here
*/
#if defined(__ANDROID__) && !__LP64__ && defined( __arm__)
#define __NDK_FPABI__ __attribute__((pcs("aapcs")))
#else
#define __NDK_FPABI__
#endif
#if (!defined(_NDK_MATH_NO_SOFTFP) || _NDK_MATH_NO_SOFTFP != 1) && !defined(__clang__)
#define __NDK_FPABI_MATH__ __NDK_FPABI__
#else
#define __NDK_FPABI_MATH__ /* nothing */
#endif
#endif /* !_SYS_CDEFS_H_ */

View File

@@ -121,7 +121,7 @@ extern wchar_t *wcsrchr(const wchar_t *, wchar_t);
extern size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
extern size_t wcsspn(const wchar_t *, const wchar_t *);
extern wchar_t *wcsstr(const wchar_t *, const wchar_t *);
extern double wcstod(const wchar_t *, wchar_t **);
extern double wcstod(const wchar_t *, wchar_t **) __NDK_FPABI__;
extern wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **);
extern long int wcstol(const wchar_t *, wchar_t **, int);
extern size_t wcstombs(char *, const wchar_t *, size_t);