Merge "Fix 32-bit issues in tests, and add a trivial test for the FD_* macros."
diff --git a/libc/arch-arm/cortex-a15/bionic/__strcat_chk.S b/libc/arch-arm/cortex-a15/bionic/__strcat_chk.S
index 4aaa9f1..a5b82aa 100644
--- a/libc/arch-arm/cortex-a15/bionic/__strcat_chk.S
+++ b/libc/arch-arm/cortex-a15/bionic/__strcat_chk.S
@@ -197,7 +197,7 @@
#include "memcpy_base.S"
-ENTRY(__strcat_chk_failed)
+ENTRY_PRIVATE(__strcat_chk_failed)
.cfi_startproc
.save {r0, lr}
.save {r4, r5}
diff --git a/libc/arch-arm/cortex-a15/bionic/__strcpy_chk.S b/libc/arch-arm/cortex-a15/bionic/__strcpy_chk.S
index 05152e6..37ad06c 100644
--- a/libc/arch-arm/cortex-a15/bionic/__strcpy_chk.S
+++ b/libc/arch-arm/cortex-a15/bionic/__strcpy_chk.S
@@ -163,7 +163,7 @@
#define MEMCPY_BASE_ALIGNED __strcpy_chk_memcpy_base_aligned
#include "memcpy_base.S"
-ENTRY(__strcpy_chk_failed)
+ENTRY_PRIVATE(__strcpy_chk_failed)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
diff --git a/libc/arch-arm/cortex-a15/bionic/memcpy.S b/libc/arch-arm/cortex-a15/bionic/memcpy.S
index a843230..3d23a1c 100644
--- a/libc/arch-arm/cortex-a15/bionic/memcpy.S
+++ b/libc/arch-arm/cortex-a15/bionic/memcpy.S
@@ -87,7 +87,7 @@
#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned
#include "memcpy_base.S"
-ENTRY(__memcpy_chk_fail)
+ENTRY_PRIVATE(__memcpy_chk_fail)
.cfi_startproc
// Preserve lr for backtrace.
push {lr}
diff --git a/libc/arch-arm/cortex-a15/bionic/memcpy_base.S b/libc/arch-arm/cortex-a15/bionic/memcpy_base.S
index 0154676..4de23b3 100644
--- a/libc/arch-arm/cortex-a15/bionic/memcpy_base.S
+++ b/libc/arch-arm/cortex-a15/bionic/memcpy_base.S
@@ -53,7 +53,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-ENTRY(MEMCPY_BASE)
+ENTRY_PRIVATE(MEMCPY_BASE)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
@@ -172,7 +172,7 @@
.cfi_endproc
END(MEMCPY_BASE)
-ENTRY(MEMCPY_BASE_ALIGNED)
+ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
diff --git a/libc/arch-arm/cortex-a9/bionic/__strcat_chk.S b/libc/arch-arm/cortex-a9/bionic/__strcat_chk.S
index 78cf19a..ffc440e 100644
--- a/libc/arch-arm/cortex-a9/bionic/__strcat_chk.S
+++ b/libc/arch-arm/cortex-a9/bionic/__strcat_chk.S
@@ -200,7 +200,7 @@
#define MEMCPY_BASE_ALIGNED __strcat_chk_memcpy_base_aligned
#include "memcpy_base.S"
-ENTRY(__strcat_chk_fail)
+ENTRY_PRIVATE(__strcat_chk_fail)
.cfi_startproc
.save {r0, lr}
diff --git a/libc/arch-arm/cortex-a9/bionic/__strcpy_chk.S b/libc/arch-arm/cortex-a9/bionic/__strcpy_chk.S
index d0acf1e..b197667 100644
--- a/libc/arch-arm/cortex-a9/bionic/__strcpy_chk.S
+++ b/libc/arch-arm/cortex-a9/bionic/__strcpy_chk.S
@@ -167,7 +167,7 @@
#define MEMCPY_BASE_ALIGNED __strcpy_chk_memcpy_base_aligned
#include "memcpy_base.S"
-ENTRY(__strcpy_chk_fail)
+ENTRY_PRIVATE(__strcpy_chk_fail)
.cfi_startproc
.save {r0, lr}
diff --git a/libc/arch-arm/cortex-a9/bionic/memcpy.S b/libc/arch-arm/cortex-a9/bionic/memcpy.S
index 5c4c428..64b00d8 100644
--- a/libc/arch-arm/cortex-a9/bionic/memcpy.S
+++ b/libc/arch-arm/cortex-a9/bionic/memcpy.S
@@ -67,7 +67,7 @@
#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned
#include "memcpy_base.S"
-ENTRY(__memcpy_chk_fail)
+ENTRY_PRIVATE(__memcpy_chk_fail)
.cfi_startproc
// Preserve lr for backtrace.
push {lr}
diff --git a/libc/arch-arm/cortex-a9/bionic/memcpy_base.S b/libc/arch-arm/cortex-a9/bionic/memcpy_base.S
index e8ff4f5..55fd3bd 100644
--- a/libc/arch-arm/cortex-a9/bionic/memcpy_base.S
+++ b/libc/arch-arm/cortex-a9/bionic/memcpy_base.S
@@ -32,7 +32,7 @@
* cache line.
*/
-ENTRY(MEMCPY_BASE)
+ENTRY_PRIVATE(MEMCPY_BASE)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
@@ -141,7 +141,7 @@
.cfi_endproc
END(MEMCPY_BASE)
-ENTRY(MEMCPY_BASE_ALIGNED)
+ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
.cfi_startproc
.save {r0, lr}
diff --git a/libc/arch-arm/cortex-a9/bionic/memset.S b/libc/arch-arm/cortex-a9/bionic/memset.S
index 87d2c08..f6be66a 100644
--- a/libc/arch-arm/cortex-a9/bionic/memset.S
+++ b/libc/arch-arm/cortex-a9/bionic/memset.S
@@ -119,7 +119,7 @@
.cfi_endproc
END(memset)
-ENTRY(__memset_large_copy)
+ENTRY_PRIVATE(__memset_large_copy)
.cfi_startproc
/* compute the offset to align the destination
diff --git a/libc/arch-arm/krait/bionic/__strcat_chk.S b/libc/arch-arm/krait/bionic/__strcat_chk.S
index 956b461..bb4bb86 100644
--- a/libc/arch-arm/krait/bionic/__strcat_chk.S
+++ b/libc/arch-arm/krait/bionic/__strcat_chk.S
@@ -196,7 +196,7 @@
#define MEMCPY_BASE_ALIGNED __strcat_chk_memcpy_base_aligned
#include "memcpy_base.S"
-ENTRY(__strcat_chk_failed)
+ENTRY_PRIVATE(__strcat_chk_failed)
.cfi_startproc
.save {r0, lr}
.save {r4, r5}
diff --git a/libc/arch-arm/krait/bionic/__strcpy_chk.S b/libc/arch-arm/krait/bionic/__strcpy_chk.S
index 402cac6..1116cf6 100644
--- a/libc/arch-arm/krait/bionic/__strcpy_chk.S
+++ b/libc/arch-arm/krait/bionic/__strcpy_chk.S
@@ -163,7 +163,7 @@
#define MEMCPY_BASE_ALIGNED __strcpy_chk_memcpy_base_aligned
#include "memcpy_base.S"
-ENTRY(__strcpy_chk_failed)
+ENTRY_PRIVATE(__strcpy_chk_failed)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
diff --git a/libc/arch-arm/krait/bionic/memcpy.S b/libc/arch-arm/krait/bionic/memcpy.S
index ea040bc..f7277fc 100644
--- a/libc/arch-arm/krait/bionic/memcpy.S
+++ b/libc/arch-arm/krait/bionic/memcpy.S
@@ -67,7 +67,7 @@
#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned
#include "memcpy_base.S"
-ENTRY(__memcpy_chk_fail)
+ENTRY_PRIVATE(__memcpy_chk_fail)
.cfi_startproc
// Preserve lr for backtrace.
push {lr}
diff --git a/libc/arch-arm/krait/bionic/memcpy_base.S b/libc/arch-arm/krait/bionic/memcpy_base.S
index d87a542..cc1ab60 100644
--- a/libc/arch-arm/krait/bionic/memcpy_base.S
+++ b/libc/arch-arm/krait/bionic/memcpy_base.S
@@ -35,7 +35,7 @@
// Assumes neon instructions and a cache line size of 32 bytes.
-ENTRY(MEMCPY_BASE)
+ENTRY_PRIVATE(MEMCPY_BASE)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
diff --git a/libm/include/amd64/fenv.h b/libm/include/amd64/fenv.h
index 037778e..1dc4215 100644
--- a/libm/include/amd64/fenv.h
+++ b/libm/include/amd64/fenv.h
@@ -1,6 +1,3 @@
-/* $OpenBSD: fenv.h,v 1.4 2011/05/25 21:46:49 martynas Exp $ */
-/* $NetBSD: fenv.h,v 1.1 2010/07/31 21:47:54 joerg Exp $ */
-
/*-
* Copyright (c) 2004-2005 David Schultz <das (at) FreeBSD.ORG>
* All rights reserved.
@@ -33,6 +30,14 @@
#include <sys/types.h>
/*
+ * This file combines the OpenBSD include/fenv.h and machine/fenv.h to fit
+ * the style of the other architectures (where we couldn't just take an
+ * upstream fenv.h and had to write our own).
+ */
+
+__BEGIN_DECLS
+
+/*
* Each symbol representing a floating point exception expands to an integer
* constant expression with values, such that bitwise-inclusive ORs of _all
* combinations_ of the constants result in distinct values.
@@ -95,9 +100,7 @@
* that manage the floating-point environment, namely fesetenv() and
* feupdateenv().
*/
-__BEGIN_DECLS
extern fenv_t __fe_dfl_env;
-__END_DECLS
#define FE_DFL_ENV ((const fenv_t *)&__fe_dfl_env)
/*
@@ -114,4 +117,31 @@
*/
typedef unsigned int fexcept_t;
+/* C99 floating-point exception functions */
+int feclearexcept(int excepts);
+int fegetexceptflag(fexcept_t *flagp, int excepts);
+int fesetexceptflag(const fexcept_t *flagp, int excepts);
+/* feraiseexcept does not set the inexact flag on overflow/underflow */
+int feraiseexcept(int excepts);
+int fetestexcept(int excepts);
+
+/* C99 rounding control functions */
+int fegetround(void);
+int fesetround(int round);
+
+/* C99 floating-point environment functions */
+int fegetenv(fenv_t *__envp);
+int feholdexcept(fenv_t *__envp);
+int fesetenv(const fenv_t *envp);
+int feupdateenv(const fenv_t *__envp);
+
+#if __BSD_VISIBLE
+/* Additional support functions to set/query floating point traps */
+int feenableexcept(int __mask);
+int fedisableexcept(int __mask);
+int fegetexcept(void);
+#endif /* __BSD_VISIBLE */
+
+__END_DECLS
+
#endif /* !_AMD64_FENV_H_ */