Fix MinGW-related portability issues.
Create and use FMT* macros that are equivalent to the PRI* macros that inttypes.h defines. This allows uniform use of the Unix-specific format specifiers, e.g. "%zu", as well as avoiding Windows-specific definitions of e.g. PRIu64. Add ffs()/ffsl() support for compiling with gcc. Extract compatibility definitions of ENOENT, EINVAL, EAGAIN, EPERM, ENOMEM, and ENORANGE into include/msvc_compat/windows_extra.h and use the file for tests as well as for core jemalloc code.
This commit is contained in:
@@ -4,27 +4,8 @@
|
||||
#include <math.h>
|
||||
#ifdef _WIN32
|
||||
# include <windows.h>
|
||||
# ifndef ENOENT
|
||||
# define ENOENT ERROR_PATH_NOT_FOUND
|
||||
# endif
|
||||
# ifndef EINVAL
|
||||
# define EINVAL ERROR_BAD_ARGUMENTS
|
||||
# endif
|
||||
# ifndef EAGAIN
|
||||
# define EAGAIN ERROR_OUTOFMEMORY
|
||||
# endif
|
||||
# ifndef EPERM
|
||||
# define EPERM ERROR_WRITE_FAULT
|
||||
# endif
|
||||
# ifndef EFAULT
|
||||
# define EFAULT ERROR_INVALID_ADDRESS
|
||||
# endif
|
||||
# ifndef ENOMEM
|
||||
# define ENOMEM ERROR_NOT_ENOUGH_MEMORY
|
||||
# endif
|
||||
# ifndef ERANGE
|
||||
# define ERANGE ERROR_INVALID_DATA
|
||||
# endif
|
||||
# include "msvc_compat/windows_extra.h"
|
||||
|
||||
#else
|
||||
# include <sys/param.h>
|
||||
# include <sys/mman.h>
|
||||
@@ -53,16 +34,6 @@
|
||||
#ifndef offsetof
|
||||
# define offsetof(type, member) ((size_t)&(((type *)NULL)->member))
|
||||
#endif
|
||||
#include <inttypes.h>
|
||||
#ifdef _WIN32
|
||||
# define PRIzu "Iu"
|
||||
# define PRIzd "Id"
|
||||
# define PRIzx "Ix"
|
||||
#else
|
||||
# define PRIzu "zu"
|
||||
# define PRIzd "zd"
|
||||
# define PRIzx "zx"
|
||||
#endif
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <ctype.h>
|
||||
|
Reference in New Issue
Block a user