diff options
Diffstat (limited to 'include')
55 files changed, 563 insertions, 90 deletions
| diff --git a/include/aio.h b/include/aio.h index 453c41b7..a938fcad 100644 --- a/include/aio.h +++ b/include/aio.h @@ -49,7 +49,7 @@ int aio_fsync(int, struct aiocb *);  int lio_listio(int, struct aiocb *__restrict const *__restrict, int, struct sigevent *__restrict); -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define aiocb64 aiocb  #define aio_read64 aio_read  #define aio_write64 aio_write diff --git a/include/alltypes.h.in b/include/alltypes.h.in index d9ff462e..d47aeea9 100644 --- a/include/alltypes.h.in +++ b/include/alltypes.h.in @@ -77,6 +77,8 @@ TYPEDEF struct __sigset_t { unsigned long __bits[128/sizeof(long)]; } sigset_t;  STRUCT iovec { void *iov_base; size_t iov_len; }; +STRUCT winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; }; +  TYPEDEF unsigned socklen_t;  TYPEDEF unsigned short sa_family_t; diff --git a/include/arpa/inet.h b/include/arpa/inet.h index 37f8c11e..9d20a15b 100644 --- a/include/arpa/inet.h +++ b/include/arpa/inet.h @@ -24,11 +24,6 @@ struct in_addr inet_makeaddr(in_addr_t, in_addr_t);  in_addr_t inet_lnaof(struct in_addr);  in_addr_t inet_netof(struct in_addr); -#undef INET_ADDRSTRLEN -#undef INET6_ADDRSTRLEN -#define INET_ADDRSTRLEN  16 -#define INET6_ADDRSTRLEN 46 -  #ifdef __cplusplus  }  #endif diff --git a/include/arpa/nameser.h b/include/arpa/nameser.h index 581925a4..9c1327a1 100644 --- a/include/arpa/nameser.h +++ b/include/arpa/nameser.h @@ -188,6 +188,36 @@ typedef enum __ns_type {  	ns_t_sink = 40,  	ns_t_opt = 41,  	ns_t_apl = 42, +	ns_t_ds = 43, +	ns_t_sshfp = 44, +	ns_t_ipseckey = 45, +	ns_t_rrsig = 46, +	ns_t_nsec = 47, +	ns_t_dnskey = 48, +	ns_t_dhcid = 49, +	ns_t_nsec3 = 50, +	ns_t_nsec3param = 51, +	ns_t_tlsa = 52, +	ns_t_smimea = 53, +	ns_t_hip = 55, +	ns_t_ninfo = 56, +	ns_t_rkey = 57, +	ns_t_talink = 58, +	ns_t_cds = 59, +	ns_t_cdnskey = 60, +	ns_t_openpgpkey = 61, +	ns_t_csync = 62, +	ns_t_spf = 99, +	ns_t_uinfo = 100, +	ns_t_uid = 101, +	ns_t_gid = 102, +	ns_t_unspec = 103, +	ns_t_nid = 104, +	ns_t_l32 = 105, +	ns_t_l64 = 106, +	ns_t_lp = 107, +	ns_t_eui48 = 108, +	ns_t_eui64 = 109,  	ns_t_tkey = 249,  	ns_t_tsig = 250,  	ns_t_ixfr = 251, @@ -196,6 +226,11 @@ typedef enum __ns_type {  	ns_t_maila = 254,  	ns_t_any = 255,  	ns_t_zxfr = 256, +	ns_t_uri = 256, +	ns_t_caa = 257, +	ns_t_avc = 258, +	ns_t_ta = 32768, +	ns_t_dlv = 32769,  	ns_t_max = 65536  } ns_type; @@ -430,12 +465,48 @@ typedef struct {  #define T_NAPTR		ns_t_naptr  #define T_A6		ns_t_a6  #define T_DNAME		ns_t_dname +#define T_DS		ns_t_ds +#define T_SSHFP		ns_t_sshfp +#define T_IPSECKEY	ns_t_ipseckey +#define T_RRSIG		ns_t_rrsig +#define T_NSEC		ns_t_nsec +#define T_DNSKEY	ns_t_dnskey +#define T_DHCID		ns_t_dhcid +#define T_NSEC3		ns_t_nsec3 +#define T_NSEC3PARAM	ns_t_nsec3param +#define T_TLSA		ns_t_tlsa +#define T_SMIMEA	ns_t_smimea +#define T_HIP		ns_t_hip +#define T_NINFO		ns_t_ninfo +#define T_RKEY		ns_t_rkey +#define T_TALINK	ns_t_talink +#define T_CDS		ns_t_cds +#define T_CDNSKEY	ns_t_cdnskey +#define T_OPENPGPKEY	ns_t_openpgpkey +#define T_CSYNC		ns_t_csync +#define T_SPF		ns_t_spf +#define T_UINFO		ns_t_uinfo +#define T_UID		ns_t_uid +#define T_GID		ns_t_gid +#define T_UNSPEC	ns_t_unspec +#define T_NID		ns_t_nid +#define T_L32		ns_t_l32 +#define T_L64		ns_t_l64 +#define T_LP		ns_t_lp +#define T_EUI48		ns_t_eui48 +#define T_EUI64		ns_t_eui64 +#define T_TKEY		ns_t_tkey  #define	T_TSIG		ns_t_tsig  #define	T_IXFR		ns_t_ixfr  #define T_AXFR		ns_t_axfr  #define T_MAILB		ns_t_mailb  #define T_MAILA		ns_t_maila  #define T_ANY		ns_t_any +#define T_URI		ns_t_uri +#define T_CAA		ns_t_caa +#define T_AVC		ns_t_avc +#define T_TA		ns_t_ta +#define T_DLV		ns_t_dlv  #define C_IN		ns_c_in  #define C_CHAOS		ns_c_chaos diff --git a/include/ctype.h b/include/ctype.h index 7936536f..32bcef4d 100644 --- a/include/ctype.h +++ b/include/ctype.h @@ -64,7 +64,9 @@ int   isascii(int);  int   toascii(int);  #define _tolower(a) ((a)|0x20)  #define _toupper(a) ((a)&0x5f) +#ifndef __cplusplus  #define isascii(a) (0 ? isascii(a) : (unsigned)(a) < 128) +#endif  #endif diff --git a/include/dirent.h b/include/dirent.h index 650ecf64..7fa60e06 100644 --- a/include/dirent.h +++ b/include/dirent.h @@ -9,14 +9,23 @@ extern "C" {  #define __NEED_ino_t  #define __NEED_off_t -#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)  #define __NEED_size_t -#endif +#define __NEED_ssize_t  #include <bits/alltypes.h>  #include <bits/dirent.h> +typedef unsigned short reclen_t; + +struct posix_dent { +	ino_t d_ino; +	off_t d_off; +	reclen_t d_reclen; +	unsigned char d_type; +	char d_name[]; +}; +  typedef struct __dirstream DIR;  #define d_fileno d_ino @@ -29,6 +38,8 @@ int            readdir_r(DIR *__restrict, struct dirent *__restrict, struct dire  void           rewinddir(DIR *);  int            dirfd(DIR *); +ssize_t posix_getdents(int, void *, size_t, int); +  int alphasort(const struct dirent **, const struct dirent **);  int scandir(const char *, struct dirent ***, int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **)); @@ -37,7 +48,6 @@ void           seekdir(DIR *, long);  long           telldir(DIR *);  #endif -#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)  #define DT_UNKNOWN 0  #define DT_FIFO 1  #define DT_CHR 2 @@ -47,6 +57,8 @@ long           telldir(DIR *);  #define DT_LNK 10  #define DT_SOCK 12  #define DT_WHT 14 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)  #define IFTODT(x) ((x)>>12 & 017)  #define DTTOIF(x) ((x)<<12)  int getdents(int, struct dirent *, size_t); @@ -56,7 +68,7 @@ int getdents(int, struct dirent *, size_t);  int versionsort(const struct dirent **, const struct dirent **);  #endif -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define dirent64 dirent  #define readdir64 readdir  #define readdir64_r readdir_r diff --git a/include/elf.h b/include/elf.h index 549f92c1..d6ae539a 100644 --- a/include/elf.h +++ b/include/elf.h @@ -315,7 +315,8 @@ typedef struct {  #define EM_RISCV	243  #define EM_BPF		247  #define EM_CSKY		252 -#define EM_NUM		253 +#define EM_LOONGARCH	258 +#define EM_NUM		259  #define EM_ALPHA	0x9026 @@ -385,7 +386,8 @@ typedef struct {  #define SHT_PREINIT_ARRAY 16  #define SHT_GROUP	  17  #define SHT_SYMTAB_SHNDX  18 -#define	SHT_NUM		  19 +#define SHT_RELR	  19 +#define	SHT_NUM		  20  #define SHT_LOOS	  0x60000000  #define SHT_GNU_ATTRIBUTES 0x6ffffff5  #define SHT_GNU_HASH	  0x6ffffff6 @@ -436,6 +438,7 @@ typedef struct {  } Elf64_Chdr;  #define ELFCOMPRESS_ZLIB	1 +#define ELFCOMPRESS_ZSTD	2  #define ELFCOMPRESS_LOOS	0x60000000  #define ELFCOMPRESS_HIOS	0x6fffffff  #define ELFCOMPRESS_LOPROC	0x70000000 @@ -556,6 +559,11 @@ typedef struct { +typedef Elf32_Word Elf32_Relr; +typedef Elf64_Xword Elf64_Relr; + + +  #define ELF32_R_SYM(val)		((val) >> 8)  #define ELF32_R_TYPE(val)		((val) & 0xff)  #define ELF32_R_INFO(sym, type)		(((sym) << 8) + ((type) & 0xff)) @@ -603,6 +611,7 @@ typedef struct {  #define PT_GNU_EH_FRAME	0x6474e550  #define PT_GNU_STACK	0x6474e551  #define PT_GNU_RELRO	0x6474e552 +#define PT_GNU_PROPERTY	0x6474e553  #define PT_LOSUNW	0x6ffffffa  #define PT_SUNWBSS	0x6ffffffa  #define PT_SUNWSTACK	0x6ffffffb @@ -685,6 +694,8 @@ typedef struct {  #define NT_ARM_PAC_MASK	0x406  #define NT_ARM_PACA_KEYS	0x407  #define NT_ARM_PACG_KEYS	0x408 +#define NT_ARM_TAGGED_ADDR_CTRL	0x409 +#define NT_ARM_PAC_ENABLED_KEYS	0x40a  #define NT_METAG_CBUF	0x500  #define NT_METAG_RPIPE	0x501  #define NT_METAG_TLS	0x502 @@ -693,7 +704,14 @@ typedef struct {  #define NT_MIPS_DSP	0x800  #define NT_MIPS_FP_MODE	0x801  #define NT_MIPS_MSA	0x802 +#define NT_RISCV_CSR	0x900 +#define NT_RISCV_VECTOR	0x901  #define NT_VERSION	1 +#define NT_LOONGARCH_CPUCFG	0xa00 +#define NT_LOONGARCH_CSR	0xa01 +#define NT_LOONGARCH_LSX	0xa02 +#define NT_LOONGARCH_LASX	0xa03 +#define NT_LOONGARCH_LBT	0xa04 @@ -751,7 +769,10 @@ typedef struct {  #define DT_PREINIT_ARRAY 32  #define DT_PREINIT_ARRAYSZ 33  #define DT_SYMTAB_SHNDX	34 -#define	DT_NUM		35 +#define DT_RELRSZ	35 +#define DT_RELR		36 +#define DT_RELRENT	37 +#define	DT_NUM		38  #define DT_LOOS		0x6000000d  #define DT_HIOS		0x6ffff000  #define DT_LOPROC	0x70000000 @@ -1019,6 +1040,8 @@ typedef struct {  #define AT_RANDOM	25  #define AT_HWCAP2	26 +#define AT_HWCAP3	29 +#define AT_HWCAP4	30  #define AT_EXECFN	31 @@ -1085,6 +1108,7 @@ typedef struct {  #define NT_GNU_BUILD_ID	3  #define NT_GNU_GOLD_VERSION	4 +#define NT_GNU_PROPERTY_TYPE_0	5 @@ -3240,6 +3264,7 @@ enum  #define R_RISCV_TLS_DTPREL64    9  #define R_RISCV_TLS_TPREL32     10  #define R_RISCV_TLS_TPREL64     11 +#define R_RISCV_TLSDESC         12  #define R_RISCV_BRANCH          16  #define R_RISCV_JAL             17 @@ -3266,16 +3291,11 @@ enum  #define R_RISCV_SUB16           38  #define R_RISCV_SUB32           39  #define R_RISCV_SUB64           40 -#define R_RISCV_GNU_VTINHERIT   41 -#define R_RISCV_GNU_VTENTRY     42 +#define R_RISCV_GOT32_PCREL     41  #define R_RISCV_ALIGN           43  #define R_RISCV_RVC_BRANCH      44  #define R_RISCV_RVC_JUMP        45  #define R_RISCV_RVC_LUI         46 -#define R_RISCV_GPREL_I         47 -#define R_RISCV_GPREL_S         48 -#define R_RISCV_TPREL_I         49 -#define R_RISCV_TPREL_S         50  #define R_RISCV_RELAX           51  #define R_RISCV_SUB6            52  #define R_RISCV_SET6            53 @@ -3283,6 +3303,111 @@ enum  #define R_RISCV_SET16           55  #define R_RISCV_SET32           56  #define R_RISCV_32_PCREL        57 +#define R_RISCV_IRELATIVE       58 +#define R_RISCV_PLT32           59 +#define R_RISCV_SET_ULEB128     60 +#define R_RISCV_SUB_ULEB128     61 +#define R_RISCV_TLSDESC_HI20    62 +#define R_RISCV_TLSDESC_LOAD_LO12 63 +#define R_RISCV_TLSDESC_ADD_LO12  64 +#define R_RISCV_TLSDESC_CALL    65 + +#define EF_LARCH_ABI_MODIFIER_MASK    0x07 +#define EF_LARCH_ABI_SOFT_FLOAT       0x01 +#define EF_LARCH_ABI_SINGLE_FLOAT     0x02 +#define EF_LARCH_ABI_DOUBLE_FLOAT     0x03 +#define EF_LARCH_OBJABI_V1            0x40 + +#define R_LARCH_NONE                        0 +#define R_LARCH_32                          1 +#define R_LARCH_64                          2 +#define R_LARCH_RELATIVE                    3 +#define R_LARCH_COPY                        4 +#define R_LARCH_JUMP_SLOT                   5 +#define R_LARCH_TLS_DTPMOD32                6 +#define R_LARCH_TLS_DTPMOD64                7 +#define R_LARCH_TLS_DTPREL32                8 +#define R_LARCH_TLS_DTPREL64                9 +#define R_LARCH_TLS_TPREL32                 10 +#define R_LARCH_TLS_TPREL64                 11 +#define R_LARCH_IRELATIVE                   12 +#define R_LARCH_TLS_DESC64                  14 +#define R_LARCH_MARK_LA                     20 +#define R_LARCH_MARK_PCREL                  21 +#define R_LARCH_SOP_PUSH_PCREL              22 +#define R_LARCH_SOP_PUSH_ABSOLUTE           23 +#define R_LARCH_SOP_PUSH_DUP                24 +#define R_LARCH_SOP_PUSH_GPREL              25 +#define R_LARCH_SOP_PUSH_TLS_TPREL          26 +#define R_LARCH_SOP_PUSH_TLS_GOT            27 +#define R_LARCH_SOP_PUSH_TLS_GD             28 +#define R_LARCH_SOP_PUSH_PLT_PCREL          29 +#define R_LARCH_SOP_ASSERT                  30 +#define R_LARCH_SOP_NOT                     31 +#define R_LARCH_SOP_SUB                     32 +#define R_LARCH_SOP_SL                      33 +#define R_LARCH_SOP_SR                      34 +#define R_LARCH_SOP_ADD                     35 +#define R_LARCH_SOP_AND                     36 +#define R_LARCH_SOP_IF_ELSE                 37 +#define R_LARCH_SOP_POP_32_S_10_5           38 +#define R_LARCH_SOP_POP_32_U_10_12          39 +#define R_LARCH_SOP_POP_32_S_10_12          40 +#define R_LARCH_SOP_POP_32_S_10_16          41 +#define R_LARCH_SOP_POP_32_S_10_16_S2       42 +#define R_LARCH_SOP_POP_32_S_5_20           43 +#define R_LARCH_SOP_POP_32_S_0_5_10_16_S2   44 +#define R_LARCH_SOP_POP_32_S_0_10_10_16_S2  45 +#define R_LARCH_SOP_POP_32_U                46 +#define R_LARCH_ADD8                        47 +#define R_LARCH_ADD16                       48 +#define R_LARCH_ADD24                       49 +#define R_LARCH_ADD32                       50 +#define R_LARCH_ADD64                       51 +#define R_LARCH_SUB8                        52 +#define R_LARCH_SUB16                       53 +#define R_LARCH_SUB24                       54 +#define R_LARCH_SUB32                       55 +#define R_LARCH_SUB64                       56 +#define R_LARCH_GNU_VTINHERIT               57 +#define R_LARCH_GNU_VTENTRY                 58 +#define R_LARCH_B16                         64 +#define R_LARCH_B21                         65 +#define R_LARCH_B26                         66 +#define R_LARCH_ABS_HI20                    67 +#define R_LARCH_ABS_LO12                    68 +#define R_LARCH_ABS64_LO20                  69 +#define R_LARCH_ABS64_HI12                  70 +#define R_LARCH_PCALA_HI20                  71 +#define R_LARCH_PCALA_LO12                  72 +#define R_LARCH_PCALA64_LO20                73 +#define R_LARCH_PCALA64_HI12                74 +#define R_LARCH_GOT_PC_HI20                 75 +#define R_LARCH_GOT_PC_LO12                 76 +#define R_LARCH_GOT64_PC_LO20               77 +#define R_LARCH_GOT64_PC_HI12               78 +#define R_LARCH_GOT_HI20                    79 +#define R_LARCH_GOT_LO12                    80 +#define R_LARCH_GOT64_LO20                  81 +#define R_LARCH_GOT64_HI12                  82 +#define R_LARCH_TLS_LE_HI20                 83 +#define R_LARCH_TLS_LE_LO12                 84 +#define R_LARCH_TLS_LE64_LO20               85 +#define R_LARCH_TLS_LE64_HI12               86 +#define R_LARCH_TLS_IE_PC_HI20              87 +#define R_LARCH_TLS_IE_PC_LO12              88 +#define R_LARCH_TLS_IE64_PC_LO20            89 +#define R_LARCH_TLS_IE64_PC_HI12            90 +#define R_LARCH_TLS_IE_HI20                 91 +#define R_LARCH_TLS_IE_LO12                 92 +#define R_LARCH_TLS_IE64_LO20               93 +#define R_LARCH_TLS_IE64_HI12               94 +#define R_LARCH_TLS_LD_PC_HI20              95 +#define R_LARCH_TLS_LD_HI20                 96 +#define R_LARCH_TLS_GD_PC_HI20              97 +#define R_LARCH_TLS_GD_HI20                 98 +#define R_LARCH_32_PCREL                    99 +#define R_LARCH_RELAX                       100  #ifdef __cplusplus  } diff --git a/include/fcntl.h b/include/fcntl.h index b664cdc4..53f98a8b 100644 --- a/include/fcntl.h +++ b/include/fcntl.h @@ -184,7 +184,6 @@ struct f_owner_ex {  #define SPLICE_F_MORE 4  #define SPLICE_F_GIFT 8  int fallocate(int, int, off_t, off_t); -#define fallocate64 fallocate  int name_to_handle_at(int, const char *, struct file_handle *, int *, int);  int open_by_handle_at(int, struct file_handle *, int);  ssize_t readahead(int, off_t, size_t); @@ -195,7 +194,7 @@ ssize_t tee(int, int, size_t, unsigned);  #define loff_t off_t  #endif -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define F_GETLK64 F_GETLK  #define F_SETLK64 F_SETLK  #define F_SETLKW64 F_SETLKW @@ -207,6 +206,9 @@ ssize_t tee(int, int, size_t, unsigned);  #define posix_fadvise64 posix_fadvise  #define posix_fallocate64 posix_fallocate  #define off64_t off_t +#if defined(_GNU_SOURCE) +#define fallocate64 fallocate +#endif  #endif  #ifdef __cplusplus diff --git a/include/ftw.h b/include/ftw.h index b15c062a..d0445e8a 100644 --- a/include/ftw.h +++ b/include/ftw.h @@ -29,7 +29,7 @@ struct FTW {  int ftw(const char *, int (*)(const char *, const struct stat *, int), int);  int nftw(const char *, int (*)(const char *, const struct stat *, int, struct FTW *), int, int); -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define ftw64 ftw  #define nftw64 nftw  #endif diff --git a/include/glob.h b/include/glob.h index 4a562a20..fed06745 100644 --- a/include/glob.h +++ b/include/glob.h @@ -39,7 +39,7 @@ void globfree(glob_t *);  #define GLOB_NOMATCH 3  #define GLOB_NOSYS   4 -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define glob64 glob  #define globfree64 globfree  #define glob64_t glob_t diff --git a/include/locale.h b/include/locale.h index ce384381..11106fea 100644 --- a/include/locale.h +++ b/include/locale.h @@ -7,7 +7,9 @@ extern "C" {  #include <features.h> -#ifdef __cplusplus +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__cplusplus)  #define NULL 0L  #else  #define NULL ((void*)0) diff --git a/include/netdb.h b/include/netdb.h index d096c781..3af065e2 100644 --- a/include/netdb.h +++ b/include/netdb.h @@ -44,6 +44,7 @@ struct addrinfo {  #define EAI_NONAME     -2  #define EAI_AGAIN      -3  #define EAI_FAIL       -4 +#define EAI_NODATA     -5  #define EAI_FAMILY     -6  #define EAI_SOCKTYPE   -7  #define EAI_SERVICE    -8 diff --git a/include/netinet/if_ether.h b/include/netinet/if_ether.h index a08485e7..3479f511 100644 --- a/include/netinet/if_ether.h +++ b/include/netinet/if_ether.h @@ -59,12 +59,14 @@  #define ETH_P_PREAUTH	0x88C7  #define ETH_P_TIPC	0x88CA  #define ETH_P_LLDP	0x88CC +#define ETH_P_MRP	0x88E3  #define ETH_P_MACSEC	0x88E5  #define ETH_P_8021AH	0x88E7  #define ETH_P_MVRP	0x88F5  #define ETH_P_1588	0x88F7  #define ETH_P_NCSI	0x88F8  #define ETH_P_PRP	0x88FB +#define ETH_P_CFM	0x8902  #define ETH_P_FCOE	0x8906  #define ETH_P_TDLS	0x890D  #define ETH_P_FIP	0x8914 diff --git a/include/netinet/in.h b/include/netinet/in.h index 5b8b21e6..60bbaa75 100644 --- a/include/netinet/in.h +++ b/include/netinet/in.h @@ -48,6 +48,7 @@ struct ipv6_mreq {  #define INADDR_BROADCAST  ((in_addr_t) 0xffffffff)  #define INADDR_NONE       ((in_addr_t) 0xffffffff)  #define INADDR_LOOPBACK   ((in_addr_t) 0x7f000001) +#define INADDR_DUMMY      ((in_addr_t) 0xc0000008)  #define INADDR_UNSPEC_GROUP     ((in_addr_t) 0xe0000000)  #define INADDR_ALLHOSTS_GROUP   ((in_addr_t) 0xe0000001) @@ -60,8 +61,6 @@ struct ipv6_mreq {  extern const struct in6_addr in6addr_any, in6addr_loopback; -#undef INET_ADDRSTRLEN -#undef INET6_ADDRSTRLEN  #define INET_ADDRSTRLEN  16  #define INET6_ADDRSTRLEN 46 @@ -103,8 +102,10 @@ uint16_t ntohs(uint16_t);  #define IPPROTO_MH       135  #define IPPROTO_UDPLITE  136  #define IPPROTO_MPLS     137 +#define IPPROTO_ETHERNET 143  #define IPPROTO_RAW      255 -#define IPPROTO_MAX      256 +#define IPPROTO_MPTCP    262 +#define IPPROTO_MAX      263  #define IN6_IS_ADDR_UNSPECIFIED(a) \          (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ @@ -131,7 +132,8 @@ uint16_t ntohs(uint16_t);  #define IN6_IS_ADDR_V4COMPAT(a) \          (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ -         ((uint32_t *) (a))[2] == 0 && ((uint8_t *) (a))[15] > 1) +         ((uint32_t *) (a))[2] == 0 && \ +         !IN6_IS_ADDR_UNSPECIFIED(a) && !IN6_IS_ADDR_LOOPBACK(a))  #define IN6_IS_ADDR_MC_NODELOCAL(a) \          (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x1)) @@ -202,6 +204,7 @@ uint16_t ntohs(uint16_t);  #define IP_CHECKSUM        23  #define IP_BIND_ADDRESS_NO_PORT 24  #define IP_RECVFRAGSIZE    25 +#define IP_RECVERR_RFC4884 26  #define IP_MULTICAST_IF    32  #define IP_MULTICAST_TTL   33  #define IP_MULTICAST_LOOP  34 diff --git a/include/netinet/tcp.h b/include/netinet/tcp.h index 44a007aa..fad1d844 100644 --- a/include/netinet/tcp.h +++ b/include/netinet/tcp.h @@ -78,6 +78,10 @@ enum {  	TCP_NLA_DSACK_DUPS,  	TCP_NLA_REORD_SEEN,  	TCP_NLA_SRTT, +	TCP_NLA_TIMEOUT_REHASH, +	TCP_NLA_BYTES_NOTSENT, +	TCP_NLA_EDT, +	TCP_NLA_TTL,  };  #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) @@ -181,6 +185,13 @@ struct tcphdr {  #define TCP_CA_Recovery		3  #define TCP_CA_Loss		4 +enum tcp_fastopen_client_fail { +	TFO_STATUS_UNSPEC, +	TFO_COOKIE_UNAVAILABLE, +	TFO_DATA_NOT_ACKED, +	TFO_SYN_RETRANSMITTED, +}; +  struct tcp_info {  	uint8_t tcpi_state;  	uint8_t tcpi_ca_state; @@ -189,7 +200,7 @@ struct tcp_info {  	uint8_t tcpi_backoff;  	uint8_t tcpi_options;  	uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; -	uint8_t tcpi_delivery_rate_app_limited : 1; +	uint8_t tcpi_delivery_rate_app_limited : 1, tcpi_fastopen_client_fail : 2;  	uint32_t tcpi_rto;  	uint32_t tcpi_ato;  	uint32_t tcpi_snd_mss; @@ -240,14 +251,15 @@ struct tcp_info {  #define TCP_MD5SIG_MAXKEYLEN    80 -#define TCP_MD5SIG_FLAG_PREFIX  1 +#define TCP_MD5SIG_FLAG_PREFIX  0x1 +#define TCP_MD5SIG_FLAG_IFINDEX 0x2  struct tcp_md5sig {  	struct sockaddr_storage tcpm_addr;  	uint8_t tcpm_flags;  	uint8_t tcpm_prefixlen;  	uint16_t tcpm_keylen; -	uint32_t __tcpm_pad; +	int tcpm_ifindex;  	uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN];  }; @@ -271,10 +283,21 @@ struct tcp_repair_window {  	uint32_t rcv_wup;  }; +#define TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT 0x1 +  struct tcp_zerocopy_receive {  	uint64_t address;  	uint32_t length;  	uint32_t recv_skip_hint; +	uint32_t inq; +	int32_t err; +	uint64_t copybuf_address; +	int32_t copybuf_len; +	uint32_t flags; +	uint64_t msg_control; +	uint64_t msg_controllen; +	uint32_t msg_flags; +	uint32_t reserved;  };  #endif diff --git a/include/netinet/udp.h b/include/netinet/udp.h index ffd89079..40c3f203 100644 --- a/include/netinet/udp.h +++ b/include/netinet/udp.h @@ -35,6 +35,7 @@ struct udphdr {  #define UDP_ENCAP_GTP0		4  #define UDP_ENCAP_GTP1U		5  #define UDP_ENCAP_RXRPC		6 +#define TCP_ENCAP_ESPINTCP	7  #define SOL_UDP            17 diff --git a/include/poll.h b/include/poll.h index 472e4b84..272dc34a 100644 --- a/include/poll.h +++ b/include/poll.h @@ -36,7 +36,7 @@ struct pollfd {  int poll (struct pollfd *, nfds_t, int); -#ifdef _GNU_SOURCE +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)  #define __NEED_time_t  #define __NEED_struct_timespec  #define __NEED_sigset_t @@ -45,7 +45,7 @@ int ppoll(struct pollfd *, nfds_t, const struct timespec *, const sigset_t *);  #endif  #if _REDIR_TIME64 -#ifdef _GNU_SOURCE +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)  __REDIR(ppoll, __ppoll_time64);  #endif  #endif diff --git a/include/pthread.h b/include/pthread.h index 984db680..89fd9ff7 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -74,6 +74,9 @@ extern "C" {  #define PTHREAD_BARRIER_SERIAL_THREAD (-1) +#define PTHREAD_NULL ((pthread_t)0) + +  int pthread_create(pthread_t *__restrict, const pthread_attr_t *__restrict, void *(*)(void *), void *__restrict);  int pthread_detach(pthread_t);  _Noreturn void pthread_exit(void *); @@ -218,6 +221,7 @@ int pthread_getaffinity_np(pthread_t, size_t, struct cpu_set_t *);  int pthread_setaffinity_np(pthread_t, size_t, const struct cpu_set_t *);  int pthread_getattr_np(pthread_t, pthread_attr_t *);  int pthread_setname_np(pthread_t, const char *); +int pthread_getname_np(pthread_t, char *, size_t);  int pthread_getattr_default_np(pthread_attr_t *);  int pthread_setattr_default_np(const pthread_attr_t *);  int pthread_tryjoin_np(pthread_t, void **); diff --git a/include/sched.h b/include/sched.h index 822f464e..8c3b53f0 100644 --- a/include/sched.h +++ b/include/sched.h @@ -49,6 +49,7 @@ int     sched_yield(void);  #ifdef _GNU_SOURCE  #define CSIGNAL		0x000000ff +#define CLONE_NEWTIME	0x00000080  #define CLONE_VM	0x00000100  #define CLONE_FS	0x00000200  #define CLONE_FILES	0x00000400 @@ -77,11 +78,10 @@ int clone (int (*)(void *), void *, int, void *, ...);  int unshare(int);  int setns(int, int); -void *memcpy(void *__restrict, const void *__restrict, size_t); -int memcmp(const void *, const void *, size_t); -void *memset (void *, int, size_t); -void *calloc(size_t, size_t); -void free(void *); +int (memcmp)(const void *, const void *, size_t); +void *(memset)(void *, int, size_t); +void *(calloc)(size_t, size_t); +void (free)(void *);  typedef struct cpu_set_t { unsigned long __bits[128/sizeof(long)]; } cpu_set_t;  int __sched_cpucount(size_t, const cpu_set_t *); @@ -115,15 +115,15 @@ __CPU_op_func_S(XOR, ^)  #define CPU_XOR_S(a,b,c,d) __CPU_XOR_S(a,b,c,d)  #define CPU_COUNT_S(size,set) __sched_cpucount(size,set) -#define CPU_ZERO_S(size,set) memset(set,0,size) -#define CPU_EQUAL_S(size,set1,set2) (!memcmp(set1,set2,size)) +#define CPU_ZERO_S(size,set) (memset)(set,0,size) +#define CPU_EQUAL_S(size,set1,set2) (!(memcmp)(set1,set2,size))  #define CPU_ALLOC_SIZE(n) (sizeof(long) * ( (n)/(8*sizeof(long)) \  	+ ((n)%(8*sizeof(long)) + 8*sizeof(long)-1)/(8*sizeof(long)) ) ) -#define CPU_ALLOC(n) ((cpu_set_t *)calloc(1,CPU_ALLOC_SIZE(n))) -#define CPU_FREE(set) free(set) +#define CPU_ALLOC(n) ((cpu_set_t *)(calloc)(1,CPU_ALLOC_SIZE(n))) +#define CPU_FREE(set) (free)(set) -#define CPU_SETSIZE 128 +#define CPU_SETSIZE 1024  #define CPU_SET(i, set) CPU_SET_S(i,sizeof(cpu_set_t),set)  #define CPU_CLR(i, set) CPU_CLR_S(i,sizeof(cpu_set_t),set) diff --git a/include/setjmp.h b/include/setjmp.h index 2d43abf8..1976af23 100644 --- a/include/setjmp.h +++ b/include/setjmp.h @@ -15,25 +15,33 @@ typedef struct __jmp_buf_tag {  	unsigned long __ss[128/sizeof(long)];  } jmp_buf[1]; +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) +#define __setjmp_attr __attribute__((__returns_twice__)) +#else +#define __setjmp_attr +#endif +  #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \   || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \   || defined(_BSD_SOURCE)  typedef jmp_buf sigjmp_buf; -int sigsetjmp (sigjmp_buf, int); +int sigsetjmp (sigjmp_buf, int) __setjmp_attr;  _Noreturn void siglongjmp (sigjmp_buf, int);  #endif  #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \   || defined(_BSD_SOURCE) -int _setjmp (jmp_buf); +int _setjmp (jmp_buf) __setjmp_attr;  _Noreturn void _longjmp (jmp_buf, int);  #endif -int setjmp (jmp_buf); +int setjmp (jmp_buf) __setjmp_attr;  _Noreturn void longjmp (jmp_buf, int);  #define setjmp setjmp +#undef __setjmp_attr +  #ifdef __cplusplus  }  #endif diff --git a/include/shadow.h b/include/shadow.h index 2b1be413..a9d6940f 100644 --- a/include/shadow.h +++ b/include/shadow.h @@ -28,7 +28,6 @@ void setspent(void);  void endspent(void);  struct spwd *getspent(void);  struct spwd *fgetspent(FILE *); -struct spwd *sgetspent(const char *);  int putspent(const struct spwd *, FILE *);  struct spwd *getspnam(const char *); diff --git a/include/signal.h b/include/signal.h index fbdf667b..c347f861 100644 --- a/include/signal.h +++ b/include/signal.h @@ -75,6 +75,8 @@ typedef struct sigaltstack stack_t;  #define SEGV_ACCERR 2  #define SEGV_BNDERR 3  #define SEGV_PKUERR 4 +#define SEGV_MTEAERR 8 +#define SEGV_MTESERR 9  #define BUS_ADRALN 1  #define BUS_ADRERR 2 @@ -176,18 +178,31 @@ struct sigaction {  #define sa_handler   __sa_handler.sa_handler  #define sa_sigaction __sa_handler.sa_sigaction +#define SA_UNSUPPORTED 0x00000400 +#define SA_EXPOSE_TAGBITS 0x00000800 +  struct sigevent {  	union sigval sigev_value;  	int sigev_signo;  	int sigev_notify; -	void (*sigev_notify_function)(union sigval); -	pthread_attr_t *sigev_notify_attributes; -	char __pad[56-3*sizeof(long)]; +	union { +		char __pad[64 - 2*sizeof(int) - sizeof(union sigval)]; +		pid_t sigev_notify_thread_id; +		struct { +			void (*sigev_notify_function)(union sigval); +			pthread_attr_t *sigev_notify_attributes; +		} __sev_thread; +	} __sev_fields;  }; +#define sigev_notify_thread_id __sev_fields.sigev_notify_thread_id +#define sigev_notify_function __sev_fields.__sev_thread.sigev_notify_function +#define sigev_notify_attributes __sev_fields.__sev_thread.sigev_notify_attributes +  #define SIGEV_SIGNAL 0  #define SIGEV_NONE 1  #define SIGEV_THREAD 2 +#define SIGEV_THREAD_ID 4  int __libc_current_sigrtmin(void);  int __libc_current_sigrtmax(void); @@ -249,6 +264,9 @@ void (*sigset(int, void (*)(int)))(int);  #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)  #define NSIG _NSIG  typedef void (*sig_t)(int); + +#define SYS_SECCOMP 1 +#define SYS_USER_DISPATCH 2  #endif  #ifdef _GNU_SOURCE diff --git a/include/stdc-predef.h b/include/stdc-predef.h index f8cd4b89..642bad2d 100644 --- a/include/stdc-predef.h +++ b/include/stdc-predef.h @@ -7,4 +7,12 @@  #define __STDC_IEC_559__ 1  #endif +#if !defined(__STDC_UTF_16__) +#define __STDC_UTF_16__ 1 +#endif + +#if !defined(__STDC_UTF_32__) +#define __STDC_UTF_32__ 1 +#endif +  #endif diff --git a/include/stddef.h b/include/stddef.h index bd753853..f25b8639 100644 --- a/include/stddef.h +++ b/include/stddef.h @@ -1,7 +1,9 @@  #ifndef _STDDEF_H  #define _STDDEF_H -#ifdef __cplusplus +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__cplusplus)  #define NULL 0L  #else  #define NULL ((void*)0) diff --git a/include/stdio.h b/include/stdio.h index 3604198c..4ea4c170 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -25,7 +25,9 @@ extern "C" {  #include <bits/alltypes.h> -#ifdef __cplusplus +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__cplusplus)  #define NULL 0L  #else  #define NULL ((void*)0) @@ -156,6 +158,13 @@ char *ctermid(char *);  #define L_ctermid 20  #endif +#if defined(_GNU_SOURCE) +#define RENAME_NOREPLACE (1 << 0) +#define RENAME_EXCHANGE  (1 << 1) +#define RENAME_WHITEOUT  (1 << 2) + +int renameat2(int, const char *, int, const char *, unsigned); +#endif  #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \   || defined(_BSD_SOURCE) @@ -203,7 +212,7 @@ typedef struct _IO_cookie_io_functions_t {  FILE *fopencookie(void *, const char *, cookie_io_functions_t);  #endif -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define tmpfile64 tmpfile  #define fopen64 fopen  #define freopen64 freopen diff --git a/include/stdlib.h b/include/stdlib.h index 194c2033..475190bf 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -7,7 +7,9 @@ extern "C" {  #include <features.h> -#ifdef __cplusplus +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__cplusplus)  #define NULL 0L  #else  #define NULL ((void*)0) @@ -93,7 +95,7 @@ size_t __ctype_get_mb_cur_max(void);  #define WTERMSIG(s) ((s) & 0x7f)  #define WSTOPSIG(s) WEXITSTATUS(s)  #define WIFEXITED(s) (!WTERMSIG(s)) -#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00) +#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001U)>>8) > 0x7f00)  #define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu)  int posix_memalign (void **, size_t, size_t); @@ -145,6 +147,8 @@ int getloadavg(double *, int);  int clearenv(void);  #define WCOREDUMP(s) ((s) & 0x80)  #define WIFCONTINUED(s) ((s) == 0xffff) +void *reallocarray (void *, size_t, size_t); +void qsort_r (void *, size_t, size_t, int (*)(const void *, const void *, void *), void *);  #endif  #ifdef _GNU_SOURCE @@ -159,7 +163,7 @@ double strtod_l(const char *__restrict, char **__restrict, struct __locale_struc  long double strtold_l(const char *__restrict, char **__restrict, struct __locale_struct *);  #endif -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define mkstemp64 mkstemp  #define mkostemp64 mkostemp  #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) diff --git a/include/string.h b/include/string.h index 795a2abc..83e2b946 100644 --- a/include/string.h +++ b/include/string.h @@ -7,7 +7,9 @@ extern "C" {  #include <features.h> -#ifdef __cplusplus +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__cplusplus)  #define NULL 0L  #else  #define NULL ((void*)0) @@ -71,6 +73,7 @@ char *strsignal(int);  char *strerror_l (int, locale_t);  int strcoll_l (const char *, const char *, locale_t);  size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t); +void *memmem(const void *, size_t, const void *, size_t);  #endif  #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ @@ -90,12 +93,8 @@ void explicit_bzero (void *, size_t);  int strverscmp (const char *, const char *);  char *strchrnul(const char *, int);  char *strcasestr(const char *, const char *); -void *memmem(const void *, size_t, const void *, size_t);  void *memrchr(const void *, int, size_t);  void *mempcpy(void *, const void *, size_t); -#ifndef __cplusplus -char *basename(); -#endif  #endif  #ifdef __cplusplus diff --git a/include/strings.h b/include/strings.h index db0960b4..b7a5ea08 100644 --- a/include/strings.h +++ b/include/strings.h @@ -5,6 +5,7 @@  extern "C" {  #endif +#include <features.h>  #define __NEED_size_t  #define __NEED_locale_t diff --git a/include/sys/epoll.h b/include/sys/epoll.h index ac81a841..5f975c4a 100644 --- a/include/sys/epoll.h +++ b/include/sys/epoll.h @@ -7,6 +7,7 @@ extern "C" {  #include <stdint.h>  #include <sys/types.h> +#include <sys/ioctl.h>  #include <fcntl.h>  #define __NEED_sigset_t @@ -54,6 +55,17 @@ __attribute__ ((__packed__))  #endif  ; +struct epoll_params { +	uint32_t busy_poll_usecs; +	uint16_t busy_poll_budget; +	uint8_t prefer_busy_poll; + +	uint8_t __pad; +}; + +#define EPOLL_IOC_TYPE 0x8A +#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params) +#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)  int epoll_create(int);  int epoll_create1(int); diff --git a/include/sys/fanotify.h b/include/sys/fanotify.h index b637c8f5..10e5f15e 100644 --- a/include/sys/fanotify.h +++ b/include/sys/fanotify.h @@ -55,8 +55,9 @@ struct fanotify_response {  #define FAN_OPEN_PERM 0x10000  #define FAN_ACCESS_PERM 0x20000  #define FAN_OPEN_EXEC_PERM 0x40000 -#define FAN_ONDIR 0x40000000 +#define FAN_DIR_MODIFY 0x00080000  #define FAN_EVENT_ON_CHILD 0x08000000 +#define FAN_ONDIR 0x40000000  #define FAN_CLOSE (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE)  #define FAN_MOVE (FAN_MOVED_FROM | FAN_MOVED_TO)  #define FAN_CLOEXEC 0x01 @@ -70,6 +71,9 @@ struct fanotify_response {  #define FAN_ENABLE_AUDIT 0x40  #define FAN_REPORT_TID 0x100  #define FAN_REPORT_FID 0x200 +#define FAN_REPORT_DIR_FID 0x00000400 +#define FAN_REPORT_NAME 0x00000800 +#define FAN_REPORT_DFID_NAME (FAN_REPORT_DIR_FID | FAN_REPORT_NAME)  #define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK | FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS)  #define FAN_MARK_ADD 0x01  #define FAN_MARK_REMOVE 0x02 @@ -88,6 +92,8 @@ struct fanotify_response {  #define FAN_ALL_OUTGOING_EVENTS (FAN_ALL_EVENTS | FAN_ALL_PERM_EVENTS | FAN_Q_OVERFLOW)  #define FANOTIFY_METADATA_VERSION 3  #define FAN_EVENT_INFO_TYPE_FID 1 +#define FAN_EVENT_INFO_TYPE_DFID_NAME 2 +#define FAN_EVENT_INFO_TYPE_DFID 3  #define FAN_ALLOW 0x01  #define FAN_DENY 0x02  #define FAN_AUDIT 0x10 diff --git a/include/sys/ioctl.h b/include/sys/ioctl.h index c2ce3b48..a9a2346e 100644 --- a/include/sys/ioctl.h +++ b/include/sys/ioctl.h @@ -4,6 +4,8 @@  extern "C" {  #endif +#define __NEED_struct_winsize +  #include <bits/alltypes.h>  #include <bits/ioctl.h> @@ -47,13 +49,6 @@ extern "C" {  #define TIOCSER_TEMT 1 -struct winsize { -	unsigned short ws_row; -	unsigned short ws_col; -	unsigned short ws_xpixel; -	unsigned short ws_ypixel; -}; -  #define SIOCADDRT          0x890B  #define SIOCDELRT          0x890C  #define SIOCRTMSG          0x890D diff --git a/include/sys/membarrier.h b/include/sys/membarrier.h index 10cb3108..11193eda 100644 --- a/include/sys/membarrier.h +++ b/include/sys/membarrier.h @@ -9,9 +9,13 @@  #define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16  #define MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE 32  #define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE 64 +#define MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ 128 +#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ 256  #define MEMBARRIER_CMD_SHARED MEMBARRIER_CMD_GLOBAL +#define MEMBARRIER_CMD_FLAG_CPU 1 +  int membarrier(int, int);  #endif diff --git a/include/sys/mman.h b/include/sys/mman.h index 3bade727..3d5d0f9c 100644 --- a/include/sys/mman.h +++ b/include/sys/mman.h @@ -40,6 +40,7 @@ extern "C" {  #define MAP_HUGE_SHIFT 26  #define MAP_HUGE_MASK  0x3f +#define MAP_HUGE_16KB  (14 << 26)  #define MAP_HUGE_64KB  (16 << 26)  #define MAP_HUGE_512KB (19 << 26)  #define MAP_HUGE_1MB   (20 << 26) @@ -101,6 +102,7 @@ extern "C" {  #ifdef _GNU_SOURCE  #define MREMAP_MAYMOVE 1  #define MREMAP_FIXED 2 +#define MREMAP_DONTUNMAP 4  #define MLOCK_ONFAULT 0x01 @@ -139,7 +141,7 @@ int mincore (void *, size_t, unsigned char *);  int shm_open (const char *, int, mode_t);  int shm_unlink (const char *); -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define mmap64 mmap  #define off64_t off_t  #endif diff --git a/include/sys/mount.h b/include/sys/mount.h index 57a89c09..09bd6e9d 100644 --- a/include/sys/mount.h +++ b/include/sys/mount.h @@ -31,6 +31,7 @@ extern "C" {  #define MS_REMOUNT     32  #define MS_MANDLOCK    64  #define MS_DIRSYNC     128 +#define MS_NOSYMFOLLOW 256  #define MS_NOATIME     1024  #define MS_NODIRATIME  2048  #define MS_BIND        4096 diff --git a/include/sys/personality.h b/include/sys/personality.h index 31d43dfe..411dc475 100644 --- a/include/sys/personality.h +++ b/include/sys/personality.h @@ -5,7 +5,9 @@  extern "C" {  #endif +#define UNAME26            0x0020000  #define ADDR_NO_RANDOMIZE  0x0040000 +#define FDPIC_FUNCPTRS     0x0080000  #define MMAP_PAGE_ZERO     0x0100000  #define ADDR_COMPAT_LAYOUT 0x0200000  #define READ_IMPLIES_EXEC  0x0400000 @@ -17,6 +19,7 @@ extern "C" {  #define PER_LINUX 0  #define PER_LINUX_32BIT ADDR_LIMIT_32BIT +#define PER_LINUX_FDPIC FDPIC_FUNCPTRS  #define PER_SVR4 (1 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)  #define PER_SVR3 (2 | STICKY_TIMEOUTS | SHORT_INODE)  #define PER_SCOSVR3 (3 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE) diff --git a/include/sys/prctl.h b/include/sys/prctl.h index d9c846e9..087a75c9 100644 --- a/include/sys/prctl.h +++ b/include/sys/prctl.h @@ -157,6 +157,25 @@ struct prctl_mm_map {  #define PR_SET_TAGGED_ADDR_CTRL 55  #define PR_GET_TAGGED_ADDR_CTRL 56  #define PR_TAGGED_ADDR_ENABLE (1UL << 0) +#define PR_MTE_TCF_SHIFT 1 +#define PR_MTE_TCF_NONE  (0UL << 1) +#define PR_MTE_TCF_SYNC  (1UL << 1) +#define PR_MTE_TCF_ASYNC (2UL << 1) +#define PR_MTE_TCF_MASK  (3UL << 1) +#define PR_MTE_TAG_SHIFT 3 +#define PR_MTE_TAG_MASK  (0xffffUL << 3) + +#define PR_SET_IO_FLUSHER 57 +#define PR_GET_IO_FLUSHER 58 + +#define PR_SET_SYSCALL_USER_DISPATCH 59 +#define PR_SYS_DISPATCH_OFF 0 +#define PR_SYS_DISPATCH_ON 1 +#define SYSCALL_DISPATCH_FILTER_ALLOW 0 +#define SYSCALL_DISPATCH_FILTER_BLOCK 1 + +#define PR_PAC_SET_ENABLED_KEYS 60 +#define PR_PAC_GET_ENABLED_KEYS 61  int prctl (int, ...); diff --git a/include/sys/ptrace.h b/include/sys/ptrace.h index 5d62a985..c72e3c06 100644 --- a/include/sys/ptrace.h +++ b/include/sys/ptrace.h @@ -42,6 +42,7 @@ extern "C" {  #define PTRACE_SECCOMP_GET_FILTER 0x420c  #define PTRACE_SECCOMP_GET_METADATA 0x420d  #define PTRACE_GET_SYSCALL_INFO 0x420e +#define PTRACE_GET_RSEQ_CONFIGURATION	0x420f  #define PT_READ_I PTRACE_PEEKTEXT  #define PT_READ_D PTRACE_PEEKDATA @@ -130,6 +131,14 @@ struct __ptrace_syscall_info {  	};  }; +struct __ptrace_rseq_configuration { +	uint64_t rseq_abi_pointer; +	uint32_t rseq_abi_size; +	uint32_t signature; +	uint32_t flags; +	uint32_t pad; +}; +  long ptrace(int, ...);  #ifdef __cplusplus diff --git a/include/sys/random.h b/include/sys/random.h index 4ee7bf2c..59e40ab8 100644 --- a/include/sys/random.h +++ b/include/sys/random.h @@ -10,6 +10,7 @@ extern "C" {  #define GRND_NONBLOCK	0x0001  #define GRND_RANDOM	0x0002 +#define GRND_INSECURE	0x0004  ssize_t getrandom(void *, size_t, unsigned); diff --git a/include/sys/reg.h b/include/sys/reg.h index b47452d0..0272e137 100644 --- a/include/sys/reg.h +++ b/include/sys/reg.h @@ -4,6 +4,15 @@  #include <limits.h>  #include <unistd.h> +#include <bits/alltypes.h> + +#undef __WORDSIZE +#if __LONG_MAX == 0x7fffffffL +#define __WORDSIZE 32 +#else +#define __WORDSIZE 64 +#endif +  #include <bits/reg.h>  #endif diff --git a/include/sys/resource.h b/include/sys/resource.h index 3068328d..e8bfbe1f 100644 --- a/include/sys/resource.h +++ b/include/sys/resource.h @@ -95,7 +95,7 @@ int prlimit(pid_t, int, const struct rlimit *, struct rlimit *);  #define RLIM_NLIMITS RLIMIT_NLIMITS -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define RLIM64_INFINITY RLIM_INFINITY  #define RLIM64_SAVED_CUR RLIM_SAVED_CUR  #define RLIM64_SAVED_MAX RLIM_SAVED_MAX diff --git a/include/sys/sendfile.h b/include/sys/sendfile.h index e7570d8e..253a041b 100644 --- a/include/sys/sendfile.h +++ b/include/sys/sendfile.h @@ -10,7 +10,7 @@ extern "C" {  ssize_t sendfile(int, int, off_t *, size_t); -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define sendfile64 sendfile  #define off64_t off_t  #endif diff --git a/include/sys/socket.h b/include/sys/socket.h index 38f5bb17..6dc1e40a 100644 --- a/include/sys/socket.h +++ b/include/sys/socket.h @@ -289,6 +289,8 @@ struct linger {  #define SCM_TXTIME              SO_TXTIME  #define SO_BINDTOIFINDEX        62  #define SO_DETACH_REUSEPORT_BPF 68 +#define SO_PREFER_BUSY_POLL     69 +#define SO_BUSY_POLL_BUDGET     70  #ifndef SOL_SOCKET  #define SOL_SOCKET      1 diff --git a/include/sys/stat.h b/include/sys/stat.h index 10d446c4..4f7dc2b1 100644 --- a/include/sys/stat.h +++ b/include/sys/stat.h @@ -18,6 +18,13 @@ extern "C" {  #define __NEED_blkcnt_t  #define __NEED_struct_timespec +#ifdef _GNU_SOURCE +#define __NEED_int64_t +#define __NEED_uint64_t +#define __NEED_uint32_t +#define __NEED_uint16_t +#endif +  #include <bits/alltypes.h>  #include <bits/stat.h> @@ -98,7 +105,80 @@ int lchmod(const char *, mode_t);  #define S_IEXEC S_IXUSR  #endif -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_GNU_SOURCE) +#define STATX_TYPE 1U +#define STATX_MODE 2U +#define STATX_NLINK 4U +#define STATX_UID 8U +#define STATX_GID 0x10U +#define STATX_ATIME 0x20U +#define STATX_MTIME 0x40U +#define STATX_CTIME 0x80U +#define STATX_INO 0x100U +#define STATX_SIZE 0x200U +#define STATX_BLOCKS 0x400U +#define STATX_BASIC_STATS 0x7ffU +#define STATX_BTIME 0x800U +#define STATX_ALL 0xfffU +#define STATX_MNT_ID 0x1000U +#define STATX_DIOALIGN 0x2000U +#define STATX_MNT_ID_UNIQUE 0x4000U +#define STATX_SUBVOL 0x8000U +#define STATX_WRITE_ATOMIC 0x10000U + +#define STATX_ATTR_COMPRESSED 0x4 +#define STATX_ATTR_IMMUTABLE 0x10 +#define STATX_ATTR_APPEND 0x20 +#define STATX_ATTR_NODUMP 0x40 +#define STATX_ATTR_ENCRYPTED 0x800 +#define STATX_ATTR_AUTOMOUNT 0x1000 +#define STATX_ATTR_MOUNT_ROOT 0x2000 +#define STATX_ATTR_VERITY 0x100000 +#define STATX_ATTR_DAX 0x200000 +#define STATX_ATTR_WRITE_ATOMIC 0x400000 + +struct statx_timestamp { +	int64_t tv_sec; +	uint32_t tv_nsec, __pad; +}; + +struct statx { +	uint32_t stx_mask; +	uint32_t stx_blksize; +	uint64_t stx_attributes; +	uint32_t stx_nlink; +	uint32_t stx_uid; +	uint32_t stx_gid; +	uint16_t stx_mode; +	uint16_t __pad0[1]; +	uint64_t stx_ino; +	uint64_t stx_size; +	uint64_t stx_blocks; +	uint64_t stx_attributes_mask; +	struct statx_timestamp stx_atime; +	struct statx_timestamp stx_btime; +	struct statx_timestamp stx_ctime; +	struct statx_timestamp stx_mtime; +	uint32_t stx_rdev_major; +	uint32_t stx_rdev_minor; +	uint32_t stx_dev_major; +	uint32_t stx_dev_minor; +	uint64_t stx_mnt_id; +	uint32_t stx_dio_mem_align; +	uint32_t stx_dio_offset_align; +	uint64_t stx_subvol; +	uint32_t stx_atomic_write_unit_min; +	uint32_t stx_atomic_write_unit_max; +	uint32_t stx_atomic_write_segments_max; +	uint32_t __pad1[1]; +	uint64_t __pad2[9]; + +}; + +int statx(int, const char *__restrict, int, unsigned, struct statx *__restrict); +#endif + +#if defined(_LARGEFILE64_SOURCE)  #define stat64 stat  #define fstat64 fstat  #define lstat64 lstat diff --git a/include/sys/statfs.h b/include/sys/statfs.h index 6f4c6230..7a2e11cd 100644 --- a/include/sys/statfs.h +++ b/include/sys/statfs.h @@ -18,7 +18,7 @@ typedef struct __fsid_t {  int statfs (const char *, struct statfs *);  int fstatfs (int, struct statfs *); -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define statfs64 statfs  #define fstatfs64 fstatfs  #define fsblkcnt64_t fsblkcnt_t diff --git a/include/sys/statvfs.h b/include/sys/statvfs.h index 793490b6..71d9d1f9 100644 --- a/include/sys/statvfs.h +++ b/include/sys/statvfs.h @@ -23,7 +23,8 @@ struct statvfs {  	unsigned long f_fsid;  #endif  	unsigned long f_flag, f_namemax; -	int __reserved[6]; +	unsigned int f_type; +	int __reserved[5];  };  int statvfs (const char *__restrict, struct statvfs *__restrict); @@ -42,7 +43,7 @@ int fstatvfs (int, struct statvfs *);  #define ST_NODIRATIME  2048  #define ST_RELATIME    4096 -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define statvfs64 statvfs  #define fstatvfs64 fstatvfs  #define fsblkcnt64_t fsblkcnt_t diff --git a/include/sys/ttydefaults.h b/include/sys/ttydefaults.h index e5d4da2b..edb55bc4 100644 --- a/include/sys/ttydefaults.h +++ b/include/sys/ttydefaults.h @@ -9,13 +9,8 @@  #define CTRL(x) ((x)&037)  #define CEOF CTRL('d') -#ifdef _POSIX_VDISABLE -#define CEOL _POSIX_VDISABLE -#define CSTATUS _POSIX_VDISABLE -#else  #define CEOL '\0'  #define CSTATUS '\0' -#endif  #define CERASE 0177  #define CINTR CTRL('c') diff --git a/include/sys/types.h b/include/sys/types.h index 0c35541d..3363374f 100644 --- a/include/sys/types.h +++ b/include/sys/types.h @@ -71,7 +71,7 @@ typedef unsigned long long u_quad_t;  #include <sys/select.h>  #endif -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define blkcnt64_t blkcnt_t  #define fsblkcnt64_t fsblkcnt_t  #define fsfilcnt64_t fsfilcnt_t diff --git a/include/sys/uio.h b/include/sys/uio.h index 00f73a2f..5e99c7fa 100644 --- a/include/sys/uio.h +++ b/include/sys/uio.h @@ -29,7 +29,7 @@ ssize_t writev (int, const struct iovec *, int);  #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)  ssize_t preadv (int, const struct iovec *, int, off_t);  ssize_t pwritev (int, const struct iovec *, int, off_t); -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define preadv64 preadv  #define pwritev64 pwritev  #define off64_t off_t @@ -39,6 +39,14 @@ ssize_t pwritev (int, const struct iovec *, int, off_t);  #ifdef _GNU_SOURCE  ssize_t process_vm_writev(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long);  ssize_t process_vm_readv(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long); +ssize_t preadv2 (int, const struct iovec *, int, off_t, int); +ssize_t pwritev2 (int, const struct iovec *, int, off_t, int); +#define RWF_HIPRI 0x00000001 +#define RWF_DSYNC 0x00000002 +#define RWF_SYNC 0x00000004 +#define RWF_NOWAIT 0x00000008 +#define RWF_APPEND 0x00000010 +#define RWF_NOAPPEND 0x00000020  #endif  #ifdef __cplusplus diff --git a/include/sys/user.h b/include/sys/user.h index 96a03400..511caba3 100644 --- a/include/sys/user.h +++ b/include/sys/user.h @@ -8,6 +8,15 @@ extern "C" {  #include <stdint.h>  #include <unistd.h> +#include <bits/alltypes.h> + +#undef __WORDSIZE +#if __LONG_MAX == 0x7fffffffL +#define __WORDSIZE 32 +#else +#define __WORDSIZE 64 +#endif +  #include <bits/user.h>  #ifdef __cplusplus diff --git a/include/sys/wait.h b/include/sys/wait.h index d4b1f2e1..8ced671b 100644 --- a/include/sys/wait.h +++ b/include/sys/wait.h @@ -50,7 +50,7 @@ pid_t wait4 (pid_t, int *, int, struct rusage *);  #define WSTOPSIG(s) WEXITSTATUS(s)  #define WCOREDUMP(s) ((s) & 0x80)  #define WIFEXITED(s) (!WTERMSIG(s)) -#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00) +#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001U)>>8) > 0x7f00)  #define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu)  #define WIFCONTINUED(s) ((s) == 0xffff) diff --git a/include/syslog.h b/include/syslog.h index 5b4d2964..57599e07 100644 --- a/include/syslog.h +++ b/include/syslog.h @@ -18,7 +18,7 @@ extern "C" {  #define LOG_PRIMASK 7  #define LOG_PRI(p) ((p)&LOG_PRIMASK) -#define	LOG_MAKEPRI(f, p) (((f)<<3)|(p)) +#define	LOG_MAKEPRI(f, p) ((f)|(p))  #define LOG_MASK(p) (1<<(p))  #define LOG_UPTO(p) ((1<<((p)+1))-1) diff --git a/include/termios.h b/include/termios.h index d73c780d..cbb53301 100644 --- a/include/termios.h +++ b/include/termios.h @@ -8,6 +8,7 @@ extern "C" {  #include <features.h>  #define __NEED_pid_t +#define __NEED_struct_winsize  #include <bits/alltypes.h> @@ -27,6 +28,9 @@ int cfsetispeed (struct termios *, speed_t);  int tcgetattr (int, struct termios *);  int tcsetattr (int, int, const struct termios *); +int tcgetwinsize (int, struct winsize *); +int tcsetwinsize (int, const struct winsize *); +  int tcsendbreak (int, int);  int tcdrain (int);  int tcflush (int, int); diff --git a/include/time.h b/include/time.h index 5494df18..3d948372 100644 --- a/include/time.h +++ b/include/time.h @@ -7,7 +7,9 @@ extern "C" {  #include <features.h> -#ifdef __cplusplus +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__cplusplus)  #define NULL 0L  #else  #define NULL ((void*)0) diff --git a/include/unistd.h b/include/unistd.h index 7bcbff94..42b0e82b 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -14,8 +14,12 @@ extern "C" {  #define SEEK_SET 0  #define SEEK_CUR 1  #define SEEK_END 2 +#define SEEK_DATA 3 +#define SEEK_HOLE 4 -#ifdef __cplusplus +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__cplusplus)  #define NULL 0L  #else  #define NULL ((void*)0) @@ -82,6 +86,7 @@ unsigned sleep(unsigned);  int pause(void);  pid_t fork(void); +pid_t _Fork(void);  int execve(const char *, char *const [], char *const []);  int execv(const char *, char *const []);  int execle(const char *, const char *, ...); @@ -190,9 +195,10 @@ int syncfs(int);  int euidaccess(const char *, int);  int eaccess(const char *, int);  ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned); +pid_t gettid(void);  #endif -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE)  #define lseek64 lseek  #define pread64 pread  #define pwrite64 pwrite @@ -251,7 +257,13 @@ ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned);  #define _POSIX2_C_BIND          _POSIX_VERSION -#include <bits/posix.h> +#if __LONG_MAX == 0x7fffffffL +#define _POSIX_V6_ILP32_OFFBIG  1 +#define _POSIX_V7_ILP32_OFFBIG  1 +#else +#define _POSIX_V6_LP64_OFF64  1 +#define _POSIX_V7_LP64_OFF64  1 +#endif @@ -419,6 +431,8 @@ ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned);  #define _SC_XOPEN_STREAMS	246  #define _SC_THREAD_ROBUST_PRIO_INHERIT	247  #define _SC_THREAD_ROBUST_PRIO_PROTECT	248 +#define _SC_MINSIGSTKSZ	249 +#define _SC_SIGSTKSZ	250  #define _CS_PATH	0  #define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	1 @@ -461,6 +475,8 @@ ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned);  #define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS	1147  #define _CS_V6_ENV	1148  #define _CS_V7_ENV	1149 +#define _CS_POSIX_V7_THREADS_CFLAGS	1150 +#define _CS_POSIX_V7_THREADS_LDFLAGS	1151  #ifdef __cplusplus  } diff --git a/include/wchar.h b/include/wchar.h index 88eb55b1..ed5d774d 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -38,7 +38,9 @@ extern "C" {  #define WCHAR_MIN (-1-0x7fffffff+L'\0')  #endif -#ifdef __cplusplus +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__cplusplus)  #define NULL 0L  #else  #define NULL ((void*)0) | 
