From 60f221a400e36ba59d99c191a86e978117320f0a Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 20 Jul 2022 15:46:06 -0700 Subject: [PATCH 1/1] Delete several blocks of unused code. (#294) * Delete several blocks of unused code. Delete several pieces of code from libc-bottom-half/cloudlibc that aren't in use on wasi-libc. * Delete more of `_CLOCK_PROCESS_CPUTIME_ID` or `_CLOCK_THREAD_CPUTIME_ID`. --- expected/wasm32-wasi/defined-symbols.txt | 2 - expected/wasm32-wasi/predefined-macros.txt | 2 - libc-bottom-half/cloudlibc/src/common/errno.h | 22 -- .../cloudlibc/src/common/overflow.h | 15 -- libc-bottom-half/cloudlibc/src/common/time.h | 46 +--- .../cloudlibc/src/include/_/cdefs.h | 113 -------- .../cloudlibc/src/include/stdlib.h | 241 ------------------ .../cloudlibc/src/libc/dirent/fdopendir.c | 3 - .../cloudlibc/src/libc/fcntl/openat.c | 3 - .../cloudlibc/src/libc/stdio/renameat.c | 3 - .../cloudlibc/src/libc/stdlib/_Exit.c | 2 +- .../cloudlibc/src/libc/sys/socket/recv.c | 3 - .../cloudlibc/src/libc/sys/socket/send.c | 3 - .../cloudlibc/src/libc/sys/socket/shutdown.c | 3 - .../cloudlibc/src/libc/sys/stat/fstatat.c | 3 - .../cloudlibc/src/libc/sys/stat/mkdirat.c | 3 - .../cloudlibc/src/libc/sys/stat/utimensat.c | 4 - .../src/libc/time/CLOCK_PROCESS_CPUTIME_ID.c | 12 - .../src/libc/time/CLOCK_THREAD_CPUTIME_ID.c | 12 - .../cloudlibc/src/libc/time/nanosleep.c | 1 + .../cloudlibc/src/libc/unistd/faccessat.c | 3 - .../cloudlibc/src/libc/unistd/linkat.c | 3 - .../cloudlibc/src/libc/unistd/readlinkat.c | 3 - .../cloudlibc/src/libc/unistd/symlinkat.c | 3 - .../cloudlibc/src/libc/unistd/unlinkat.c | 2 - .../headers/public/__header_time.h | 4 - libc-bottom-half/sources/__wasilibc_rmdirat.c | 2 - .../sources/__wasilibc_unlinkat.c | 1 - 28 files changed, 6 insertions(+), 511 deletions(-) delete mode 100644 libc-bottom-half/cloudlibc/src/common/errno.h delete mode 100644 libc-bottom-half/cloudlibc/src/common/overflow.h delete mode 100644 libc-bottom-half/cloudlibc/src/include/stdlib.h delete mode 100644 libc-bottom-half/cloudlibc/src/libc/time/CLOCK_PROCESS_CPUTIME_ID.c delete mode 100644 libc-bottom-half/cloudlibc/src/libc/time/CLOCK_THREAD_CPUTIME_ID.c diff --git a/expected/wasm32-wasi/defined-symbols.txt b/expected/wasm32-wasi/defined-symbols.txt index 40023d9..a55f9a9 100644 --- a/expected/wasm32-wasi/defined-symbols.txt +++ b/expected/wasm32-wasi/defined-symbols.txt @@ -1,7 +1,5 @@ _CLOCK_MONOTONIC -_CLOCK_PROCESS_CPUTIME_ID _CLOCK_REALTIME -_CLOCK_THREAD_CPUTIME_ID _Exit _IO_feof_unlocked _IO_ferror_unlocked diff --git a/expected/wasm32-wasi/predefined-macros.txt b/expected/wasm32-wasi/predefined-macros.txt index 0cfff9b..1f7b341 100644 --- a/expected/wasm32-wasi/predefined-macros.txt +++ b/expected/wasm32-wasi/predefined-macros.txt @@ -97,9 +97,7 @@ #define CLNEXT CTRL('v') #define CLOCKS_PER_SEC ((clock_t)1000000000) #define CLOCK_MONOTONIC (&_CLOCK_MONOTONIC) -#define CLOCK_PROCESS_CPUTIME_ID (&_CLOCK_PROCESS_CPUTIME_ID) #define CLOCK_REALTIME (&_CLOCK_REALTIME) -#define CLOCK_THREAD_CPUTIME_ID (&_CLOCK_THREAD_CPUTIME_ID) #define CMIN 1 #define CMPLX(x,y) __CMPLX(x, y, double) #define CMPLXF(x,y) __CMPLX(x, y, float) diff --git a/libc-bottom-half/cloudlibc/src/common/errno.h b/libc-bottom-half/cloudlibc/src/common/errno.h deleted file mode 100644 index 7d178fb..0000000 --- a/libc-bottom-half/cloudlibc/src/common/errno.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2015-2016 Nuxi, https://nuxi.nl/ -// -// SPDX-License-Identifier: BSD-2-Clause - -#ifndef COMMON_ERRNO_H -#define COMMON_ERRNO_H - -#include - -// WASI syscalls should just return ENOTDIR if that's what the problem is. -static inline __wasi_errno_t errno_fixup_directory(__wasi_fd_t fd, - __wasi_errno_t error) { - return error; -} - -// WASI syscalls should just return ENOTSOCK if that's what the problem is. -static inline __wasi_errno_t errno_fixup_socket(__wasi_fd_t fd, - __wasi_errno_t error) { - return error; -} - -#endif diff --git a/libc-bottom-half/cloudlibc/src/common/overflow.h b/libc-bottom-half/cloudlibc/src/common/overflow.h deleted file mode 100644 index b7b28f2..0000000 --- a/libc-bottom-half/cloudlibc/src/common/overflow.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) 2015-2016 Nuxi, https://nuxi.nl/ -// -// SPDX-License-Identifier: BSD-2-Clause - -#ifndef COMMON_OVERFLOW_H -#define COMMON_OVERFLOW_H - -// Performs an addition, subtraction or multiplication operation, -// returning whether the computation caused an overflow. These -// intrinsics are available as of Clang 3.8 and GCC 5. -#define add_overflow(x, y, out) __builtin_add_overflow(x, y, out) -#define sub_overflow(x, y, out) __builtin_sub_overflow(x, y, out) -#define mul_overflow(x, y, out) __builtin_mul_overflow(x, y, out) - -#endif diff --git a/libc-bottom-half/cloudlibc/src/common/time.h b/libc-bottom-half/cloudlibc/src/common/time.h index 293678d..08e2852 100644 --- a/libc-bottom-half/cloudlibc/src/common/time.h +++ b/libc-bottom-half/cloudlibc/src/common/time.h @@ -6,7 +6,6 @@ #define COMMON_TIME_H #include -#include #include @@ -16,43 +15,6 @@ #define NSEC_PER_SEC 1000000000 -// Timezone agnostic conversion routines. -int __localtime_utc(time_t, struct tm *); -void __mktime_utc(const struct tm *, struct timespec *); - -static inline bool is_leap(time_t year) { - year %= 400; - if (year < 0) - year += 400; - return ((year % 4) == 0 && (year % 100) != 0) || year == 100; -} - -// Gets the length of the months in a year. -static inline const char *get_months(time_t year) { - static const char leap[12] = { - 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, - }; - static const char common[12] = { - 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, - }; - return is_leap(year) ? leap : common; -} - -// Gets the cumulative length of the months in a year. -static inline const short *get_months_cumulative(time_t year) { - static const short leap[13] = { - 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366, - }; - static const short common[13] = { - 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365, - }; - return is_leap(year) ? leap : common; -} - -static inline short get_ydays(time_t year) { - return is_leap(year) ? 366 : 365; -} - static inline bool timespec_to_timestamp_exact( const struct timespec *timespec, __wasi_timestamp_t *timestamp) { // Invalid nanoseconds field. @@ -64,8 +26,8 @@ static inline bool timespec_to_timestamp_exact( return false; // Make sure our timestamp does not overflow. - return !mul_overflow(timespec->tv_sec, NSEC_PER_SEC, timestamp) && - !add_overflow(*timestamp, timespec->tv_nsec, timestamp); + return !__builtin_mul_overflow(timespec->tv_sec, NSEC_PER_SEC, timestamp) && + !__builtin_add_overflow(*timestamp, timespec->tv_nsec, timestamp); } static inline bool timespec_to_timestamp_clamp( @@ -77,8 +39,8 @@ static inline bool timespec_to_timestamp_clamp( if (timespec->tv_sec < 0) { // Timestamps before the Epoch are not supported. *timestamp = 0; - } else if (mul_overflow(timespec->tv_sec, NSEC_PER_SEC, timestamp) || - add_overflow(*timestamp, timespec->tv_nsec, timestamp)) { + } else if (__builtin_mul_overflow(timespec->tv_sec, NSEC_PER_SEC, timestamp) || + __builtin_add_overflow(*timestamp, timespec->tv_nsec, timestamp)) { // Make sure our timestamp does not overflow. *timestamp = NUMERIC_MAX(__wasi_timestamp_t); } diff --git a/libc-bottom-half/cloudlibc/src/include/_/cdefs.h b/libc-bottom-half/cloudlibc/src/include/_/cdefs.h index 246adec..d9a6f54 100644 --- a/libc-bottom-half/cloudlibc/src/include/_/cdefs.h +++ b/libc-bottom-half/cloudlibc/src/include/_/cdefs.h @@ -24,126 +24,13 @@ #ifndef ___CDEFS_H_ #define ___CDEFS_H_ -// Version information. -#define __cloudlibc__ 1 -#define __cloudlibc_major__ 0 -#define __cloudlibc_minor__ 102 - -#ifdef __cplusplus -#define __BEGIN_DECLS extern "C" { -#define __END_DECLS } -#else -#define __BEGIN_DECLS -#define __END_DECLS -#endif - -// Whether we should provide inline versions of functions. Due to C++'s -// support for namespaces, it is generally a bad idea to declare -// function macros. -#ifdef __cplusplus -#define _CLOUDLIBC_INLINE_FUNCTIONS 0 -#else -#define _CLOUDLIBC_INLINE_FUNCTIONS 1 -#endif - // Compiler-independent annotations. -#ifndef __has_builtin -#define __has_builtin(x) 0 -#endif -#ifndef __has_extension -#define __has_extension(x) __has_feature(x) -#endif -#ifndef __has_feature -#define __has_feature(x) 0 -#endif - -#define __offsetof(type, member) __builtin_offsetof(type, member) -#define __containerof(ptr, type, member) \ - ((type *)((char *)(ptr)-__offsetof(type, member))) - -#define __extname(x) __asm__(x) -#define __malloc_like __attribute__((__malloc__)) -#define __pure2 __attribute__((__const__)) -#define __pure __attribute__((__pure__)) -#define __section(x) __attribute__((__section__(x))) -#define __unused __attribute__((__unused__)) -#define __used __attribute__((__used__)) -#define __weak_symbol __attribute__((__weak__)) - -// Format string argument type checking. -#define __printflike(format, va) \ - __attribute__((__format__(__printf__, format, va))) -#define __scanflike(format, va) \ - __attribute__((__format__(__scanf__, format, va))) -// TODO(ed): Enable this once supported by LLVM: -// https://llvm.org/bugs/show_bug.cgi?id=16810 -#define __wprintflike(format, va) -#define __wscanflike(format, va) - #define __strong_reference(oldsym, newsym) \ extern __typeof__(oldsym) newsym __attribute__((__alias__(#oldsym))) // Convenience macros. #define __arraycount(x) (sizeof(x) / sizeof((x)[0])) -#define __howmany(x, y) (((x) + (y)-1) / (y)) -#define __rounddown(x, y) (((x) / (y)) * (y)) -#define __roundup(x, y) ((((x) + (y)-1) / (y)) * (y)) - -// Lock annotations. - -#if __has_extension(c_thread_safety_attributes) -#define __lock_annotate(x) __attribute__((x)) -#else -#define __lock_annotate(x) -#endif - -#define __lockable __lock_annotate(lockable) - -#define __locks_exclusive(...) \ - __lock_annotate(exclusive_lock_function(__VA_ARGS__)) -#define __locks_shared(...) __lock_annotate(shared_lock_function(__VA_ARGS__)) - -#define __trylocks_exclusive(...) \ - __lock_annotate(exclusive_trylock_function(__VA_ARGS__)) -#define __trylocks_shared(...) \ - __lock_annotate(shared_trylock_function(__VA_ARGS__)) - -#define __unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__)) - -#define __asserts_exclusive(...) \ - __lock_annotate(assert_exclusive_lock(__VA_ARGS__)) -#define __asserts_shared(...) __lock_annotate(assert_shared_lock(__VA_ARGS__)) - -#define __requires_exclusive(...) \ - __lock_annotate(exclusive_locks_required(__VA_ARGS__)) -#define __requires_shared(...) \ - __lock_annotate(shared_locks_required(__VA_ARGS__)) -#define __requires_unlocked(...) __lock_annotate(locks_excluded(__VA_ARGS__)) - -#define __no_lock_analysis __lock_annotate(no_thread_safety_analysis) - -#define __guarded_by(x) __lock_annotate(guarded_by(x)) -#define __pt_guarded_by(x) __lock_annotate(pt_guarded_by(x)) - -// Const preservation. -// -// Functions like strchr() allow you to silently discard a const -// qualifier from a string. This macro can be used to wrap such -// functions to propagate the const keyword where possible. -// -// This macro has many limitations, such as only being able to detect -// constness for void, char and wchar_t. For Clang, it also doesn't seem -// to work on string literals. - -#define __preserve_const(type, name, arg, ...) \ - _Generic(arg, \ - const void *: (const type *)name(__VA_ARGS__), \ - const char *: (const type *)name(__VA_ARGS__), \ - const signed char *: (const type *)name(__VA_ARGS__), \ - const unsigned char *: (const type *)name(__VA_ARGS__), \ - const __wchar_t *: (const type *)name(__VA_ARGS__), \ - default: name(__VA_ARGS__)) #endif diff --git a/libc-bottom-half/cloudlibc/src/include/stdlib.h b/libc-bottom-half/cloudlibc/src/include/stdlib.h deleted file mode 100644 index ff48afb..0000000 --- a/libc-bottom-half/cloudlibc/src/include/stdlib.h +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright (c) 2015-2017 Nuxi, https://nuxi.nl/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. - -// - standard library definitions -// -// Extensions: -// - MB_CUR_MAX_L(), mblen_l(), mbstowcs_l(), mbtowc_l(), wcstombs_l() -// and wctomb_l(): -// Regular functions always use the C locale. Available on many other -// operating systems. -// - alloca(): -// Present on most other operating systems. -// - arc4random(), arc4random_buf() and arc4random_uniform(): -// Secure random number generator. Available on many other operating -// systems. -// - l64a_r(): -// Thread-safe replacement for l64a(). Part of the SVID, 4th edition. -// - qsort_r(): -// Available on many other operating systems, although the prototype -// is not consistent. This implementation is compatible with glibc. -// It is expected that this version will be standardized in the future. -// - reallocarray(): -// Allows for reallocation of buffers without integer overflows. -// -// Features missing: -// - initstate(), lcong48(), seed48(), setstate(), srand(), srand48() -// and srandom(): -// Randomizer is seeded securely by default. There is no need to seed -// manually. -// - WEXITSTATUS(), WIFEXITED(), WIFSIGNALED(), WIFSTOPPED(), WNOHANG, -// WSTOPSIG(), WTERMSIG(), WUNTRACED: -// Only useful if system() would actually work. -// - l64a(): -// Not thread-safe. Use l64a_r() instead. -// - putenv(), setenv() and unsetenv(): -// Environment variables are not available. -// - grantpt(), posix_openpt(), ptsname() and unlockpt(): -// Pseudo-terminals are not available. -// - mkdtemp(), mkstemp() and realpath(): -// Requires global filesystem namespace. -// - setkey(): -// Password database and encryption schemes not available. -// - system(): -// Requires a command shell. - -#ifndef _STDLIB_H_ -#define _STDLIB_H_ - -#include <_/limits.h> -#include <_/types.h> - -__BEGIN_DECLS -_Noreturn void _Exit(int); -_Noreturn void abort(void); -void *calloc(size_t, size_t); -_Noreturn void exit(int); -void free(void *); -void *malloc(size_t); -void qsort(void *, size_t, size_t, int (*)(const void *, const void *)); -void *realloc(void *, size_t); -__END_DECLS - -#if _CLOUDLIBC_INLINE_FUNCTIONS - -// qsort_r() implementation from Bentley and McIlroy's -// "Engineering a Sort Function". -// -// This sorting function is inlined into this header, so that the -// compiler can create an optimized version that takes the alignment and -// size of the elements into account. It also reduces the overhead of -// indirect function calls. - -static __inline void __qsort_r(void *, size_t, size_t, - int (*)(const void *, const void *, void *), - void *); - -static __inline size_t __qsort_min(size_t __a, size_t __b) { - return __a < __b ? __a : __b; -} - -// Swaps the contents of two buffers. -static __inline void __qsort_swap(char *__a, char *__b, size_t __n) { - char __t; - - while (__n-- > 0) { - __t = *__a; - *__a++ = *__b; - *__b++ = __t; - } -} - -// Implementation of insertionsort for small lists. -static __inline void __qsort_insertionsort( - char *__a, size_t __nel, size_t __width, - int (*__cmp)(const void *, const void *, void *), void *__thunk) { - char *__pm, *__pl; - - for (__pm = __a + __width; __pm < __a + __nel * __width; __pm += __width) - for (__pl = __pm; __pl > __a && __cmp(__pl - __width, __pl, __thunk) > 0; - __pl -= __width) - __qsort_swap(__pl, __pl - __width, __width); -} - -// Returns the median of three elements. -static __inline char *__qsort_med3(char *__a, char *__b, char *__c, - int (*__cmp)(const void *, const void *, - void *), - void *__thunk) { - return __cmp(__a, __b, __thunk) < 0 - ? (__cmp(__b, __c, __thunk) < 0 - ? __b - : __cmp(__a, __c, __thunk) < 0 ? __c : __a) - : (__cmp(__b, __c, __thunk) > 0 - ? __b - : __cmp(__a, __c, __thunk) > 0 ? __c : __a); -} - -// Picks a pivot based on a pseudo-median of three or nine. -// TODO(ed): Does this still guarantee an O(n log n) running time? -static __inline char *__qsort_pickpivot(char *__a, size_t __nel, size_t __width, - int (*__cmp)(const void *, const void *, - void *), - void *__thunk) { - char *__pl, *__pm, *__pn; - size_t __s; - - __pl = __a; - __pm = __a + (__nel / 2) * __width; - __pn = __a + (__nel - 1) * __width; - if (__nel > 40) { - __s = (__nel / 8) * __width; - __pl = __qsort_med3(__pl, __pl + __s, __pl + 2 * __s, __cmp, __thunk); - __pm = __qsort_med3(__pm - __s, __pm, __pm + __s, __cmp, __thunk); - __pn = __qsort_med3(__pn - 2 * __s, __pn - __s, __pn, __cmp, __thunk); - } - return __qsort_med3(__pl, __pm, __pn, __cmp, __thunk); -} - -// Implementation of quicksort for larger lists. -static __inline void __qsort_quicksort(char *__a, size_t __nel, size_t __width, - int (*__cmp)(const void *, const void *, - void *), - void *__thunk) { - char *__pa, *__pb, *__pc, *__pd, *__pn; - int __r; - size_t __s; - - // Select pivot and move it to the head of the list. - __qsort_swap(__a, __qsort_pickpivot(__a, __nel, __width, __cmp, __thunk), - __width); - - // Perform partitioning. - __pa = __pb = __a; - __pc = __pd = __a + (__nel - 1) * __width; - for (;;) { - while (__pb <= __pc && (__r = __cmp(__pb, __a, __thunk)) <= 0) { - if (__r == 0) { - __qsort_swap(__pa, __pb, __width); - __pa += __width; - } - __pb += __width; - } - while (__pc >= __pb && (__r = __cmp(__pc, __a, __thunk)) >= 0) { - if (__r == 0) { - __qsort_swap(__pc, __pd, __width); - __pd -= __width; - } - __pc -= __width; - } - if (__pb > __pc) - break; - __qsort_swap(__pb, __pc, __width); - __pb += __width; - __pc -= __width; - } - - // Store pivot between the two partitions. - __pn = __a + __nel * __width; - __s = __qsort_min((size_t)(__pa - __a), (size_t)(__pb - __pa)); - __qsort_swap(__a, __pb - __s, __s); - __s = __qsort_min((size_t)(__pd - __pc), (size_t)(__pn - __pd) - __width); - __qsort_swap(__pb, __pn - __s, __s); - - // Sort the two partitions. - __s = (size_t)(__pb - __pa); - __qsort_r(__a, __s / __width, __width, __cmp, __thunk); - __s = (size_t)(__pd - __pc); - __qsort_r(__pn - __s, __s / __width, __width, __cmp, __thunk); -} - -static __inline void __qsort_r(void *__base, size_t __nel, size_t __width, - int (*__cmp)(const void *, const void *, void *), - void *__thunk) { - char *__a; - - __a = (char *)__base; - if (__nel < 8) { - __qsort_insertionsort(__a, __nel, __width, __cmp, __thunk); - } else { - __qsort_quicksort(__a, __nel, __width, __cmp, __thunk); - } -} -#define qsort_r(base, nel, width, compar, thunk) \ - __qsort_r(base, nel, width, compar, thunk) - -// qsort(): Call into qsort_r(), providing the callback as the thunk. -// We assume that the optimizer is smart enough to simplify. - -static __inline int __qsort_cmp(const void *__a, const void *__b, - void *__thunk) { - return ((int (*)(const void *, const void *))__thunk)(__a, __b); -} - -static __inline void __qsort(void *__base, size_t __nel, size_t __width, - int (*__cmp)(const void *, const void *)) { - qsort_r(__base, __nel, __width, __qsort_cmp, (void *)__cmp); -} -#define qsort(base, nel, width, compar) __qsort(base, nel, width, compar) -#endif - -#endif diff --git a/libc-bottom-half/cloudlibc/src/libc/dirent/fdopendir.c b/libc-bottom-half/cloudlibc/src/libc/dirent/fdopendir.c index 59fc027..c7fd456 100644 --- a/libc-bottom-half/cloudlibc/src/libc/dirent/fdopendir.c +++ b/libc-bottom-half/cloudlibc/src/libc/dirent/fdopendir.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include #include @@ -31,7 +29,6 @@ DIR *fdopendir(int fd) { if (error != 0) { free(dirp->buffer); free(dirp); - errno = errno_fixup_directory(fd, error); return NULL; } diff --git a/libc-bottom-half/cloudlibc/src/libc/fcntl/openat.c b/libc-bottom-half/cloudlibc/src/libc/fcntl/openat.c index 46919fe..51e10b5 100644 --- a/libc-bottom-half/cloudlibc/src/libc/fcntl/openat.c +++ b/libc-bottom-half/cloudlibc/src/libc/fcntl/openat.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include #include @@ -75,7 +73,6 @@ int __wasilibc_nocwd_openat_nomode(int fd, const char *path, int oflag) { fs_rights_base, fs_rights_inheriting, fs_flags, &newfd); if (error != 0) { - errno = errno_fixup_directory(fd, error); return -1; } return newfd; diff --git a/libc-bottom-half/cloudlibc/src/libc/stdio/renameat.c b/libc-bottom-half/cloudlibc/src/libc/stdio/renameat.c index e43cef2..86c6a5c 100644 --- a/libc-bottom-half/cloudlibc/src/libc/stdio/renameat.c +++ b/libc-bottom-half/cloudlibc/src/libc/stdio/renameat.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include #include @@ -12,7 +10,6 @@ int __wasilibc_nocwd_renameat(int oldfd, const char *old, int newfd, const char *new) { __wasi_errno_t error = __wasi_path_rename(oldfd, old, newfd, new); if (error != 0) { - errno = errno_fixup_directory(oldfd, errno_fixup_directory(newfd, error)); return -1; } return 0; diff --git a/libc-bottom-half/cloudlibc/src/libc/stdlib/_Exit.c b/libc-bottom-half/cloudlibc/src/libc/stdlib/_Exit.c index 10dab2b..5e266f0 100644 --- a/libc-bottom-half/cloudlibc/src/libc/stdlib/_Exit.c +++ b/libc-bottom-half/cloudlibc/src/libc/stdlib/_Exit.c @@ -3,7 +3,7 @@ // SPDX-License-Identifier: BSD-2-Clause #include -#include +#include <_/cdefs.h> #include #include diff --git a/libc-bottom-half/cloudlibc/src/libc/sys/socket/recv.c b/libc-bottom-half/cloudlibc/src/libc/sys/socket/recv.c index 49c09d0..cf6199e 100644 --- a/libc-bottom-half/cloudlibc/src/libc/sys/socket/recv.c +++ b/libc-bottom-half/cloudlibc/src/libc/sys/socket/recv.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include @@ -35,7 +33,6 @@ ssize_t recv(int socket, void *restrict buffer, size_t length, int flags) { &ro_datalen, &ro_flags); if (error != 0) { - errno = errno_fixup_socket(socket, error); return -1; } return ro_datalen; diff --git a/libc-bottom-half/cloudlibc/src/libc/sys/socket/send.c b/libc-bottom-half/cloudlibc/src/libc/sys/socket/send.c index 0759abf..2382701 100644 --- a/libc-bottom-half/cloudlibc/src/libc/sys/socket/send.c +++ b/libc-bottom-half/cloudlibc/src/libc/sys/socket/send.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include @@ -27,7 +25,6 @@ ssize_t send(int socket, const void *buffer, size_t length, int flags) { size_t so_datalen; __wasi_errno_t error = __wasi_sock_send(socket, si_data, si_data_len, si_flags, &so_datalen); if (error != 0) { - errno = errno_fixup_socket(socket, error); return -1; } return so_datalen; diff --git a/libc-bottom-half/cloudlibc/src/libc/sys/socket/shutdown.c b/libc-bottom-half/cloudlibc/src/libc/sys/socket/shutdown.c index 883b551..85ede06 100644 --- a/libc-bottom-half/cloudlibc/src/libc/sys/socket/shutdown.c +++ b/libc-bottom-half/cloudlibc/src/libc/sys/socket/shutdown.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include @@ -22,7 +20,6 @@ int shutdown(int socket, int how) { __wasi_errno_t error = __wasi_sock_shutdown(socket, how); if (error != 0) { - errno = errno_fixup_socket(socket, error); return -1; } return error; diff --git a/libc-bottom-half/cloudlibc/src/libc/sys/stat/fstatat.c b/libc-bottom-half/cloudlibc/src/libc/sys/stat/fstatat.c index f037d99..ab48f32 100644 --- a/libc-bottom-half/cloudlibc/src/libc/sys/stat/fstatat.c +++ b/libc-bottom-half/cloudlibc/src/libc/sys/stat/fstatat.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include @@ -25,7 +23,6 @@ int __wasilibc_nocwd_fstatat(int fd, const char *restrict path, struct stat *res __wasi_errno_t error = __wasi_path_filestat_get(fd, lookup_flags, path, &internal_stat); if (error != 0) { - errno = errno_fixup_directory(fd, error); return -1; } to_public_stat(&internal_stat, buf); diff --git a/libc-bottom-half/cloudlibc/src/libc/sys/stat/mkdirat.c b/libc-bottom-half/cloudlibc/src/libc/sys/stat/mkdirat.c index c89ce3d..302650f 100644 --- a/libc-bottom-half/cloudlibc/src/libc/sys/stat/mkdirat.c +++ b/libc-bottom-half/cloudlibc/src/libc/sys/stat/mkdirat.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include @@ -13,7 +11,6 @@ int __wasilibc_nocwd_mkdirat_nomode(int fd, const char *path) { __wasi_errno_t error = __wasi_path_create_directory(fd, path); if (error != 0) { - errno = errno_fixup_directory(fd, error); return -1; } return 0; diff --git a/libc-bottom-half/cloudlibc/src/libc/sys/stat/utimensat.c b/libc-bottom-half/cloudlibc/src/libc/sys/stat/utimensat.c index a572716..d274ef5 100644 --- a/libc-bottom-half/cloudlibc/src/libc/sys/stat/utimensat.c +++ b/libc-bottom-half/cloudlibc/src/libc/sys/stat/utimensat.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include @@ -20,7 +18,6 @@ int __wasilibc_nocwd_utimensat(int fd, const char *path, const struct timespec t __wasi_timestamp_t st_mtim; __wasi_fstflags_t flags; if (!utimens_get_timestamps(times, &st_atim, &st_mtim, &flags)) { - errno = EINVAL; return -1; } @@ -33,7 +30,6 @@ int __wasilibc_nocwd_utimensat(int fd, const char *path, const struct timespec t __wasi_errno_t error = __wasi_path_filestat_set_times(fd, lookup_flags, path, st_atim, st_mtim, flags); if (error != 0) { - errno = errno_fixup_directory(fd, error); return -1; } return 0; diff --git a/libc-bottom-half/cloudlibc/src/libc/time/CLOCK_PROCESS_CPUTIME_ID.c b/libc-bottom-half/cloudlibc/src/libc/time/CLOCK_PROCESS_CPUTIME_ID.c deleted file mode 100644 index 901fd73..0000000 --- a/libc-bottom-half/cloudlibc/src/libc/time/CLOCK_PROCESS_CPUTIME_ID.c +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2016 Nuxi, https://nuxi.nl/ -// -// SPDX-License-Identifier: BSD-2-Clause - -#include - -#include -#include - -const struct __clockid _CLOCK_PROCESS_CPUTIME_ID = { - .id = __WASI_CLOCKID_PROCESS_CPUTIME_ID, -}; diff --git a/libc-bottom-half/cloudlibc/src/libc/time/CLOCK_THREAD_CPUTIME_ID.c b/libc-bottom-half/cloudlibc/src/libc/time/CLOCK_THREAD_CPUTIME_ID.c deleted file mode 100644 index de58c51..0000000 --- a/libc-bottom-half/cloudlibc/src/libc/time/CLOCK_THREAD_CPUTIME_ID.c +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2016 Nuxi, https://nuxi.nl/ -// -// SPDX-License-Identifier: BSD-2-Clause - -#include - -#include -#include - -const struct __clockid _CLOCK_THREAD_CPUTIME_ID = { - .id = __WASI_CLOCKID_THREAD_CPUTIME_ID, -}; diff --git a/libc-bottom-half/cloudlibc/src/libc/time/nanosleep.c b/libc-bottom-half/cloudlibc/src/libc/time/nanosleep.c index 9ffa1be..66cbbdf 100644 --- a/libc-bottom-half/cloudlibc/src/libc/time/nanosleep.c +++ b/libc-bottom-half/cloudlibc/src/libc/time/nanosleep.c @@ -5,6 +5,7 @@ #include #include #include +#include <_/cdefs.h> int nanosleep(const struct timespec *rqtp, struct timespec *rem) { int error = clock_nanosleep(CLOCK_REALTIME, 0, rqtp, rem); diff --git a/libc-bottom-half/cloudlibc/src/libc/unistd/faccessat.c b/libc-bottom-half/cloudlibc/src/libc/unistd/faccessat.c index 077250c..d28805d 100644 --- a/libc-bottom-half/cloudlibc/src/libc/unistd/faccessat.c +++ b/libc-bottom-half/cloudlibc/src/libc/unistd/faccessat.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include #include @@ -24,7 +22,6 @@ int __wasilibc_nocwd_faccessat(int fd, const char *path, int amode, int flag) { __wasi_errno_t error = __wasi_path_filestat_get(fd, lookup_flags, path, &file); if (error != 0) { - errno = errno_fixup_directory(fd, error); return -1; } diff --git a/libc-bottom-half/cloudlibc/src/libc/unistd/linkat.c b/libc-bottom-half/cloudlibc/src/libc/unistd/linkat.c index 683dd4c..eef5984 100644 --- a/libc-bottom-half/cloudlibc/src/libc/unistd/linkat.c +++ b/libc-bottom-half/cloudlibc/src/libc/unistd/linkat.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include #include @@ -19,7 +17,6 @@ int __wasilibc_nocwd_linkat(int fd1, const char *path1, int fd2, const char *pat // Perform system call. __wasi_errno_t error = __wasi_path_link(fd1, lookup1_flags, path1, fd2, path2); if (error != 0) { - errno = errno_fixup_directory(fd1, errno_fixup_directory(fd2, error)); return -1; } return 0; diff --git a/libc-bottom-half/cloudlibc/src/libc/unistd/readlinkat.c b/libc-bottom-half/cloudlibc/src/libc/unistd/readlinkat.c index e08afb9..4c5be30 100644 --- a/libc-bottom-half/cloudlibc/src/libc/unistd/readlinkat.c +++ b/libc-bottom-half/cloudlibc/src/libc/unistd/readlinkat.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include #include @@ -16,7 +14,6 @@ ssize_t __wasilibc_nocwd_readlinkat(int fd, const char *restrict path, char *res __wasi_errno_t error = __wasi_path_readlink(fd, path, (uint8_t*)buf, bufsize, &bufused); if (error != 0) { - errno = errno_fixup_directory(fd, error); return -1; } return bufused; diff --git a/libc-bottom-half/cloudlibc/src/libc/unistd/symlinkat.c b/libc-bottom-half/cloudlibc/src/libc/unistd/symlinkat.c index 1705afc..b70fc78 100644 --- a/libc-bottom-half/cloudlibc/src/libc/unistd/symlinkat.c +++ b/libc-bottom-half/cloudlibc/src/libc/unistd/symlinkat.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include #include @@ -12,7 +10,6 @@ int __wasilibc_nocwd_symlinkat(const char *path1, int fd, const char *path2) { __wasi_errno_t error = __wasi_path_symlink(path1, fd, path2); if (error != 0) { - errno = errno_fixup_directory(fd, error); return -1; } return 0; diff --git a/libc-bottom-half/cloudlibc/src/libc/unistd/unlinkat.c b/libc-bottom-half/cloudlibc/src/libc/unistd/unlinkat.c index ea795c2..351bf92 100644 --- a/libc-bottom-half/cloudlibc/src/libc/unistd/unlinkat.c +++ b/libc-bottom-half/cloudlibc/src/libc/unistd/unlinkat.c @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: BSD-2-Clause -#include - #include #include #include diff --git a/libc-bottom-half/headers/public/__header_time.h b/libc-bottom-half/headers/public/__header_time.h index 2d56b1e..2a2ff91 100644 --- a/libc-bottom-half/headers/public/__header_time.h +++ b/libc-bottom-half/headers/public/__header_time.h @@ -16,12 +16,8 @@ extern const struct __clockid _CLOCK_MONOTONIC; #define CLOCK_MONOTONIC (&_CLOCK_MONOTONIC) -extern const struct __clockid _CLOCK_PROCESS_CPUTIME_ID; -#define CLOCK_PROCESS_CPUTIME_ID (&_CLOCK_PROCESS_CPUTIME_ID) extern const struct __clockid _CLOCK_REALTIME; #define CLOCK_REALTIME (&_CLOCK_REALTIME) -extern const struct __clockid _CLOCK_THREAD_CPUTIME_ID; -#define CLOCK_THREAD_CPUTIME_ID (&_CLOCK_THREAD_CPUTIME_ID) /* * TIME_UTC is the only standardized time base value. diff --git a/libc-bottom-half/sources/__wasilibc_rmdirat.c b/libc-bottom-half/sources/__wasilibc_rmdirat.c index 2730c23..3f1d27d 100644 --- a/libc-bottom-half/sources/__wasilibc_rmdirat.c +++ b/libc-bottom-half/sources/__wasilibc_rmdirat.c @@ -1,4 +1,3 @@ -#include #include #include #include @@ -6,7 +5,6 @@ int __wasilibc_nocwd___wasilibc_rmdirat(int fd, const char *path) { __wasi_errno_t error = __wasi_path_remove_directory(fd, path); if (error != 0) { - errno = errno_fixup_directory(fd, error); return -1; } return 0; diff --git a/libc-bottom-half/sources/__wasilibc_unlinkat.c b/libc-bottom-half/sources/__wasilibc_unlinkat.c index 21ae69a..8b4f6b5 100644 --- a/libc-bottom-half/sources/__wasilibc_unlinkat.c +++ b/libc-bottom-half/sources/__wasilibc_unlinkat.c @@ -1,4 +1,3 @@ -#include #include #include #include -- 2.39.2