diff --git a/repos/libports/run/ieee754.run b/repos/libports/run/ieee754.run index 0f7b14e48..96737137a 100644 --- a/repos/libports/run/ieee754.run +++ b/repos/libports/run/ieee754.run @@ -79,8 +79,6 @@ while {true} { } set reference_output_arm { -Warning: missing sysctl for [6][10] -Warning: isatty: isatty not implemented FLT_RADIX = 2 FLT_MANT_DIG = 24 DBL_MANT_DIG = 53 @@ -772,7 +770,6 @@ pow(-2, -2) = 0.25 } set reference_output_x86_64 { -Warning: isatty: isatty not implemented FLT_RADIX = 2 FLT_MANT_DIG = 24 DBL_MANT_DIG = 53 @@ -1464,7 +1461,6 @@ pow(-2, -2) = 0.25 } set reference_output_x86_32 { -Warning: isatty: isatty not implemented FLT_RADIX = 2 FLT_MANT_DIG = 24 DBL_MANT_DIG = 53 diff --git a/repos/libports/src/lib/libc/dummies.cc b/repos/libports/src/lib/libc/dummies.cc index 9e77663f5..089c36196 100644 --- a/repos/libports/src/lib/libc/dummies.cc +++ b/repos/libports/src/lib/libc/dummies.cc @@ -55,6 +55,7 @@ ret_type name args \ return ret_val; \ } + #define __SYS_DUMMY(ret_type, ret_val, name, args)\ extern "C" __attribute__((weak)) \ ret_type __sys_##name args \ @@ -74,6 +75,23 @@ ret_type name args \ ret_type name args __attribute__((weak, alias("__sys_" #name))); \ +#define __SYS_DUMMY_SILENT(ret_type, ret_val, name, args)\ + extern "C" __attribute__((weak)) \ + ret_type __sys_##name args \ + { \ + errno = ENOSYS; \ + return ret_val; \ + } \ + extern "C" __attribute__((weak)) \ + ret_type __libc_##name args \ + { \ + errno = ENOSYS; \ + return ret_val; \ + } \ + ret_type _##name args __attribute__((weak, alias("__sys_" #name))); \ + ret_type name args __attribute__((weak, alias("__sys_" #name))); \ + + DUMMY(int , -1, chroot, (const char *)) DUMMY(char *, 0, crypt, (const char *, const char *)) DUMMY(DB * , 0, dbopen, (const char *, int, int, DBTYPE, const void *)) @@ -100,7 +118,7 @@ DUMMY(pid_t , -1, getpgrp, (void)) DUMMY(int , -1, getpriority, (int, int)) DUMMY(int , -1, getrusage, (int, rusage *)) DUMMY(uid_t , 0, getuid, (void)) -DUMMY(int , 1, isatty, (int)) +DUMMY_SILENT(int , 1, isatty, (int)) DUMMY(int , -1, kill, (pid_t, int)) DUMMY(int , -1, link, (const char *, const char *)) DUMMY(int , 0, minherit, (void *, size_t, int)) @@ -117,7 +135,7 @@ DUMMY(int , -1, sched_setparam, (pid_t, const sched_param *)) DUMMY(int , -1, sched_setscheduler, (pid_t, int, const sched_param *)) DUMMY(int , -1, sched_yield, (void)) DUMMY(int , -1, __semctl, (void)) -DUMMY(sig_t, SIG_ERR, signal, (int, sig_t)); +DUMMY_SILENT(sig_t, SIG_ERR, signal, (int, sig_t)); DUMMY(int , -1, setegid, (uid_t)) DUMMY(int , -1, seteuid, (uid_t)) DUMMY(int , -1, setgid, (gid_t)) @@ -181,7 +199,7 @@ __SYS_DUMMY(int, -1, truncate, (const char *, off_t)) DUMMY(int, -1, sigblock, (int)) DUMMY(int, -1, thr_kill2, (pid_t pid, long id, int sig)); -__SYS_DUMMY(int, -1, sigaction, (int, const struct sigaction *, struct sigaction *)); +__SYS_DUMMY_SILENT(int, -1, sigaction, (int, const struct sigaction *, struct sigaction *)); __SYS_DUMMY(int, -1, sigsuspend, (const sigset_t *)) __SYS_DUMMY(int, -1, sigtimedwait, (const sigset_t *, siginfo_t *, const struct timespec *)); __SYS_DUMMY(int, -1, sigwaitinfo, (const sigset_t *, siginfo_t *)); diff --git a/repos/libports/src/lib/libc/sysctl.cc b/repos/libports/src/lib/libc/sysctl.cc index 7576f9309..81769400e 100644 --- a/repos/libports/src/lib/libc/sysctl.cc +++ b/repos/libports/src/lib/libc/sysctl.cc @@ -100,6 +100,14 @@ extern "C" int __sysctl(const int *name, u_int namelen, *(int*)oldp = (int)PAGESIZE; *oldlenp = sizeof(int); return 0; + /* + * Used on ARM platforms to check HW fp support. Since the + * FP is enabled on all our ARM platforms we return true. + */ + case HW_FLOATINGPT: + *(int*)oldp = 1; + *oldlenp = sizeof(int); + return 0; } break;