diff --git a/Makefile b/Makefile index 39a0701859edef601e45afd30c45111a48f032bc..48323ac9020057689be90db0783ccffbf8403171 100644 --- a/Makefile +++ b/Makefile @@ -49,21 +49,26 @@ test: all $(BUILD)/debug/libc.a: $(SRC) cargo build $(CARGOFLAGS) + touch $@ $(BUILD)/debug/crt0.o: $(SRC) cargo rustc --manifest-path src/crt0/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@ + touch $@ $(BUILD)/release/libc.a: $(SRC) cargo build --release $(CARGOFLAGS) + touch $@ $(BUILD)/release/crt0.o: $(SRC) cargo rustc --release --manifest-path src/crt0/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@ + touch $@ $(BUILD)/openlibm: openlibm rm -rf $@ $@.partial mkdir -p $(BUILD) cp -r $< $@.partial mv $@.partial $@ + touch $@ $(BUILD)/openlibm/libopenlibm.a: $(BUILD)/openlibm make CC=$(CC) CFLAGS=-fno-stack-protector -C $< libopenlibm.a diff --git a/include/bits/string.h b/include/bits/string.h new file mode 100644 index 0000000000000000000000000000000000000000..f3a5b16843a61de7e9853ccdcba78d13f473aee5 --- /dev/null +++ b/include/bits/string.h @@ -0,0 +1,9 @@ +#ifndef _BITS_STDIO_H +#define _BITS_STDIO_H + +int memcmp(const void *s1, const void *s2, size_t n); +void *memcpy(void *dest, const void *src, size_t n); +void *memmove(void *dest, const void *src, size_t n); +void *memset(void *s, int c, size_t n); + +#endif /* _BITS_STDIO_H */ diff --git a/include/stdint.h b/include/stdint.h index faf36934381d9ab36e279bbcb542efe0891c6732..69d7e5529e9c23ee92a839826de38ffd19c6017d 100644 --- a/include/stdint.h +++ b/include/stdint.h @@ -1,54 +1,64 @@ #ifndef _STDINT_H #define _STDINT_H +#define INT8_C(value) ((int8_t) value) #define INT8_MIN -0x80 #define INT8_MAX 0x7F typedef signed char int8_t; +#define UINT8_C(value) ((uint8_t) __CONCAT(value, U)) #define UINT8_MIN 0x00 #define UINT8_MAX 0xFF typedef unsigned char uint8_t; +#define INT16_C(value) value #define INT16_MIN -0x8000 #define INT16_MAX 0x7FFF typedef signed short int16_t; +#define UINT16_C(value) __CONCAT(value, U) #define UINT16_MIN 0x0000 #define UINT16_MAX 0xFFFF typedef unsigned short uint16_t; +#define INT32_C(value) __CONCAT(value, L) #define INT32_MIN -0x80000000 #define INT32_MAX 0x7FFFFFFF typedef signed long int32_t; +#define UINT32_C(value) __CONCAT(value, UL) #define UINT32_MIN 0x00000000 #define UINT32_MAX 0xFFFFFFFF typedef unsigned long uint32_t; +#define INT64_C(value) __CONCAT(value, LL) #define INT64_MIN -0x8000000000000000 #define INT64_MAX 0x7FFFFFFFFFFFFFFF typedef signed long long int64_t; +#define UINT64_C(value) __CONCAT(value, ULL) #define UINT64_MIN 0x0000000000000000 #define UINT64_MAX 0xFFFFFFFFFFFFFFFF typedef unsigned long long uint64_t; -#define INTPTR_MIN INT64_MIN -#define INTPTR_MAX INT64_MAX -typedef int64_t intptr_t; - -#define UINTPTR_MIN UINT64_MIN -#define UINTPTR_MAX UINT64_MAX -typedef uint64_t uintptr_t; - +#define INTMAX_C(value) __CONCAT(value, LL) #define INTMAX_MIN INT64_MIN #define INTMAX_MAX INT64_MAX typedef int64_t intmax_t; +#define UINTMAX_C(value) __CONCAT(value, ULL) #define UINTMAX_MIN UINT64_MIN #define UINTMAX_MAX UINT64_MAX typedef uint64_t uintmax_t; +#define INTPTR_MIN INT64_MIN +#define INTPTR_MAX INT64_MAX +typedef int64_t intptr_t; + +#define UINTPTR_MIN UINT64_MIN +#define UINTPTR_MAX UINT64_MAX +typedef uint64_t uintptr_t; + #define SIZE_MAX UINT64_MAX #endif /* _STDINT_H */ diff --git a/src/mman/cbindgen.toml b/src/mman/cbindgen.toml index 783348bace7698cb6f958d9452d886cc035a5120..9858a56ae2d617c4f6d0fe140d72e6e6aaf5fc0e 100644 --- a/src/mman/cbindgen.toml +++ b/src/mman/cbindgen.toml @@ -1,4 +1,4 @@ -sys_includes = ["sys/types.h"] +sys_includes = ["stdint.h", "sys/types.h"] include_guard = "_SYS_MMAN_H" language = "C" diff --git a/src/string/cbindgen.toml b/src/string/cbindgen.toml index 33100dc2741217ff537ea809f9fda7b506b2105f..dd39d24e2ff2814d5ac83abf1969a55464e8fe48 100644 --- a/src/string/cbindgen.toml +++ b/src/string/cbindgen.toml @@ -1,5 +1,6 @@ sys_includes = ["stddef.h", "stdint.h"] include_guard = "_STRING_H" +trailer = "#include <bits/string.h>" language = "C" [enum]