| // Copyright 2026 The IREE Authors | |
| // | |
| // Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // <stdlib.h> for wasm32. | |
| #ifndef IREE_WASM_LIBC_STDLIB_H_ | |
| #define IREE_WASM_LIBC_STDLIB_H_ | |
| #include <stddef.h> | |
| #define EXIT_SUCCESS 0 | |
| #define EXIT_FAILURE 1 | |
| // Memory allocation (backed by dlmalloc over memory.grow). | |
| void* malloc(size_t size); | |
| void* calloc(size_t count, size_t size); | |
| void* realloc(void* pointer, size_t size); | |
| void free(void* pointer); | |
| void* aligned_alloc(size_t alignment, size_t size); | |
| // Program termination. | |
| _Noreturn void abort(void); | |
| _Noreturn void exit(int status); | |
| // Integer conversion. | |
| int atoi(const char* string); | |
| long atol(const char* string); | |
| long long atoll(const char* string); | |
| long strtol(const char* string, char** end, int base); | |
| unsigned long strtoul(const char* string, char** end, int base); | |
| long long strtoll(const char* string, char** end, int base); | |
| unsigned long long strtoull(const char* string, char** end, int base); | |
| // Floating-point conversion. | |
| double atof(const char* string); | |
| double strtod(const char* string, char** end); | |
| float strtof(const char* string, char** end); | |
| long double strtold(const char* string, char** end); | |
| // Integer arithmetic. | |
| int abs(int value); | |
| long labs(long value); | |
| long long llabs(long long value); | |
| typedef struct { | |
| int quot; | |
| int rem; | |
| } div_t; | |
| typedef struct { | |
| long quot; | |
| long rem; | |
| } ldiv_t; | |
| typedef struct { | |
| long long quot; | |
| long long rem; | |
| } lldiv_t; | |
| div_t div(int numerator, int denominator); | |
| ldiv_t ldiv(long numerator, long denominator); | |
| lldiv_t lldiv(long long numerator, long long denominator); | |
| // Pseudo-random numbers (seeded per-thread, not cryptographic). | |
| #define RAND_MAX 0x7fffffff | |
| int rand(void); | |
| void srand(unsigned int seed); | |
| // Environment. | |
| char* getenv(const char* name); | |
| // Temporary files. | |
| int mkstemp(char* template_string); | |
| #endif // IREE_WASM_LIBC_STDLIB_H_ |