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

View File

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

View File

@@ -183,219 +183,219 @@ __BEGIN_DECLS
/* /*
* ANSI/POSIX * ANSI/POSIX
*/ */
int __fpclassifyd(double) __pure2; int __fpclassifyd(double) __NDK_FPABI_MATH__ __pure2;
int __fpclassifyf(float) __pure2; int __fpclassifyf(float) __NDK_FPABI_MATH__ __pure2;
int __fpclassifyl(long double) __pure2; int __fpclassifyl(long double) __NDK_FPABI_MATH__ __pure2;
int __isfinitef(float) __pure2; int __isfinitef(float) __NDK_FPABI_MATH__ __pure2;
int __isfinite(double) __pure2; int __isfinite(double) __NDK_FPABI_MATH__ __pure2;
int __isfinitel(long double) __pure2; int __isfinitel(long double) __NDK_FPABI_MATH__ __pure2;
int __isinff(float) __pure2; int __isinff(float) __NDK_FPABI_MATH__ __pure2;
int __isinf(double) __pure2; int __isinf(double) __NDK_FPABI_MATH__ __pure2;
int __isinfl(long double) __pure2; int __isinfl(long double) __NDK_FPABI_MATH__ __pure2;
int __isnanl(long double) __pure2; int __isnanl(long double) __NDK_FPABI_MATH__ __pure2;
int __isnormalf(float) __pure2; int __isnormalf(float) __NDK_FPABI_MATH__ __pure2;
int __isnormal(double) __pure2; int __isnormal(double) __NDK_FPABI_MATH__ __pure2;
int __isnormall(long double) __pure2; int __isnormall(long double) __NDK_FPABI_MATH__ __pure2;
int __signbit(double) __pure2; int __signbit(double) __NDK_FPABI_MATH__ __pure2;
int __signbitf(float) __pure2; int __signbitf(float) __NDK_FPABI_MATH__ __pure2;
int __signbitl(long double) __pure2; int __signbitl(long double) __NDK_FPABI_MATH__ __pure2;
double acos(double); double acos(double) __NDK_FPABI_MATH__;
double asin(double); double asin(double) __NDK_FPABI_MATH__;
double atan(double); double atan(double) __NDK_FPABI_MATH__;
double atan2(double, double); double atan2(double, double) __NDK_FPABI_MATH__;
double cos(double); double cos(double) __NDK_FPABI_MATH__;
double sin(double); double sin(double) __NDK_FPABI_MATH__;
double tan(double); double tan(double) __NDK_FPABI_MATH__;
double cosh(double); double cosh(double) __NDK_FPABI_MATH__;
double sinh(double); double sinh(double) __NDK_FPABI_MATH__;
double tanh(double); double tanh(double) __NDK_FPABI_MATH__;
double exp(double); double exp(double) __NDK_FPABI_MATH__;
double frexp(double, int *); /* fundamentally !__pure2 */ double frexp(double, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
double ldexp(double, int); double ldexp(double, int) __NDK_FPABI_MATH__;
double log(double); double log(double) __NDK_FPABI_MATH__;
double log10(double); double log10(double) __NDK_FPABI_MATH__;
double modf(double, double *); /* fundamentally !__pure2 */ double modf(double, double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
double pow(double, double); double pow(double, double) __NDK_FPABI_MATH__;
double sqrt(double); double sqrt(double) __NDK_FPABI_MATH__;
double ceil(double); double ceil(double) __NDK_FPABI_MATH__;
double fabs(double) __pure2; double fabs(double) __NDK_FPABI_MATH__ __pure2;
double floor(double); double floor(double) __NDK_FPABI_MATH__;
double fmod(double, double); double fmod(double, double) __NDK_FPABI_MATH__;
/* /*
* These functions are not in C90. * These functions are not in C90.
*/ */
/* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */ /* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
double acosh(double); double acosh(double) __NDK_FPABI_MATH__;
double asinh(double); double asinh(double) __NDK_FPABI_MATH__;
double atanh(double); double atanh(double) __NDK_FPABI_MATH__;
double cbrt(double); double cbrt(double) __NDK_FPABI_MATH__;
double erf(double); double erf(double) __NDK_FPABI_MATH__;
double erfc(double); double erfc(double) __NDK_FPABI_MATH__;
double exp2(double); double exp2(double) __NDK_FPABI_MATH__;
double expm1(double); double expm1(double) __NDK_FPABI_MATH__;
double fma(double, double, double); double fma(double, double, double) __NDK_FPABI_MATH__;
double hypot(double, double); double hypot(double, double) __NDK_FPABI_MATH__;
int ilogb(double) __pure2; int ilogb(double) __NDK_FPABI_MATH__ __pure2;
/* int (isinf)(double) __pure2; */ /* int (isinf)(double) __NDK_FPABI_MATH__ __pure2; */
int (isnan)(double) __pure2; int (isnan)(double) __NDK_FPABI_MATH__ __pure2;
double lgamma(double); double lgamma(double) __NDK_FPABI_MATH__;
long long llrint(double); long long llrint(double) __NDK_FPABI_MATH__;
long long llround(double); long long llround(double) __NDK_FPABI_MATH__;
double log1p(double); double log1p(double) __NDK_FPABI_MATH__;
double logb(double); double logb(double) __NDK_FPABI_MATH__;
long lrint(double); long lrint(double) __NDK_FPABI_MATH__;
long lround(double); long lround(double) __NDK_FPABI_MATH__;
double nextafter(double, double); double nextafter(double, double) __NDK_FPABI_MATH__;
double remainder(double, double); double remainder(double, double) __NDK_FPABI_MATH__;
double remquo(double, double, int *); double remquo(double, double, int *) __NDK_FPABI_MATH__;
double rint(double); double rint(double) __NDK_FPABI_MATH__;
/* #endif */ /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */ /* #endif */ /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
/* #if __BSD_VISIBLE || __XSI_VISIBLE */ /* #if __BSD_VISIBLE || __XSI_VISIBLE */
double j0(double); double j0(double) __NDK_FPABI_MATH__;
double j1(double); double j1(double) __NDK_FPABI_MATH__;
double jn(int, double); double jn(int, double) __NDK_FPABI_MATH__;
double scalb(double, double); double scalb(double, double) __NDK_FPABI_MATH__;
double y0(double); double y0(double) __NDK_FPABI_MATH__;
double y1(double); double y1(double) __NDK_FPABI_MATH__;
double yn(int, double); double yn(int, double) __NDK_FPABI_MATH__;
/* #if __XSI_VISIBLE <= 500 || __BSD_VISIBLE */ /* #if __XSI_VISIBLE <= 500 || __BSD_VISIBLE */
double gamma(double); double gamma(double) __NDK_FPABI_MATH__;
/* #endif */ /* #endif */
/* #endif */ /* __BSD_VISIBLE || __XSI_VISIBLE */ /* #endif */ /* __BSD_VISIBLE || __XSI_VISIBLE */
/* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 */ /* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 */
double copysign(double, double) __pure2; double copysign(double, double) __NDK_FPABI_MATH__ __pure2;
double fdim(double, double); double fdim(double, double) __NDK_FPABI_MATH__;
double fmax(double, double) __pure2; double fmax(double, double) __NDK_FPABI_MATH__ __pure2;
double fmin(double, double) __pure2; double fmin(double, double) __NDK_FPABI_MATH__ __pure2;
double nearbyint(double); double nearbyint(double) __NDK_FPABI_MATH__;
double round(double); double round(double) __NDK_FPABI_MATH__;
double scalbln(double, long); double scalbln(double, long) __NDK_FPABI_MATH__;
double scalbn(double, int); double scalbn(double, int) __NDK_FPABI_MATH__;
double tgamma(double); double tgamma(double) __NDK_FPABI_MATH__;
double trunc(double); double trunc(double) __NDK_FPABI_MATH__;
/* #endif */ /* #endif */
/* /*
* BSD math library entry points * BSD math library entry points
*/ */
/* #if __BSD_VISIBLE */ /* #if __BSD_VISIBLE */
double drem(double, double); double drem(double, double) __NDK_FPABI_MATH__;
int finite(double) __pure2; int finite(double) __NDK_FPABI_MATH__ __pure2;
int isnanf(float) __pure2; int isnanf(float) __NDK_FPABI_MATH__ __pure2;
/* /*
* Reentrant version of gamma & lgamma; passes signgam back by reference * Reentrant version of gamma & lgamma; passes signgam back by reference
* as the second argument; user must allocate space for signgam. * as the second argument; user must allocate space for signgam.
*/ */
double gamma_r(double, int *); double gamma_r(double, int *) __NDK_FPABI_MATH__;
double lgamma_r(double, int *); double lgamma_r(double, int *) __NDK_FPABI_MATH__;
/* /*
* IEEE Test Vector * IEEE Test Vector
*/ */
double significand(double); double significand(double) __NDK_FPABI_MATH__;
/* #endif */ /* __BSD_VISIBLE */ /* #endif */ /* __BSD_VISIBLE */
/* float versions of ANSI/POSIX functions */ /* float versions of ANSI/POSIX functions */
/*#if __ISO_C_VISIBLE >= 1999 */ /*#if __ISO_C_VISIBLE >= 1999 */
float acosf(float); float acosf(float) __NDK_FPABI_MATH__;
float asinf(float); float asinf(float) __NDK_FPABI_MATH__;
float atanf(float); float atanf(float) __NDK_FPABI_MATH__;
float atan2f(float, float); float atan2f(float, float) __NDK_FPABI_MATH__;
float cosf(float); float cosf(float) __NDK_FPABI_MATH__;
float sinf(float); float sinf(float) __NDK_FPABI_MATH__;
float tanf(float); float tanf(float) __NDK_FPABI_MATH__;
float coshf(float); float coshf(float) __NDK_FPABI_MATH__;
float sinhf(float); float sinhf(float) __NDK_FPABI_MATH__;
float tanhf(float); float tanhf(float) __NDK_FPABI_MATH__;
float exp2f(float); float exp2f(float) __NDK_FPABI_MATH__;
float expf(float); float expf(float) __NDK_FPABI_MATH__;
float expm1f(float); float expm1f(float) __NDK_FPABI_MATH__;
float frexpf(float, int *); /* fundamentally !__pure2 */ float frexpf(float, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
int ilogbf(float) __pure2; int ilogbf(float) __NDK_FPABI_MATH__ __pure2;
float ldexpf(float, int); float ldexpf(float, int) __NDK_FPABI_MATH__;
float log10f(float); float log10f(float) __NDK_FPABI_MATH__;
float log1pf(float); float log1pf(float) __NDK_FPABI_MATH__;
float logf(float); float logf(float) __NDK_FPABI_MATH__;
float modff(float, float *); /* fundamentally !__pure2 */ float modff(float, float *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
float powf(float, float); float powf(float, float) __NDK_FPABI_MATH__;
float sqrtf(float); float sqrtf(float) __NDK_FPABI_MATH__;
float ceilf(float); float ceilf(float) __NDK_FPABI_MATH__;
float fabsf(float) __pure2; float fabsf(float) __NDK_FPABI_MATH__ __pure2;
float floorf(float); float floorf(float) __NDK_FPABI_MATH__;
float fmodf(float, float); float fmodf(float, float) __NDK_FPABI_MATH__;
float roundf(float); float roundf(float) __NDK_FPABI_MATH__;
float erff(float); float erff(float) __NDK_FPABI_MATH__;
float erfcf(float); float erfcf(float) __NDK_FPABI_MATH__;
float hypotf(float, float); float hypotf(float, float) __NDK_FPABI_MATH__;
float lgammaf(float); float lgammaf(float) __NDK_FPABI_MATH__;
float acoshf(float); float acoshf(float) __NDK_FPABI_MATH__;
float asinhf(float); float asinhf(float) __NDK_FPABI_MATH__;
float atanhf(float); float atanhf(float) __NDK_FPABI_MATH__;
float cbrtf(float); float cbrtf(float) __NDK_FPABI_MATH__;
float logbf(float); float logbf(float) __NDK_FPABI_MATH__;
float copysignf(float, float) __pure2; float copysignf(float, float) __NDK_FPABI_MATH__ __pure2;
long long llrintf(float); long long llrintf(float) __NDK_FPABI_MATH__;
long long llroundf(float); long long llroundf(float) __NDK_FPABI_MATH__;
long lrintf(float); long lrintf(float) __NDK_FPABI_MATH__;
long lroundf(float); long lroundf(float) __NDK_FPABI_MATH__;
float nearbyintf(float); float nearbyintf(float) __NDK_FPABI_MATH__;
float nextafterf(float, float); float nextafterf(float, float) __NDK_FPABI_MATH__;
float remainderf(float, float); float remainderf(float, float) __NDK_FPABI_MATH__;
float remquof(float, float, int *); float remquof(float, float, int *) __NDK_FPABI_MATH__;
float rintf(float); float rintf(float) __NDK_FPABI_MATH__;
float scalblnf(float, long); float scalblnf(float, long) __NDK_FPABI_MATH__;
float scalbnf(float, int); float scalbnf(float, int) __NDK_FPABI_MATH__;
float truncf(float); float truncf(float) __NDK_FPABI_MATH__;
float fdimf(float, float); float fdimf(float, float) __NDK_FPABI_MATH__;
float fmaf(float, float, float); float fmaf(float, float, float) __NDK_FPABI_MATH__;
float fmaxf(float, float) __pure2; float fmaxf(float, float) __NDK_FPABI_MATH__ __pure2;
float fminf(float, float) __pure2; float fminf(float, float) __NDK_FPABI_MATH__ __pure2;
/* #endif */ /* #endif */
/* /*
* float versions of BSD math library entry points * float versions of BSD math library entry points
*/ */
/* #if __BSD_VISIBLE */ /* #if __BSD_VISIBLE */
float dremf(float, float); float dremf(float, float) __NDK_FPABI_MATH__;
int finitef(float) __pure2; int finitef(float) __NDK_FPABI_MATH__ __pure2;
float gammaf(float); float gammaf(float) __NDK_FPABI_MATH__;
float j0f(float); float j0f(float) __NDK_FPABI_MATH__;
float j1f(float); float j1f(float) __NDK_FPABI_MATH__;
float jnf(int, float); float jnf(int, float) __NDK_FPABI_MATH__;
float scalbf(float, float); float scalbf(float, float) __NDK_FPABI_MATH__;
float y0f(float); float y0f(float) __NDK_FPABI_MATH__;
float y1f(float); float y1f(float) __NDK_FPABI_MATH__;
float ynf(int, float); float ynf(int, float) __NDK_FPABI_MATH__;
/* /*
* Float versions of reentrant version of gamma & lgamma; passes * Float versions of reentrant version of gamma & lgamma; passes
* signgam back by reference as the second argument; user must * signgam back by reference as the second argument; user must
* allocate space for signgam. * allocate space for signgam.
*/ */
float gammaf_r(float, int *); float gammaf_r(float, int *) __NDK_FPABI_MATH__;
float lgammaf_r(float, int *); float lgammaf_r(float, int *) __NDK_FPABI_MATH__;
/* /*
* float version of IEEE Test Vector * float version of IEEE Test Vector
*/ */
float significandf(float); float significandf(float) __NDK_FPABI_MATH__;
/* #endif */ /* __BSD_VISIBLE */ /* #endif */ /* __BSD_VISIBLE */
/* /*
@@ -403,82 +403,82 @@ float significandf(float);
*/ */
/* #if __ISO_C_VISIBLE >= 1999 */ /* #if __ISO_C_VISIBLE >= 1999 */
#if 0 #if 0
long double acoshl(long double); long double acoshl(long double) __NDK_FPABI_MATH__;
long double acosl(long double); long double acosl(long double) __NDK_FPABI_MATH__;
long double asinhl(long double); long double asinhl(long double) __NDK_FPABI_MATH__;
long double asinl(long double); long double asinl(long double) __NDK_FPABI_MATH__;
long double atan2l(long double, long double); long double atan2l(long double, long double) __NDK_FPABI_MATH__;
long double atanhl(long double); long double atanhl(long double) __NDK_FPABI_MATH__;
long double atanl(long double); long double atanl(long double) __NDK_FPABI_MATH__;
long double cbrtl(long double); long double cbrtl(long double) __NDK_FPABI_MATH__;
#endif #endif
long double ceill(long double); long double ceill(long double) __NDK_FPABI_MATH__;
long double copysignl(long double, long double) __pure2; long double copysignl(long double, long double) __NDK_FPABI_MATH__ __pure2;
#if 0 #if 0
long double coshl(long double); long double coshl(long double) __NDK_FPABI_MATH__;
long double cosl(long double); long double cosl(long double) __NDK_FPABI_MATH__;
long double erfcl(long double); long double erfcl(long double) __NDK_FPABI_MATH__;
long double erfl(long double); long double erfl(long double) __NDK_FPABI_MATH__;
long double exp2l(long double); long double exp2l(long double) __NDK_FPABI_MATH__;
long double expl(long double); long double expl(long double) __NDK_FPABI_MATH__;
long double expm1l(long double); long double expm1l(long double) __NDK_FPABI_MATH__;
#endif #endif
long double fabsl(long double) __pure2; long double fabsl(long double) __NDK_FPABI_MATH__ __pure2;
long double fdiml(long double, long double); long double fdiml(long double, long double) __NDK_FPABI_MATH__;
long double floorl(long double); long double floorl(long double) __NDK_FPABI_MATH__;
long double fmal(long double, long double, long double); long double fmal(long double, long double, long double) __NDK_FPABI_MATH__;
long double fmaxl(long double, long double) __pure2; long double fmaxl(long double, long double) __NDK_FPABI_MATH__ __pure2;
long double fminl(long double, long double) __pure2; long double fminl(long double, long double) __NDK_FPABI_MATH__ __pure2;
#if 0 #if 0
long double fmodl(long double, long double); long double fmodl(long double, long double) __NDK_FPABI_MATH__;
#endif #endif
long double frexpl(long double value, int *); /* fundamentally !__pure2 */ long double frexpl(long double value, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
#if 0 #if 0
long double hypotl(long double, long double); long double hypotl(long double, long double) __NDK_FPABI_MATH__;
#endif #endif
int ilogbl(long double) __pure2; int ilogbl(long double) __NDK_FPABI_MATH__ __pure2;
long double ldexpl(long double, int); long double ldexpl(long double, int) __NDK_FPABI_MATH__;
#if 0 #if 0
long double lgammal(long double); long double lgammal(long double) __NDK_FPABI_MATH__;
long long llrintl(long double); long long llrintl(long double) __NDK_FPABI_MATH__;
#endif #endif
long long llroundl(long double); long long llroundl(long double) __NDK_FPABI_MATH__;
#if 0 #if 0
long double log10l(long double); long double log10l(long double) __NDK_FPABI_MATH__;
long double log1pl(long double); long double log1pl(long double) __NDK_FPABI_MATH__;
long double log2l(long double); long double log2l(long double) __NDK_FPABI_MATH__;
long double logbl(long double); long double logbl(long double) __NDK_FPABI_MATH__;
long double logl(long double); long double logl(long double) __NDK_FPABI_MATH__;
long lrintl(long double); long lrintl(long double) __NDK_FPABI_MATH__;
#endif #endif
long lroundl(long double); long lroundl(long double) __NDK_FPABI_MATH__;
#if 0 #if 0
long double modfl(long double, long double *); /* fundamentally !__pure2 */ long double modfl(long double, long double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
long double nanl(const char *) __pure2; long double nanl(const char *) __NDK_FPABI_MATH__ __pure2;
long double nearbyintl(long double); long double nearbyintl(long double) __NDK_FPABI_MATH__;
#endif #endif
long double nextafterl(long double, long double); long double nextafterl(long double, long double) __NDK_FPABI_MATH__;
double nexttoward(double, long double); double nexttoward(double, long double) __NDK_FPABI_MATH__;
float nexttowardf(float, long double); float nexttowardf(float, long double) __NDK_FPABI_MATH__;
long double nexttowardl(long double, long double); long double nexttowardl(long double, long double) __NDK_FPABI_MATH__;
#if 0 #if 0
long double powl(long double, long double); long double powl(long double, long double) __NDK_FPABI_MATH__;
long double remainderl(long double, long double); long double remainderl(long double, long double) __NDK_FPABI_MATH__;
long double remquol(long double, long double, int *); long double remquol(long double, long double, int *) __NDK_FPABI_MATH__;
long double rintl(long double); long double rintl(long double) __NDK_FPABI_MATH__;
#endif #endif
long double roundl(long double); long double roundl(long double) __NDK_FPABI_MATH__;
long double scalblnl(long double, long); long double scalblnl(long double, long) __NDK_FPABI_MATH__;
long double scalbnl(long double, int); long double scalbnl(long double, int) __NDK_FPABI_MATH__;
#if 0 #if 0
long double sinhl(long double); long double sinhl(long double) __NDK_FPABI_MATH__;
long double sinl(long double); long double sinl(long double) __NDK_FPABI_MATH__;
long double sqrtl(long double); long double sqrtl(long double) __NDK_FPABI_MATH__;
long double tanhl(long double); long double tanhl(long double) __NDK_FPABI_MATH__;
long double tanl(long double); long double tanl(long double) __NDK_FPABI_MATH__;
long double tgammal(long double); long double tgammal(long double) __NDK_FPABI_MATH__;
#endif #endif
long double truncl(long double); long double truncl(long double) __NDK_FPABI_MATH__;
/* #endif */ /* __ISO_C_VISIBLE >= 1999 */ /* #endif */ /* __ISO_C_VISIBLE >= 1999 */
__END_DECLS __END_DECLS

View File

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

View File

@@ -530,4 +530,31 @@
#define __BIONIC__ 1 #define __BIONIC__ 1
#include <android/api-level.h> #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_ */ #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); extern char* asctime_r(const struct tm* a, char* buf);
/* Return the difference between TIME1 and TIME0. */ /* 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 time_t mktime (struct tm *a);
extern struct tm* localtime(const time_t *t); 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 wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
extern size_t wcsspn(const wchar_t *, const wchar_t *); extern size_t wcsspn(const wchar_t *, const wchar_t *);
extern wchar_t *wcsstr(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 wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **);
extern long int wcstol(const wchar_t *, wchar_t **, int); extern long int wcstol(const wchar_t *, wchar_t **, int);
extern unsigned long int wcstoul(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__) #elif defined (__SYMBIAN32__)
# define KHRONOS_APICALL IMPORT_C # define KHRONOS_APICALL IMPORT_C
#elif defined(__ANDROID__) #elif defined(__ANDROID__)
# define KHRONOS_APICALL __attribute__((visibility("default"))) # include <sys/cdefs.h>
# define KHRONOS_APICALL __attribute__((visibility("default"))) __NDK_FPABI__
#else #else
# define KHRONOS_APICALL # define KHRONOS_APICALL
#endif #endif

View File

@@ -64,8 +64,9 @@ extern long strtol(const char *, char **, int);
extern long long strtoll(const char *, char **, int); extern long long strtoll(const char *, char **, int);
extern unsigned long strtoul(const char *, char **, int); extern unsigned long strtoul(const char *, char **, int);
extern unsigned long long strtoull(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) static __inline__ float strtof(const char *nptr, char **endptr)
{ {
return (float)strtod(nptr, endptr); return (float)strtod(nptr, endptr);
@@ -75,6 +76,7 @@ extern int atoi(const char *);
extern long atol(const char *); extern long atol(const char *);
extern long long atoll(const char *); extern long long atoll(const char *);
__NDK_FPABI__
static __inline__ double atof(const char *nptr) static __inline__ double atof(const char *nptr)
{ {
return (strtod(nptr, NULL)); return (strtod(nptr, NULL));
@@ -106,8 +108,8 @@ extern long mrand48(void);
extern long nrand48(unsigned short *); extern long nrand48(unsigned short *);
extern long lrand48(void); extern long lrand48(void);
extern unsigned short *seed48(unsigned short*); extern unsigned short *seed48(unsigned short*);
extern double erand48(unsigned short xsubi[3]); extern double erand48(unsigned short xsubi[3]) __NDK_FPABI__;
extern double drand48(void); extern double drand48(void) __NDK_FPABI__;
extern void srand48(long); extern void srand48(long);
extern unsigned int arc4random(void); extern unsigned int arc4random(void);
extern void arc4random_stir(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); extern char* asctime_r(const struct tm* a, char* buf);
/* Return the difference between TIME1 and TIME0. */ /* 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 time_t mktime (struct tm *a);
extern struct tm* localtime(const time_t *t); 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 wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
extern size_t wcsspn(const wchar_t *, const wchar_t *); extern size_t wcsspn(const wchar_t *, const wchar_t *);
extern wchar_t *wcsstr(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 wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **);
extern long int wcstol(const wchar_t *, wchar_t **, int); extern long int wcstol(const wchar_t *, wchar_t **, int);
extern size_t wcstombs(char *, const wchar_t *, size_t); 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 * 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 * screen coordinates to adjust for the absolute position of the containing windows
* and views. */ * 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. /* 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 * 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 * screen coordinates to adjust for the absolute position of the containing windows
* and views. */ * 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. /* Get the precision of the X coordinates being reported.
* You can multiply this number with an X coordinate sample to find the * You can multiply this number with an X coordinate sample to find the
* actual hardware value of the X coordinate. */ * 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. /* Get the precision of the Y coordinates being reported.
* You can multiply this number with a Y coordinate sample to find the * You can multiply this number with a Y coordinate sample to find the
* actual hardware value of the Y coordinate. */ * 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. /* Get the number of pointers of data contained in this event.
* Always >= 1. */ * 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 * 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 * on the screen, before it had been adjusted for the containing window
* and views. */ * 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. /* Get the original raw X coordinate of this event.
* For touch events on the screen, this is the original location of the 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 * on the screen, before it had been adjusted for the containing window
* and views. */ * 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. /* 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 * Whole numbers are pixels; the value may have a fraction for input devices
* that are sub-pixel precise. */ * 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. /* 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 * Whole numbers are pixels; the value may have a fraction for input devices
* that are sub-pixel precise. */ * 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. /* 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), * 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 * although values higher than 1 may be generated depending on the calibration of
* the input device. */ * 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. /* 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 * 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 * 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 * and scaled to a value between 0 and 1. The value of size can be used to
* determine fat touch events. */ * 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 /* 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. */ * 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 /* 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. */ * 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 /* Get the current length of the major axis of an ellipse that describes the size
* of the approaching tool for the given pointer index. * of the approaching tool for the given pointer index.
* The tool area represents the estimated size of the finger or pen that is * 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. */ * 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 /* Get the current length of the minor axis of an ellipse that describes the size
* of the approaching tool for the given pointer index. * of the approaching tool for the given pointer index.
* The tool area represents the estimated size of the finger or pen that is * 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. */ * 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 /* Get the current orientation of the touch area and tool area in radians clockwise from
* vertical for the given pointer index. * 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. * 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 * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians
* (finger pointing fully right). */ * (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 /* 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 * 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 * Whole numbers are pixels; the value may have a fraction for input devices
* that are sub-pixel precise. */ * that are sub-pixel precise. */
float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t pointer_index, 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 /* Get the historical raw Y coordinate of this event for the given pointer index that
* occurred between this event and the previous motion event. * 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 * Whole numbers are pixels; the value may have a fraction for input devices
* that are sub-pixel precise. */ * that are sub-pixel precise. */
float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, size_t pointer_index, 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 /* Get the historical X coordinate of this event for the given pointer index that
* occurred between this event and the previous motion event. * occurred between this event and the previous motion event.
* Whole numbers are pixels; the value may have a fraction for input devices * Whole numbers are pixels; the value may have a fraction for input devices
* that are sub-pixel precise. */ * that are sub-pixel precise. */
float AMotionEvent_getHistoricalX(const AInputEvent* motion_event, size_t pointer_index, 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 /* Get the historical Y coordinate of this event for the given pointer index that
* occurred between this event and the previous motion event. * occurred between this event and the previous motion event.
* Whole numbers are pixels; the value may have a fraction for input devices * Whole numbers are pixels; the value may have a fraction for input devices
* that are sub-pixel precise. */ * that are sub-pixel precise. */
float AMotionEvent_getHistoricalY(const AInputEvent* motion_event, size_t pointer_index, 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 /* Get the historical pressure of this event for the given pointer index that
* occurred between this event and the previous motion event. * 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 * although values higher than 1 may be generated depending on the calibration of
* the input device. */ * the input device. */
float AMotionEvent_getHistoricalPressure(const AInputEvent* motion_event, size_t pointer_index, 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 /* Get the current scaled value of the approximate size for the given pointer index that
* occurred between this event and the previous motion event. * 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 * and scaled to a value between 0 and 1. The value of size can be used to
* determine fat touch events. */ * determine fat touch events. */
float AMotionEvent_getHistoricalSize(const AInputEvent* motion_event, size_t pointer_index, 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 /* 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 * at the point of contact for the given pointer index that
* occurred between this event and the previous motion event. */ * occurred between this event and the previous motion event. */
float AMotionEvent_getHistoricalTouchMajor(const AInputEvent* motion_event, size_t pointer_index, 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 /* 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 * at the point of contact for the given pointer index that
* occurred between this event and the previous motion event. */ * occurred between this event and the previous motion event. */
float AMotionEvent_getHistoricalTouchMinor(const AInputEvent* motion_event, size_t pointer_index, 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 /* 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 * 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 * 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. */ * 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, 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 /* 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 * 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 * 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. */ * 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, 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 /* Get the historical orientation of the touch area and tool area in radians clockwise from
* vertical for the given pointer index that * 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 * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians
* (finger pointing fully right). */ * (finger pointing fully right). */
float AMotionEvent_getHistoricalOrientation(const AInputEvent* motion_event, size_t pointer_index, 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 * 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. * Returns the minimum delay allowed between events in microseconds.

View File

@@ -183,219 +183,219 @@ __BEGIN_DECLS
/* /*
* ANSI/POSIX * ANSI/POSIX
*/ */
int __fpclassifyd(double) __pure2; int __fpclassifyd(double) __NDK_FPABI_MATH__ __pure2;
int __fpclassifyf(float) __pure2; int __fpclassifyf(float) __NDK_FPABI_MATH__ __pure2;
int __fpclassifyl(long double) __pure2; int __fpclassifyl(long double) __NDK_FPABI_MATH__ __pure2;
int __isfinitef(float) __pure2; int __isfinitef(float) __NDK_FPABI_MATH__ __pure2;
int __isfinite(double) __pure2; int __isfinite(double) __NDK_FPABI_MATH__ __pure2;
int __isfinitel(long double) __pure2; int __isfinitel(long double) __NDK_FPABI_MATH__ __pure2;
int __isinff(float) __pure2; int __isinff(float) __NDK_FPABI_MATH__ __pure2;
int __isinf(double) __pure2; int __isinf(double) __NDK_FPABI_MATH__ __pure2;
int __isinfl(long double) __pure2; int __isinfl(long double) __NDK_FPABI_MATH__ __pure2;
int __isnanl(long double) __pure2; int __isnanl(long double) __NDK_FPABI_MATH__ __pure2;
int __isnormalf(float) __pure2; int __isnormalf(float) __NDK_FPABI_MATH__ __pure2;
int __isnormal(double) __pure2; int __isnormal(double) __NDK_FPABI_MATH__ __pure2;
int __isnormall(long double) __pure2; int __isnormall(long double) __NDK_FPABI_MATH__ __pure2;
int __signbit(double) __pure2; int __signbit(double) __NDK_FPABI_MATH__ __pure2;
int __signbitf(float) __pure2; int __signbitf(float) __NDK_FPABI_MATH__ __pure2;
int __signbitl(long double) __pure2; int __signbitl(long double) __NDK_FPABI_MATH__ __pure2;
double acos(double); double acos(double) __NDK_FPABI_MATH__;
double asin(double); double asin(double) __NDK_FPABI_MATH__;
double atan(double); double atan(double) __NDK_FPABI_MATH__;
double atan2(double, double); double atan2(double, double) __NDK_FPABI_MATH__;
double cos(double); double cos(double) __NDK_FPABI_MATH__;
double sin(double); double sin(double) __NDK_FPABI_MATH__;
double tan(double); double tan(double) __NDK_FPABI_MATH__;
double cosh(double); double cosh(double) __NDK_FPABI_MATH__;
double sinh(double); double sinh(double) __NDK_FPABI_MATH__;
double tanh(double); double tanh(double) __NDK_FPABI_MATH__;
double exp(double); double exp(double) __NDK_FPABI_MATH__;
double frexp(double, int *); /* fundamentally !__pure2 */ double frexp(double, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
double ldexp(double, int); double ldexp(double, int) __NDK_FPABI_MATH__;
double log(double); double log(double) __NDK_FPABI_MATH__;
double log10(double); double log10(double) __NDK_FPABI_MATH__;
double modf(double, double *); /* fundamentally !__pure2 */ double modf(double, double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
double pow(double, double); double pow(double, double) __NDK_FPABI_MATH__;
double sqrt(double); double sqrt(double) __NDK_FPABI_MATH__;
double ceil(double); double ceil(double) __NDK_FPABI_MATH__;
double fabs(double) __pure2; double fabs(double) __NDK_FPABI_MATH__ __pure2;
double floor(double); double floor(double) __NDK_FPABI_MATH__;
double fmod(double, double); double fmod(double, double) __NDK_FPABI_MATH__;
/* /*
* These functions are not in C90. * These functions are not in C90.
*/ */
/* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */ /* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
double acosh(double); double acosh(double) __NDK_FPABI_MATH__;
double asinh(double); double asinh(double) __NDK_FPABI_MATH__;
double atanh(double); double atanh(double) __NDK_FPABI_MATH__;
double cbrt(double); double cbrt(double) __NDK_FPABI_MATH__;
double erf(double); double erf(double) __NDK_FPABI_MATH__;
double erfc(double); double erfc(double) __NDK_FPABI_MATH__;
double exp2(double); double exp2(double) __NDK_FPABI_MATH__;
double expm1(double); double expm1(double) __NDK_FPABI_MATH__;
double fma(double, double, double); double fma(double, double, double) __NDK_FPABI_MATH__;
double hypot(double, double); double hypot(double, double) __NDK_FPABI_MATH__;
int ilogb(double) __pure2; int ilogb(double) __NDK_FPABI_MATH__ __pure2;
/* int (isinf)(double) __pure2; */ /* int (isinf)(double) __NDK_FPABI_MATH__ __pure2; */
int (isnan)(double) __pure2; int (isnan)(double) __NDK_FPABI_MATH__ __pure2;
double lgamma(double); double lgamma(double) __NDK_FPABI_MATH__;
long long llrint(double); long long llrint(double) __NDK_FPABI_MATH__;
long long llround(double); long long llround(double) __NDK_FPABI_MATH__;
double log1p(double); double log1p(double) __NDK_FPABI_MATH__;
double logb(double); double logb(double) __NDK_FPABI_MATH__;
long lrint(double); long lrint(double) __NDK_FPABI_MATH__;
long lround(double); long lround(double) __NDK_FPABI_MATH__;
double nextafter(double, double); double nextafter(double, double) __NDK_FPABI_MATH__;
double remainder(double, double); double remainder(double, double) __NDK_FPABI_MATH__;
double remquo(double, double, int *); double remquo(double, double, int *) __NDK_FPABI_MATH__;
double rint(double); double rint(double) __NDK_FPABI_MATH__;
/* #endif */ /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */ /* #endif */ /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
/* #if __BSD_VISIBLE || __XSI_VISIBLE */ /* #if __BSD_VISIBLE || __XSI_VISIBLE */
double j0(double); double j0(double) __NDK_FPABI_MATH__;
double j1(double); double j1(double) __NDK_FPABI_MATH__;
double jn(int, double); double jn(int, double) __NDK_FPABI_MATH__;
double scalb(double, double); double scalb(double, double) __NDK_FPABI_MATH__;
double y0(double); double y0(double) __NDK_FPABI_MATH__;
double y1(double); double y1(double) __NDK_FPABI_MATH__;
double yn(int, double); double yn(int, double) __NDK_FPABI_MATH__;
/* #if __XSI_VISIBLE <= 500 || __BSD_VISIBLE */ /* #if __XSI_VISIBLE <= 500 || __BSD_VISIBLE */
double gamma(double); double gamma(double) __NDK_FPABI_MATH__;
/* #endif */ /* #endif */
/* #endif */ /* __BSD_VISIBLE || __XSI_VISIBLE */ /* #endif */ /* __BSD_VISIBLE || __XSI_VISIBLE */
/* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 */ /* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 */
double copysign(double, double) __pure2; double copysign(double, double) __NDK_FPABI_MATH__ __pure2;
double fdim(double, double); double fdim(double, double) __NDK_FPABI_MATH__;
double fmax(double, double) __pure2; double fmax(double, double) __NDK_FPABI_MATH__ __pure2;
double fmin(double, double) __pure2; double fmin(double, double) __NDK_FPABI_MATH__ __pure2;
double nearbyint(double); double nearbyint(double) __NDK_FPABI_MATH__;
double round(double); double round(double) __NDK_FPABI_MATH__;
double scalbln(double, long); double scalbln(double, long) __NDK_FPABI_MATH__;
double scalbn(double, int); double scalbn(double, int) __NDK_FPABI_MATH__;
double tgamma(double); double tgamma(double) __NDK_FPABI_MATH__;
double trunc(double); double trunc(double) __NDK_FPABI_MATH__;
/* #endif */ /* #endif */
/* /*
* BSD math library entry points * BSD math library entry points
*/ */
/* #if __BSD_VISIBLE */ /* #if __BSD_VISIBLE */
double drem(double, double); double drem(double, double) __NDK_FPABI_MATH__;
int finite(double) __pure2; int finite(double) __NDK_FPABI_MATH__ __pure2;
int isnanf(float) __pure2; int isnanf(float) __NDK_FPABI_MATH__ __pure2;
/* /*
* Reentrant version of gamma & lgamma; passes signgam back by reference * Reentrant version of gamma & lgamma; passes signgam back by reference
* as the second argument; user must allocate space for signgam. * as the second argument; user must allocate space for signgam.
*/ */
double gamma_r(double, int *); double gamma_r(double, int *) __NDK_FPABI_MATH__;
double lgamma_r(double, int *); double lgamma_r(double, int *) __NDK_FPABI_MATH__;
/* /*
* IEEE Test Vector * IEEE Test Vector
*/ */
double significand(double); double significand(double) __NDK_FPABI_MATH__;
/* #endif */ /* __BSD_VISIBLE */ /* #endif */ /* __BSD_VISIBLE */
/* float versions of ANSI/POSIX functions */ /* float versions of ANSI/POSIX functions */
/*#if __ISO_C_VISIBLE >= 1999 */ /*#if __ISO_C_VISIBLE >= 1999 */
float acosf(float); float acosf(float) __NDK_FPABI_MATH__;
float asinf(float); float asinf(float) __NDK_FPABI_MATH__;
float atanf(float); float atanf(float) __NDK_FPABI_MATH__;
float atan2f(float, float); float atan2f(float, float) __NDK_FPABI_MATH__;
float cosf(float); float cosf(float) __NDK_FPABI_MATH__;
float sinf(float); float sinf(float) __NDK_FPABI_MATH__;
float tanf(float); float tanf(float) __NDK_FPABI_MATH__;
float coshf(float); float coshf(float) __NDK_FPABI_MATH__;
float sinhf(float); float sinhf(float) __NDK_FPABI_MATH__;
float tanhf(float); float tanhf(float) __NDK_FPABI_MATH__;
float exp2f(float); float exp2f(float) __NDK_FPABI_MATH__;
float expf(float); float expf(float) __NDK_FPABI_MATH__;
float expm1f(float); float expm1f(float) __NDK_FPABI_MATH__;
float frexpf(float, int *); /* fundamentally !__pure2 */ float frexpf(float, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
int ilogbf(float) __pure2; int ilogbf(float) __NDK_FPABI_MATH__ __pure2;
float ldexpf(float, int); float ldexpf(float, int) __NDK_FPABI_MATH__;
float log10f(float); float log10f(float) __NDK_FPABI_MATH__;
float log1pf(float); float log1pf(float) __NDK_FPABI_MATH__;
float logf(float); float logf(float) __NDK_FPABI_MATH__;
float modff(float, float *); /* fundamentally !__pure2 */ float modff(float, float *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
float powf(float, float); float powf(float, float) __NDK_FPABI_MATH__;
float sqrtf(float); float sqrtf(float) __NDK_FPABI_MATH__;
float ceilf(float); float ceilf(float) __NDK_FPABI_MATH__;
float fabsf(float) __pure2; float fabsf(float) __NDK_FPABI_MATH__ __pure2;
float floorf(float); float floorf(float) __NDK_FPABI_MATH__;
float fmodf(float, float); float fmodf(float, float) __NDK_FPABI_MATH__;
float roundf(float); float roundf(float) __NDK_FPABI_MATH__;
float erff(float); float erff(float) __NDK_FPABI_MATH__;
float erfcf(float); float erfcf(float) __NDK_FPABI_MATH__;
float hypotf(float, float); float hypotf(float, float) __NDK_FPABI_MATH__;
float lgammaf(float); float lgammaf(float) __NDK_FPABI_MATH__;
float acoshf(float); float acoshf(float) __NDK_FPABI_MATH__;
float asinhf(float); float asinhf(float) __NDK_FPABI_MATH__;
float atanhf(float); float atanhf(float) __NDK_FPABI_MATH__;
float cbrtf(float); float cbrtf(float) __NDK_FPABI_MATH__;
float logbf(float); float logbf(float) __NDK_FPABI_MATH__;
float copysignf(float, float) __pure2; float copysignf(float, float) __NDK_FPABI_MATH__ __pure2;
long long llrintf(float); long long llrintf(float) __NDK_FPABI_MATH__;
long long llroundf(float); long long llroundf(float) __NDK_FPABI_MATH__;
long lrintf(float); long lrintf(float) __NDK_FPABI_MATH__;
long lroundf(float); long lroundf(float) __NDK_FPABI_MATH__;
float nearbyintf(float); float nearbyintf(float) __NDK_FPABI_MATH__;
float nextafterf(float, float); float nextafterf(float, float) __NDK_FPABI_MATH__;
float remainderf(float, float); float remainderf(float, float) __NDK_FPABI_MATH__;
float remquof(float, float, int *); float remquof(float, float, int *) __NDK_FPABI_MATH__;
float rintf(float); float rintf(float) __NDK_FPABI_MATH__;
float scalblnf(float, long); float scalblnf(float, long) __NDK_FPABI_MATH__;
float scalbnf(float, int); float scalbnf(float, int) __NDK_FPABI_MATH__;
float truncf(float); float truncf(float) __NDK_FPABI_MATH__;
float fdimf(float, float); float fdimf(float, float) __NDK_FPABI_MATH__;
float fmaf(float, float, float); float fmaf(float, float, float) __NDK_FPABI_MATH__;
float fmaxf(float, float) __pure2; float fmaxf(float, float) __NDK_FPABI_MATH__ __pure2;
float fminf(float, float) __pure2; float fminf(float, float) __NDK_FPABI_MATH__ __pure2;
/* #endif */ /* #endif */
/* /*
* float versions of BSD math library entry points * float versions of BSD math library entry points
*/ */
/* #if __BSD_VISIBLE */ /* #if __BSD_VISIBLE */
float dremf(float, float); float dremf(float, float) __NDK_FPABI_MATH__;
int finitef(float) __pure2; int finitef(float) __NDK_FPABI_MATH__ __pure2;
float gammaf(float); float gammaf(float) __NDK_FPABI_MATH__;
float j0f(float); float j0f(float) __NDK_FPABI_MATH__;
float j1f(float); float j1f(float) __NDK_FPABI_MATH__;
float jnf(int, float); float jnf(int, float) __NDK_FPABI_MATH__;
float scalbf(float, float); float scalbf(float, float) __NDK_FPABI_MATH__;
float y0f(float); float y0f(float) __NDK_FPABI_MATH__;
float y1f(float); float y1f(float) __NDK_FPABI_MATH__;
float ynf(int, float); float ynf(int, float) __NDK_FPABI_MATH__;
/* /*
* Float versions of reentrant version of gamma & lgamma; passes * Float versions of reentrant version of gamma & lgamma; passes
* signgam back by reference as the second argument; user must * signgam back by reference as the second argument; user must
* allocate space for signgam. * allocate space for signgam.
*/ */
float gammaf_r(float, int *); float gammaf_r(float, int *) __NDK_FPABI_MATH__;
float lgammaf_r(float, int *); float lgammaf_r(float, int *) __NDK_FPABI_MATH__;
/* /*
* float version of IEEE Test Vector * float version of IEEE Test Vector
*/ */
float significandf(float); float significandf(float) __NDK_FPABI_MATH__;
/* #endif */ /* __BSD_VISIBLE */ /* #endif */ /* __BSD_VISIBLE */
/* /*
@@ -403,88 +403,88 @@ float significandf(float);
*/ */
/* #if __ISO_C_VISIBLE >= 1999 */ /* #if __ISO_C_VISIBLE >= 1999 */
#if 0 #if 0
long double acoshl(long double); long double acoshl(long double) __NDK_FPABI_MATH__;
long double acosl(long double); long double acosl(long double) __NDK_FPABI_MATH__;
long double asinhl(long double); long double asinhl(long double) __NDK_FPABI_MATH__;
long double asinl(long double); long double asinl(long double) __NDK_FPABI_MATH__;
long double atan2l(long double, long double); long double atan2l(long double, long double) __NDK_FPABI_MATH__;
long double atanhl(long double); long double atanhl(long double) __NDK_FPABI_MATH__;
long double atanl(long double); long double atanl(long double) __NDK_FPABI_MATH__;
long double cbrtl(long double); long double cbrtl(long double) __NDK_FPABI_MATH__;
#endif #endif
long double ceill(long double); long double ceill(long double) __NDK_FPABI_MATH__;
long double copysignl(long double, long double) __pure2; long double copysignl(long double, long double) __NDK_FPABI_MATH__ __pure2;
#if 0 #if 0
long double coshl(long double); long double coshl(long double) __NDK_FPABI_MATH__;
long double cosl(long double); long double cosl(long double) __NDK_FPABI_MATH__;
long double erfcl(long double); long double erfcl(long double) __NDK_FPABI_MATH__;
long double erfl(long double); long double erfl(long double) __NDK_FPABI_MATH__;
long double exp2l(long double); long double exp2l(long double) __NDK_FPABI_MATH__;
long double expl(long double); long double expl(long double) __NDK_FPABI_MATH__;
long double expm1l(long double); long double expm1l(long double) __NDK_FPABI_MATH__;
#endif #endif
long double fabsl(long double) __pure2; long double fabsl(long double) __NDK_FPABI_MATH__ __pure2;
long double fdiml(long double, long double); long double fdiml(long double, long double) __NDK_FPABI_MATH__;
long double floorl(long double); long double floorl(long double) __NDK_FPABI_MATH__;
long double fmal(long double, long double, long double); long double fmal(long double, long double, long double) __NDK_FPABI_MATH__;
long double fmaxl(long double, long double) __pure2; long double fmaxl(long double, long double) __NDK_FPABI_MATH__ __pure2;
long double fminl(long double, long double) __pure2; long double fminl(long double, long double) __NDK_FPABI_MATH__ __pure2;
#if 0 #if 0
long double fmodl(long double, long double); long double fmodl(long double, long double) __NDK_FPABI_MATH__;
#endif #endif
long double frexpl(long double value, int *); /* fundamentally !__pure2 */ long double frexpl(long double value, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
#if 0 #if 0
long double hypotl(long double, long double); long double hypotl(long double, long double) __NDK_FPABI_MATH__;
#endif #endif
int ilogbl(long double) __pure2; int ilogbl(long double) __NDK_FPABI_MATH__ __pure2;
long double ldexpl(long double, int); long double ldexpl(long double, int) __NDK_FPABI_MATH__;
#if 0 #if 0
long double lgammal(long double); long double lgammal(long double) __NDK_FPABI_MATH__;
long long llrintl(long double); long long llrintl(long double) __NDK_FPABI_MATH__;
#endif #endif
long long llroundl(long double); long long llroundl(long double) __NDK_FPABI_MATH__;
#if 0 #if 0
long double log10l(long double); long double log10l(long double) __NDK_FPABI_MATH__;
long double log1pl(long double); long double log1pl(long double) __NDK_FPABI_MATH__;
long double log2l(long double); long double log2l(long double) __NDK_FPABI_MATH__;
long double logbl(long double); long double logbl(long double) __NDK_FPABI_MATH__;
long double logl(long double); long double logl(long double) __NDK_FPABI_MATH__;
long lrintl(long double); long lrintl(long double) __NDK_FPABI_MATH__;
#endif #endif
long lroundl(long double); long lroundl(long double) __NDK_FPABI_MATH__;
#if 0 #if 0
long double modfl(long double, long double *); /* fundamentally !__pure2 */ long double modfl(long double, long double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
long double nanl(const char *) __pure2; long double nanl(const char *) __NDK_FPABI_MATH__ __pure2;
long double nearbyintl(long double); long double nearbyintl(long double) __NDK_FPABI_MATH__;
#endif #endif
long double nextafterl(long double, long double); long double nextafterl(long double, long double) __NDK_FPABI_MATH__;
double nexttoward(double, long double); double nexttoward(double, long double) __NDK_FPABI_MATH__;
float nexttowardf(float, long double); float nexttowardf(float, long double) __NDK_FPABI_MATH__;
long double nexttowardl(long double, long double); long double nexttowardl(long double, long double) __NDK_FPABI_MATH__;
#if 0 #if 0
long double powl(long double, long double); long double powl(long double, long double) __NDK_FPABI_MATH__;
long double remainderl(long double, long double); long double remainderl(long double, long double) __NDK_FPABI_MATH__;
long double remquol(long double, long double, int *); long double remquol(long double, long double, int *) __NDK_FPABI_MATH__;
long double rintl(long double); long double rintl(long double) __NDK_FPABI_MATH__;
#endif #endif
long double roundl(long double); long double roundl(long double) __NDK_FPABI_MATH__;
long double scalblnl(long double, long); long double scalblnl(long double, long) __NDK_FPABI_MATH__;
long double scalbnl(long double, int); long double scalbnl(long double, int) __NDK_FPABI_MATH__;
#if 0 #if 0
long double sinhl(long double); long double sinhl(long double) __NDK_FPABI_MATH__;
long double sinl(long double); long double sinl(long double) __NDK_FPABI_MATH__;
long double sqrtl(long double); long double sqrtl(long double) __NDK_FPABI_MATH__;
long double tanhl(long double); long double tanhl(long double) __NDK_FPABI_MATH__;
long double tanl(long double); long double tanl(long double) __NDK_FPABI_MATH__;
long double tgammal(long double); long double tgammal(long double) __NDK_FPABI_MATH__;
#endif #endif
long double truncl(long double); long double truncl(long double) __NDK_FPABI_MATH__;
/* BIONIC: GLibc compatibility - required by the ARM toolchain */ /* BIONIC: GLibc compatibility - required by the ARM toolchain */
#ifdef _GNU_SOURCE #ifdef _GNU_SOURCE
void sincos(double x, double *sin, double *cos); void sincos(double x, double *sin, double *cos) __NDK_FPABI_MATH__;
void sincosf(float x, float *sin, float *cos); void sincosf(float x, float *sin, float *cos) __NDK_FPABI_MATH__;
void sincosl(long double x, long double *sin, long double *cos); void sincosl(long double x, long double *sin, long double *cos) __NDK_FPABI_MATH__;
#endif #endif
/* #endif */ /* __ISO_C_VISIBLE >= 1999 */ /* #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 long long strtoll(const char *, char **, int);
extern unsigned long strtoul(const char *, char **, int); extern unsigned long strtoul(const char *, char **, int);
extern unsigned long long strtoull(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) static __inline__ float strtof(const char *nptr, char **endptr)
{ {
return (float)strtod(nptr, endptr); return (float)strtod(nptr, endptr);
@@ -75,6 +76,7 @@ extern int atoi(const char *);
extern long atol(const char *); extern long atol(const char *);
extern long long atoll(const char *); extern long long atoll(const char *);
__NDK_FPABI__
static __inline__ double atof(const char *nptr) static __inline__ double atof(const char *nptr)
{ {
return (strtod(nptr, NULL)); return (strtod(nptr, NULL));
@@ -106,8 +108,8 @@ extern long mrand48(void);
extern long nrand48(unsigned short *); extern long nrand48(unsigned short *);
extern long lrand48(void); extern long lrand48(void);
extern unsigned short *seed48(unsigned short*); extern unsigned short *seed48(unsigned short*);
extern double erand48(unsigned short xsubi[3]); extern double erand48(unsigned short xsubi[3]) __NDK_FPABI__;
extern double drand48(void); extern double drand48(void) __NDK_FPABI__;
extern void srand48(long); extern void srand48(long);
extern unsigned int arc4random(void); extern unsigned int arc4random(void);
extern void arc4random_stir(void); extern void arc4random_stir(void);

View File

@@ -499,4 +499,31 @@
#define __BIONIC__ 1 #define __BIONIC__ 1
#include <android/api-level.h> #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_ */ #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 wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
extern size_t wcsspn(const wchar_t *, const wchar_t *); extern size_t wcsspn(const wchar_t *, const wchar_t *);
extern wchar_t *wcsstr(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 wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **);
extern long int wcstol(const wchar_t *, wchar_t **, int); extern long int wcstol(const wchar_t *, wchar_t **, int);
extern size_t wcstombs(char *, const wchar_t *, size_t); extern size_t wcstombs(char *, const wchar_t *, size_t);