From: <sidneym@codeaurora.org>
To: "'Szabolcs Nagy'" <nsz@port70.net>
Cc: "'Rich Felker'" <dalias@libc.org>, <musl@lists.openwall.com>
Subject: RE: [musl] Hexagon DSP support
Date: Wed, 16 Sep 2020 15:49:28 -0500 [thread overview]
Message-ID: <110801d68c6a$dfe3f950$9fabebf0$@codeaurora.org> (raw)
In-Reply-To:
[-- Attachment #1: Type: text/plain, Size: 3051 bytes --]
> -----Original Message-----
> From: sidneym@codeaurora.org <sidneym@codeaurora.org>
> Sent: Friday, July 24, 2020 12:50 PM
> To: 'Szabolcs Nagy' <nsz@port70.net>
> Cc: 'Rich Felker' <dalias@libc.org>; 'musl@lists.openwall.com'
> <musl@lists.openwall.com>
> Subject: RE: [musl] Hexagon DSP support
>
>
>
> > -----Original Message-----
> > From: Szabolcs Nagy <nsz@port70.net>
> > Sent: Thursday, July 23, 2020 4:56 PM
> > To: sidneym@codeaurora.org
> > Cc: 'Rich Felker' <dalias@libc.org>; musl@lists.openwall.com
> > Subject: Re: [musl] Hexagon DSP support
> >
> > * sidneym@codeaurora.org <sidneym@codeaurora.org> [2020-07-20
> > 16:26:58 -0500]:
> > > I removed fma/fmal/fmax/fmin/fabs from compiler-rt-builtins,
> > > https://reviews.llvm.org/D82263
> > > The comparison with musl can be found here:
> > > https://github.com/quic/musl/compare/hexagon but I've also attached
> > > the patch.
> > >
> > > An assert in clang when building both musl and libc-test for hexagon
> > > was fixed by, https://reviews.llvm.org/D80952 prior to this change
> > > -frounding-math had to be used.
> > >
> > > The test-results are also attached. Everything is built with the
> > > tip-of-tree llvm so sometimes results vary but these are the results
> > > I got from this morning's clone. The only notable difference in the
> > > results would be that both fma and fmal fail and this is because of
> > > the compiler-rt change. I didn't add fma to musl because it require
> > > more complex assembly, along the lines you saw in an earlier version
> > > with
> > sqrt.
> >
> >
> > the fma and sqrt failures are still not fully explained, e.g. this looks
wrong:
> >
> > src/math/special/fma.h:42: RN fma(0x1p+0,0x1p+0,-0x1p-1074) want
> > 0x1p+0 got -0x1.fffffp-43 ulperr -4503599627370496.000 = -0x1p+52 +
> > 0x0p+0
> >
> > the only target specific bit in fma is a_clz_64 so i would check that.
> >
> > e.g. a_clz_64(1ULL << 42) should give 21 (this computation happens
> > during the fma test case above).
>
> Hexagon didn't have a_clz_64 implemented however I added this morning it
> and noticed no differences. I will update the patch with that routine
> included.
>
> I did notice a compiler regression in how it compiled fma and have asked a
> compiler person to take a look. An older version of our internally
maintained
> compiler does produce the expected results for the values I used but later
> versions do not. Unfortunately changing optimization levels will produce
> different results as well.
I've attached updated test results and patch. The patch doesn't change much
other than adding the above mentioned a_clz_64. The only other change was
an update to pthread_arch.h for an api update so hexagon conforms with the
rest of musl.
Between updates to llvm and musl both fma and sqrt issues are resolved
provided I compile the library without optimization enabled. No new tests
fail.
I guess I also need to know what the thoughts are about adding hexagon to
the mainline base. There are no issues adding from this end.
Thanks,
[-- Attachment #2: add-hexagon.diff --]
[-- Type: application/octet-stream, Size: 43448 bytes --]
diff --git a/arch/hexagon/atomic_arch.h b/arch/hexagon/atomic_arch.h
new file mode 100644
index 00000000..ede55956
--- /dev/null
+++ b/arch/hexagon/atomic_arch.h
@@ -0,0 +1,194 @@
+#define a_ctz_32 a_ctz_32
+static inline int a_ctz_32(unsigned long x)
+{
+ __asm__(
+ "%0 = ct0(%0)\n\t"
+ : "+r"(x));
+ return x;
+}
+
+#define a_ctz_64 a_ctz_64
+static inline int a_ctz_64(uint64_t x)
+{
+ int count;
+ __asm__(
+ "%0 = ct0(%1)\n\t"
+ : "=r"(count) : "r"(x));
+ return count;
+}
+#define a_clz_64 a_clz_64
+static inline int a_clz_64(uint64_t x)
+{
+ int count;
+ __asm__(
+ "%1 = brev(%1)\n\t"
+ "%0 = ct0(%1)\n\t"
+ : "=r"(count) : "r"(x));
+ return count;
+}
+
+#define a_cas a_cas
+static inline int a_cas(volatile int *p, int t, int s)
+{
+ int dummy;
+ __asm__ __volatile__(
+ "1: %0 = memw_locked(%1)\n\t"
+ " { p0 = cmp.eq(%0, %2)\n\t"
+ " if (!p0.new) jump:nt 2f }\n\t"
+ " memw_locked(%1, p0) = %3\n\t"
+ " if (!p0) jump 1b\n\t"
+ "2: \n\t"
+ : "=&r"(dummy)
+ : "r"(p), "r"(t), "r"(s)
+ : "p0", "memory" );
+ return dummy;
+}
+
+#define a_cas_p a_cas_p
+static inline void *a_cas_p(volatile void *p, void *t, void *s)
+{
+ return (void *)a_cas(p, (int)t, (int)s);
+}
+
+#define a_swap a_swap
+static inline int a_swap(volatile int *x, int v)
+{
+ int old, dummy;
+ __asm__ __volatile__(
+ " %1 = %3\n\t"
+ "1: %0 = memw_locked(%2)\n\t"
+ " memw_locked(%2, p0) = %1\n\t"
+ " if (!p0) jump 1b\n\t"
+ : "=&r"(old), "=&r"(dummy)
+ : "r"(x), "r"(v)
+ : "p0", "memory" );
+ return old;
+}
+
+#define a_fetch_add a_fetch_add
+static inline int a_fetch_add(volatile int *x, int v)
+{
+ int old, dummy;
+ __asm__ __volatile__(
+ "1: %0 = memw_locked(%2)\n\t"
+ " %1 = add(%0, %3)\n\t"
+ " memw_locked(%2, p0) = %1\n\t"
+ " if (!p0) jump 1b\n\t"
+ : "=&r"(old), "=&r"(dummy)
+ : "r"(x), "r"(v)
+ : "p0", "memory" );
+ return old;
+}
+
+#define a_inc a_inc
+static inline void a_inc(volatile int *x)
+{
+ a_fetch_add(x, 1);
+}
+
+#define a_dec a_dec
+static inline void a_dec(volatile int *x)
+{
+ int dummy;
+ __asm__ __volatile__(
+ "1: %0 = memw_locked(%1)\n\t"
+ " %0 = add(%0, #-1)\n\t"
+ " memw_locked(%1, p0) = %0\n\t"
+ " if (!p0) jump 1b\n\t"
+ : "=&r"(dummy)
+ : "r"(x)
+ : "p0", "memory" );
+}
+
+#define a_store a_store
+static inline void a_store(volatile int *p, int x)
+{
+ int dummy;
+ __asm__ __volatile__(
+ "1: %0 = memw_locked(%1)\n\t"
+ " memw_locked(%1, p0) = %2\n\t"
+ " if (!p0) jump 1b\n\t"
+ : "=&r"(dummy)
+ : "r"(p), "r"(x)
+ : "p0", "memory" );
+}
+
+#define a_barrier a_barrier
+static inline void a_barrier()
+{
+ __asm__ __volatile__ ("barrier" ::: "memory");
+}
+#define a_spin a_spin
+static inline void a_spin()
+{
+ __asm__ __volatile__ ("pause(#255)" :::);
+}
+
+#define a_crash a_crash
+static inline void a_crash()
+{
+ *(volatile char *)0=0;
+}
+
+#define a_and a_and
+static inline void a_and(volatile int *p, int v)
+{
+ int dummy;
+ __asm__ __volatile__(
+ "1: %0 = memw_locked(%1)\n\t"
+ " %0 = and(%0, %2)\n\t"
+ " memw_locked(%1, p0) = %0\n\t"
+ " if (!p0) jump 1b\n\t"
+ : "=&r"(dummy)
+ : "r"(p), "r"(v)
+ : "p0", "memory" );
+}
+
+#define a_or a_or
+static inline void a_or(volatile int *p, int v)
+{
+ int dummy;
+ __asm__ __volatile__(
+ "1: %0 = memw_locked(%1)\n\t"
+ " %0 = or(%0, %2)\n\t"
+ " memw_locked(%1, p0) = %0\n\t"
+ " if (!p0) jump 1b\n\t"
+ : "=&r"(dummy)
+ : "r"(p), "r"(v)
+ : "p0", "memory" );
+}
+
+#define a_or_l a_or_l
+static inline void a_or_l(volatile void *p, long v)
+{
+ a_or(p, v);
+}
+
+#define a_and_64 a_and_64
+static inline void a_and_64(volatile uint64_t *p, uint64_t v)
+{
+ uint64_t dummy;
+ __asm__ __volatile__(
+ "1: %0 = memd_locked(%1)\n\t"
+ " %0 = and(%0, %2)\n\t"
+ " memd_locked(%1, p0) = %0\n\t"
+ " if (!p0) jump 1b\n\t"
+ : "=&r"(dummy)
+ : "r"(p), "r"(v)
+ : "p0", "memory" );
+}
+
+#define a_or_64 a_or_64
+static inline void a_or_64(volatile uint64_t *p, uint64_t v)
+{
+ uint64_t dummy;
+ __asm__ __volatile__(
+ "1: %0 = memd_locked(%1)\n\t"
+ " %0 = or(%0, %2)\n\t"
+ " memd_locked(%1, p0) = %0\n\t"
+ " if (!p0) jump 1b\n\t"
+ : "=&r"(dummy)
+ : "r"(p), "r"(v)
+ : "p0", "memory" );
+}
+
diff --git a/arch/hexagon/bits/alltypes.h.in b/arch/hexagon/bits/alltypes.h.in
new file mode 100644
index 00000000..9d770c7e
--- /dev/null
+++ b/arch/hexagon/bits/alltypes.h.in
@@ -0,0 +1,26 @@
+#define _Addr int
+#define _Int64 long long
+#define _Reg int
+
+#define __BYTE_ORDER 1234
+#define __LONG_MAX 0x7fffffffL
+
+#ifndef __cplusplus
+#ifdef __WCHAR_TYPE__
+TYPEDEF __WCHAR_TYPE__ wchar_t;
+#else
+TYPEDEF long wchar_t;
+#endif
+#endif
+
+TYPEDEF float float_t;
+TYPEDEF double double_t;
+
+#if !defined(__cplusplus)
+TYPEDEF struct { _Alignas(8) long long __ll; long double __ld; } max_align_t;
+#elif defined(__GNUC__)
+TYPEDEF struct { __attribute__((__aligned__(8))) long long __ll; long double __ld; } max_align_t;
+#else
+TYPEDEF struct { alignas(8) long long __ll; long double __ld; } max_align_t;
+#endif
+
diff --git a/arch/hexagon/bits/fenv.h b/arch/hexagon/bits/fenv.h
new file mode 100644
index 00000000..d3349306
--- /dev/null
+++ b/arch/hexagon/bits/fenv.h
@@ -0,0 +1,20 @@
+#define FE_INVALID (1 << 1)
+#define FE_DIVBYZERO (1 << 2)
+#define FE_OVERFLOW (1 << 3)
+#define FE_UNDERFLOW (1 << 4)
+#define FE_INEXACT (1 << 5)
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
+ FE_OVERFLOW | FE_UNDERFLOW)
+
+#define FE_TONEAREST 0x00
+#define FE_TOWARDZERO 0x01
+#define FE_DOWNWARD 0x02
+#define FE_UPWARD 0x03
+
+typedef unsigned long fexcept_t;
+
+typedef struct {
+ unsigned long __cw;
+} fenv_t;
+
+#define FE_DFL_ENV ((const fenv_t *) -1)
diff --git a/arch/hexagon/bits/float.h b/arch/hexagon/bits/float.h
new file mode 100644
index 00000000..c4a655e7
--- /dev/null
+++ b/arch/hexagon/bits/float.h
@@ -0,0 +1,16 @@
+#define FLT_EVAL_METHOD 0
+
+#define LDBL_TRUE_MIN 4.94065645841246544177e-324L
+#define LDBL_MIN 2.22507385850720138309e-308L
+#define LDBL_MAX 1.79769313486231570815e+308L
+#define LDBL_EPSILON 2.22044604925031308085e-16L
+
+#define LDBL_MANT_DIG 53
+#define LDBL_MIN_EXP (-1021)
+#define LDBL_MAX_EXP 1024
+
+#define LDBL_DIG 15
+#define LDBL_MIN_10_EXP (-307)
+#define LDBL_MAX_10_EXP 308
+
+#define DECIMAL_DIG 17
diff --git a/arch/hexagon/bits/ipcstat.h b/arch/hexagon/bits/ipcstat.h
new file mode 100644
index 00000000..4f4fcb0c
--- /dev/null
+++ b/arch/hexagon/bits/ipcstat.h
@@ -0,0 +1 @@
+#define IPC_STAT 0x102
diff --git a/arch/hexagon/bits/msg.h b/arch/hexagon/bits/msg.h
new file mode 100644
index 00000000..7bbbb2bf
--- /dev/null
+++ b/arch/hexagon/bits/msg.h
@@ -0,0 +1,18 @@
+struct msqid_ds {
+ struct ipc_perm msg_perm;
+ unsigned long __msg_stime_lo;
+ unsigned long __msg_stime_hi;
+ unsigned long __msg_rtime_lo;
+ unsigned long __msg_rtime_hi;
+ unsigned long __msg_ctime_lo;
+ unsigned long __msg_ctime_hi;
+ unsigned long msg_cbytes;
+ msgqnum_t msg_qnum;
+ msglen_t msg_qbytes;
+ pid_t msg_lspid;
+ pid_t msg_lrpid;
+ unsigned long __unused[2];
+ time_t msg_stime;
+ time_t msg_rtime;
+ time_t msg_ctime;
+};
diff --git a/arch/hexagon/bits/posix.h b/arch/hexagon/bits/posix.h
new file mode 100644
index 00000000..30a38714
--- /dev/null
+++ b/arch/hexagon/bits/posix.h
@@ -0,0 +1,2 @@
+#define _POSIX_V6_ILP32_OFFBIG 1
+#define _POSIX_V7_ILP32_OFFBIG 1
diff --git a/arch/hexagon/bits/sem.h b/arch/hexagon/bits/sem.h
new file mode 100644
index 00000000..65661542
--- /dev/null
+++ b/arch/hexagon/bits/sem.h
@@ -0,0 +1,13 @@
+struct semid_ds {
+ struct ipc_perm sem_perm;
+ unsigned long __sem_otime_lo;
+ unsigned long __sem_otime_hi;
+ unsigned long __sem_ctime_lo;
+ unsigned long __sem_ctime_hi;
+ unsigned short sem_nsems;
+ char __sem_nsems_pad[sizeof(long)-sizeof(short)];
+ long __unused3;
+ long __unused4;
+ time_t sem_otime;
+ time_t sem_ctime;
+};
diff --git a/arch/hexagon/bits/setjmp.h b/arch/hexagon/bits/setjmp.h
new file mode 100644
index 00000000..5ee5e49f
--- /dev/null
+++ b/arch/hexagon/bits/setjmp.h
@@ -0,0 +1,4 @@
+
+typedef struct {
+ long regs[16];
+} __jmp_buf[1] __attribute__((aligned (8)));
diff --git a/arch/hexagon/bits/shm.h b/arch/hexagon/bits/shm.h
new file mode 100644
index 00000000..725fb469
--- /dev/null
+++ b/arch/hexagon/bits/shm.h
@@ -0,0 +1,31 @@
+#define SHMLBA 4096
+
+struct shmid_ds {
+ struct ipc_perm shm_perm;
+ size_t shm_segsz;
+ unsigned long __shm_atime_lo;
+ unsigned long __shm_atime_hi;
+ unsigned long __shm_dtime_lo;
+ unsigned long __shm_dtime_hi;
+ unsigned long __shm_ctime_lo;
+ unsigned long __shm_ctime_hi;
+ pid_t shm_cpid;
+ pid_t shm_lpid;
+ unsigned long shm_nattch;
+ unsigned long __pad1;
+ unsigned long __pad2;
+ unsigned long __pad3;
+ time_t shm_atime;
+ time_t shm_dtime;
+ time_t shm_ctime;
+};
+
+struct shminfo {
+ unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
+};
+
+struct shm_info {
+ int __used_ids;
+ unsigned long shm_tot, shm_rss, shm_swp;
+ unsigned long __swap_attempts, __swap_successes;
+};
diff --git a/arch/hexagon/bits/signal.h b/arch/hexagon/bits/signal.h
new file mode 100644
index 00000000..7a3b36d0
--- /dev/null
+++ b/arch/hexagon/bits/signal.h
@@ -0,0 +1,105 @@
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef int greg_t, gregset_t[18];
+typedef struct sigcontext
+{
+ unsigned long r0, r1, r2, r3;
+ unsigned long r4, r5, r6, r7;
+ unsigned long r8, r9, r10, r11;
+ unsigned long r12, r13, r14, r15;
+ unsigned long r16, r17, r18, r19;
+ unsigned long r20, r21, r22, r23;
+ unsigned long r24, r25, r26, r27;
+ unsigned long r28, r29, r30, r31;
+ unsigned long sa0;
+ unsigned long lc0;
+ unsigned long sa1;
+ unsigned long lc1;
+ unsigned long m0;
+ unsigned long m1;
+ unsigned long usr;
+ unsigned long p3_0;
+ unsigned long gp;
+ unsigned long ugp;
+ unsigned long pc;
+ unsigned long cause;
+ unsigned long badva;
+ unsigned long pad1;
+ unsigned long pad2;
+ unsigned long pad3;
+} __attribute__((__aligned__(8))) mcontext_t;
+#else
+typedef struct {
+ unsigned long __regs[48];
+} __attribute__((__aligned__(8))) mcontext_t;
+#endif
+
+struct sigaltstack {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+};
+
+typedef struct __ucontext {
+ unsigned long uc_flags;
+ struct __ucontext *uc_link;
+ stack_t uc_stack;
+ mcontext_t uc_mcontext;
+ sigset_t uc_sigmask;
+// unsigned long long uc_regspace[64];
+} ucontext_t;
+
+#define SA_NOCLDSTOP 1
+#define SA_NOCLDWAIT 2
+#define SA_SIGINFO 4
+#define SA_ONSTACK 0x08000000
+#define SA_RESTART 0x10000000
+#define SA_NODEFER 0x40000000
+#define SA_RESETHAND 0x80000000
+#define SA_RESTORER 0x04000000
+
+#endif
+
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT SIGABRT
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL 29
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED SIGSYS
+
+#define _NSIG 65
diff --git a/arch/hexagon/bits/stat.h b/arch/hexagon/bits/stat.h
new file mode 100644
index 00000000..55e81fd9
--- /dev/null
+++ b/arch/hexagon/bits/stat.h
@@ -0,0 +1,20 @@
+/* copied from kernel definition, but with padding replaced
+ * by the corresponding correctly-sized userspace types. */
+struct stat {
+ dev_t st_dev;
+ ino_t st_ino;
+ mode_t st_mode;
+ nlink_t st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ dev_t st_rdev;
+ unsigned long __pad;
+ off_t st_size;
+ blksize_t st_blksize;
+ int __pad2;
+ blkcnt_t st_blocks;
+ struct timespec st_atim;
+ struct timespec st_mtim;
+ struct timespec st_ctim;
+ unsigned __unused[2];
+};
diff --git a/arch/hexagon/bits/stdint.h b/arch/hexagon/bits/stdint.h
new file mode 100644
index 00000000..d1b27121
--- /dev/null
+++ b/arch/hexagon/bits/stdint.h
@@ -0,0 +1,20 @@
+typedef int32_t int_fast16_t;
+typedef int32_t int_fast32_t;
+typedef uint32_t uint_fast16_t;
+typedef uint32_t uint_fast32_t;
+
+#define INT_FAST16_MIN INT32_MIN
+#define INT_FAST32_MIN INT32_MIN
+
+#define INT_FAST16_MAX INT32_MAX
+#define INT_FAST32_MAX INT32_MAX
+
+#define UINT_FAST16_MAX UINT32_MAX
+#define UINT_FAST32_MAX UINT32_MAX
+
+#define INTPTR_MIN INT32_MIN
+#define INTPTR_MAX INT32_MAX
+#define UINTPTR_MAX UINT32_MAX
+#define PTRDIFF_MIN INT32_MIN
+#define PTRDIFF_MAX INT32_MAX
+#define SIZE_MAX UINT32_MAX
diff --git a/arch/hexagon/bits/syscall.h.in b/arch/hexagon/bits/syscall.h.in
new file mode 100644
index 00000000..77ca3fa0
--- /dev/null
+++ b/arch/hexagon/bits/syscall.h.in
@@ -0,0 +1,317 @@
+#define __NR_io_setup 0
+#define __NR_io_destroy 1
+#define __NR_io_submit 2
+#define __NR_io_cancel 3
+#define __NR_io_getevents 4
+#define __NR_setxattr 5
+#define __NR_lsetxattr 6
+#define __NR_fsetxattr 7
+#define __NR_getxattr 8
+#define __NR_lgetxattr 9
+#define __NR_fgetxattr 10
+#define __NR_listxattr 11
+#define __NR_llistxattr 12
+#define __NR_flistxattr 13
+#define __NR_removexattr 14
+#define __NR_lremovexattr 15
+#define __NR_fremovexattr 16
+#define __NR_getcwd 17
+#define __NR_lookup_dcookie 18
+#define __NR_eventfd2 19
+#define __NR_epoll_create1 20
+#define __NR_epoll_ctl 21
+#define __NR_epoll_pwait 22
+#define __NR_dup 23
+#define __NR_dup3 24
+#define __NR3264_fcntl 25
+#define __NR_inotify_init1 26
+#define __NR_inotify_add_watch 27
+#define __NR_inotify_rm_watch 28
+#define __NR_ioctl 29
+#define __NR_ioprio_set 30
+#define __NR_ioprio_get 31
+#define __NR_flock 32
+#define __NR_mknodat 33
+#define __NR_mkdirat 34
+#define __NR_unlinkat 35
+#define __NR_symlinkat 36
+#define __NR_linkat 37
+#define __NR_renameat 38
+#define __NR_umount2 39
+#define __NR_mount 40
+#define __NR_pivot_root 41
+#define __NR_nfsservctl 42
+#define __NR3264_statfs 43
+#define __NR3264_fstatfs 44
+#define __NR3264_truncate 45
+#define __NR3264_ftruncate 46
+#define __NR_fallocate 47
+#define __NR_faccessat 48
+#define __NR_chdir 49
+#define __NR_fchdir 50
+#define __NR_chroot 51
+#define __NR_fchmod 52
+#define __NR_fchmodat 53
+#define __NR_fchownat 54
+#define __NR_fchown 55
+#define __NR_openat 56
+#define __NR_close 57
+#define __NR_vhangup 58
+#define __NR_pipe2 59
+#define __NR_quotactl 60
+#define __NR_getdents64 61
+#define __NR3264_lseek 62
+#define __NR_read 63
+#define __NR_write 64
+#define __NR_readv 65
+#define __NR_writev 66
+#define __NR_pread64 67
+#define __NR_pwrite64 68
+#define __NR_preadv 69
+#define __NR_pwritev 70
+#define __NR3264_sendfile 71
+#define __NR_pselect6 72
+#define __NR_ppoll 73
+#define __NR_signalfd4 74
+#define __NR_vmsplice 75
+#define __NR_splice 76
+#define __NR_tee 77
+#define __NR_readlinkat 78
+#define __NR3264_fstatat 79
+#define __NR3264_fstat 80
+#define __NR_sync 81
+#define __NR_fsync 82
+#define __NR_fdatasync 83
+#define __NR_sync_file_range2 84
+#define __NR_sync_file_range 84
+#define __NR_timerfd_create 85
+#define __NR_timerfd_settime 86
+#define __NR_timerfd_gettime 87
+#define __NR_utimensat 88
+#define __NR_acct 89
+#define __NR_capget 90
+#define __NR_capset 91
+#define __NR_personality 92
+#define __NR_exit 93
+#define __NR_exit_group 94
+#define __NR_waitid 95
+#define __NR_set_tid_address 96
+#define __NR_unshare 97
+#define __NR_futex 98
+#define __NR_set_robust_list 99
+#define __NR_get_robust_list 100
+#define __NR_nanosleep 101
+#define __NR_getitimer 102
+#define __NR_setitimer 103
+#define __NR_kexec_load 104
+#define __NR_init_module 105
+#define __NR_delete_module 106
+#define __NR_timer_create 107
+#define __NR_timer_gettime 108
+#define __NR_timer_getoverrun 109
+#define __NR_timer_settime 110
+#define __NR_timer_delete 111
+#define __NR_clock_settime 112
+#define __NR_clock_gettime 113
+#define __NR_clock_getres 114
+#define __NR_clock_nanosleep 115
+#define __NR_syslog 116
+#define __NR_ptrace 117
+#define __NR_sched_setparam 118
+#define __NR_sched_setscheduler 119
+#define __NR_sched_getscheduler 120
+#define __NR_sched_getparam 121
+#define __NR_sched_setaffinity 122
+#define __NR_sched_getaffinity 123
+#define __NR_sched_yield 124
+#define __NR_sched_get_priority_max 125
+#define __NR_sched_get_priority_min 126
+#define __NR_sched_rr_get_interval 127
+#define __NR_restart_syscall 128
+#define __NR_kill 129
+#define __NR_tkill 130
+#define __NR_tgkill 131
+#define __NR_sigaltstack 132
+#define __NR_rt_sigsuspend 133
+#define __NR_rt_sigaction 134
+#define __NR_rt_sigprocmask 135
+#define __NR_rt_sigpending 136
+#define __NR_rt_sigtimedwait 137
+#define __NR_rt_sigqueueinfo 138
+#define __NR_rt_sigreturn 139
+#define __NR_setpriority 140
+#define __NR_getpriority 141
+#define __NR_reboot 142
+#define __NR_setregid 143
+#define __NR_setgid 144
+#define __NR_setreuid 145
+#define __NR_setuid 146
+#define __NR_setresuid 147
+#define __NR_getresuid 148
+#define __NR_setresgid 149
+#define __NR_getresgid 150
+#define __NR_setfsuid 151
+#define __NR_setfsgid 152
+#define __NR_times 153
+#define __NR_setpgid 154
+#define __NR_getpgid 155
+#define __NR_getsid 156
+#define __NR_setsid 157
+#define __NR_getgroups 158
+#define __NR_setgroups 159
+#define __NR_uname 160
+#define __NR_sethostname 161
+#define __NR_setdomainname 162
+#define __NR_getrlimit 163
+#define __NR_setrlimit 164
+#define __NR_getrusage 165
+#define __NR_umask 166
+#define __NR_prctl 167
+#define __NR_getcpu 168
+#define __NR_gettimeofday 169
+#define __NR_settimeofday 170
+#define __NR_adjtimex 171
+#define __NR_getpid 172
+#define __NR_getppid 173
+#define __NR_getuid 174
+#define __NR_geteuid 175
+#define __NR_getgid 176
+#define __NR_getegid 177
+#define __NR_gettid 178
+#define __NR_sysinfo 179
+#define __NR_mq_open 180
+#define __NR_mq_unlink 181
+#define __NR_mq_timedsend 182
+#define __NR_mq_timedreceive 183
+#define __NR_mq_notify 184
+#define __NR_mq_getsetattr 185
+#define __NR_msgget 186
+#define __NR_msgctl 187
+#define __NR_msgrcv 188
+#define __NR_msgsnd 189
+#define __NR_semget 190
+#define __NR_semctl 191
+#define __NR_semtimedop 192
+#define __NR_semop 193
+#define __NR_shmget 194
+#define __NR_shmctl 195
+#define __NR_shmat 196
+#define __NR_shmdt 197
+#define __NR_socket 198
+#define __NR_socketpair 199
+#define __NR_bind 200
+#define __NR_listen 201
+#define __NR_accept 202
+#define __NR_connect 203
+#define __NR_getsockname 204
+#define __NR_getpeername 205
+#define __NR_sendto 206
+#define __NR_recvfrom 207
+#define __NR_setsockopt 208
+#define __NR_getsockopt 209
+#define __NR_shutdown 210
+#define __NR_sendmsg 211
+#define __NR_recvmsg 212
+#define __NR_readahead 213
+#define __NR_brk 214
+#define __NR_munmap 215
+#define __NR_mremap 216
+#define __NR_add_key 217
+#define __NR_request_key 218
+#define __NR_keyctl 219
+#define __NR_clone 220
+#define __NR_execve 221
+#define __NR3264_mmap 222
+#define __NR3264_fadvise64 223
+#define __NR_swapon 224
+#define __NR_swapoff 225
+#define __NR_mprotect 226
+#define __NR_msync 227
+#define __NR_mlock 228
+#define __NR_munlock 229
+#define __NR_mlockall 230
+#define __NR_munlockall 231
+#define __NR_mincore 232
+#define __NR_madvise 233
+#define __NR_remap_file_pages 234
+#define __NR_mbind 235
+#define __NR_get_mempolicy 236
+#define __NR_set_mempolicy 237
+#define __NR_migrate_pages 238
+#define __NR_move_pages 239
+#define __NR_rt_tgsigqueueinfo 240
+#define __NR_perf_event_open 241
+#define __NR_accept4 242
+#define __NR_recvmmsg 243
+#define __NR_arch_specific_syscall 244
+#define __NR_wait4 260
+#define __NR_prlimit64 261
+#define __NR_fanotify_init 262
+#define __NR_fanotify_mark 263
+#define __NR_name_to_handle_at 264
+#define __NR_open_by_handle_at 265
+#define __NR_clock_adjtime 266
+#define __NR_syncfs 267
+#define __NR_setns 268
+#define __NR_sendmmsg 269
+#define __NR_process_vm_readv 270
+#define __NR_process_vm_writev 271
+#define __NR_kcmp 272
+#define __NR_finit_module 273
+#define __NR_sched_setattr 274
+#define __NR_sched_getattr 275
+#define __NR_renameat2 276
+#define __NR_seccomp 277
+#define __NR_getrandom 278
+#define __NR_memfd_create 279
+#define __NR_bpf 280
+#define __NR_execveat 281
+#define __NR_userfaultfd 282
+#define __NR_membarrier 283
+#define __NR_mlock2 284
+#define __NR_copy_file_range 285
+#define __NR_preadv2 286
+#define __NR_pwritev2 287
+#define __NR_pkey_mprotect 288
+#define __NR_pkey_alloc 289
+#define __NR_pkey_free 290
+#define __NR_statx 291
+#define __NR_clock_gettime64 403
+#define __NR_clock_settime64 404
+#define __NR_clock_adjtime64 405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64 408
+#define __NR_timer_settime64 409
+#define __NR_timerfd_gettime64 410
+#define __NR_timerfd_settime64 411
+#define __NR_utimensat_time64 412
+#define __NR_pselect6_time64 413
+#define __NR_ppoll_time64 414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64 417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64 420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64 422
+#define __NR_sched_rr_get_interval_time64 423
+#define __NR_syscalls (__NR_sched_rr_get_interval_time64+1)
+#define __NR_fcntl __NR3264_fcntl
+#define __NR_fstatfs __NR3264_fstatfs
+#define __NR_truncate __NR3264_truncate
+#define __NR_ftruncate __NR3264_ftruncate
+#define __NR_lseek __NR3264_lseek
+#define __NR_sendfile __NR3264_sendfile
+#define __NR_newfstatat __NR3264_fstatat
+#define __NR_fcntl64 __NR3264_fcntl
+#define __NR_statfs64 __NR3264_statfs
+#define __NR_fstatfs64 __NR3264_fstatfs
+#define __NR_truncate64 __NR3264_truncate
+#define __NR_ftruncate64 __NR3264_ftruncate
+#define __NR__llseek __NR3264_lseek
+#define __NR_sendfile64 __NR3264_sendfile
+#define __NR_fstatat64 __NR3264_fstatat
+#define __NR_fstat64 __NR3264_fstat
+#define __NR_mmap2 __NR3264_mmap
+#define __NR_fadvise64_64 __NR3264_fadvise64
diff --git a/arch/hexagon/crt_arch.h b/arch/hexagon/crt_arch.h
new file mode 100644
index 00000000..331a797e
--- /dev/null
+++ b/arch/hexagon/crt_arch.h
@@ -0,0 +1,35 @@
+__asm__(
+".weak _DYNAMIC \n"
+".hidden _DYNAMIC \n"
+".text \n"
+".global " START " \n"
+".type " START ", %function \n"
+START ": \n"
+" // Find _DYNAMIC\n"
+" jump 1f\n"
+".word _DYNAMIC - .\n"
+"1: r2 = pc\n"
+" r2 = add(r2, #-4)\n"
+" r1 = memw(r2)\n"
+" r1 = add(r2, r1)\n"
+" r30 = #0 // Signals the end of backtrace\n"
+" r0 = r29 // Pointer to argc/argv\n"
+" r29 = and(r29, #-16) // Align\n"
+" memw(r29+#-8) = r29\n"
+" r29 = add(r29, #-8)\n"
+" call " START "_c \n"
+".size " START ", .-" START "\n"
+);
+
+__asm__(
+".section \".note.ABI-tag\", \"a\" \n"
+".align 4 \n"
+".long 1f - 0f /* name length */ \n"
+".long 3f - 2f /* data length */ \n"
+".long 1 /* note type */ \n"
+"0: .asciz \"GNU\" /* vendor name seems like this should be MUSL but lldb doesn't agree.*/ \n"
+"1: .align 4 \n"
+"2: .long 0 /* linux */ \n"
+" .long 3,0,0 \n"
+"3: .align 4 \n"
+);
diff --git a/arch/hexagon/kstat.h b/arch/hexagon/kstat.h
new file mode 100644
index 00000000..92625f36
--- /dev/null
+++ b/arch/hexagon/kstat.h
@@ -0,0 +1,21 @@
+struct kstat {
+ dev_t st_dev;
+ ino_t st_ino;
+ mode_t st_mode;
+ nlink_t st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ dev_t st_rdev;
+ unsigned long __pad;
+ off_t st_size;
+ blksize_t st_blksize;
+ int __pad2;
+ blkcnt_t st_blocks;
+ long st_atime_sec;
+ long st_atime_nsec;
+ long st_mtime_sec;
+ long st_mtime_nsec;
+ long st_ctime_sec;
+ long st_ctime_nsec;
+ unsigned __unused[2];
+};
diff --git a/arch/hexagon/pthread_arch.h b/arch/hexagon/pthread_arch.h
new file mode 100644
index 00000000..b614fdd1
--- /dev/null
+++ b/arch/hexagon/pthread_arch.h
@@ -0,0 +1,13 @@
+// Hexagon supports variant 2 TLS.
+static inline uintptr_t __get_tp()
+{
+ uintptr_t tp;
+ __asm__ ( "%0 = ugp" : "=r"(tp));
+ return tp;
+}
+
+#define TP_ADJ(p) (p)
+
+#define CANCEL_REG_IP 43
+
+#define MC_PC pc
diff --git a/arch/hexagon/reloc.h b/arch/hexagon/reloc.h
new file mode 100644
index 00000000..14085872
--- /dev/null
+++ b/arch/hexagon/reloc.h
@@ -0,0 +1,25 @@
+#include <endian.h>
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define ENDIAN_SUFFIX "el"
+#else
+#define ENDIAN_SUFFIX ""
+#endif
+
+#define FP_SUFFIX ""
+
+#define LDSO_ARCH "hexagon" ENDIAN_SUFFIX FP_SUFFIX
+
+#define TPOFF_K 0
+
+#define REL_SYMBOLIC R_HEX_32
+#define REL_GOT R_HEX_GLOB_DAT
+#define REL_PLT R_HEX_JMP_SLOT
+#define REL_RELATIVE R_HEX_RELATIVE
+#define REL_COPY R_HEX_COPY
+#define REL_DTPMOD R_HEX_DTPMOD_32
+#define REL_TPOFF R_HEX_TPREL_32
+#define REL_DTPOFF R_HEX_DTPREL_32
+
+#define CRTJMP(pc,sp) __asm__ __volatile__( \
+ "r29 = %1 ; jumpr %0" : : "r"(pc), "r"(sp) : "memory" )
diff --git a/arch/hexagon/syscall_arch.h b/arch/hexagon/syscall_arch.h
new file mode 100644
index 00000000..e6defe41
--- /dev/null
+++ b/arch/hexagon/syscall_arch.h
@@ -0,0 +1,77 @@
+
+#define __SYSCALL_LL_E(x) \
+((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
+((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+#define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x))
+
+#define __asm_syscall(...) do { \
+ __asm__ __volatile__ ( "trap0(#1)" \
+ : "=r"(r0) : __VA_ARGS__ : "memory"); \
+ return r0; \
+ } while (0)
+
+static inline long __syscall0(long n)
+{
+ register long r6 __asm__("r6") = n;
+ register long r0 __asm__("r0");
+ __asm_syscall("r"(r6));
+}
+
+static inline long __syscall1(long n, long a)
+{
+ register long r6 __asm__("r6") = n;
+ register long r0 __asm__("r0") = a;
+ __asm_syscall("r"(r6), "0"(r0));
+}
+
+static inline long __syscall2(long n, long a, long b)
+{
+ register long r6 __asm__("r6") = n;
+ register long r0 __asm__("r0") = a;
+ register long r1 __asm__("r1") = b;
+ __asm_syscall("r"(r6), "0"(r0), "r"(r1));
+}
+
+static inline long __syscall3(long n, long a, long b, long c)
+{
+ register long r6 __asm__("r6") = n;
+ register long r0 __asm__("r0") = a;
+ register long r1 __asm__("r1") = b;
+ register long r2 __asm__("r2") = c;
+ __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2));
+}
+
+static inline long __syscall4(long n, long a, long b, long c, long d)
+{
+ register long r6 __asm__("r6") = n;
+ register long r0 __asm__("r0") = a;
+ register long r1 __asm__("r1") = b;
+ register long r2 __asm__("r2") = c;
+ register long r3 __asm__("r3") = d;
+ __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3));
+}
+
+static inline long __syscall5(long n, long a, long b, long c, long d, long e)
+{
+ register long r6 __asm__("r6") = n;
+ register long r0 __asm__("r0") = a;
+ register long r1 __asm__("r1") = b;
+ register long r2 __asm__("r2") = c;
+ register long r3 __asm__("r3") = d;
+ register long r4 __asm__("r4") = e;
+ __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
+}
+
+static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
+{
+ register long r6 __asm__("r6") = n;
+ register long r0 __asm__("r0") = a;
+ register long r1 __asm__("r1") = b;
+ register long r2 __asm__("r2") = c;
+ register long r3 __asm__("r3") = d;
+ register long r4 __asm__("r4") = e;
+ register long r5 __asm__("r5") = f;
+ __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5));
+}
+
+#define SYSCALL_FADVISE_6_ARG
diff --git a/configure b/configure
index 947adf41..edbee0b5 100755
--- a/configure
+++ b/configure
@@ -323,6 +323,7 @@ case "$target" in
# Catch these early to simplify matching for 32-bit archs
arm*) ARCH=arm ;;
aarch64*) ARCH=aarch64 ;;
+hexagon*) ARCH=hexagon ;;
i?86-nt32*) ARCH=nt32 ;;
i?86*) ARCH=i386 ;;
x86_64-x32*|x32*|x86_64*x32) ARCH=x32 ;;
diff --git a/include/elf.h b/include/elf.h
index 549f92c1..54251c24 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -3284,6 +3284,107 @@ enum
#define R_RISCV_SET32 56
#define R_RISCV_32_PCREL 57
+#define R_HEX_NONE 0
+#define R_HEX_B22_PCREL 1
+#define R_HEX_B15_PCREL 2
+#define R_HEX_B7_PCREL 3
+#define R_HEX_LO16 4
+#define R_HEX_HI16 5
+#define R_HEX_32 6
+#define R_HEX_16 7
+#define R_HEX_8 8
+#define R_HEX_GPREL16_0 9
+#define R_HEX_GPREL16_1 10
+#define R_HEX_GPREL16_2 11
+#define R_HEX_GPREL16_3 12
+#define R_HEX_HL16 13
+#define R_HEX_B13_PCREL 14
+#define R_HEX_B9_PCREL 15
+#define R_HEX_B32_PCREL_X 16
+#define R_HEX_32_6_X 17
+#define R_HEX_B22_PCREL_X 18
+#define R_HEX_B15_PCREL_X 19
+#define R_HEX_B13_PCREL_X 20
+#define R_HEX_B9_PCREL_X 21
+#define R_HEX_B7_PCREL_X 22
+#define R_HEX_16_X 23
+#define R_HEX_12_X 24
+#define R_HEX_11_X 25
+#define R_HEX_10_X 26
+#define R_HEX_9_X 27
+#define R_HEX_8_X 28
+#define R_HEX_7_X 29
+#define R_HEX_6_X 30
+#define R_HEX_32_PCREL 31
+#define R_HEX_COPY 32
+#define R_HEX_GLOB_DAT 33
+#define R_HEX_JMP_SLOT 34
+#define R_HEX_RELATIVE 35
+#define R_HEX_PLT_B22_PCREL 36
+#define R_HEX_GOTOFF_LO16 37
+#define R_HEX_GOTOFF_HI16 38
+#define R_HEX_GOTOFF_32 39
+#define R_HEX_GOT_LO16 40
+#define R_HEX_GOT_HI16 41
+#define R_HEX_GOT_32 42
+#define R_HEX_GOT_16 43
+#define R_HEX_DTPMOD_32 44
+#define R_HEX_DTPREL_LO16 45
+#define R_HEX_DTPREL_HI16 46
+#define R_HEX_DTPREL_32 47
+#define R_HEX_DTPREL_16 48
+#define R_HEX_GD_PLT_B22_PCREL 49
+#define R_HEX_GD_GOT_LO16 50
+#define R_HEX_GD_GOT_HI16 51
+#define R_HEX_GD_GOT_32 52
+#define R_HEX_GD_GOT_16 53
+#define R_HEX_IE_LO16 54
+#define R_HEX_IE_HI16 55
+#define R_HEX_IE_32 56
+#define R_HEX_IE_GOT_LO16 57
+#define R_HEX_IE_GOT_HI16 58
+#define R_HEX_IE_GOT_32 59
+#define R_HEX_IE_GOT_16 60
+#define R_HEX_TPREL_LO16 61
+#define R_HEX_TPREL_HI16 62
+#define R_HEX_TPREL_32 63
+#define R_HEX_TPREL_16 64
+#define R_HEX_6_PCREL_X 65
+#define R_HEX_GOTREL_32_6_X 66
+#define R_HEX_GOTREL_16_X 67
+#define R_HEX_GOTREL_11_X 68
+#define R_HEX_GOT_32_6_X 69
+#define R_HEX_GOT_16_X 70
+#define R_HEX_GOT_11_X 71
+#define R_HEX_DTPREL_32_6_X 72
+#define R_HEX_DTPREL_16_X 73
+#define R_HEX_DTPREL_11_X 74
+#define R_HEX_GD_GOT_32_6_X 75
+#define R_HEX_GD_GOT_16_X 76
+#define R_HEX_GD_GOT_11_X 77
+#define R_HEX_IE_32_6_X 78
+#define R_HEX_IE_16_X 79
+#define R_HEX_IE_GOT_32_6_X 80
+#define R_HEX_IE_GOT_16_X 81
+#define R_HEX_IE_GOT_11_X 82
+#define R_HEX_TPREL_32_6_X 83
+#define R_HEX_TPREL_16_X 84
+#define R_HEX_TPREL_11_X 85
+#define R_HEX_LD_PLT_B22_PCREL 86
+#define R_HEX_LD_GOT_LO16 87
+#define R_HEX_LD_GOT_HI16 88
+#define R_HEX_LD_GOT_32 89
+#define R_HEX_LD_GOT_16 90
+#define R_HEX_LD_GOT_32_6_X 91
+#define R_HEX_LD_GOT_16_X 92
+#define R_HEX_LD_GOT_11_X 93
+#define R_HEX_23_REG 94
+#define R_HEX_GD_PLT_B22_PCREL_X 95
+#define R_HEX_GD_PLT_B32_PCREL_X 96
+#define R_HEX_LD_PLT_B22_PCREL_X 97
+#define R_HEX_LD_PLT_B32_PCREL_X 98
+
+
#ifdef __cplusplus
}
#endif
diff --git a/src/fenv/hexagon/fenv.S b/src/fenv/hexagon/fenv.S
new file mode 100644
index 00000000..07b89764
--- /dev/null
+++ b/src/fenv/hexagon/fenv.S
@@ -0,0 +1,143 @@
+/*
+The Hexagon user status register includes five status fields which work as
+sticky flags for the five IEEE-defined exception conditions: inexact, overflow, underflow,
+divide by zero, and invalid. A sticky flag is set when the corresponding exception occurs,
+and remains set until explicitly cleared.
+
+ usr:23:22 - Rounding Mode
+ 00: Round toward nearest
+ 01: Round toward zero
+ 10: Downward Round toward negative infinity
+ 11: Upward Round toward positive infinity
+
+ usr:5 - Floating-point IEEE Inexact Sticky Flag.
+ usr:4 - Floating-point IEEE Underflow Sticky Flag.
+ usr:3 - Floating-point IEEE Overflow Sticky Flag.
+ usr:2 - Floating-point IEEE Divide-By-Zero Sticky Flag.
+ usr:1 - Floating-point IEEE Invalid Sticky Flag.
+ usr:0 - Sticky Saturation Overflow, when 1 saturation occurred.
+*/
+
+#define FE_ALL_EXCEPT 0x3f
+
+#define USR_FE_MASK 0x3fc0003f
+#define RND_MASK (0x3 << 22)
+#define RND_NEAR (0x0 << 22)
+#define RND_ZERO (0x1 << 22)
+#define RND_DOWN (0x2 << 22)
+#define RND_UP (0x3 << 22)
+
+/*
+int feclearexcept(int mask)
+*/
+.global feclearexcept
+.type feclearexcept,@function
+feclearexcept:
+ {
+ r0 = and(r0, #FE_ALL_EXCEPT) // Only touch the IEEE flag bits.
+ r1 = usr
+ }
+ r1 = and(r1, ~r0)
+ {
+ usr = r1
+ r0 = #0
+ jumpr r31
+ }
+
+/*
+int feraiseexcept(int mask)
+*/
+.global feraiseexcept
+.type feraiseexcept,@function
+feraiseexcept:
+ {
+ r0 = and(r0, #FE_ALL_EXCEPT) // Only touch the IEEE flag bits.
+ r1 = usr
+ }
+ r1 = or(r1, r0)
+ {
+ usr = r1
+ r0 = #0
+ jumpr r31
+ }
+
+
+/*
+int fetestexcept(int mask)
+*/
+.global fetestexcept
+.type fetestexcept,@function
+fetestexcept:
+ {
+ r0 = and(r0, #FE_ALL_EXCEPT) // Only touch the IEEE flag bits.
+ r1 = usr
+ }
+ {
+ r0 = and(r1, r0)
+ jumpr r31
+ }
+
+/*
+int fegetround(void)
+*/
+.global fegetround
+.type fegetround,@function
+fegetround:
+ r0 = usr
+ r0 = and(r0, ##RND_MASK)
+ r0 = lsr(r0, #22);
+ jumpr r31
+
+/*
+int __fesetround(int r)
+*/
+.global __fesetround
+.type __fesetround,@function
+__fesetround:
+ {
+ r0 = and(r0, #0x3) // Can only be 0,1,2, or 3
+ r1 = usr
+ r2 = ##RND_MASK
+ }
+ {
+ r1 = and (r1, ~r2) // Clear the current rounding bits.
+ r0 = asl (r0, #22)
+ }
+ r1 = or(r1, r0)
+ usr = r1
+ {
+ r0 = #0; jumpr r31
+ }
+
+/*
+int fegetenv(fenv_t *envp)
+*/
+.global fegetenv
+.type fegetenv,@function
+fegetenv:
+ r1 = usr
+ memw(r0) = r1
+ {
+ r0 = #0
+ jumpr r31
+ }
+
+/*
+int fesetenv(const fenv_t *envp)
+*/
+.global fesetenv
+.type fesetenv,@function
+fesetenv:
+ { p0 = cmp.eq(r0, #-1); if (p0.new) r1 = #0 } /* The default mode */
+ if (!p0) r1 = memw(r0) /* stored in fenv_t */
+
+ r2 = ##USR_FE_MASK // USR:FE bit mask
+ r1 = and(r1, r2) // MASK the input bits with the FE bits
+ r3 = usr
+ r3 = and(r3, ~r2) // Clear any currently set FE bits
+ r3 = or(r3, r1) // Set the newbits
+ usr = r3
+ {
+ r0 = #0
+ jumpr r31
+ }
diff --git a/src/math/hexagon/fmaf.c b/src/math/hexagon/fmaf.c
new file mode 100644
index 00000000..7ce1996c
--- /dev/null
+++ b/src/math/hexagon/fmaf.c
@@ -0,0 +1,8 @@
+#include <math.h>
+
+float fmaf(float x, float y, float z)
+{
+ __asm__ ("%[z]+=sfmpy(%[x], %[y])"
+ : [z]"+r"(z) : [x]"r"(x), [y]"r"(y));
+ return z;
+}
diff --git a/src/math/hexagon/fmaxf.c b/src/math/hexagon/fmaxf.c
new file mode 100644
index 00000000..0dc52b25
--- /dev/null
+++ b/src/math/hexagon/fmaxf.c
@@ -0,0 +1,8 @@
+#include <math.h>
+
+float fmaxf(float x, float y)
+{
+ __asm__ ("%[x]=sfmax(%[x], %[y])"
+ : [x]"+r"(x) : [y]"r"(y));
+ return x;
+}
diff --git a/src/math/hexagon/fminf.c b/src/math/hexagon/fminf.c
new file mode 100644
index 00000000..aeb20ae0
--- /dev/null
+++ b/src/math/hexagon/fminf.c
@@ -0,0 +1,8 @@
+#include <math.h>
+
+float fminf(float x, float y)
+{
+ __asm__ ("%[x]=sfmin(%[x], %[y])"
+ : [x]"+r"(x) : [y]"r"(y));
+ return x;
+}
diff --git a/src/setjmp/hexagon/longjmp.s b/src/setjmp/hexagon/longjmp.s
new file mode 100644
index 00000000..691b67dd
--- /dev/null
+++ b/src/setjmp/hexagon/longjmp.s
@@ -0,0 +1,25 @@
+.text
+.global _longjmp
+.global longjmp
+.type _longjmp,%function
+.type longjmp,%function
+_longjmp:
+longjmp:
+ { r17:16=memd(r0+#0)
+ r19:18=memd(r0+#8) }
+ { r21:20=memd(r0+#16)
+ r23:22=memd(r0+#24) }
+ { r25:24=memd(r0+#32)
+ r27:26=memd(r0+#40) }
+ { r29:28=memd(r0+#48)
+ r31:30=memd(r0+#56) }
+
+ r0 = r1
+ r1 = #0
+ p0 = cmp.eq(r0,r1)
+ if (!p0) jumpr r31
+ r0 = #1
+
+ jumpr r31
+.size _longjmp, .-_longjmp
+.size longjmp, .-longjmp
diff --git a/src/setjmp/hexagon/setjmp.s b/src/setjmp/hexagon/setjmp.s
new file mode 100644
index 00000000..d29f036e
--- /dev/null
+++ b/src/setjmp/hexagon/setjmp.s
@@ -0,0 +1,24 @@
+.text
+.global __setjmp
+.global _setjmp
+.global setjmp
+.type __setjmp,@function
+.type _setjmp,@function
+.type setjmp,@function
+__setjmp:
+_setjmp:
+setjmp:
+ { memd(r0+#0)=r17:16
+ memd(r0+#8)=r19:18 }
+ { memd(r0+#16)=r21:20
+ memd(r0+#24)=r23:22 }
+ { memd(r0+#32)=r25:24
+ memd(r0+#40)=r27:26 }
+ { memd(r0+#48)=r29:28
+ memd(r0+#56)=r31:30 }
+
+ r0 = #0
+ jumpr r31
+.size __setjmp, .-__setjmp
+.size _setjmp, .-_setjmp
+.size setjmp, .-setjmp
diff --git a/src/signal/hexagon/restore.s b/src/signal/hexagon/restore.s
new file mode 100644
index 00000000..f43f5e02
--- /dev/null
+++ b/src/signal/hexagon/restore.s
@@ -0,0 +1,11 @@
+// TODO - Test this if sa_restorer is ever supported in our kernel
+.global __restore
+.type __restore,%function
+.global __restore_rt
+.type __restore_rt,%function
+__restore:
+__restore_rt:
+ r6 = #139 // SYS_rt_sigreturn
+ trap0(#0)
+.size __restore, .-__restore
+.size __restore_rt, .-__restore_rt
diff --git a/src/signal/hexagon/sigsetjmp.s b/src/signal/hexagon/sigsetjmp.s
new file mode 100644
index 00000000..f1aaf165
--- /dev/null
+++ b/src/signal/hexagon/sigsetjmp.s
@@ -0,0 +1,28 @@
+.global sigsetjmp
+.global __sigsetjmp
+.type sigsetjmp,@function
+.type __sigsetjmp,@function
+.balign 4
+sigsetjmp:
+__sigsetjmp:
+ // if savemask is 0 sigsetjmp behaves like setjmp
+ {
+ p0 = cmp.eq(r1, #0)
+ if (p0.new) jump:t ##setjmp
+ }
+ {
+ memw(r0+#64+4+8) = r16 // save r16 in __ss[2]
+ memw(r0+#64) = r31 // save linkregister in __fl
+ r16 = r0
+ }
+ call ##setjmp
+ {
+ r1 = r0;
+ r0 = r16 // restore r0
+ r31 = memw(r16+#64) // restore linkregister
+ r16 = memw(r16+#64+4+8) // restore r16 from __ss[2]
+ }
+.hidden __sigsetjmp_tail
+ jump ##__sigsetjmp_tail
+
+.size sigsetjmp, .-sigsetjmp
diff --git a/src/thread/hexagon/__set_thread_area.s b/src/thread/hexagon/__set_thread_area.s
new file mode 100644
index 00000000..87a991b7
--- /dev/null
+++ b/src/thread/hexagon/__set_thread_area.s
@@ -0,0 +1,7 @@
+.global __set_thread_area
+.type __set_thread_area,@function
+__set_thread_area:
+ { ugp = r0
+ r0 = #0
+ jumpr r31 }
+.size __set_thread_area, .-__set_thread_area
diff --git a/src/thread/hexagon/__unmapself.s b/src/thread/hexagon/__unmapself.s
new file mode 100644
index 00000000..c47dce21
--- /dev/null
+++ b/src/thread/hexagon/__unmapself.s
@@ -0,0 +1,11 @@
+#include <syscall.h>
+
+.global __unmapself
+.type __unmapself,%function
+__unmapself:
+ r6 = #215 // SYS_munmap
+ trap0(#1)
+ r6 = #93 // SYS_exit
+ trap0(#1)
+ jumpr r31
+.size __unmapself, .-__unmapself
diff --git a/src/thread/hexagon/clone.s b/src/thread/hexagon/clone.s
new file mode 100644
index 00000000..42aab67a
--- /dev/null
+++ b/src/thread/hexagon/clone.s
@@ -0,0 +1,37 @@
+// __clone(func, stack, flags, arg, ptid, tls, ctid)
+// r0, r1, r2, r3, r4, r5, stack
+
+// tid = syscall(SYS_clone, flags, stack, ptid, ctid, tls)
+// r6, r0, r1, r2, r3, r4
+// if (tid != 0) return
+// func(arg)
+// syscall(SYS_exit)
+
+.text
+.global __clone
+.type __clone,%function
+__clone:
+ allocframe(#8)
+ // Save pointers for later
+ { r11 = r0
+ r10 = r3 }
+
+ // Set up syscall args - The stack must be 8 byte aligned.
+ { r0 = r2
+ r1 = and(r1, ##0xfffffff8)
+ r2 = r4 }
+ {
+ r3 = memw(r30+#8)
+ r4 = r5 }
+ r6 = #220 // SYS_clone
+ trap0(#1)
+
+ p0 = cmp.eq(r0, #0)
+ if (!p0) dealloc_return
+
+ { r0 = r10
+ callr r11 }
+
+ r6 = #93 // SYS_exit
+ trap0(#1)
+.size __clone, .-__clone
diff --git a/src/thread/hexagon/syscall_cp.s b/src/thread/hexagon/syscall_cp.s
new file mode 100644
index 00000000..50383cad
--- /dev/null
+++ b/src/thread/hexagon/syscall_cp.s
@@ -0,0 +1,35 @@
+// __syscall_cp_asm(&self->cancel, nr, u, v, w, x, y, z)
+// r0 r1 r2 r3 r4 r5 stack stack
+
+// syscall(nr, u, v, w, x, y, z)
+// r6 r0 r1 r2 r3 r4 r5
+
+.text
+.global __cp_begin
+.hidden __cp_begin
+.global __cp_end
+.hidden __cp_end
+.global __cp_cancel
+.hidden __cp_cancel
+.hidden __cancel
+.global __syscall_cp_asm
+.hidden __syscall_cp_asm
+.type __syscall_cp_asm,%function
+__syscall_cp_asm:
+__cp_begin:
+ r0 = memw(r0+#0)
+ {
+ p0 = cmp.eq(r0, #0); if (!p0.new) jump:nt __cancel
+ }
+ { r6 = r1
+ r1:0 = combine(r3, r2)
+ r3:2 = combine(r5, r4) }
+ { r4 = memw(r29+#0)
+ r5 = memw(r29+#4) }
+ trap0(#1)
+__cp_end:
+ jumpr r31
+.size __syscall_cp_asm, .-__syscall_cp_asm
+__cp_cancel:
+ jump __cancel
+.size __cp_cancel, .-__cp_cancel
[-- Attachment #3: libc_test_REPORT --]
[-- Type: application/octet-stream, Size: 42187 bytes --]
FAIL src/api/main.exe [status 1]
clang-12: error: no such file or directory: 'src/api/unistd.o'
src/api/unistd.c:87:3: error: use of undeclared identifier '_CS_POSIX_V7_THREADS_CFLAGS'
C(_CS_POSIX_V7_THREADS_CFLAGS)
^
src/api/unistd.c:88:3: error: use of undeclared identifier '_CS_POSIX_V7_THREADS_LDFLAGS'
C(_CS_POSIX_V7_THREADS_LDFLAGS)
^
src/api/unistd.c:117:3: error: use of undeclared identifier '_PC_TIMESTAMP_RESOLUTION'
C(_PC_TIMESTAMP_RESOLUTION)
^
src/api/unistd.c:238:3: error: use of undeclared identifier '_SC_XOPEN_UUCP'
C(_SC_XOPEN_UUCP)
^
src/api/unistd.c:87:3: error: use of undeclared identifier '_CS_POSIX_V7_THREADS_CFLAGS'
C(_CS_POSIX_V7_THREADS_CFLAGS)
^
src/api/unistd.c:88:3: error: use of undeclared identifier '_CS_POSIX_V7_THREADS_LDFLAGS'
C(_CS_POSIX_V7_THREADS_LDFLAGS)
^
src/api/unistd.c:117:3: error: use of undeclared identifier '_PC_TIMESTAMP_RESOLUTION'
C(_PC_TIMESTAMP_RESOLUTION)
^
src/api/unistd.c:238:3: error: use of undeclared identifier '_SC_XOPEN_UUCP'
C(_SC_XOPEN_UUCP)
^
8 errors generated.
warning: overriding currently unsupported rounding mode on this target [-Wunsupported-floating-point-opt]
1 warning generated.
warning: overriding currently unsupported rounding mode on this target [-Wunsupported-floating-point-opt]
1 warning generated.
warning: overriding currently unsupported rounding mode on this target [-Wunsupported-floating-point-opt]
1 warning generated.
warning: overriding currently unsupported rounding mode on this target [-Wunsupported-floating-point-opt]
1 warning generated.
warning: overriding currently unsupported rounding mode on this target [-Wunsupported-floating-point-opt]
1 warning generated.
warning: overriding currently unsupported rounding mode on this target [-Wunsupported-floating-point-opt]
1 warning generated.
warning: overriding currently unsupported rounding mode on this target [-Wunsupported-floating-point-opt]
1 warning generated.
warning: overriding currently unsupported rounding mode on this target [-Wunsupported-floating-point-opt]
1 warning generated.
warning: overriding currently unsupported rounding mode on this target [-Wunsupported-floating-point-opt]
1 warning generated.
warning: overriding currently unsupported rounding mode on this target [-Wunsupported-floating-point-opt]
1 warning generated.
src/functional/dlopen.c:39: dlsym main failed: Symbol not found: main
FAIL src/functional/dlopen.exe [status 1]
clang-12: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:87: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:87: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:108: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:108: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
FAIL src/functional/pthread_mutex_pi-static.exe [status 1]
src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:87: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:87: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:108: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
src/functional/pthread_mutex_pi.c:108: pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: Function not implemented
FAIL src/functional/pthread_mutex_pi.exe [status 1]
src/functional/pthread_robust.c:39: pthread_mutexattr_setrobust(&mtx_a, PTHREAD_MUTEX_ROBUST) failed: (pshared==0, pi==0) Function not implemented (setting robust attribute)
FAIL src/functional/pthread_robust-static.exe [timed out]
src/functional/pthread_robust.c:39: pthread_mutexattr_setrobust(&mtx_a, PTHREAD_MUTEX_ROBUST) failed: (pshared==0, pi==0) Function not implemented (setting robust attribute)
FAIL src/functional/pthread_robust.exe [timed out]
src/functional/strptime.c:23: "%F": failed to parse "1856-07-10"
src/functional/strptime.c:23: "%s": failed to parse "683078400"
src/functional/strptime.c:47: "%z": failed to parse "+0200"
src/functional/strptime.c:47: "%z": failed to parse "-0530"
src/functional/strptime.c:47: "%z": failed to parse "-06"
FAIL src/functional/strptime-static.exe [status 1]
src/functional/strptime.c:23: "%F": failed to parse "1856-07-10"
src/functional/strptime.c:23: "%s": failed to parse "683078400"
src/functional/strptime.c:47: "%z": failed to parse "+0200"
src/functional/strptime.c:47: "%z": failed to parse "-0530"
src/functional/strptime.c:47: "%z": failed to parse "-06"
FAIL src/functional/strptime.exe [status 1]
src/functional/utime.c:63: futimens(fd, ((struct timespec[2]){{.tv_sec=1LL<<32},{.tv_sec=1LL<<32}})) == 0 failed: Not supported
FAIL src/functional/utime-static.exe [status 1]
src/functional/utime.c:63: futimens(fd, ((struct timespec[2]){{.tv_sec=1LL<<32},{.tv_sec=1LL<<32}})) == 0 failed: Not supported
FAIL src/functional/utime.exe [status 1]
X src/math/special/acosh.h:9: RN acosh(0x1.001f1c62cf304p+0) want 0x1.f8d125ff71ccp-6 got 0x1.f8d125ff71cc2p-6 ulperr 1.853 = 0x1p+1 + -0x1.2d785ap-3
X src/math/special/acosh.h:10: RN acosh(0x1.00788c223616fp+0) want 0x1.f0cb8ee812621p-5 got 0x1.f0cb8ee812623p-5 ulperr 1.724 = 0x1p+1 + -0x1.1b0c1ap-2
X src/math/special/acosh.h:11: RN acosh(0x1.007b7a37c7606p+0) want 0x1.f6cb68859ae3p-5 got 0x1.f6cb68859ae2ep-5 ulperr -1.855 = -0x1p+1 + 0x1.280488p-3
X src/math/special/acosh.h:12: RN acosh(0x1.01d173033243cp+0) want 0x1.e7e1b18d99376p-4 got 0x1.e7e1b18d99378p-4 ulperr 1.930 = 0x1p+1 + -0x1.1f3d3ep-4
X src/math/special/acosh.h:13: RN acosh(0x1.01d8f20e90409p+0) want 0x1.ebca3eea5cda5p-4 got 0x1.ebca3eea5cda3p-4 ulperr -1.652 = -0x1p+1 + 0x1.648602p-2
X src/math/special/acosh.h:14: RN acosh(0x1.01ef6122e68bep+0) want 0x1.f74df150afc94p-4 got 0x1.f74df150afc92p-4 ulperr -1.762 = -0x1p+1 + 0x1.e79556p-3
X src/math/special/acosh.h:15: RN acosh(0x1.06822faf07879p+0) want 0x1.ccd73cbc4af78p-3 got 0x1.ccd73cbc4af7ap-3 ulperr 1.674 = 0x1p+1 + -0x1.4df79ep-2
X src/math/special/acosh.h:17: RN acosh(0x1.069d65411ec51p+0) want 0x1.d0928b08facbap-3 got 0x1.d0928b08facbcp-3 ulperr 1.785 = 0x1p+1 + -0x1.b83338p-3
X src/math/special/acosh.h:18: RN acosh(0x1.071d6b2713d08p+0) want 0x1.e1bc6a6c345fdp-3 got 0x1.e1bc6a6c345ffp-3 ulperr 1.818 = 0x1p+1 + -0x1.74a04ep-3
X src/math/special/acosh.h:19: RN acosh(0x1.0728405f5140cp+0) want 0x1.e328ebe92b32cp-3 got 0x1.e328ebe92b32ep-3 ulperr 1.790 = 0x1p+1 + -0x1.ae89ap-3
X src/math/special/acosh.h:20: RN acosh(0x1.07bd2c5c01bcbp+0) want 0x1.f6513c44c131p-3 got 0x1.f6513c44c1312p-3 ulperr 1.719 = 0x1p+1 + -0x1.203932p-2
X src/math/special/acosh.h:21: RN acosh(0x1.1aae7c452c859p+0) want 0x1.cf8d69288e386p-2 got 0x1.cf8d69288e384p-2 ulperr -1.723 = -0x1p+1 + 0x1.1b325ap-2
X src/math/special/acosh.h:23: RN acosh(0x1.1b50764626f1ep+0) want 0x1.d4ec67c71794p-2 got 0x1.d4ec67c717942p-2 ulperr 1.738 = 0x1p+1 + -0x1.0c09dap-2
src/math/special/acosh.h:9: RN acoshl(0x1.001f1c62cf304p+0) want 0x1.f8d125ff71ccp-6 got 0x1.f8d125ff71cc2p-6 ulperr 1.853 = 0x1p+1 + -0x1.2d785ap-3
src/math/special/acosh.h:10: RN acoshl(0x1.00788c223616fp+0) want 0x1.f0cb8ee812621p-5 got 0x1.f0cb8ee812623p-5 ulperr 1.724 = 0x1p+1 + -0x1.1b0c1ap-2
src/math/special/acosh.h:11: RN acoshl(0x1.007b7a37c7606p+0) want 0x1.f6cb68859ae3p-5 got 0x1.f6cb68859ae2ep-5 ulperr -1.855 = -0x1p+1 + 0x1.280488p-3
src/math/special/acosh.h:12: RN acoshl(0x1.01d173033243cp+0) want 0x1.e7e1b18d99376p-4 got 0x1.e7e1b18d99378p-4 ulperr 1.930 = 0x1p+1 + -0x1.1f3d3ep-4
src/math/special/acosh.h:13: RN acoshl(0x1.01d8f20e90409p+0) want 0x1.ebca3eea5cda5p-4 got 0x1.ebca3eea5cda3p-4 ulperr -1.652 = -0x1p+1 + 0x1.648602p-2
src/math/special/acosh.h:14: RN acoshl(0x1.01ef6122e68bep+0) want 0x1.f74df150afc94p-4 got 0x1.f74df150afc92p-4 ulperr -1.762 = -0x1p+1 + 0x1.e79556p-3
src/math/special/acosh.h:15: RN acoshl(0x1.06822faf07879p+0) want 0x1.ccd73cbc4af78p-3 got 0x1.ccd73cbc4af7ap-3 ulperr 1.674 = 0x1p+1 + -0x1.4df79ep-2
src/math/special/acosh.h:17: RN acoshl(0x1.069d65411ec51p+0) want 0x1.d0928b08facbap-3 got 0x1.d0928b08facbcp-3 ulperr 1.785 = 0x1p+1 + -0x1.b83338p-3
src/math/special/acosh.h:18: RN acoshl(0x1.071d6b2713d08p+0) want 0x1.e1bc6a6c345fdp-3 got 0x1.e1bc6a6c345ffp-3 ulperr 1.818 = 0x1p+1 + -0x1.74a04ep-3
src/math/special/acosh.h:19: RN acoshl(0x1.0728405f5140cp+0) want 0x1.e328ebe92b32cp-3 got 0x1.e328ebe92b32ep-3 ulperr 1.790 = 0x1p+1 + -0x1.ae89ap-3
src/math/special/acosh.h:20: RN acoshl(0x1.07bd2c5c01bcbp+0) want 0x1.f6513c44c131p-3 got 0x1.f6513c44c1312p-3 ulperr 1.719 = 0x1p+1 + -0x1.203932p-2
src/math/special/acosh.h:21: RN acoshl(0x1.1aae7c452c859p+0) want 0x1.cf8d69288e386p-2 got 0x1.cf8d69288e384p-2 ulperr -1.723 = -0x1p+1 + 0x1.1b325ap-2
src/math/special/acosh.h:23: RN acoshl(0x1.1b50764626f1ep+0) want 0x1.d4ec67c71794p-2 got 0x1.d4ec67c717942p-2 ulperr 1.738 = 0x1p+1 + -0x1.0c09dap-2
FAIL src/math/acoshl.exe [status 1]
X src/math/special/asinh.h:7: RN asinh(0x1.fbdd0eedf8143p-3) want 0x1.f6cc20d7a594ap-3 got 0x1.f6cc20d7a594cp-3 ulperr 1.513 = 0x1p+1 + -0x1.f327a8p-2
X src/math/special/asinh.h:8: RN asinh(0x1.df2723491f88fp-3) want 0x1.dae2c8444900cp-3 got 0x1.dae2c8444900ap-3 ulperr -1.551 = -0x1p+1 + 0x1.cb8b86p-2
X src/math/special/asinh.h:9: RN asinh(0x1.ef675c6541305p-3) want 0x1.eab20432c9598p-3 got 0x1.eab20432c959ap-3 ulperr 1.568 = 0x1p+1 + -0x1.ba9e34p-2
X src/math/special/asinh.h:10: RN asinh(0x1.f19df3a1722a9p-3) want 0x1.ecd8a7f621554p-3 got 0x1.ecd8a7f621552p-3 ulperr -1.535 = -0x1p+1 + 0x1.dbc1a8p-2
X src/math/special/asinh.h:11: RN asinh(0x1.f1af09dcfa7d6p-3) want 0x1.ece942815ceccp-3 got 0x1.ece942815cecap-3 ulperr -1.526 = -0x1p+1 + 0x1.e5bb5p-2
X src/math/special/asinh.h:12: RN asinh(0x1.f339ebbeac5bap-3) want 0x1.ee68f10a49c42p-3 got 0x1.ee68f10a49c44p-3 ulperr 1.529 = 0x1p+1 + -0x1.e28cbp-2
X src/math/special/asinh.h:13: RN asinh(0x1.f424275dc8787p-3) want 0x1.ef4c7fcb51c56p-3 got 0x1.ef4c7fcb51c54p-3 ulperr -1.642 = -0x1p+1 + 0x1.6e4e9p-2
X src/math/special/asinh.h:14: RN asinh(0x1.f60d54a133665p-3) want 0x1.f127a8dec0c2p-3 got 0x1.f127a8dec0c1ep-3 ulperr -1.512 = -0x1p+1 + 0x1.f3c9eap-2
X src/math/special/asinh.h:15: RN asinh(0x1.fdccdaf285ffdp-3) want 0x1.f8ad4bed7af4cp-3 got 0x1.f8ad4bed7af4ap-3 ulperr -1.576 = -0x1p+1 + 0x1.b1f1f8p-2
X src/math/special/asinh.h:16: RN asinh(0x1.ff5bec94924c7p-3) want 0x1.fa30836c3949ap-3 got 0x1.fa30836c39498p-3 ulperr -1.533 = -0x1p+1 + 0x1.de989p-2
X src/math/special/asinh.h:17: RN asinh(0x1.028e8fd61c8a5p-2) want 0x1.ffc55bd02e9dep-3 got 0x1.ffc55bd02e9ep-3 ulperr 1.670 = 0x1p+1 + -0x1.523c08p-2
X src/math/special/asinh.h:18: RN asinh(0x1.dc71794e1f137p-2) want 0x1.ccbd41a7d058ap-2 got 0x1.ccbd41a7d0588p-2 ulperr -1.585 = -0x1p+1 + 0x1.a944b8p-2
X src/math/special/asinh.h:19: RN asinh(0x1.df308e177c3cbp-2) want 0x1.cf3a638145d7ap-2 got 0x1.cf3a638145d78p-2 ulperr -1.505 = -0x1p+1 + 0x1.fb3684p-2
X src/math/special/asinh.h:20: RN asinh(0x1.ea94e1e267746p-2) want 0x1.d9862533f65f6p-2 got 0x1.d9862533f65f4p-2 ulperr -1.579 = -0x1p+1 + 0x1.af51ecp-2
X src/math/special/asinh.h:21: RN asinh(0x1.ecd4f07608dc7p-2) want 0x1.db8d6fdcc6d74p-2 got 0x1.db8d6fdcc6d76p-2 ulperr 1.517 = 0x1p+1 + -0x1.eeb48p-2
X src/math/special/asinh.h:22: RN asinh(0x1.f30656c78ee7ep-2) want 0x1.e1204e364a186p-2 got 0x1.e1204e364a188p-2 ulperr 1.576 = 0x1p+1 + -0x1.b23ffp-2
X src/math/special/asinh.h:23: RN asinh(0x1.f5c0c6e41b969p-2) want 0x1.e393d3dc3b70ap-2 got 0x1.e393d3dc3b70cp-2 ulperr 1.562 = 0x1p+1 + -0x1.c06dbep-2
X src/math/special/asinh.h:24: RN asinh(0x1.09c58725300e7p-1) want 0x1.fe2c7f25fb172p-2 got 0x1.fe2c7f25fb174p-2 ulperr 1.579 = 0x1p+1 + -0x1.ae9df6p-2
src/math/special/asinh.h:7: RN asinhl(0x1.fbdd0eedf8143p-3) want 0x1.f6cc20d7a594ap-3 got 0x1.f6cc20d7a594cp-3 ulperr 1.513 = 0x1p+1 + -0x1.f327a8p-2
src/math/special/asinh.h:8: RN asinhl(0x1.df2723491f88fp-3) want 0x1.dae2c8444900cp-3 got 0x1.dae2c8444900ap-3 ulperr -1.551 = -0x1p+1 + 0x1.cb8b86p-2
src/math/special/asinh.h:9: RN asinhl(0x1.ef675c6541305p-3) want 0x1.eab20432c9598p-3 got 0x1.eab20432c959ap-3 ulperr 1.568 = 0x1p+1 + -0x1.ba9e34p-2
src/math/special/asinh.h:10: RN asinhl(0x1.f19df3a1722a9p-3) want 0x1.ecd8a7f621554p-3 got 0x1.ecd8a7f621552p-3 ulperr -1.535 = -0x1p+1 + 0x1.dbc1a8p-2
src/math/special/asinh.h:11: RN asinhl(0x1.f1af09dcfa7d6p-3) want 0x1.ece942815ceccp-3 got 0x1.ece942815cecap-3 ulperr -1.526 = -0x1p+1 + 0x1.e5bb5p-2
src/math/special/asinh.h:12: RN asinhl(0x1.f339ebbeac5bap-3) want 0x1.ee68f10a49c42p-3 got 0x1.ee68f10a49c44p-3 ulperr 1.529 = 0x1p+1 + -0x1.e28cbp-2
src/math/special/asinh.h:13: RN asinhl(0x1.f424275dc8787p-3) want 0x1.ef4c7fcb51c56p-3 got 0x1.ef4c7fcb51c54p-3 ulperr -1.642 = -0x1p+1 + 0x1.6e4e9p-2
src/math/special/asinh.h:14: RN asinhl(0x1.f60d54a133665p-3) want 0x1.f127a8dec0c2p-3 got 0x1.f127a8dec0c1ep-3 ulperr -1.512 = -0x1p+1 + 0x1.f3c9eap-2
src/math/special/asinh.h:15: RN asinhl(0x1.fdccdaf285ffdp-3) want 0x1.f8ad4bed7af4cp-3 got 0x1.f8ad4bed7af4ap-3 ulperr -1.576 = -0x1p+1 + 0x1.b1f1f8p-2
src/math/special/asinh.h:16: RN asinhl(0x1.ff5bec94924c7p-3) want 0x1.fa30836c3949ap-3 got 0x1.fa30836c39498p-3 ulperr -1.533 = -0x1p+1 + 0x1.de989p-2
src/math/special/asinh.h:17: RN asinhl(0x1.028e8fd61c8a5p-2) want 0x1.ffc55bd02e9dep-3 got 0x1.ffc55bd02e9ep-3 ulperr 1.670 = 0x1p+1 + -0x1.523c08p-2
src/math/special/asinh.h:18: RN asinhl(0x1.dc71794e1f137p-2) want 0x1.ccbd41a7d058ap-2 got 0x1.ccbd41a7d0588p-2 ulperr -1.585 = -0x1p+1 + 0x1.a944b8p-2
src/math/special/asinh.h:19: RN asinhl(0x1.df308e177c3cbp-2) want 0x1.cf3a638145d7ap-2 got 0x1.cf3a638145d78p-2 ulperr -1.505 = -0x1p+1 + 0x1.fb3684p-2
src/math/special/asinh.h:20: RN asinhl(0x1.ea94e1e267746p-2) want 0x1.d9862533f65f6p-2 got 0x1.d9862533f65f4p-2 ulperr -1.579 = -0x1p+1 + 0x1.af51ecp-2
src/math/special/asinh.h:21: RN asinhl(0x1.ecd4f07608dc7p-2) want 0x1.db8d6fdcc6d74p-2 got 0x1.db8d6fdcc6d76p-2 ulperr 1.517 = 0x1p+1 + -0x1.eeb48p-2
src/math/special/asinh.h:22: RN asinhl(0x1.f30656c78ee7ep-2) want 0x1.e1204e364a186p-2 got 0x1.e1204e364a188p-2 ulperr 1.576 = 0x1p+1 + -0x1.b23ffp-2
src/math/special/asinh.h:23: RN asinhl(0x1.f5c0c6e41b969p-2) want 0x1.e393d3dc3b70ap-2 got 0x1.e393d3dc3b70cp-2 ulperr 1.562 = 0x1p+1 + -0x1.c06dbep-2
src/math/special/asinh.h:24: RN asinhl(0x1.09c58725300e7p-1) want 0x1.fe2c7f25fb172p-2 got 0x1.fe2c7f25fb174p-2 ulperr 1.579 = 0x1p+1 + -0x1.ae9df6p-2
FAIL src/math/asinhl.exe [status 1]
X src/math/special/erfc.h:6: RN erfc(0x1.5db559fe5c0bap+0) want 0x1.b53cf571d328fp-5 got 0x1.b53cf571d328cp-5 ulperr -2.609 = -0x1.8p+1 + 0x1.900982p-2
src/math/special/erfc.h:6: RN erfcl(0x1.5db559fe5c0bap+0) want 0x1.b53cf571d328fp-5 got 0x1.b53cf571d328cp-5 ulperr -2.609 = -0x1.8p+1 + 0x1.900982p-2
FAIL src/math/erfcl.exe [status 1]
X src/math/special/exp2.h:12: bad fp exception: RN exp2(-0x1.ff8p+9)=0x1p-1023, want 0 got INEXACT|UNDERFLOW
X src/math/special/exp2.h:18: bad fp exception: RN exp2(-0x1.ff8p+9)=0x1p-1023, want 0 got INEXACT|UNDERFLOW
X src/math/special/exp2.h:20: bad fp exception: RN exp2(-0x1p+10)=0x1p-1024, want 0 got INEXACT|UNDERFLOW
X src/math/special/exp2.h:21: bad fp exception: RN exp2(-0x1.004p+10)=0x1p-1025, want 0 got INEXACT|UNDERFLOW
X src/math/special/exp2.h:22: bad fp exception: RN exp2(-0x1.0c8p+10)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
src/math/special/exp2.h:12: bad fp exception: RN exp2l(-0x1.ff8p+9)=0x1p-1023, want 0 got INEXACT|UNDERFLOW
src/math/special/exp2.h:18: bad fp exception: RN exp2l(-0x1.ff8p+9)=0x1p-1023, want 0 got INEXACT|UNDERFLOW
src/math/special/exp2.h:20: bad fp exception: RN exp2l(-0x1p+10)=0x1p-1024, want 0 got INEXACT|UNDERFLOW
src/math/special/exp2.h:21: bad fp exception: RN exp2l(-0x1.004p+10)=0x1p-1025, want 0 got INEXACT|UNDERFLOW
src/math/special/exp2.h:22: bad fp exception: RN exp2l(-0x1.0c8p+10)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
FAIL src/math/exp2l.exe [status 1]
src/math/special/ilogb.h:1: bad fp exception: RN ilogb(0x0p+0)=-2147483648, want INVALID got 0
src/math/special/ilogb.h:2: bad fp exception: RN ilogb(-0x0p+0)=-2147483648, want INVALID got 0
src/math/special/ilogb.h:6: bad fp exception: RN ilogb(inf)=2147483647, want INVALID got 0
src/math/special/ilogb.h:7: bad fp exception: RN ilogb(-inf)=2147483647, want INVALID got 0
src/math/special/ilogb.h:8: bad fp exception: RN ilogb(nan)=-2147483648, want INVALID got 0
FAIL src/math/ilogb.exe [status 1]
src/math/special/ilogbf.h:1: bad fp exception: RN ilogbf(0x0p+0)=-2147483648, want INVALID got 0
src/math/special/ilogbf.h:2: bad fp exception: RN ilogbf(-0x0p+0)=-2147483648, want INVALID got 0
src/math/special/ilogbf.h:6: bad fp exception: RN ilogbf(inf)=2147483647, want INVALID got 0
src/math/special/ilogbf.h:7: bad fp exception: RN ilogbf(-inf)=2147483647, want INVALID got 0
src/math/special/ilogbf.h:8: bad fp exception: RN ilogbf(-nan)=-2147483648, want INVALID got 0
FAIL src/math/ilogbf.exe [status 1]
src/math/special/ilogb.h:1: bad fp exception: RN ilogbl(0x0p+0)=-2147483648, want INVALID got 0
src/math/special/ilogb.h:2: bad fp exception: RN ilogbl(-0x0p+0)=-2147483648, want INVALID got 0
src/math/special/ilogb.h:6: bad fp exception: RN ilogbl(inf)=2147483647, want INVALID got 0
src/math/special/ilogb.h:7: bad fp exception: RN ilogbl(-inf)=2147483647, want INVALID got 0
src/math/special/ilogb.h:8: bad fp exception: RN ilogbl(nan)=-2147483648, want INVALID got 0
FAIL src/math/ilogbl.exe [status 1]
X src/math/special/j0.h:7: RN j0(-0x1.33d132fd04a92p+1) want 0x1.092b2a541a68ep-19 got 0x1.092b2a541b1ap-19 ulperr 2833.704 = 0x1.624p+11 + -0x1.2ebdbp-2
X src/math/special/j0.h:8: RN j0(-0x1.33d15297be06fp+1) want 0x1.5352913be3275p-26 got 0x1.5352913ddb41bp-26 ulperr 2064806.000 = 0x1.f81a6p+20 + 0x1.c281e2p-7
X src/math/special/j0.h:9: RN j0(0x1.33d152e971b4p+1) want -0x1.19b7921f03c8ep-54 got -0x1.00209921727cbp-54 ulperr 450179413049344.000 = 0x1.996f9p+48 + 0x1.ece5dp-5
X src/math/special/j0.h:10: RN j0(0x1.6148f5b2c2e45p+2) want -0x1.fbb40985f6e34p-56 got -0x1.ebcb069d486ccp-56 ulperr 279895217274880.000 = 0x1.fd205ep+47 + -0x1.1ac8a8p-2
X src/math/special/j0.h:11: RN j0(0x1.14eb56cccdecap+3) want -0x1.6e8eeb22e5818p-54 got -0x1.6d2a820627412p-54 ulperr 24492348801024.000 = 0x1.64691cp+44 + -0x1.63ab44p-2
X src/math/special/j0.h:12: RN j0(0x1.c071b22fbbafap+1023) want -0x1.a348b1f34dd1ap-526 got -0x1.a348b1f34d33dp-526 ulperr 2525.019 = 0x1.3bap+11 + 0x1.3153c2p-6
X src/math/special/j0.h:13: RN j0(0x1.f7350b1701ef7p+0) want 0x1.f32b3a3640292p-3 got 0x1.f32b3a3640296p-3 ulperr 3.947 = 0x1p+2 + -0x1.b3bad8p-5
X src/math/sanity/jn.h:8: RN jn(5, 0x1.1f9ef934745cbp-1) want 0x1.e274364abf2d5p-17 got 0x1.e274364abf2d2p-17, ulperr -2.504 = -0x1.8p+1 + 0x1.fbe5c8p-2
X src/math/sanity/jnf.h:1: RN jnf(-2, -0x1.0223ap+3) want -0x1.863726p-4 got -0x1.86372ap-4, ulperr -2.009 = -0x1p+1 + -0x1.28885p-7
X src/math/sanity/jnf.h:8: RN jnf(5, 0x1.1f9efap-1) want 0x1.e2743cp-17 got 0x1.e27442p-17, ulperr 2.537 = 0x1.8p+1 + -0x1.d9c372p-2
X src/math/sanity/jnf.h:10: RN jnf(7, -0x1.5b86eap-1) want -0x1.b39a9cp-24 got -0x1.b39a98p-24, ulperr 1.621 = 0x1p+1 + -0x1.83c12p-2
X src/math/special/lgamma.h:145: RN lgamma(-0x1.4p+1) want -0x1.ccbf9f5ed0f16p-5,-1 got -0x1.ccbf9f5ed0f2p-5,-1 ulperr -10.465 = -0x1.4p+3 + -0x1.dc4f24p-2
X src/math/sanity/lgammaf.h:3: RN lgammaf(-0x1.0c34b4p+3) want -0x1.46d732p+3,-1 got -0x1.46d736p+3,-1 ulperr -1.621 = -0x1p+1 + 0x1.83dafep-2
X src/math/sanity/lgammaf_r.h:3: RN lgammaf_r(-0x1.0c34b4p+3) want -0x1.46d732p+3,-1 got -0x1.46d736p+3,-1 ulperr -1.621 = -0x1p+1 + 0x1.83dafep-2
src/math/special/lgamma.h:145: RN lgammal(-0x1.4p+1) want -0x1.ccbf9f5ed0f16p-5,-1 got -0x1.ccbf9f5ed0f2p-5,-1 ulperr -10.465 = -0x1.4p+3 + -0x1.dc4f24p-2
FAIL src/math/lgammal.exe [status 1]
X src/math/crlibm/pow.h:13: bad fp exception: RN pow(0x1p+1,-0x1.0c8p+10)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:72: bad fp exception: RN pow(0x1p-1074,0x1p+0)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:73: bad fp exception: RN pow(0x1p-1042,0x1p+0)=0x1p-1042, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:75: bad fp exception: RN pow(-0x1p-1074,0x1p+0)=-0x1p-1074, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:76: bad fp exception: RN pow(-0x1p-1042,0x1p+0)=-0x1p-1042, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:284: bad fp exception: RN pow(0x1p-1073,0x1p+0)=0x1p-1073, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:300: bad fp exception: RN pow(0x1p-1024,0x1p+0)=0x1p-1024, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:304: bad fp exception: RN pow(0x1p-1023,0x1p+0)=0x1p-1023, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:310: bad fp exception: RN pow(0x1.ffffffffffffcp-1023,0x1p+0)=0x1.ffffffffffffcp-1023, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:313: bad fp exception: RN pow(0x1.ffffffffffffep-1023,0x1p+0)=0x1.ffffffffffffep-1023, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:338: bad fp exception: RN pow(0x1p-537,0x1p+1)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:437: bad fp exception: RN pow(0x1p+1,-0x1.0c8p+10)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:498: bad fp exception: RN pow(0x1p+350,-0x1.8p+1)=0x1p-1050, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:499: bad fp exception: RN pow(0x1p+700,-0x1.8p+0)=0x1p-1050, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:516: bad fp exception: RN pow(0x1p+1023,-0x1p+0)=0x1p-1023, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:544: bad fp exception: RN pow(-0x1p-1073,0x1p+0)=-0x1p-1073, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:548: bad fp exception: RN pow(-0x1p-1024,0x1p+0)=-0x1p-1024, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:551: bad fp exception: RN pow(-0x1p-1023,0x1p+0)=-0x1p-1023, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:557: bad fp exception: RN pow(-0x1.ffffffffffffcp-1023,0x1p+0)=-0x1.ffffffffffffcp-1023, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:560: bad fp exception: RN pow(-0x1.ffffffffffffep-1023,0x1p+0)=-0x1.ffffffffffffep-1023, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:581: bad fp exception: RN pow(-0x1p-537,0x1p+1)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:655: bad fp exception: RN pow(-0x1p+1,-0x1.0c8p+10)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:695: bad fp exception: RN pow(-0x1p+350,-0x1.8p+1)=-0x1p-1050, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/pow.h:708: bad fp exception: RN pow(-0x1p+1023,-0x1p+0)=-0x1p-1023, want 0 got INEXACT|UNDERFLOW
src/math/ucb/powf.h:103: bad fp exception: RU powf(0x1.fffffep+127,0x1p+0)=0x1.fffffep+127, want 0 got INEXACT|OVERFLOW
X src/math/ucb/powf.h:530: bad fp exception: RN powf(0x1.fffff8p-127,0x1p+0)=0x1.fffff8p-127, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/powf.h:533: bad fp exception: RN powf(0x1.fffffcp-127,0x1p+0)=0x1.fffffcp-127, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/powf.h:719: bad fp exception: RN powf(-0x1.fffff8p-127,0x1p+0)=-0x1.fffff8p-127, want 0 got INEXACT|UNDERFLOW
X src/math/ucb/powf.h:722: bad fp exception: RN powf(-0x1.fffffcp-127,0x1p+0)=-0x1.fffffcp-127, want 0 got INEXACT|UNDERFLOW
FAIL src/math/powf.exe [status 1]
src/math/crlibm/pow.h:13: bad fp exception: RN powl(0x1p+1,-0x1.0c8p+10)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:72: bad fp exception: RN powl(0x1p-1074,0x1p+0)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:73: bad fp exception: RN powl(0x1p-1042,0x1p+0)=0x1p-1042, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:75: bad fp exception: RN powl(-0x1p-1074,0x1p+0)=-0x1p-1074, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:76: bad fp exception: RN powl(-0x1p-1042,0x1p+0)=-0x1p-1042, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:284: bad fp exception: RN powl(0x1p-1073,0x1p+0)=0x1p-1073, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:300: bad fp exception: RN powl(0x1p-1024,0x1p+0)=0x1p-1024, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:304: bad fp exception: RN powl(0x1p-1023,0x1p+0)=0x1p-1023, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:310: bad fp exception: RN powl(0x1.ffffffffffffcp-1023,0x1p+0)=0x1.ffffffffffffcp-1023, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:313: bad fp exception: RN powl(0x1.ffffffffffffep-1023,0x1p+0)=0x1.ffffffffffffep-1023, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:338: bad fp exception: RN powl(0x1p-537,0x1p+1)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:437: bad fp exception: RN powl(0x1p+1,-0x1.0c8p+10)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:498: bad fp exception: RN powl(0x1p+350,-0x1.8p+1)=0x1p-1050, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:499: bad fp exception: RN powl(0x1p+700,-0x1.8p+0)=0x1p-1050, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:516: bad fp exception: RN powl(0x1p+1023,-0x1p+0)=0x1p-1023, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:544: bad fp exception: RN powl(-0x1p-1073,0x1p+0)=-0x1p-1073, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:548: bad fp exception: RN powl(-0x1p-1024,0x1p+0)=-0x1p-1024, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:551: bad fp exception: RN powl(-0x1p-1023,0x1p+0)=-0x1p-1023, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:557: bad fp exception: RN powl(-0x1.ffffffffffffcp-1023,0x1p+0)=-0x1.ffffffffffffcp-1023, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:560: bad fp exception: RN powl(-0x1.ffffffffffffep-1023,0x1p+0)=-0x1.ffffffffffffep-1023, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:581: bad fp exception: RN powl(-0x1p-537,0x1p+1)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:655: bad fp exception: RN powl(-0x1p+1,-0x1.0c8p+10)=0x1p-1074, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:695: bad fp exception: RN powl(-0x1p+350,-0x1.8p+1)=-0x1p-1050, want 0 got INEXACT|UNDERFLOW
src/math/ucb/pow.h:708: bad fp exception: RN powl(-0x1p+1023,-0x1p+0)=-0x1p-1023, want 0 got INEXACT|UNDERFLOW
FAIL src/math/powl.exe [status 1]
X src/math/crlibm/sinh.h:84: RN sinh(0x1.d3e0d2f5d98d6p-2) want 0x1.e45428082fb8cp-2 got 0x1.e45428082fb8ap-2 ulperr -1.500 = -0x1p+1 + 0x1p-1
X src/math/crlibm/sinh.h:84: RN sinhl(0x1.d3e0d2f5d98d6p-2) want 0x1.e45428082fb8cp-2 got 0x1.e45428082fb8ap-2 ulperr -1.500 = -0x1p+1 + 0x1p-1
X src/math/sanity/tgamma.h:4: RN tgamma(-0x1.a206f0a19dcc4p+2) want -0x1.9fd0c1ce12f14p-10 got -0x1.9fd0c1ce12f12p-10 ulperr 1.597 = 0x1p+1 + -0x1.9c637p-2
X src/math/sanity/tgamma.h:7: RN tgamma(-0x1.a05cc754481d1p-2) want -0x1.d9a22b2f3f253p+1 got -0x1.d9a22b2f3f251p+1 ulperr 1.674 = 0x1p+1 + -0x1.4d79f4p-2
src/math/special/tgamma.h:5: bad fp exception: RN tgamma(-0x1p+0)=nan, want INVALID got 0
src/math/special/tgamma.h:7: bad fp exception: RN tgamma(-0x1p+1)=nan, want INVALID got 0
X src/math/special/tgamma.h:47: RN tgamma(0x1p-53) want 0x1.fffffffffffffp+52 got 0x1.ffffffffffffdp+52 ulperr -2.423 = -0x1p+1 + -0x1.b0ee6p-2
X src/math/special/tgamma.h:60: RN tgamma(-0x1.0000000000001p+0) want 0x1.fffffffffffffp+51 got 0x1.ffffffffffffdp+51 ulperr -2.154 = -0x1p+1 + -0x1.3c467ep-3
X src/math/special/tgamma.h:62: RN tgamma(-0x1.0000000000003p+0) want 0x1.5555555555554p+50 got 0x1.5555555555552p+50 ulperr -1.642 = -0x1p+1 + 0x1.6e642cp-2
X src/math/special/tgamma.h:66: RN tgamma(-0x1.ffffffffffffep+0) want 0x1.0000000000002p+50 got 0x1.0000000000004p+50 ulperr 2.154 = 0x1p+1 + 0x1.3c467ep-3
X src/math/special/tgamma.h:68: RN tgamma(-0x1.0000000000001p+1) want -0x1.ffffffffffffcp+49 got -0x1.ffffffffffff7p+49 ulperr 5.309 = 0x1.4p+2 + 0x1.3c467ep-2
X src/math/special/tgamma.h:72: RN tgamma(-0x1.7fffffffffffdp+1) want -0x1.c71c71c71c72ap+46 got -0x1.c71c71c71c72cp+46 ulperr -2.157 = -0x1p+1 + -0x1.4177f6p-3
X src/math/special/tgamma.h:82: RN tgamma(-0x1.59fffffffffffp+7) want -0x1.46b1fa841aaa6p-997 got -0x1.46b1fa841aaa8p-997 ulperr -1.801 = -0x1p+1 + 0x1.979e28p-3
X src/math/special/tgamma.h:83: RN tgamma(-0x1.5a00000000001p+7) want 0x1.46b1fa841a412p-997 got 0x1.46b1fa841a41p-997 ulperr -1.700 = -0x1p+1 + 0x1.333de2p-2
X src/math/special/tgamma.h:84: RN tgamma(-0x1.5bfffffffffffp+7) want 0x1.e0a7b14f99fdbp-1005 got 0x1.e0a7b14f99fddp-1005 ulperr 1.579 = 0x1p+1 + -0x1.af416ap-2
X src/math/special/tgamma.h:85: RN tgamma(-0x1.5c00000000001p+7) want -0x1.e0a7b14f9962ap-1005 got -0x1.e0a7b14f9962cp-1005 ulperr -1.685 = -0x1p+1 + 0x1.42ddc4p-2
X src/math/special/tgamma.h:88: RN tgamma(-0x1.5ffffffffffffp+7) want 0x1.ff5df5f533fd3p-1020 got 0x1.ff5df5f533fd6p-1020 ulperr 2.513 = 0x1.8p+1 + -0x1.f234a4p-2
X src/math/special/tgamma.h:119: RN tgamma(-0x1.8p+0) want 0x1.2e7fb0bcdf4f2p+1 got 0x1.2e7fb0bcdf4fp+1 ulperr -1.770 = -0x1p+1 + 0x1.d7697p-3
X src/math/special/tgamma.h:136: RN tgamma(-0x1.02p+6) want -0x1.912276590832ep-298 got -0x1.912276590833p-298 ulperr -1.662 = -0x1p+1 + 0x1.59f79ap-2
X src/math/special/tgamma.h:141: RN tgamma(-0x1.55p+7) want -0x1.7d2374dfcda7ap-1022 got -0x1.7d2374dfcda78p-1022 ulperr 1.778 = 0x1p+1 + -0x1.c68fa4p-3
FAIL src/math/tgamma.exe [status 1]
src/math/special/tgammaf.h:4: bad fp exception: RN tgammaf(-0x1p+0)=-nan, want INVALID got 0
src/math/special/tgammaf.h:6: bad fp exception: RN tgammaf(-0x1p+1)=-nan, want INVALID got 0
FAIL src/math/tgammaf.exe [status 1]
src/math/special/tgamma.h:5: bad fp exception: RN tgammal(-0x1p+0)=nan, want INVALID got 0
src/math/special/tgamma.h:7: bad fp exception: RN tgammal(-0x1p+1)=nan, want INVALID got 0
src/math/special/tgamma.h:47: RN tgammal(0x1p-53) want 0x1.fffffffffffffp+52 got 0x1.ffffffffffffdp+52 ulperr -2.423 = -0x1p+1 + -0x1.b0ee6p-2
src/math/special/tgamma.h:60: RN tgammal(-0x1.0000000000001p+0) want 0x1.fffffffffffffp+51 got 0x1.ffffffffffffdp+51 ulperr -2.154 = -0x1p+1 + -0x1.3c467ep-3
src/math/special/tgamma.h:66: RN tgammal(-0x1.ffffffffffffep+0) want 0x1.0000000000002p+50 got 0x1.0000000000004p+50 ulperr 2.154 = 0x1p+1 + 0x1.3c467ep-3
src/math/special/tgamma.h:68: RN tgammal(-0x1.0000000000001p+1) want -0x1.ffffffffffffcp+49 got -0x1.ffffffffffff7p+49 ulperr 5.309 = 0x1.4p+2 + 0x1.3c467ep-2
src/math/special/tgamma.h:72: RN tgammal(-0x1.7fffffffffffdp+1) want -0x1.c71c71c71c72ap+46 got -0x1.c71c71c71c72cp+46 ulperr -2.157 = -0x1p+1 + -0x1.4177f6p-3
src/math/special/tgamma.h:88: RN tgammal(-0x1.5ffffffffffffp+7) want 0x1.ff5df5f533fd3p-1020 got 0x1.ff5df5f533fd6p-1020 ulperr 2.513 = 0x1.8p+1 + -0x1.f234a4p-2
FAIL src/math/tgammal.exe [status 1]
src/math/sanity/y0.h:1: bad fp exception: RN y0(-0x1.02239f3c6a8f1p+3)=nan, want INVALID got 0
src/math/sanity/y0.h:3: bad fp exception: RN y0(-0x1.0c34b3e01e6e7p+3)=nan, want INVALID got 0
src/math/sanity/y0.h:4: bad fp exception: RN y0(-0x1.a206f0a19dcc4p+2)=nan, want INVALID got 0
src/math/sanity/y0.h:7: bad fp exception: RN y0(-0x1.a05cc754481d1p-2)=nan, want INVALID got 0
src/math/sanity/y0.h:10: bad fp exception: RN y0(-0x1.5b86ea8118a0ep-1)=nan, want INVALID got 0
src/math/special/y0.h:1: bad fp exception: RN y0(0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/y0.h:2: bad fp exception: RN y0(-0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/y0.h:3: bad fp exception: RN y0(-0x1p+0)=nan, want INVALID got 0
src/math/special/y0.h:5: bad fp exception: RN y0(-inf)=nan, want INVALID got 0
X src/math/special/y0.h:8: RN y0(0x1.c982eb8d417eap-1) want -0x1.af74bfa0f1304p-56 got -0x1p-55 ulperr -1416944204906496.000 = -0x1.422d02p+50 + 0x1.11721cp-2
X src/math/special/y0.h:9: RN y0(0x1.c982eb8d417ebp-1) want 0x1.5666419c0f3c9p-54 got 0x1.2p-54 ulperr -957005015547904.000 = -0x1.b3320cp+49 + 0x1.dc02a8p-2
X src/math/special/y0.h:10: RN y0(0x1.fa9534d98569bp+1) want 0x1.384a000f3fcecp-53 got 0x1.3004a968fceadp-53 ulperr -145502385471488.000 = -0x1.08aad4p+47 + 0x1.58e17p-6
X src/math/special/y0.h:11: RN y0(0x1.fa9534d98569cp+1) want -0x1.8fa8956b4b481p-55 got -0x1.8f4eb84cc2a33p-55 ulperr 6175389646848.000 = 0x1.67747ap+42 + 0x1.54cfbep-2
X src/math/special/y0.h:12: RN y0(0x1.c581dc4e72102p+2) want -0x1.14bb186dc408dp-52 got -0x1.16eb61aad4cacp-52 ulperr -38502565675008.000 = -0x1.18249ep+45 + -0x1.163cfp-2
X src/math/special/y0.h:13: RN y0(0x1.c581dc4e72103p+2) want 0x1.e91b198d39ce2p-56 got 0x1.dac1abb064c09p-56 ulperr -252436132397056.000 = -0x1.cb2dbcp+47 + -0x1.ee1b6ep-2
FAIL src/math/y0.exe [status 1]
src/math/sanity/y0f.h:1: bad fp exception: RN y0f(-0x1.0223ap+3)=-nan, want INVALID got 0
X src/math/sanity/y0f.h:2: RN y0f(0x1.161868p+2) want -0x1.293dbep-3 got -0x1.293dc2p-3 ulperr -1.910 = -0x1p+1 + 0x1.6ffc42p-4
src/math/sanity/y0f.h:3: bad fp exception: RN y0f(-0x1.0c34b4p+3)=-nan, want INVALID got 0
src/math/sanity/y0f.h:4: bad fp exception: RN y0f(-0x1.a206fp+2)=-nan, want INVALID got 0
src/math/sanity/y0f.h:7: bad fp exception: RN y0f(-0x1.a05cc8p-2)=-nan, want INVALID got 0
src/math/sanity/y0f.h:10: bad fp exception: RN y0f(-0x1.5b86eap-1)=-nan, want INVALID got 0
src/math/special/y0f.h:1: bad fp exception: RN y0f(0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/y0f.h:2: bad fp exception: RN y0f(-0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/y0f.h:3: bad fp exception: RN y0f(-0x1p+0)=-nan, want INVALID got 0
src/math/special/y0f.h:5: bad fp exception: RN y0f(-inf)=-nan, want INVALID got 0
X src/math/special/y0f.h:7: RN y0f(0x1.0c4a3ap+0) want 0x1.ff138ep-4 got 0x1.ff1386p-4 ulperr -4.180 = -0x1.fffffep+1 + -0x1.71585ap-3
X src/math/special/y0f.h:8: RN y0f(0x1.8ae5d4p-1) want -0x1.d88a5ap-4 got -0x1.d88a5p-4 ulperr 4.919 = 0x1.4p+2 + -0x1.4d601ap-4
X src/math/special/y0f.h:9: RN y0f(0x1.fa9536p+1) want -0x1.da2946p-25 got -0x1.c5c23p-25 ulperr 668554.625 = 0x1.46716p+19 + -0x1.88a2bcp-2
FAIL src/math/y0f.exe [status 1]
src/math/sanity/y1.h:1: bad fp exception: RN y1(-0x1.02239f3c6a8f1p+3)=nan, want INVALID got 0
src/math/sanity/y1.h:3: bad fp exception: RN y1(-0x1.0c34b3e01e6e7p+3)=nan, want INVALID got 0
src/math/sanity/y1.h:4: bad fp exception: RN y1(-0x1.a206f0a19dcc4p+2)=nan, want INVALID got 0
src/math/sanity/y1.h:7: bad fp exception: RN y1(-0x1.a05cc754481d1p-2)=nan, want INVALID got 0
src/math/sanity/y1.h:10: bad fp exception: RN y1(-0x1.5b86ea8118a0ep-1)=nan, want INVALID got 0
src/math/special/y1.h:1: bad fp exception: RN y1(0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/y1.h:2: bad fp exception: RN y1(-0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/y1.h:3: bad fp exception: RN y1(-0x1p+0)=nan, want INVALID got 0
src/math/special/y1.h:5: bad fp exception: RN y1(-inf)=nan, want INVALID got 0
FAIL src/math/y1.exe [status 1]
src/math/sanity/y1f.h:1: bad fp exception: RN y1f(-0x1.0223ap+3)=-nan, want INVALID got 0
src/math/sanity/y1f.h:3: bad fp exception: RN y1f(-0x1.0c34b4p+3)=-nan, want INVALID got 0
src/math/sanity/y1f.h:4: bad fp exception: RN y1f(-0x1.a206fp+2)=-nan, want INVALID got 0
src/math/sanity/y1f.h:7: bad fp exception: RN y1f(-0x1.a05cc8p-2)=-nan, want INVALID got 0
src/math/sanity/y1f.h:10: bad fp exception: RN y1f(-0x1.5b86eap-1)=-nan, want INVALID got 0
src/math/special/y1f.h:1: bad fp exception: RN y1f(0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/y1f.h:2: bad fp exception: RN y1f(-0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/y1f.h:3: bad fp exception: RN y1f(-0x1p+0)=-nan, want INVALID got 0
src/math/special/y1f.h:5: bad fp exception: RN y1f(-inf)=-nan, want INVALID got 0
FAIL src/math/y1f.exe [status 1]
src/math/sanity/yn.h:1: bad fp exception: RN yn(-2, -0x1.02239f3c6a8f1p+3)=nan, want INVALID got 0
src/math/sanity/yn.h:3: bad fp exception: RN yn(0, -0x1.0c34b3e01e6e7p+3)=nan, want INVALID got 0
src/math/sanity/yn.h:4: bad fp exception: RN yn(1, -0x1.a206f0a19dcc4p+2)=nan, want INVALID got 0
src/math/sanity/yn.h:7: bad fp exception: RN yn(4, -0x1.a05cc754481d1p-2)=nan, want INVALID got 0
src/math/sanity/yn.h:10: bad fp exception: RN yn(7, -0x1.5b86ea8118a0ep-1)=nan, want INVALID got 0
src/math/special/yn.h:1: bad fp exception: RN yn(0, 0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/yn.h:2: bad fp exception: RN yn(0, -0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/yn.h:3: bad fp exception: RN yn(0, -0x1p+0)=nan, want INVALID got 0
src/math/special/yn.h:5: bad fp exception: RN yn(0, -inf)=nan, want INVALID got 0
src/math/special/yn.h:7: bad fp exception: RN yn(1, 0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/yn.h:8: bad fp exception: RN yn(1, -0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/yn.h:9: bad fp exception: RN yn(1, -0x1p+0)=nan, want INVALID got 0
src/math/special/yn.h:11: bad fp exception: RN yn(1, -inf)=nan, want INVALID got 0
src/math/special/yn.h:13: bad fp exception: RN yn(-1, 0x0p+0)=inf, want DIVBYZERO got 0
src/math/special/yn.h:14: bad fp exception: RN yn(-1, -0x0p+0)=inf, want DIVBYZERO got 0
src/math/special/yn.h:15: bad fp exception: RN yn(-1, -0x1p+0)=nan, want INVALID got 0
src/math/special/yn.h:17: bad fp exception: RN yn(-1, -inf)=nan, want INVALID got 0
src/math/special/yn.h:19: bad fp exception: RN yn(2, 0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/yn.h:20: bad fp exception: RN yn(2, -0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/yn.h:21: bad fp exception: RN yn(2, -0x1p+0)=nan, want INVALID got 0
src/math/special/yn.h:23: bad fp exception: RN yn(2, -inf)=nan, want INVALID got 0
FAIL src/math/yn.exe [status 1]
src/math/sanity/ynf.h:1: bad fp exception: RN ynf(-2, -0x1.0223ap+3)=-nan, want INVALID got 0
src/math/sanity/ynf.h:3: bad fp exception: RN ynf(0, -0x1.0c34b4p+3)=-nan, want INVALID got 0
src/math/sanity/ynf.h:4: bad fp exception: RN ynf(1, -0x1.a206fp+2)=-nan, want INVALID got 0
X src/math/sanity/ynf.h:6: RN ynf(3, 0x1.52efdp-1) want -0x1.2935d2p+4 got -0x1.2935d6p+4, ulperr -1.920 = -0x1p+1 + 0x1.47d13p-4
src/math/sanity/ynf.h:7: bad fp exception: RN ynf(4, -0x1.a05cc8p-2)=-nan, want INVALID got 0
X src/math/sanity/ynf.h:9: RN ynf(6, 0x1.8c5dbp-1) want -0x1.6dbc1cp+13 got -0x1.6dbc18p+13, ulperr 2.115 = 0x1p+1 + 0x1.d597eep-4
src/math/sanity/ynf.h:10: bad fp exception: RN ynf(7, -0x1.5b86eap-1)=-nan, want INVALID got 0
src/math/special/ynf.h:1: bad fp exception: RN ynf(0, 0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/ynf.h:2: bad fp exception: RN ynf(0, -0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/ynf.h:3: bad fp exception: RN ynf(0, -0x1p+0)=-nan, want INVALID got 0
src/math/special/ynf.h:5: bad fp exception: RN ynf(0, -inf)=-nan, want INVALID got 0
src/math/special/ynf.h:7: bad fp exception: RN ynf(1, 0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/ynf.h:8: bad fp exception: RN ynf(1, -0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/ynf.h:9: bad fp exception: RN ynf(1, -0x1p+0)=-nan, want INVALID got 0
src/math/special/ynf.h:11: bad fp exception: RN ynf(1, -inf)=-nan, want INVALID got 0
src/math/special/ynf.h:13: bad fp exception: RN ynf(-1, 0x0p+0)=inf, want DIVBYZERO got 0
src/math/special/ynf.h:14: bad fp exception: RN ynf(-1, -0x0p+0)=inf, want DIVBYZERO got 0
src/math/special/ynf.h:15: bad fp exception: RN ynf(-1, -0x1p+0)=-nan, want INVALID got 0
src/math/special/ynf.h:17: bad fp exception: RN ynf(-1, -inf)=-nan, want INVALID got 0
src/math/special/ynf.h:19: bad fp exception: RN ynf(2, 0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/ynf.h:20: bad fp exception: RN ynf(2, -0x0p+0)=-inf, want DIVBYZERO got 0
src/math/special/ynf.h:21: bad fp exception: RN ynf(2, -0x1p+0)=-nan, want INVALID got 0
src/math/special/ynf.h:23: bad fp exception: RN ynf(2, -inf)=-nan, want INVALID got 0
FAIL src/math/ynf.exe [status 1]
src/regression/malloc-brk-fail.c:31: malloc(10000) succeeded after memory is filled
FAIL src/regression/malloc-brk-fail.exe [status 1]
src/regression/pthread-robust-detach.c:33: pthread_mutexattr_setrobust(&mtx_a, 1) failed: (pshared==0) got 38 "Function not implemented" want 0 "No error information"
src/regression/pthread-robust-detach.c:50: pthread_mutex_timedlock(&mtx, &ts) failed: (pshared==0) got 110 "Operation timed out" want 130 "Previous owner died"
src/regression/pthread-robust-detach.c:33: pthread_mutexattr_setrobust(&mtx_a, 1) failed: (pshared==1) got 38 "Function not implemented" want 0 "No error information"
src/regression/pthread-robust-detach.c:50: pthread_mutex_timedlock(&mtx, &ts) failed: (pshared==1) got 110 "Operation timed out" want 130 "Previous owner died"
FAIL src/regression/pthread-robust-detach-static.exe [status 1]
src/regression/pthread-robust-detach.c:33: pthread_mutexattr_setrobust(&mtx_a, 1) failed: (pshared==0) got 38 "Function not implemented" want 0 "No error information"
src/regression/pthread-robust-detach.c:50: pthread_mutex_timedlock(&mtx, &ts) failed: (pshared==0) got 110 "Operation timed out" want 130 "Previous owner died"
src/regression/pthread-robust-detach.c:33: pthread_mutexattr_setrobust(&mtx_a, 1) failed: (pshared==1) got 38 "Function not implemented" want 0 "No error information"
src/regression/pthread-robust-detach.c:50: pthread_mutex_timedlock(&mtx, &ts) failed: (pshared==1) got 110 "Operation timed out" want 130 "Previous owner died"
FAIL src/regression/pthread-robust-detach.exe [status 1]
next prev parent reply other threads:[~2020-09-16 20:49 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-15 13:19 sidneym
2020-04-15 16:30 ` Rich Felker
2020-04-15 17:50 ` sidneym
2020-04-15 18:06 ` Szabolcs Nagy
2020-04-15 18:22 ` sidneym
2020-04-16 9:36 ` Szabolcs Nagy
2020-04-16 15:34 ` Rich Felker
2020-04-16 16:26 ` sidneym
2020-04-16 16:34 ` 'Rich Felker'
2020-04-15 18:26 ` Rich Felker
2020-04-15 19:12 ` sidneym
2020-04-15 19:29 ` 'Rich Felker'
2020-04-30 22:44 ` sidneym
2020-04-30 23:51 ` Rich Felker
2020-05-05 23:37 ` sidneym
2020-05-06 0:59 ` Rich Felker
2020-06-18 16:37 ` sidneym
2020-06-18 21:42 ` Szabolcs Nagy
2020-06-19 21:58 ` sidneym
2020-06-19 22:46 ` Rich Felker
2020-06-20 0:03 ` [musl] strtok Robert Skopalík
2020-06-20 0:15 ` Rich Felker
2020-06-20 0:36 ` Robert Skopalík
2020-06-20 0:46 ` Robert Skopalík
2020-06-20 1:44 ` Rich Felker
2020-06-20 7:07 ` Patrick Oppenlander
2020-06-20 13:00 ` Robert Skopalík
2020-06-22 0:57 ` Bery Saidi
2020-06-20 2:29 ` [musl] Hexagon DSP support sidneym
2020-06-20 3:20 ` Rich Felker
2020-07-20 21:26 ` sidneym
2020-07-23 21:56 ` Szabolcs Nagy
2020-07-24 17:49 ` sidneym
2020-09-16 20:49 ` sidneym [this message]
2020-09-17 1:32 ` 'Rich Felker'
2020-09-17 22:31 ` sidneym
2020-09-18 1:08 ` Rich Felker
2020-09-18 8:10 ` Szabolcs Nagy
2020-09-20 13:12 ` sidneym
2020-09-20 17:17 ` 'Rich Felker'
2020-09-21 14:09 ` sidneym
2020-04-15 18:55 ` Fangrui Song
2021-03-09 20:25 sidneym
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='110801d68c6a$dfe3f950$9fabebf0$@codeaurora.org' \
--to=sidneym@codeaurora.org \
--cc=dalias@libc.org \
--cc=musl@lists.openwall.com \
--cc=nsz@port70.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).