diff --git a/doc/langref.html.in b/doc/langref.html.in
index 85917680d3..f43abfe1e6 100644
--- a/doc/langref.html.in
+++ b/doc/langref.html.in
@@ -2909,15 +2909,15 @@ test "enum variant switch" {
expect(mem.eql(u8, what_is_it, "this is a number"));
}
-// @TagType can be used to access the integer tag type of an enum.
+// @typeInfo can be used to access the integer tag type of an enum.
const Small = enum {
one,
two,
three,
four,
};
-test "@TagType" {
- expect(@TagType(Small) == u2);
+test "std.meta.Tag" {
+ expect(@typeInfo(Small).Enum.tag_type == u2);
}
// @typeInfo tells us the field count and the fields names:
@@ -3092,8 +3092,7 @@ test "simple union" {
{#header_open|Tagged union#}
Unions can be declared with an enum tag type.
This turns the union into a tagged union, which makes it eligible
- to use with {#link|switch#} expressions. One can use {#link|@TagType#} to
- obtain the enum type from the union type.
+ to use with {#link|switch#} expressions.
Tagged unions coerce to their tag type: {#link|Type Coercion: unions and enums#}.
{#code_begin|test#}
@@ -3119,8 +3118,8 @@ test "switch on tagged union" {
}
}
-test "@TagType" {
- expect(@TagType(ComplexType) == ComplexTypeTag);
+test "get tag type" {
+ expect(std.meta.Tag(ComplexType) == ComplexTypeTag);
}
test "coerce to enum" {
@@ -4241,9 +4240,9 @@ fn _start() callconv(.Naked) noreturn {
abort();
}
-// The inline specifier forces a function to be inlined at all call sites.
+// The inline calling convention forces a function to be inlined at all call sites.
// If the function cannot be inlined, it is a compile-time error.
-inline fn shiftLeftOne(a: u32) u32 {
+fn shiftLeftOne(a: u32) callconv(.Inline) u32 {
return a << 1;
}
@@ -7534,19 +7533,21 @@ export fn @"A function name that is a complete sentence."() void {}
{#header_open|@field#}
{#syntax#}@field(lhs: anytype, comptime field_name: []const u8) (field){#endsyntax#}
- Performs field access by a compile-time string.
+
Performs field access by a compile-time string. Works on both fields and declarations.
{#code_begin|test#}
const std = @import("std");
const Point = struct {
x: u32,
- y: u32
+ y: u32,
+
+ pub var z: u32 = 1;
};
test "field access by string" {
const expect = std.testing.expect;
- var p = Point {.x = 0, .y = 0};
+ var p = Point{ .x = 0, .y = 0 };
@field(p, "x") = 4;
@field(p, "y") = @field(p, "x") + 1;
@@ -7554,6 +7555,15 @@ test "field access by string" {
expect(@field(p, "x") == 4);
expect(@field(p, "y") == 5);
}
+
+test "decl access by string" {
+ const expect = std.testing.expect;
+
+ expect(@field(Point, "z") == 1);
+
+ @field(Point, "z") = 2;
+ expect(@field(Point, "z") == 2);
+}
{#code_end#}
{#header_close#}
@@ -7740,7 +7750,7 @@ test "@hasDecl" {
{#header_close#}
{#header_open|@intToEnum#}
- {#syntax#}@intToEnum(comptime DestType: type, int_value: @TagType(DestType)) DestType{#endsyntax#}
+ {#syntax#}@intToEnum(comptime DestType: type, int_value: std.meta.Tag(DestType)) DestType{#endsyntax#}
Converts an integer into an {#link|enum#} value.
@@ -8435,16 +8445,6 @@ fn doTheTest() void {
{#header_close#}
- {#header_open|@TagType#}
- {#syntax#}@TagType(T: type) type{#endsyntax#}
-
- For an enum, returns the integer type that is used to store the enumeration value.
-
-
- For a union, returns the enum type that is used to store the tag value.
-
- {#header_close#}
-
{#header_open|@This#}
{#syntax#}@This() type{#endsyntax#}
diff --git a/lib/libc/include/aarch64-linux-musl/bits/alltypes.h b/lib/libc/include/aarch64-linux-musl/bits/alltypes.h
index fd60fe3a0f..0a0a8c75c0 100644
--- a/lib/libc/include/aarch64-linux-musl/bits/alltypes.h
+++ b/lib/libc/include/aarch64-linux-musl/bits/alltypes.h
@@ -365,6 +365,12 @@ struct iovec { void *iov_base; size_t iov_len; };
#endif
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
typedef unsigned socklen_t;
#define __DEFINED_socklen_t
diff --git a/lib/libc/include/aarch64-linux-musl/bits/hwcap.h b/lib/libc/include/aarch64-linux-musl/bits/hwcap.h
index 83abee2665..80a088ef35 100644
--- a/lib/libc/include/aarch64-linux-musl/bits/hwcap.h
+++ b/lib/libc/include/aarch64-linux-musl/bits/hwcap.h
@@ -37,4 +37,14 @@
#define HWCAP2_SVEPMULL (1 << 3)
#define HWCAP2_SVEBITPERM (1 << 4)
#define HWCAP2_SVESHA3 (1 << 5)
-#define HWCAP2_SVESM4 (1 << 6)
\ No newline at end of file
+#define HWCAP2_SVESM4 (1 << 6)
+#define HWCAP2_FLAGM2 (1 << 7)
+#define HWCAP2_FRINT (1 << 8)
+#define HWCAP2_SVEI8MM (1 << 9)
+#define HWCAP2_SVEF32MM (1 << 10)
+#define HWCAP2_SVEF64MM (1 << 11)
+#define HWCAP2_SVEBF16 (1 << 12)
+#define HWCAP2_I8MM (1 << 13)
+#define HWCAP2_BF16 (1 << 14)
+#define HWCAP2_DGH (1 << 15)
+#define HWCAP2_RNG (1 << 16)
\ No newline at end of file
diff --git a/lib/libc/include/aarch64-linux-musl/bits/signal.h b/lib/libc/include/aarch64-linux-musl/bits/signal.h
index cd13558bad..d3fc2bccff 100644
--- a/lib/libc/include/aarch64-linux-musl/bits/signal.h
+++ b/lib/libc/include/aarch64-linux-musl/bits/signal.h
@@ -11,7 +11,7 @@ typedef unsigned long greg_t;
typedef unsigned long gregset_t[34];
typedef struct {
- long double vregs[32];
+ __uint128_t vregs[32];
unsigned int fpsr;
unsigned int fpcr;
} fpregset_t;
@@ -34,7 +34,7 @@ struct fpsimd_context {
struct _aarch64_ctx head;
unsigned int fpsr;
unsigned int fpcr;
- long double vregs[32];
+ __uint128_t vregs[32];
};
struct esr_context {
struct _aarch64_ctx head;
diff --git a/lib/libc/include/aarch64-linux-musl/bits/syscall.h b/lib/libc/include/aarch64-linux-musl/bits/syscall.h
index 72392b874f..b15eb8bfd0 100644
--- a/lib/libc/include/aarch64-linux-musl/bits/syscall.h
+++ b/lib/libc/include/aarch64-linux-musl/bits/syscall.h
@@ -289,6 +289,10 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
#define SYS_io_setup 0
#define SYS_io_destroy 1
@@ -580,4 +584,8 @@
#define SYS_fsmount 432
#define SYS_fspick 433
#define SYS_pidfd_open 434
-#define SYS_clone3 435
\ No newline at end of file
+#define SYS_clone3 435
+#define SYS_close_range 436
+#define SYS_openat2 437
+#define SYS_pidfd_getfd 438
+#define SYS_faccessat2 439
\ No newline at end of file
diff --git a/lib/libc/include/aarch64-linux-musl/bits/user.h b/lib/libc/include/aarch64-linux-musl/bits/user.h
index 2bd9dd5863..8f012a5512 100644
--- a/lib/libc/include/aarch64-linux-musl/bits/user.h
+++ b/lib/libc/include/aarch64-linux-musl/bits/user.h
@@ -6,7 +6,7 @@ struct user_regs_struct {
};
struct user_fpsimd_struct {
- long double vregs[32];
+ __uint128_t vregs[32];
unsigned int fpsr;
unsigned int fpcr;
};
diff --git a/lib/libc/include/arm-linux-musl/bits/alltypes.h b/lib/libc/include/arm-linux-musl/bits/alltypes.h
index a99e771958..aa8607d008 100644
--- a/lib/libc/include/arm-linux-musl/bits/alltypes.h
+++ b/lib/libc/include/arm-linux-musl/bits/alltypes.h
@@ -350,6 +350,12 @@ struct iovec { void *iov_base; size_t iov_len; };
#endif
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
typedef unsigned socklen_t;
#define __DEFINED_socklen_t
diff --git a/lib/libc/include/arm-linux-musl/bits/syscall.h b/lib/libc/include/arm-linux-musl/bits/syscall.h
index 5429a867e3..479dd8a379 100644
--- a/lib/libc/include/arm-linux-musl/bits/syscall.h
+++ b/lib/libc/include/arm-linux-musl/bits/syscall.h
@@ -389,6 +389,10 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
#define __ARM_NR_breakpoint 0x0f0001
#define __ARM_NR_cacheflush 0x0f0002
@@ -787,4 +791,8 @@
#define SYS_fsmount 432
#define SYS_fspick 433
#define SYS_pidfd_open 434
-#define SYS_clone3 435
\ No newline at end of file
+#define SYS_clone3 435
+#define SYS_close_range 436
+#define SYS_openat2 437
+#define SYS_pidfd_getfd 438
+#define SYS_faccessat2 439
\ No newline at end of file
diff --git a/lib/libc/musl/arch/x86_64/bits/fcntl.h b/lib/libc/include/generic-musl/bits/fcntl.h
similarity index 83%
rename from lib/libc/musl/arch/x86_64/bits/fcntl.h
rename to lib/libc/include/generic-musl/bits/fcntl.h
index 1b88ad3917..77c9b4cbfe 100644
--- a/lib/libc/musl/arch/x86_64/bits/fcntl.h
+++ b/lib/libc/include/generic-musl/bits/fcntl.h
@@ -13,7 +13,7 @@
#define O_ASYNC 020000
#define O_DIRECT 040000
-#define O_LARGEFILE 0
+#define O_LARGEFILE 0100000
#define O_NOATIME 01000000
#define O_PATH 010000000
#define O_TMPFILE 020200000
@@ -30,11 +30,17 @@
#define F_SETSIG 10
#define F_GETSIG 11
+#if __LONG_MAX == 0x7fffffffL
+#define F_GETLK 12
+#define F_SETLK 13
+#define F_SETLKW 14
+#else
#define F_GETLK 5
#define F_SETLK 6
#define F_SETLKW 7
+#endif
#define F_SETOWN_EX 15
#define F_GETOWN_EX 16
-#define F_GETOWNER_UIDS 17
+#define F_GETOWNER_UIDS 17
\ No newline at end of file
diff --git a/lib/libc/include/generic-musl/elf.h b/lib/libc/include/generic-musl/elf.h
index 7ab2c85fe2..ff7214ed48 100644
--- a/lib/libc/include/generic-musl/elf.h
+++ b/lib/libc/include/generic-musl/elf.h
@@ -603,6 +603,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
@@ -1085,6 +1086,7 @@ typedef struct {
#define NT_GNU_BUILD_ID 3
#define NT_GNU_GOLD_VERSION 4
+#define NT_GNU_PROPERTY_TYPE_0 5
diff --git a/lib/libc/include/generic-musl/netinet/if_ether.h b/lib/libc/include/generic-musl/netinet/if_ether.h
index 8be01cd4ef..d1c0a03570 100644
--- a/lib/libc/include/generic-musl/netinet/if_ether.h
+++ b/lib/libc/include/generic-musl/netinet/if_ether.h
@@ -59,6 +59,7 @@
#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
diff --git a/lib/libc/include/generic-musl/netinet/in.h b/lib/libc/include/generic-musl/netinet/in.h
index e3bf81b8d3..a57f3a6c7c 100644
--- a/lib/libc/include/generic-musl/netinet/in.h
+++ b/lib/libc/include/generic-musl/netinet/in.h
@@ -101,8 +101,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 && \
@@ -200,6 +202,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/lib/libc/include/generic-musl/netinet/tcp.h b/lib/libc/include/generic-musl/netinet/tcp.h
index f0bdb19232..9f514e33af 100644
--- a/lib/libc/include/generic-musl/netinet/tcp.h
+++ b/lib/libc/include/generic-musl/netinet/tcp.h
@@ -78,6 +78,8 @@ enum {
TCP_NLA_DSACK_DUPS,
TCP_NLA_REORD_SEEN,
TCP_NLA_SRTT,
+ TCP_NLA_TIMEOUT_REHASH,
+ TCP_NLA_BYTES_NOTSENT,
};
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
@@ -181,6 +183,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 +198,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 +249,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];
};
@@ -275,6 +285,8 @@ struct tcp_zerocopy_receive {
uint64_t address;
uint32_t length;
uint32_t recv_skip_hint;
+ uint32_t inq;
+ int32_t err;
};
#endif
diff --git a/lib/libc/include/generic-musl/netinet/udp.h b/lib/libc/include/generic-musl/netinet/udp.h
index 40ca6df985..0355761025 100644
--- a/lib/libc/include/generic-musl/netinet/udp.h
+++ b/lib/libc/include/generic-musl/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/lib/libc/include/generic-musl/sched.h b/lib/libc/include/generic-musl/sched.h
index 6225d25d53..91431b5d07 100644
--- a/lib/libc/include/generic-musl/sched.h
+++ b/lib/libc/include/generic-musl/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
diff --git a/lib/libc/include/generic-musl/signal.h b/lib/libc/include/generic-musl/signal.h
index 99d473c50e..779f4f0609 100644
--- a/lib/libc/include/generic-musl/signal.h
+++ b/lib/libc/include/generic-musl/signal.h
@@ -180,14 +180,24 @@ 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);
diff --git a/lib/libc/include/generic-musl/stdlib.h b/lib/libc/include/generic-musl/stdlib.h
index f7c4f9d8de..ee777fc915 100644
--- a/lib/libc/include/generic-musl/stdlib.h
+++ b/lib/libc/include/generic-musl/stdlib.h
@@ -145,6 +145,7 @@ int getloadavg(double *, int);
int clearenv(void);
#define WCOREDUMP(s) ((s) & 0x80)
#define WIFCONTINUED(s) ((s) == 0xffff)
+void *reallocarray (void *, size_t, size_t);
#endif
#ifdef _GNU_SOURCE
diff --git a/lib/libc/include/generic-musl/sys/fanotify.h b/lib/libc/include/generic-musl/sys/fanotify.h
index ba00797ca2..601e0e7206 100644
--- a/lib/libc/include/generic-musl/sys/fanotify.h
+++ b/lib/libc/include/generic-musl/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/lib/libc/include/generic-musl/sys/ioctl.h b/lib/libc/include/generic-musl/sys/ioctl.h
index 28c9b6e24f..a741ae18a8 100644
--- a/lib/libc/include/generic-musl/sys/ioctl.h
+++ b/lib/libc/include/generic-musl/sys/ioctl.h
@@ -4,6 +4,8 @@
extern "C" {
#endif
+#define __NEED_struct_winsize
+
#include
#include
@@ -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/lib/libc/include/generic-musl/sys/mman.h b/lib/libc/include/generic-musl/sys/mman.h
index 9bfd0a1075..a620fffea1 100644
--- a/lib/libc/include/generic-musl/sys/mman.h
+++ b/lib/libc/include/generic-musl/sys/mman.h
@@ -101,6 +101,7 @@ extern "C" {
#ifdef _GNU_SOURCE
#define MREMAP_MAYMOVE 1
#define MREMAP_FIXED 2
+#define MREMAP_DONTUNMAP 4
#define MLOCK_ONFAULT 0x01
diff --git a/lib/libc/include/generic-musl/sys/personality.h b/lib/libc/include/generic-musl/sys/personality.h
index aafda2657b..8c8a278cae 100644
--- a/lib/libc/include/generic-musl/sys/personality.h
+++ b/lib/libc/include/generic-musl/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/lib/libc/include/generic-musl/sys/prctl.h b/lib/libc/include/generic-musl/sys/prctl.h
index c5f79d86d2..bceebd8bcf 100644
--- a/lib/libc/include/generic-musl/sys/prctl.h
+++ b/lib/libc/include/generic-musl/sys/prctl.h
@@ -158,6 +158,9 @@ struct prctl_mm_map {
#define PR_GET_TAGGED_ADDR_CTRL 56
#define PR_TAGGED_ADDR_ENABLE (1UL << 0)
+#define PR_SET_IO_FLUSHER 57
+#define PR_GET_IO_FLUSHER 58
+
int prctl (int, ...);
#ifdef __cplusplus
diff --git a/lib/libc/include/generic-musl/sys/random.h b/lib/libc/include/generic-musl/sys/random.h
index f6141970f4..e5ee99a2ae 100644
--- a/lib/libc/include/generic-musl/sys/random.h
+++ b/lib/libc/include/generic-musl/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/lib/libc/include/generic-musl/termios.h b/lib/libc/include/generic-musl/termios.h
index 4a72bd4e07..735c759923 100644
--- a/lib/libc/include/generic-musl/termios.h
+++ b/lib/libc/include/generic-musl/termios.h
@@ -8,6 +8,7 @@ extern "C" {
#include
#define __NEED_pid_t
+#define __NEED_struct_winsize
#include
@@ -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/lib/libc/include/generic-musl/unistd.h b/lib/libc/include/generic-musl/unistd.h
index c6b3f1a2ad..c6f5698b4e 100644
--- a/lib/libc/include/generic-musl/unistd.h
+++ b/lib/libc/include/generic-musl/unistd.h
@@ -82,6 +82,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,6 +191,7 @@ 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)
diff --git a/lib/libc/include/i386-linux-musl/bits/alltypes.h b/lib/libc/include/i386-linux-musl/bits/alltypes.h
index c330f5dd05..f430f25cff 100644
--- a/lib/libc/include/i386-linux-musl/bits/alltypes.h
+++ b/lib/libc/include/i386-linux-musl/bits/alltypes.h
@@ -380,6 +380,12 @@ struct iovec { void *iov_base; size_t iov_len; };
#endif
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
typedef unsigned socklen_t;
#define __DEFINED_socklen_t
diff --git a/lib/libc/include/i386-linux-musl/bits/syscall.h b/lib/libc/include/i386-linux-musl/bits/syscall.h
index c9bfc7f95e..4a727513c1 100644
--- a/lib/libc/include/i386-linux-musl/bits/syscall.h
+++ b/lib/libc/include/i386-linux-musl/bits/syscall.h
@@ -426,6 +426,10 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
#define SYS_restart_syscall 0
#define SYS_exit 1
@@ -852,4 +856,8 @@
#define SYS_fsmount 432
#define SYS_fspick 433
#define SYS_pidfd_open 434
-#define SYS_clone3 435
\ No newline at end of file
+#define SYS_clone3 435
+#define SYS_close_range 436
+#define SYS_openat2 437
+#define SYS_pidfd_getfd 438
+#define SYS_faccessat2 439
\ No newline at end of file
diff --git a/lib/libc/include/mips-linux-musl/bits/alltypes.h b/lib/libc/include/mips-linux-musl/bits/alltypes.h
index c714577aaa..46b309d668 100644
--- a/lib/libc/include/mips-linux-musl/bits/alltypes.h
+++ b/lib/libc/include/mips-linux-musl/bits/alltypes.h
@@ -350,6 +350,12 @@ struct iovec { void *iov_base; size_t iov_len; };
#endif
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
typedef unsigned socklen_t;
#define __DEFINED_socklen_t
diff --git a/lib/libc/include/mips-linux-musl/bits/syscall.h b/lib/libc/include/mips-linux-musl/bits/syscall.h
index 3f2666e56f..982dcca465 100644
--- a/lib/libc/include/mips-linux-musl/bits/syscall.h
+++ b/lib/libc/include/mips-linux-musl/bits/syscall.h
@@ -408,6 +408,10 @@
#define __NR_fspick 4433
#define __NR_pidfd_open 4434
#define __NR_clone3 4435
+#define __NR_close_range 4436
+#define __NR_openat2 4437
+#define __NR_pidfd_getfd 4438
+#define __NR_faccessat2 4439
#define SYS_syscall 4000
#define SYS_exit 4001
@@ -818,4 +822,8 @@
#define SYS_fsmount 4432
#define SYS_fspick 4433
#define SYS_pidfd_open 4434
-#define SYS_clone3 4435
\ No newline at end of file
+#define SYS_clone3 4435
+#define SYS_close_range 4436
+#define SYS_openat2 4437
+#define SYS_pidfd_getfd 4438
+#define SYS_faccessat2 4439
\ No newline at end of file
diff --git a/lib/libc/include/mips64-linux-musl/bits/alltypes.h b/lib/libc/include/mips64-linux-musl/bits/alltypes.h
index 9745553d16..4ab49779d8 100644
--- a/lib/libc/include/mips64-linux-musl/bits/alltypes.h
+++ b/lib/libc/include/mips64-linux-musl/bits/alltypes.h
@@ -355,6 +355,12 @@ struct iovec { void *iov_base; size_t iov_len; };
#endif
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
typedef unsigned socklen_t;
#define __DEFINED_socklen_t
diff --git a/lib/libc/include/mips64-linux-musl/bits/fcntl.h b/lib/libc/include/mips64-linux-musl/bits/fcntl.h
index 30ca0e0ca1..cba13902f6 100644
--- a/lib/libc/include/mips64-linux-musl/bits/fcntl.h
+++ b/lib/libc/include/mips64-linux-musl/bits/fcntl.h
@@ -13,7 +13,7 @@
#define O_ASYNC 010000
#define O_DIRECT 0100000
-#define O_LARGEFILE 0
+#define O_LARGEFILE 020000
#define O_NOATIME 01000000
#define O_PATH 010000000
#define O_TMPFILE 020200000
diff --git a/lib/libc/include/mips64-linux-musl/bits/syscall.h b/lib/libc/include/mips64-linux-musl/bits/syscall.h
index b3d86fe1d8..27a8226b71 100644
--- a/lib/libc/include/mips64-linux-musl/bits/syscall.h
+++ b/lib/libc/include/mips64-linux-musl/bits/syscall.h
@@ -338,6 +338,10 @@
#define __NR_fspick 5433
#define __NR_pidfd_open 5434
#define __NR_clone3 5435
+#define __NR_close_range 5436
+#define __NR_openat2 5437
+#define __NR_pidfd_getfd 5438
+#define __NR_faccessat2 5439
#define SYS_read 5000
#define SYS_write 5001
@@ -678,4 +682,8 @@
#define SYS_fsmount 5432
#define SYS_fspick 5433
#define SYS_pidfd_open 5434
-#define SYS_clone3 5435
\ No newline at end of file
+#define SYS_clone3 5435
+#define SYS_close_range 5436
+#define SYS_openat2 5437
+#define SYS_pidfd_getfd 5438
+#define SYS_faccessat2 5439
\ No newline at end of file
diff --git a/lib/libc/include/powerpc-linux-musl/bits/alltypes.h b/lib/libc/include/powerpc-linux-musl/bits/alltypes.h
index f655b43e3d..43153d4170 100644
--- a/lib/libc/include/powerpc-linux-musl/bits/alltypes.h
+++ b/lib/libc/include/powerpc-linux-musl/bits/alltypes.h
@@ -353,6 +353,12 @@ struct iovec { void *iov_base; size_t iov_len; };
#endif
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
typedef unsigned socklen_t;
#define __DEFINED_socklen_t
diff --git a/lib/libc/include/powerpc-linux-musl/bits/syscall.h b/lib/libc/include/powerpc-linux-musl/bits/syscall.h
index ce2818352c..3c935d00da 100644
--- a/lib/libc/include/powerpc-linux-musl/bits/syscall.h
+++ b/lib/libc/include/powerpc-linux-musl/bits/syscall.h
@@ -415,6 +415,10 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
#define SYS_restart_syscall 0
#define SYS_exit 1
@@ -832,4 +836,8 @@
#define SYS_fsmount 432
#define SYS_fspick 433
#define SYS_pidfd_open 434
-#define SYS_clone3 435
\ No newline at end of file
+#define SYS_clone3 435
+#define SYS_close_range 436
+#define SYS_openat2 437
+#define SYS_pidfd_getfd 438
+#define SYS_faccessat2 439
\ No newline at end of file
diff --git a/lib/libc/include/powerpc64-linux-musl/bits/alltypes.h b/lib/libc/include/powerpc64-linux-musl/bits/alltypes.h
index 6177874ffa..e0deec33b3 100644
--- a/lib/libc/include/powerpc64-linux-musl/bits/alltypes.h
+++ b/lib/libc/include/powerpc64-linux-musl/bits/alltypes.h
@@ -349,6 +349,12 @@ struct iovec { void *iov_base; size_t iov_len; };
#endif
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
typedef unsigned socklen_t;
#define __DEFINED_socklen_t
diff --git a/lib/libc/include/powerpc64-linux-musl/bits/syscall.h b/lib/libc/include/powerpc64-linux-musl/bits/syscall.h
index 4592aac64d..de64c3ef30 100644
--- a/lib/libc/include/powerpc64-linux-musl/bits/syscall.h
+++ b/lib/libc/include/powerpc64-linux-musl/bits/syscall.h
@@ -387,6 +387,10 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
#define SYS_restart_syscall 0
#define SYS_exit 1
@@ -776,4 +780,8 @@
#define SYS_fsmount 432
#define SYS_fspick 433
#define SYS_pidfd_open 434
-#define SYS_clone3 435
\ No newline at end of file
+#define SYS_clone3 435
+#define SYS_close_range 436
+#define SYS_openat2 437
+#define SYS_pidfd_getfd 438
+#define SYS_faccessat2 439
\ No newline at end of file
diff --git a/lib/libc/include/riscv64-linux-musl/bits/alltypes.h b/lib/libc/include/riscv64-linux-musl/bits/alltypes.h
index 8db53c8293..0f79bc567d 100644
--- a/lib/libc/include/riscv64-linux-musl/bits/alltypes.h
+++ b/lib/libc/include/riscv64-linux-musl/bits/alltypes.h
@@ -355,6 +355,12 @@ struct iovec { void *iov_base; size_t iov_len; };
#endif
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
typedef unsigned socklen_t;
#define __DEFINED_socklen_t
diff --git a/lib/libc/include/riscv64-linux-musl/bits/signal.h b/lib/libc/include/riscv64-linux-musl/bits/signal.h
index 87ae2ee7d1..5cf2d5895d 100644
--- a/lib/libc/include/riscv64-linux-musl/bits/signal.h
+++ b/lib/libc/include/riscv64-linux-musl/bits/signal.h
@@ -60,10 +60,10 @@ struct sigaltstack {
size_t ss_size;
};
-typedef struct ucontext_t
+typedef struct __ucontext
{
unsigned long uc_flags;
- struct ucontext_t *uc_link;
+ struct __ucontext *uc_link;
stack_t uc_stack;
sigset_t uc_sigmask;
mcontext_t uc_mcontext;
diff --git a/lib/libc/include/riscv64-linux-musl/bits/syscall.h b/lib/libc/include/riscv64-linux-musl/bits/syscall.h
index 808207fb4b..27e10f5768 100644
--- a/lib/libc/include/riscv64-linux-musl/bits/syscall.h
+++ b/lib/libc/include/riscv64-linux-musl/bits/syscall.h
@@ -289,6 +289,10 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
#define __NR_sysriscv __NR_arch_specific_syscall
#define __NR_riscv_flush_icache (__NR_sysriscv + 15)
@@ -583,5 +587,9 @@
#define SYS_fspick 433
#define SYS_pidfd_open 434
#define SYS_clone3 435
+#define SYS_close_range 436
+#define SYS_openat2 437
+#define SYS_pidfd_getfd 438
+#define SYS_faccessat2 439
#define SYS_sysriscv __NR_arch_specific_syscall
#define SYS_riscv_flush_icache (__NR_sysriscv + 15)
\ No newline at end of file
diff --git a/lib/libc/include/s390x-linux-musl/bits/alltypes.h b/lib/libc/include/s390x-linux-musl/bits/alltypes.h
index 55dbfa500c..c1b9e7b694 100644
--- a/lib/libc/include/s390x-linux-musl/bits/alltypes.h
+++ b/lib/libc/include/s390x-linux-musl/bits/alltypes.h
@@ -13,11 +13,19 @@ typedef int wchar_t;
#endif
+#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 1
#if defined(__NEED_float_t) && !defined(__DEFINED_float_t)
typedef double float_t;
#define __DEFINED_float_t
#endif
+#else
+#if defined(__NEED_float_t) && !defined(__DEFINED_float_t)
+typedef float float_t;
+#define __DEFINED_float_t
+#endif
+
+#endif
#if defined(__NEED_double_t) && !defined(__DEFINED_double_t)
typedef double double_t;
#define __DEFINED_double_t
@@ -344,6 +352,12 @@ struct iovec { void *iov_base; size_t iov_len; };
#endif
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
typedef unsigned socklen_t;
#define __DEFINED_socklen_t
diff --git a/lib/libc/include/s390x-linux-musl/bits/float.h b/lib/libc/include/s390x-linux-musl/bits/float.h
index fc6f4bb8fa..127787d2cb 100644
--- a/lib/libc/include/s390x-linux-musl/bits/float.h
+++ b/lib/libc/include/s390x-linux-musl/bits/float.h
@@ -1,4 +1,8 @@
-#define FLT_EVAL_METHOD 1
+#ifdef __FLT_EVAL_METHOD__
+#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
+#else
+#define FLT_EVAL_METHOD 0
+#endif
#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L
#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L
diff --git a/lib/libc/include/s390x-linux-musl/bits/syscall.h b/lib/libc/include/s390x-linux-musl/bits/syscall.h
index 790f513736..2874c40203 100644
--- a/lib/libc/include/s390x-linux-musl/bits/syscall.h
+++ b/lib/libc/include/s390x-linux-musl/bits/syscall.h
@@ -352,6 +352,10 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
#define SYS_exit 1
#define SYS_fork 2
@@ -706,4 +710,8 @@
#define SYS_fsmount 432
#define SYS_fspick 433
#define SYS_pidfd_open 434
-#define SYS_clone3 435
\ No newline at end of file
+#define SYS_clone3 435
+#define SYS_close_range 436
+#define SYS_openat2 437
+#define SYS_pidfd_getfd 438
+#define SYS_faccessat2 439
\ No newline at end of file
diff --git a/lib/libc/include/x86_64-linux-musl/bits/alltypes.h b/lib/libc/include/x86_64-linux-musl/bits/alltypes.h
index 7418a48234..c57d9bb42a 100644
--- a/lib/libc/include/x86_64-linux-musl/bits/alltypes.h
+++ b/lib/libc/include/x86_64-linux-musl/bits/alltypes.h
@@ -357,6 +357,12 @@ struct iovec { void *iov_base; size_t iov_len; };
#endif
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
typedef unsigned socklen_t;
#define __DEFINED_socklen_t
diff --git a/lib/libc/include/x86_64-linux-musl/bits/syscall.h b/lib/libc/include/x86_64-linux-musl/bits/syscall.h
index e4dbe4b061..d91f553b77 100644
--- a/lib/libc/include/x86_64-linux-musl/bits/syscall.h
+++ b/lib/libc/include/x86_64-linux-musl/bits/syscall.h
@@ -345,6 +345,10 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
#define SYS_read 0
#define SYS_write 1
@@ -692,4 +696,8 @@
#define SYS_fsmount 432
#define SYS_fspick 433
#define SYS_pidfd_open 434
-#define SYS_clone3 435
\ No newline at end of file
+#define SYS_clone3 435
+#define SYS_close_range 436
+#define SYS_openat2 437
+#define SYS_pidfd_getfd 438
+#define SYS_faccessat2 439
\ No newline at end of file
diff --git a/lib/libc/mingw/lib-common/activeds.def b/lib/libc/mingw/lib-common/activeds.def
new file mode 100644
index 0000000000..a0a2c72075
--- /dev/null
+++ b/lib/libc/mingw/lib-common/activeds.def
@@ -0,0 +1,39 @@
+;
+; Exports of file ACTIVEDS.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY ACTIVEDS.dll
+EXPORTS
+ADsGetObject
+ADsBuildEnumerator
+ADsFreeEnumerator
+ADsEnumerateNext
+ADsBuildVarArrayStr
+ADsBuildVarArrayInt
+ADsOpenObject
+DllCanUnloadNow
+DllGetClassObject
+ADsSetLastError
+ADsGetLastError
+AllocADsMem
+FreeADsMem
+ReallocADsMem
+AllocADsStr
+FreeADsStr
+ReallocADsStr
+ADsEncodeBinaryData
+PropVariantToAdsType
+AdsTypeToPropVariant
+AdsFreeAdsValues
+ADsDecodeBinaryData
+AdsTypeToPropVariant2
+PropVariantToAdsType2
+ConvertSecDescriptorToVariant
+ConvertSecurityDescriptorToSecDes
+BinarySDToSecurityDescriptor
+SecurityDescriptorToBinarySD
+ConvertTrusteeToSid
+DllRegisterServer
+DllUnregisterServer
diff --git a/lib/libc/mingw/lib-common/advpack.def b/lib/libc/mingw/lib-common/advpack.def
new file mode 100644
index 0000000000..2c9de94414
--- /dev/null
+++ b/lib/libc/mingw/lib-common/advpack.def
@@ -0,0 +1,91 @@
+LIBRARY "ADVPACK.dll"
+EXPORTS
+DelNodeRunDLL32
+DelNodeRunDLL32A
+DoInfInstall
+DoInfInstallA
+DoInfInstallW
+FileSaveRestore
+FileSaveRestoreA
+LaunchINFSectionA
+LaunchINFSectionEx
+LaunchINFSectionExA
+RegisterOCX
+RegisterOCXW
+AddDelBackupEntry
+AddDelBackupEntryA
+AddDelBackupEntryW
+AdvInstallFile
+AdvInstallFileA
+AdvInstallFileW
+CloseINFEngine
+DelNode
+DelNodeA
+DelNodeRunDLL32
+DelNodeRunDLL32W
+DelNodeW
+DoInfInstall
+ExecuteCab
+ExecuteCabA
+ExecuteCabW
+ExtractFiles
+ExtractFilesA
+ExtractFilesW
+FileSaveMarkNotExist
+FileSaveMarkNotExistA
+FileSaveMarkNotExistW
+FileSaveRestore
+FileSaveRestoreOnINF
+FileSaveRestoreOnINFA
+FileSaveRestoreOnINFW
+FileSaveRestoreW
+GetVersionFromFile
+GetVersionFromFileA
+GetVersionFromFileEx
+GetVersionFromFileExA
+GetVersionFromFileExW
+GetVersionFromFileW
+IsNTAdmin
+LaunchINFSection
+LaunchINFSectionEx
+LaunchINFSectionExW
+LaunchINFSectionW
+NeedReboot
+NeedRebootInit
+OpenINFEngine
+OpenINFEngineA
+OpenINFEngineW
+RebootCheckOnInstall
+RebootCheckOnInstallA
+RebootCheckOnInstallW
+RegInstall
+RegInstallA
+RegInstallW
+RegRestoreAll
+RegRestoreAllA
+RegRestoreAllW
+RegSaveRestore
+RegSaveRestoreA
+RegSaveRestoreOnINF
+RegSaveRestoreOnINFA
+RegSaveRestoreOnINFW
+RegSaveRestoreW
+RegisterOCX
+RunSetupCommand
+RunSetupCommandA
+RunSetupCommandW
+SetPerUserSecValues
+SetPerUserSecValuesA
+SetPerUserSecValuesW
+TranslateInfString
+TranslateInfStringA
+TranslateInfStringEx
+TranslateInfStringExA
+TranslateInfStringExW
+TranslateInfStringW
+UserInstStubWrapper
+UserInstStubWrapperA
+UserInstStubWrapperW
+UserUnInstStubWrapper
+UserUnInstStubWrapperA
+UserUnInstStubWrapperW
diff --git a/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-1.def
new file mode 100644
index 0000000000..143477f43c
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-1.def
@@ -0,0 +1,19 @@
+LIBRARY api-ms-win-appmodel-runtime-l1-1-1
+
+EXPORTS
+
+FormatApplicationUserModelId
+GetCurrentApplicationUserModelId
+GetCurrentPackageFamilyName
+GetCurrentPackageId
+PackageFamilyNameFromFullName
+PackageFamilyNameFromId
+PackageFullNameFromId
+PackageIdFromFullName
+PackageNameAndPublisherIdFromFamilyName
+ParseApplicationUserModelId
+VerifyApplicationUserModelId
+VerifyPackageFamilyName
+VerifyPackageFullName
+VerifyPackageId
+VerifyPackageRelativeApplicationId
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-1.def
new file mode 100644
index 0000000000..5a3d6900b8
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-1.def
@@ -0,0 +1,23 @@
+LIBRARY api-ms-win-core-comm-l1-1-1
+
+EXPORTS
+
+ClearCommBreak
+ClearCommError
+EscapeCommFunction
+GetCommConfig
+GetCommMask
+GetCommModemStatus
+GetCommProperties
+GetCommState
+GetCommTimeouts
+OpenCommPort
+PurgeComm
+SetCommBreak
+SetCommConfig
+SetCommMask
+SetCommState
+SetCommTimeouts
+SetupComm
+TransmitCommChar
+WaitCommEvent
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-2.def
new file mode 100644
index 0000000000..8893715bba
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-2.def
@@ -0,0 +1,24 @@
+LIBRARY api-ms-win-core-comm-l1-1-2
+
+EXPORTS
+
+ClearCommBreak
+ClearCommError
+EscapeCommFunction
+GetCommConfig
+GetCommMask
+GetCommModemStatus
+GetCommPorts
+GetCommProperties
+GetCommState
+GetCommTimeouts
+OpenCommPort
+PurgeComm
+SetCommBreak
+SetCommConfig
+SetCommMask
+SetCommState
+SetCommTimeouts
+SetupComm
+TransmitCommChar
+WaitCommEvent
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-3.def
new file mode 100644
index 0000000000..7f0541e3e2
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-3.def
@@ -0,0 +1,17 @@
+LIBRARY api-ms-win-core-errorhandling-l1-1-3
+
+EXPORTS
+
+AddVectoredExceptionHandler
+FatalAppExitA
+FatalAppExitW
+GetLastError
+GetThreadErrorMode
+RaiseException
+RaiseFailFastException
+RemoveVectoredExceptionHandler
+SetErrorMode
+SetLastError
+SetThreadErrorMode
+SetUnhandledExceptionFilter
+UnhandledExceptionFilter
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-0.def
new file mode 100644
index 0000000000..9ad6c2ad38
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-0.def
@@ -0,0 +1,9 @@
+LIBRARY api-ms-win-core-featurestaging-l1-1-0
+
+EXPORTS
+
+GetFeatureEnabledState
+RecordFeatureError
+RecordFeatureUsage
+SubscribeFeatureStateChangeNotification
+UnsubscribeFeatureStateChangeNotification
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-1.def
new file mode 100644
index 0000000000..76ebcd8396
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-1.def
@@ -0,0 +1,10 @@
+LIBRARY api-ms-win-core-featurestaging-l1-1-1
+
+EXPORTS
+
+GetFeatureEnabledState
+GetFeatureVariant
+RecordFeatureError
+RecordFeatureUsage
+SubscribeFeatureStateChangeNotification
+UnsubscribeFeatureStateChangeNotification
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-fromapp-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-fromapp-l1-1-0.def
new file mode 100644
index 0000000000..d5b2c33d11
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-fromapp-l1-1-0.def
@@ -0,0 +1,15 @@
+LIBRARY api-ms-win-core-file-fromapp-l1-1-0
+
+EXPORTS
+
+CopyFileFromAppW
+CreateDirectoryFromAppW
+CreateFile2FromAppW
+CreateFileFromAppW
+DeleteFileFromAppW
+FindFirstFileExFromAppW
+GetFileAttributesExFromAppW
+MoveFileFromAppW
+RemoveDirectoryFromAppW
+ReplaceFileFromAppW
+SetFileAttributesFromAppW
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-handle-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-handle-l1-1-0.def
new file mode 100644
index 0000000000..ae6df29659
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-handle-l1-1-0.def
@@ -0,0 +1,9 @@
+LIBRARY api-ms-win-core-handle-l1-1-0
+
+EXPORTS
+
+CloseHandle
+CompareObjectHandles
+DuplicateHandle
+GetHandleInformation
+SetHandleInformation
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l2-1-0.def
new file mode 100644
index 0000000000..eba35f6ad8
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l2-1-0.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-libraryloader-l2-1-0
+
+EXPORTS
+
+LoadPackagedLibrary
+QueryOptionalDelayLoadedAPI
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-3.def
new file mode 100644
index 0000000000..b91301618e
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-3.def
@@ -0,0 +1,35 @@
+LIBRARY api-ms-win-core-memory-l1-1-3
+
+EXPORTS
+
+CreateFileMappingFromApp
+CreateFileMappingW
+DiscardVirtualMemory
+FlushViewOfFile
+GetLargePageMinimum
+GetProcessWorkingSetSizeEx
+GetWriteWatch
+MapViewOfFile
+MapViewOfFileEx
+MapViewOfFileFromApp
+OfferVirtualMemory
+OpenFileMappingFromApp
+OpenFileMappingW
+ReadProcessMemory
+ReclaimVirtualMemory
+ResetWriteWatch
+SetProcessValidCallTargets
+SetProcessWorkingSetSizeEx
+UnmapViewOfFile
+UnmapViewOfFileEx
+VirtualAlloc
+VirtualAllocFromApp
+VirtualFree
+VirtualFreeEx
+VirtualLock
+VirtualProtect
+VirtualProtectFromApp
+VirtualQuery
+VirtualQueryEx
+VirtualUnlock
+WriteProcessMemory
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-5.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-5.def
new file mode 100644
index 0000000000..4b20b8b96b
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-5.def
@@ -0,0 +1,37 @@
+LIBRARY api-ms-win-core-memory-l1-1-5
+
+EXPORTS
+
+CreateFileMappingFromApp
+CreateFileMappingW
+DiscardVirtualMemory
+FlushViewOfFile
+GetLargePageMinimum
+GetProcessWorkingSetSizeEx
+GetWriteWatch
+MapViewOfFile
+MapViewOfFileEx
+MapViewOfFileFromApp
+OfferVirtualMemory
+OpenFileMappingFromApp
+OpenFileMappingW
+ReadProcessMemory
+ReclaimVirtualMemory
+ResetWriteWatch
+SetProcessValidCallTargets
+SetProcessWorkingSetSizeEx
+UnmapViewOfFile
+UnmapViewOfFile2
+UnmapViewOfFileEx
+VirtualAlloc
+VirtualAllocFromApp
+VirtualFree
+VirtualFreeEx
+VirtualLock
+VirtualProtect
+VirtualProtectFromApp
+VirtualQuery
+VirtualQueryEx
+VirtualUnlock
+VirtualUnlockEx
+WriteProcessMemory
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-6.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-6.def
new file mode 100644
index 0000000000..5b3de9cadb
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-6.def
@@ -0,0 +1,39 @@
+LIBRARY api-ms-win-core-memory-l1-1-6
+
+EXPORTS
+
+CreateFileMappingFromApp
+CreateFileMappingW
+DiscardVirtualMemory
+FlushViewOfFile
+GetLargePageMinimum
+GetProcessWorkingSetSizeEx
+GetWriteWatch
+MapViewOfFile
+MapViewOfFile3FromApp
+MapViewOfFileEx
+MapViewOfFileFromApp
+OfferVirtualMemory
+OpenFileMappingFromApp
+OpenFileMappingW
+ReadProcessMemory
+ReclaimVirtualMemory
+ResetWriteWatch
+SetProcessValidCallTargets
+SetProcessWorkingSetSizeEx
+UnmapViewOfFile
+UnmapViewOfFile2
+UnmapViewOfFileEx
+VirtualAlloc
+VirtualAlloc2FromApp
+VirtualAllocFromApp
+VirtualFree
+VirtualFreeEx
+VirtualLock
+VirtualProtect
+VirtualProtectFromApp
+VirtualQuery
+VirtualQueryEx
+VirtualUnlock
+VirtualUnlockEx
+WriteProcessMemory
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-7.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-7.def
new file mode 100644
index 0000000000..86624f6c75
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-7.def
@@ -0,0 +1,40 @@
+LIBRARY api-ms-win-core-memory-l1-1-7
+
+EXPORTS
+
+CreateFileMappingFromApp
+CreateFileMappingW
+DiscardVirtualMemory
+FlushViewOfFile
+GetLargePageMinimum
+GetProcessWorkingSetSizeEx
+GetWriteWatch
+MapViewOfFile
+MapViewOfFile3FromApp
+MapViewOfFileEx
+MapViewOfFileFromApp
+OfferVirtualMemory
+OpenFileMappingFromApp
+OpenFileMappingW
+ReadProcessMemory
+ReclaimVirtualMemory
+ResetWriteWatch
+SetProcessValidCallTargets
+SetProcessValidCallTargetsForMappedView
+SetProcessWorkingSetSizeEx
+UnmapViewOfFile
+UnmapViewOfFile2
+UnmapViewOfFileEx
+VirtualAlloc
+VirtualAlloc2FromApp
+VirtualAllocFromApp
+VirtualFree
+VirtualFreeEx
+VirtualLock
+VirtualProtect
+VirtualProtectFromApp
+VirtualQuery
+VirtualQueryEx
+VirtualUnlock
+VirtualUnlockEx
+WriteProcessMemory
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-path-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-path-l1-1-0.def
new file mode 100644
index 0000000000..42ca163355
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-path-l1-1-0.def
@@ -0,0 +1,26 @@
+LIBRARY api-ms-win-core-path-l1-1-0
+
+EXPORTS
+
+PathAllocCanonicalize
+PathAllocCombine
+PathCchAddBackslash
+PathCchAddBackslashEx
+PathCchAddExtension
+PathCchAppend
+PathCchAppendEx
+PathCchCanonicalize
+PathCchCanonicalizeEx
+PathCchCombine
+PathCchCombineEx
+PathCchFindExtension
+PathCchIsRoot
+PathCchRemoveBackslash
+PathCchRemoveBackslashEx
+PathCchRemoveExtension
+PathCchRemoveFileSpec
+PathCchRenameExtension
+PathCchSkipRoot
+PathCchStripPrefix
+PathCchStripToRoot
+PathIsUNCEx
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-psm-appnotify-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-psm-appnotify-l1-1-0.def
new file mode 100644
index 0000000000..fbddce139b
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-psm-appnotify-l1-1-0.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-psm-appnotify-l1-1-0
+
+EXPORTS
+
+RegisterAppStateChangeNotification
+UnregisterAppStateChangeNotification
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-1.def
new file mode 100644
index 0000000000..c41a39b4d7
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-1.def
@@ -0,0 +1,9 @@
+LIBRARY api-ms-win-core-realtime-l1-1-1
+
+EXPORTS
+
+QueryInterruptTime
+QueryInterruptTimePrecise
+QueryThreadCycleTime
+QueryUnbiasedInterruptTime
+QueryUnbiasedInterruptTimePrecise
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-2.def
new file mode 100644
index 0000000000..a5122dc173
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-2.def
@@ -0,0 +1,12 @@
+LIBRARY api-ms-win-core-realtime-l1-1-2
+
+EXPORTS
+
+ConvertAuxiliaryCounterToPerformanceCounter
+ConvertPerformanceCounterToAuxiliaryCounter
+QueryAuxiliaryCounterFrequency
+QueryInterruptTime
+QueryInterruptTimePrecise
+QueryThreadCycleTime
+QueryUnbiasedInterruptTime
+QueryUnbiasedInterruptTimePrecise
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-slapi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-slapi-l1-1-0.def
new file mode 100644
index 0000000000..89413f9f12
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-slapi-l1-1-0.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-slapi-l1-1-0
+
+EXPORTS
+
+SLQueryLicenseValueFromApp
+SLQueryLicenseValueFromApp2
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-2-0.def
new file mode 100644
index 0000000000..d860c9b0f1
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-2-0.def
@@ -0,0 +1,59 @@
+LIBRARY api-ms-win-core-synch-l1-2-0
+
+EXPORTS
+
+AcquireSRWLockExclusive
+AcquireSRWLockShared
+CancelWaitableTimer
+CreateEventA
+CreateEventExA
+CreateEventExW
+CreateEventW
+CreateMutexA
+CreateMutexExA
+CreateMutexExW
+CreateMutexW
+CreateSemaphoreExW
+CreateWaitableTimerExW
+DeleteCriticalSection
+EnterCriticalSection
+InitializeConditionVariable
+InitializeCriticalSection
+InitializeCriticalSectionAndSpinCount
+InitializeCriticalSectionEx
+InitializeSRWLock
+InitOnceBeginInitialize
+InitOnceComplete
+InitOnceExecuteOnce
+InitOnceInitialize
+LeaveCriticalSection
+OpenEventA
+OpenEventW
+OpenMutexW
+OpenSemaphoreW
+OpenWaitableTimerW
+ReleaseMutex
+ReleaseSemaphore
+ReleaseSRWLockExclusive
+ReleaseSRWLockShared
+ResetEvent
+SetCriticalSectionSpinCount
+SetEvent
+SetWaitableTimer
+SetWaitableTimerEx
+SignalObjectAndWait
+Sleep
+SleepConditionVariableCS
+SleepConditionVariableSRW
+SleepEx
+TryAcquireSRWLockExclusive
+TryAcquireSRWLockShared
+TryEnterCriticalSection
+WaitForMultipleObjectsEx
+WaitForSingleObject
+WaitForSingleObjectEx
+WaitOnAddress
+WakeAllConditionVariable
+WakeByAddressAll
+WakeByAddressSingle
+WakeConditionVariable
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-0.def
new file mode 100644
index 0000000000..62240852f2
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-0.def
@@ -0,0 +1,31 @@
+LIBRARY api-ms-win-core-sysinfo-l1-2-0
+
+EXPORTS
+
+EnumSystemFirmwareTables
+GetComputerNameExA
+GetComputerNameExW
+GetLocalTime
+GetLogicalProcessorInformation
+GetLogicalProcessorInformationEx
+GetNativeSystemInfo
+GetProductInfo
+GetSystemDirectoryA
+GetSystemDirectoryW
+GetSystemFirmwareTable
+GetSystemInfo
+GetSystemTime
+GetSystemTimeAdjustment
+GetSystemTimeAsFileTime
+GetSystemTimePreciseAsFileTime
+GetTickCount
+GetTickCount64
+GetVersion
+GetVersionExA
+GetVersionExW
+GetWindowsDirectoryA
+GetWindowsDirectoryW
+GlobalMemoryStatusEx
+SetLocalTime
+SetSystemTime
+VerSetConditionMask
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-3.def
new file mode 100644
index 0000000000..45a59f6ee0
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-3.def
@@ -0,0 +1,33 @@
+LIBRARY api-ms-win-core-sysinfo-l1-2-3
+
+EXPORTS
+
+EnumSystemFirmwareTables
+GetComputerNameExA
+GetComputerNameExW
+GetIntegratedDisplaySize
+GetLocalTime
+GetLogicalProcessorInformation
+GetLogicalProcessorInformationEx
+GetNativeSystemInfo
+GetPhysicallyInstalledSystemMemory
+GetProductInfo
+GetSystemDirectoryA
+GetSystemDirectoryW
+GetSystemFirmwareTable
+GetSystemInfo
+GetSystemTime
+GetSystemTimeAdjustment
+GetSystemTimeAsFileTime
+GetSystemTimePreciseAsFileTime
+GetTickCount
+GetTickCount64
+GetVersion
+GetVersionExA
+GetVersionExW
+GetWindowsDirectoryA
+GetWindowsDirectoryW
+GlobalMemoryStatusEx
+SetLocalTime
+SetSystemTime
+VerSetConditionMask
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-0.def
new file mode 100644
index 0000000000..e84af147f4
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-0.def
@@ -0,0 +1,15 @@
+LIBRARY api-ms-win-core-winrt-error-l1-1-0
+
+EXPORTS
+
+GetRestrictedErrorInfo
+RoCaptureErrorContext
+RoFailFastWithErrorContext
+RoGetErrorReportingFlags
+RoOriginateError
+RoOriginateErrorW
+RoResolveRestrictedErrorInfoReference
+RoSetErrorReportingFlags
+RoTransformError
+RoTransformErrorW
+SetRestrictedErrorInfo
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-1.def
new file mode 100644
index 0000000000..bd5ef539c6
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-1.def
@@ -0,0 +1,22 @@
+LIBRARY api-ms-win-core-winrt-error-l1-1-1
+
+EXPORTS
+
+GetRestrictedErrorInfo
+IsErrorPropagationEnabled
+RoCaptureErrorContext
+RoClearError
+RoFailFastWithErrorContext
+RoGetErrorReportingFlags
+RoGetMatchingRestrictedErrorInfo
+RoInspectCapturedStackBackTrace
+RoInspectThreadErrorInfo
+RoOriginateError
+RoOriginateErrorW
+RoOriginateLanguageException
+RoReportFailedDelegate
+RoReportUnhandledError
+RoSetErrorReportingFlags
+RoTransformError
+RoTransformErrorW
+SetRestrictedErrorInfo
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-l1-1-0.def
new file mode 100644
index 0000000000..9e841a5a7f
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-l1-1-0.def
@@ -0,0 +1,13 @@
+LIBRARY api-ms-win-core-winrt-l1-1-0
+
+EXPORTS
+
+RoActivateInstance
+RoGetActivationFactory
+RoGetApartmentIdentifier
+RoInitialize
+RoRegisterActivationFactories
+RoRegisterForApartmentShutdown
+RoRevokeActivationFactories
+RoUninitialize
+RoUnregisterForApartmentShutdown
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-registration-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-registration-l1-1-0.def
new file mode 100644
index 0000000000..a7ad121a9a
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-registration-l1-1-0.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-winrt-registration-l1-1-0
+
+EXPORTS
+
+RoGetActivatableClassRegistration
+RoGetServerActivatableClasses
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-robuffer-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-robuffer-l1-1-0.def
new file mode 100644
index 0000000000..8e6e25f30a
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-robuffer-l1-1-0.def
@@ -0,0 +1,5 @@
+LIBRARY api-ms-win-core-winrt-robuffer-l1-1-0
+
+EXPORTS
+
+RoGetBufferMarshaler
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def
new file mode 100644
index 0000000000..b09d4444d2
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def
@@ -0,0 +1,7 @@
+LIBRARY api-ms-win-core-winrt-roparameterizediid-l1-1-0
+
+EXPORTS
+
+RoFreeParameterizedTypeExtra
+RoGetParameterizedTypeInstanceIID
+RoParameterizedTypeExtraGetTypeSignature
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-0.def
new file mode 100644
index 0000000000..c1636e1c64
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-0.def
@@ -0,0 +1,31 @@
+LIBRARY api-ms-win-core-winrt-string-l1-1-0
+
+EXPORTS
+
+HSTRING_UserFree
+HSTRING_UserFree64
+HSTRING_UserMarshal
+HSTRING_UserMarshal64
+HSTRING_UserSize
+HSTRING_UserSize64
+HSTRING_UserUnmarshal
+HSTRING_UserUnmarshal64
+WindowsCompareStringOrdinal
+WindowsConcatString
+WindowsCreateString
+WindowsCreateStringReference
+WindowsDeleteString
+WindowsDeleteStringBuffer
+WindowsDuplicateString
+WindowsGetStringLen
+WindowsGetStringRawBuffer
+WindowsInspectString
+WindowsIsStringEmpty
+WindowsPreallocateStringBuffer
+WindowsPromoteStringBuffer
+WindowsReplaceString
+WindowsStringHasEmbeddedNull
+WindowsSubstring
+WindowsSubstringWithSpecifiedLength
+WindowsTrimStringEnd
+WindowsTrimStringStart
diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-1.def
new file mode 100644
index 0000000000..bd6fe2dc35
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-1.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-wow64-l1-1-1
+
+EXPORTS
+
+IsWow64Process
+IsWow64Process2
diff --git a/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-1.def
new file mode 100644
index 0000000000..f9d52afdc0
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-1.def
@@ -0,0 +1,17 @@
+LIBRARY api-ms-win-devices-config-l1-1-1
+
+EXPORTS
+
+CM_Get_Device_ID_List_SizeW
+CM_Get_Device_ID_ListW
+CM_Get_Device_IDW
+CM_Get_Device_Interface_List_SizeW
+CM_Get_Device_Interface_ListW
+CM_Get_Device_Interface_PropertyW
+CM_Get_DevNode_PropertyW
+CM_Get_DevNode_Status
+CM_Get_Parent
+CM_Locate_DevNodeW
+CM_MapCrToWin32Err
+CM_Register_Notification
+CM_Unregister_Notification
diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-deviceinformation-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-deviceinformation-l1-1-0.def
new file mode 100644
index 0000000000..35f1de3263
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-deviceinformation-l1-1-0.def
@@ -0,0 +1,5 @@
+LIBRARY api-ms-win-gaming-deviceinformation-l1-1-0
+
+EXPORTS
+
+GetGamingDeviceModelInformation
diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-expandedresources-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-expandedresources-l1-1-0.def
new file mode 100644
index 0000000000..f5914c1908
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-expandedresources-l1-1-0.def
@@ -0,0 +1,7 @@
+LIBRARY api-ms-win-gaming-expandedresources-l1-1-0
+
+EXPORTS
+
+GetExpandedResourceExclusiveCpuCount
+HasExpandedResources
+ReleaseExclusiveCpuSets
diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-0.def
new file mode 100644
index 0000000000..aa949963d0
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-0.def
@@ -0,0 +1,11 @@
+LIBRARY api-ms-win-gaming-tcui-l1-1-0
+
+EXPORTS
+
+ProcessPendingGameUI
+ShowChangeFriendRelationshipUI
+ShowGameInviteUI
+ShowPlayerPickerUI
+ShowProfileCardUI
+ShowTitleAchievementsUI
+TryCancelPendingGameUI
diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-2.def
new file mode 100644
index 0000000000..c7392196c6
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-2.def
@@ -0,0 +1,20 @@
+LIBRARY api-ms-win-gaming-tcui-l1-1-2
+
+EXPORTS
+
+CheckGamingPrivilegeSilently
+CheckGamingPrivilegeSilentlyForUser
+CheckGamingPrivilegeWithUI
+CheckGamingPrivilegeWithUIForUser
+ProcessPendingGameUI
+ShowChangeFriendRelationshipUI
+ShowChangeFriendRelationshipUIForUser
+ShowGameInviteUI
+ShowGameInviteUIForUser
+ShowPlayerPickerUI
+ShowPlayerPickerUIForUser
+ShowProfileCardUI
+ShowProfileCardUIForUser
+ShowTitleAchievementsUI
+ShowTitleAchievementsUIForUser
+TryCancelPendingGameUI
diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-3.def
new file mode 100644
index 0000000000..0e78187da0
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-3.def
@@ -0,0 +1,22 @@
+LIBRARY api-ms-win-gaming-tcui-l1-1-3
+
+EXPORTS
+
+CheckGamingPrivilegeSilently
+CheckGamingPrivilegeSilentlyForUser
+CheckGamingPrivilegeWithUI
+CheckGamingPrivilegeWithUIForUser
+ProcessPendingGameUI
+ShowChangeFriendRelationshipUI
+ShowChangeFriendRelationshipUIForUser
+ShowGameInviteUI
+ShowGameInviteUIForUser
+ShowGameInviteUIWithContext
+ShowGameInviteUIWithContextForUser
+ShowPlayerPickerUI
+ShowPlayerPickerUIForUser
+ShowProfileCardUI
+ShowProfileCardUIForUser
+ShowTitleAchievementsUI
+ShowTitleAchievementsUIForUser
+TryCancelPendingGameUI
diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-4.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-4.def
new file mode 100644
index 0000000000..ac04f5e963
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-4.def
@@ -0,0 +1,30 @@
+LIBRARY api-ms-win-gaming-tcui-l1-1-4
+
+EXPORTS
+
+CheckGamingPrivilegeSilently
+CheckGamingPrivilegeSilentlyForUser
+CheckGamingPrivilegeWithUI
+CheckGamingPrivilegeWithUIForUser
+ProcessPendingGameUI
+ShowChangeFriendRelationshipUI
+ShowChangeFriendRelationshipUIForUser
+ShowCustomizeUserProfileUI
+ShowCustomizeUserProfileUIForUser
+ShowFindFriendsUI
+ShowFindFriendsUIForUser
+ShowGameInfoUI
+ShowGameInfoUIForUser
+ShowGameInviteUI
+ShowGameInviteUIForUser
+ShowGameInviteUIWithContext
+ShowGameInviteUIWithContextForUser
+ShowPlayerPickerUI
+ShowPlayerPickerUIForUser
+ShowProfileCardUI
+ShowProfileCardUIForUser
+ShowTitleAchievementsUI
+ShowTitleAchievementsUIForUser
+ShowUserSettingsUI
+ShowUserSettingsUIForUser
+TryCancelPendingGameUI
diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-isolatedcontainer-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-isolatedcontainer-l1-1-0.def
new file mode 100644
index 0000000000..f9ae366998
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-security-isolatedcontainer-l1-1-0.def
@@ -0,0 +1,5 @@
+LIBRARY api-ms-win-security-isolatedcontainer-l1-1-0
+
+EXPORTS
+
+IsProcessInIsolatedContainer
diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-stream-winrt-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-stream-winrt-l1-1-0.def
new file mode 100644
index 0000000000..c0ed75874b
--- /dev/null
+++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-stream-winrt-l1-1-0.def
@@ -0,0 +1,7 @@
+LIBRARY api-ms-win-shcore-stream-winrt-l1-1-0
+
+EXPORTS
+
+CreateRandomAccessStreamOnFile
+CreateRandomAccessStreamOverStream
+CreateStreamOverRandomAccessStream
diff --git a/lib/libc/mingw/lib-common/authz.def b/lib/libc/mingw/lib-common/authz.def
new file mode 100644
index 0000000000..6a5fd7ed04
--- /dev/null
+++ b/lib/libc/mingw/lib-common/authz.def
@@ -0,0 +1,77 @@
+;
+; Definition file of AUTHZ.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "AUTHZ.dll"
+EXPORTS
+AuthzAccessCheck
+AuthzAddSidsToContext
+AuthzCachedAccessCheck
+AuthzComputeEffectivePermission
+AuthzEnumerateSecurityEventSources
+AuthzEvaluateSacl
+AuthzFreeAuditEvent
+AuthzFreeCentralAccessPolicyCache
+AuthzFreeContext
+AuthzFreeHandle
+AuthzFreeResourceManager
+AuthzGetInformationFromContext
+AuthzInitializeCompoundContext
+AuthzInitializeContextFromAuthzContext
+AuthzInitializeContextFromSid
+AuthzInitializeContextFromToken
+AuthzInitializeObjectAccessAuditEvent
+AuthzInitializeObjectAccessAuditEvent2
+AuthzInitializeRemoteAccessCheck
+AuthzInitializeRemoteResourceManager
+AuthzInitializeResourceManager
+AuthzInitializeResourceManagerEx
+AuthzInstallSecurityEventSource
+AuthzModifyClaims
+AuthzModifySecurityAttributes
+AuthzModifySids
+AuthzOpenObjectAudit
+AuthzRegisterCapChangeNotification
+AuthzRegisterSecurityEventSource
+AuthzReportSecurityEvent
+AuthzReportSecurityEventFromParams
+AuthzSetAppContainerInformation
+AuthzShutdownRemoteAccessCheck
+AuthzUninstallSecurityEventSource
+AuthzUnregisterCapChangeNotification
+AuthzUnregisterSecurityEventSource
+AuthziAccessCheckEx
+AuthziAllocateAuditParams
+AuthziCheckContextMembership
+AuthziFreeAuditEventType
+AuthziFreeAuditParams
+AuthziFreeAuditQueue
+AuthziGenerateAdminAlertAuditW
+AuthziInitializeAuditEvent
+AuthziInitializeAuditEventType
+AuthziInitializeAuditParams
+AuthziInitializeAuditParamsFromArray
+AuthziInitializeAuditParamsWithRM
+AuthziInitializeAuditQueue
+AuthziInitializeContextFromSid
+AuthziLogAuditEvent
+AuthziModifyAuditEvent
+AuthziModifyAuditEvent2
+AuthziModifyAuditEventType
+AuthziModifyAuditQueue
+AuthziQueryAuditPolicy
+AuthziSetAuditPolicy
+AuthziModifySecurityAttributes
+AuthziQuerySecurityAttributes
+AuthziSourceAudit
+FreeClaimDefinitions
+FreeClaimDictionary
+GenerateNewCAPID
+GetCentralAccessPoliciesByCapID
+GetCentralAccessPoliciesByDN
+GetClaimDefinitions
+GetClaimDomainInfo
+GetDefaultCAPESecurityDescriptor
+InitializeClaimDictionary
+RefreshClaimDictionary
diff --git a/lib/libc/mingw/lib-common/bluetoothapis.def b/lib/libc/mingw/lib-common/bluetoothapis.def
new file mode 100644
index 0000000000..afa395e807
--- /dev/null
+++ b/lib/libc/mingw/lib-common/bluetoothapis.def
@@ -0,0 +1,103 @@
+;
+; Definition file of BluetoothApis.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "BluetoothApis.dll"
+EXPORTS
+BluetoothAddressToString
+BluetoothDisconnectDevice
+BluetoothEnableDiscovery
+BluetoothEnableIncomingConnections
+BluetoothEnumerateInstalledServices
+BluetoothEnumerateInstalledServicesEx
+BluetoothEnumerateLocalServices
+BluetoothFindBrowseGroupClose
+BluetoothFindClassIdClose
+BluetoothFindDeviceClose
+BluetoothFindFirstBrowseGroup
+BluetoothFindFirstClassId
+BluetoothFindFirstDevice
+BluetoothFindFirstProfileDescriptor
+BluetoothFindFirstProtocolDescriptorStack
+BluetoothFindFirstProtocolEntry
+BluetoothFindFirstRadio
+BluetoothFindFirstService
+BluetoothFindFirstServiceEx
+BluetoothFindNextBrowseGroup
+BluetoothFindNextClassId
+BluetoothFindNextDevice
+BluetoothFindNextProfileDescriptor
+BluetoothFindNextProtocolDescriptorStack
+BluetoothFindNextProtocolEntry
+BluetoothFindNextRadio
+BluetoothFindNextService
+BluetoothFindProfileDescriptorClose
+BluetoothFindProtocolDescriptorStackClose
+BluetoothFindProtocolEntryClose
+BluetoothFindRadioClose
+BluetoothFindServiceClose
+BluetoothGATTAbortReliableWrite
+BluetoothGATTBeginReliableWrite
+BluetoothGATTEndReliableWrite
+BluetoothGATTGetCharacteristicValue
+BluetoothGATTGetCharacteristics
+BluetoothGATTGetDescriptorValue
+BluetoothGATTGetDescriptors
+BluetoothGATTGetIncludedServices
+BluetoothGATTGetServices
+BluetoothGATTRegisterEvent
+BluetoothGATTSetCharacteristicValue
+BluetoothGATTSetDescriptorValue
+BluetoothGATTUnregisterEvent
+BluetoothGetDeviceInfo
+BluetoothGetLocalServiceInfo
+BluetoothGetRadioInfo
+BluetoothGetServicePnpInstance
+BluetoothIsConnectable
+BluetoothIsDiscoverable
+BluetoothIsVersionAvailable
+BluetoothRegisterForAuthentication
+BluetoothRegisterForAuthenticationEx
+BluetoothRemoveDevice
+BluetoothSdpEnumAttributes
+BluetoothSdpGetAttributeValue
+BluetoothSdpGetContainerElementData
+BluetoothSdpGetElementData
+BluetoothSdpGetString
+BluetoothSendAuthenticationResponse
+BluetoothSendAuthenticationResponseEx
+BluetoothSetLocalServiceInfo
+BluetoothSetServiceState
+BluetoothSetServiceStateEx
+BluetoothUnregisterAuthentication
+BluetoothUpdateDeviceRecord
+BthpCheckForUnsupportedGuid
+BthpCleanupBRDeviceNode
+BthpCleanupDeviceLocalServices
+BthpCleanupDeviceRemoteServices
+BthpCleanupLEDeviceNodes
+BthpEnableA2DPIfPresent
+BthpEnableAllServices
+BthpEnableConnectableAndDiscoverable
+BthpEnableRadioSoftware
+BthpFindPnpInfo
+BthpGATTCloseSession
+BthpInnerRecord
+BthpIsBluetoothServiceRunning
+BthpIsConnectableByDefault
+BthpIsDiscoverable
+BthpIsDiscoverableByDefault
+BthpIsRadioSoftwareEnabled
+BthpIsTopOfServiceGroup
+BthpMapStatusToErr
+BthpNextRecord
+BthpRegisterForAuthentication
+BthpSetServiceState
+BthpSetServiceStateEx
+BthpTranspose16Bits
+BthpTranspose32Bits
+BthpTransposeAndExtendBytes
+FindNextOpenVCOMPort
+InstallIncomingComPort
+ShouldForceAuthentication
diff --git a/lib/libc/mingw/lib-common/cabinet.def b/lib/libc/mingw/lib-common/cabinet.def
new file mode 100644
index 0000000000..70baa7f7c2
--- /dev/null
+++ b/lib/libc/mingw/lib-common/cabinet.def
@@ -0,0 +1,32 @@
+;
+; Definition file of Cabinet.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "Cabinet.dll"
+EXPORTS
+GetDllVersion
+Extract
+DeleteExtractedFiles
+FCICreate
+FCIAddFile
+FCIFlushFolder
+FCIFlushCabinet
+FCIDestroy
+FDICreate
+FDIIsCabinet
+FDICopy
+FDIDestroy
+FDITruncateCabinet
+CreateCompressor
+SetCompressorInformation
+QueryCompressorInformation
+Compress
+ResetCompressor
+CloseCompressor
+CreateDecompressor
+SetDecompressorInformation
+QueryDecompressorInformation
+Decompress
+ResetDecompressor
+CloseDecompressor
diff --git a/lib/libc/mingw/lib-common/cfgmgr32.def b/lib/libc/mingw/lib-common/cfgmgr32.def
new file mode 100644
index 0000000000..2d81a70bb5
--- /dev/null
+++ b/lib/libc/mingw/lib-common/cfgmgr32.def
@@ -0,0 +1,285 @@
+;
+; Definition file of CFGMGR32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "CFGMGR32.dll"
+EXPORTS
+CMP_GetBlockedDriverInfo
+CMP_GetServerSideDeviceInstallFlags
+CMP_Init_Detection
+CMP_RegisterNotification
+CMP_RegisterServiceNotification
+CMP_Register_Notification
+CMP_Report_LogOn
+CMP_UnregisterNotification
+CMP_WaitNoPendingInstallEvents
+CMP_WaitServicesAvailable
+CM_Add_Driver_PackageW
+CM_Add_Driver_Package_ExW
+CM_Add_Empty_Log_Conf
+CM_Add_Empty_Log_Conf_Ex
+CM_Add_IDA
+CM_Add_IDW
+CM_Add_ID_ExA
+CM_Add_ID_ExW
+CM_Add_Range
+CM_Add_Res_Des
+CM_Add_Res_Des_Ex
+CM_Apply_PowerScheme
+CM_Connect_MachineA
+CM_Connect_MachineW
+CM_Create_DevNodeA
+CM_Create_DevNodeW
+CM_Create_DevNode_ExA
+CM_Create_DevNode_ExW
+CM_Create_Range_List
+CM_Delete_Class_Key
+CM_Delete_Class_Key_Ex
+CM_Delete_DevNode_Key
+CM_Delete_DevNode_Key_Ex
+CM_Delete_Device_Interface_KeyA
+CM_Delete_Device_Interface_KeyW
+CM_Delete_Device_Interface_Key_ExA
+CM_Delete_Device_Interface_Key_ExW
+CM_Delete_Driver_PackageW
+CM_Delete_Driver_Package_ExW
+CM_Delete_PowerScheme
+CM_Delete_Range
+CM_Detect_Resource_Conflict
+CM_Detect_Resource_Conflict_Ex
+CM_Disable_DevNode
+CM_Disable_DevNode_Ex
+CM_Disconnect_Machine
+CM_Dup_Range_List
+CM_Duplicate_PowerScheme
+CM_Enable_DevNode
+CM_Enable_DevNode_Ex
+CM_Enumerate_Classes
+CM_Enumerate_Classes_Ex
+CM_Enumerate_EnumeratorsA
+CM_Enumerate_EnumeratorsW
+CM_Enumerate_Enumerators_ExA
+CM_Enumerate_Enumerators_ExW
+CM_Find_Range
+CM_First_Range
+CM_Free_Log_Conf
+CM_Free_Log_Conf_Ex
+CM_Free_Log_Conf_Handle
+CM_Free_Range_List
+CM_Free_Res_Des
+CM_Free_Res_Des_Ex
+CM_Free_Res_Des_Handle
+CM_Free_Resource_Conflict_Handle
+CM_Get_Child
+CM_Get_Child_Ex
+CM_Get_Class_Key_NameA
+CM_Get_Class_Key_NameW
+CM_Get_Class_Key_Name_ExA
+CM_Get_Class_Key_Name_ExW
+CM_Get_Class_NameA
+CM_Get_Class_NameW
+CM_Get_Class_Name_ExA
+CM_Get_Class_Name_ExW
+CM_Get_Class_PropertyW
+CM_Get_Class_Property_ExW
+CM_Get_Class_Property_Keys
+CM_Get_Class_Property_Keys_Ex
+CM_Get_Class_Registry_PropertyA
+CM_Get_Class_Registry_PropertyW
+CM_Get_Depth
+CM_Get_Depth_Ex
+CM_Get_DevNode_Custom_PropertyA
+CM_Get_DevNode_Custom_PropertyW
+CM_Get_DevNode_Custom_Property_ExA
+CM_Get_DevNode_Custom_Property_ExW
+CM_Get_DevNode_PropertyW
+CM_Get_DevNode_Property_ExW
+CM_Get_DevNode_Property_Keys
+CM_Get_DevNode_Property_Keys_Ex
+CM_Get_DevNode_Registry_PropertyA
+CM_Get_DevNode_Registry_PropertyW
+CM_Get_DevNode_Registry_Property_ExA
+CM_Get_DevNode_Registry_Property_ExW
+CM_Get_DevNode_Status
+CM_Get_DevNode_Status_Ex
+CM_Get_Device_IDA
+CM_Get_Device_IDW
+CM_Get_Device_ID_ExA
+CM_Get_Device_ID_ExW
+CM_Get_Device_ID_ListA
+CM_Get_Device_ID_ListW
+CM_Get_Device_ID_List_ExA
+CM_Get_Device_ID_List_ExW
+CM_Get_Device_ID_List_SizeA
+CM_Get_Device_ID_List_SizeW
+CM_Get_Device_ID_List_Size_ExA
+CM_Get_Device_ID_List_Size_ExW
+CM_Get_Device_ID_Size
+CM_Get_Device_ID_Size_Ex
+CM_Get_Device_Interface_AliasA
+CM_Get_Device_Interface_AliasW
+CM_Get_Device_Interface_Alias_ExA
+CM_Get_Device_Interface_Alias_ExW
+CM_Get_Device_Interface_ListA
+CM_Get_Device_Interface_ListW
+CM_Get_Device_Interface_List_ExA
+CM_Get_Device_Interface_List_ExW
+CM_Get_Device_Interface_List_SizeA
+CM_Get_Device_Interface_List_SizeW
+CM_Get_Device_Interface_List_Size_ExA
+CM_Get_Device_Interface_List_Size_ExW
+CM_Get_Device_Interface_PropertyW
+CM_Get_Device_Interface_Property_ExW
+CM_Get_Device_Interface_Property_KeysW
+CM_Get_Device_Interface_Property_Keys_ExW
+CM_Get_First_Log_Conf
+CM_Get_First_Log_Conf_Ex
+CM_Get_Global_State
+CM_Get_Global_State_Ex
+CM_Get_HW_Prof_FlagsA
+CM_Get_HW_Prof_FlagsW
+CM_Get_HW_Prof_Flags_ExA
+CM_Get_HW_Prof_Flags_ExW
+CM_Get_Hardware_Profile_InfoA
+CM_Get_Hardware_Profile_InfoW
+CM_Get_Hardware_Profile_Info_ExA
+CM_Get_Hardware_Profile_Info_ExW
+CM_Get_Log_Conf_Priority
+CM_Get_Log_Conf_Priority_Ex
+CM_Get_Next_Log_Conf
+CM_Get_Next_Log_Conf_Ex
+CM_Get_Next_Res_Des
+CM_Get_Next_Res_Des_Ex
+CM_Get_Parent
+CM_Get_Parent_Ex
+CM_Get_Res_Des_Data
+CM_Get_Res_Des_Data_Ex
+CM_Get_Res_Des_Data_Size
+CM_Get_Res_Des_Data_Size_Ex
+CM_Get_Resource_Conflict_Count
+CM_Get_Resource_Conflict_DetailsA
+CM_Get_Resource_Conflict_DetailsW
+CM_Get_Sibling
+CM_Get_Sibling_Ex
+CM_Get_Version
+CM_Get_Version_Ex
+CM_Import_PowerScheme
+CM_Install_DevNodeW
+CM_Install_DevNode_ExW
+CM_Intersect_Range_List
+CM_Invert_Range_List
+CM_Is_Dock_Station_Present
+CM_Is_Dock_Station_Present_Ex
+CM_Is_Version_Available
+CM_Is_Version_Available_Ex
+CM_Locate_DevNodeA
+CM_Locate_DevNodeW
+CM_Locate_DevNode_ExA
+CM_Locate_DevNode_ExW
+CM_MapCrToSpErr
+CM_MapCrToWin32Err
+CM_Merge_Range_List
+CM_Modify_Res_Des
+CM_Modify_Res_Des_Ex
+CM_Move_DevNode
+CM_Move_DevNode_Ex
+CM_Next_Range
+CM_Open_Class_KeyA
+CM_Open_Class_KeyW
+CM_Open_Class_Key_ExA
+CM_Open_Class_Key_ExW
+CM_Open_DevNode_Key
+CM_Open_DevNode_Key_Ex
+CM_Open_Device_Interface_KeyA
+CM_Open_Device_Interface_KeyW
+CM_Open_Device_Interface_Key_ExA
+CM_Open_Device_Interface_Key_ExW
+CM_Query_And_Remove_SubTreeA
+CM_Query_And_Remove_SubTreeW
+CM_Query_And_Remove_SubTree_ExA
+CM_Query_And_Remove_SubTree_ExW
+CM_Query_Arbitrator_Free_Data
+CM_Query_Arbitrator_Free_Data_Ex
+CM_Query_Arbitrator_Free_Size
+CM_Query_Arbitrator_Free_Size_Ex
+CM_Query_Remove_SubTree
+CM_Query_Remove_SubTree_Ex
+CM_Query_Resource_Conflict_List
+CM_Reenumerate_DevNode
+CM_Reenumerate_DevNode_Ex
+CM_Register_Device_Driver
+CM_Register_Device_Driver_Ex
+CM_Register_Device_InterfaceA
+CM_Register_Device_InterfaceW
+CM_Register_Device_Interface_ExA
+CM_Register_Device_Interface_ExW
+CM_Register_Notification
+CM_Remove_SubTree
+CM_Remove_SubTree_Ex
+CM_Request_Device_EjectA
+CM_Request_Device_EjectW
+CM_Request_Device_Eject_ExA
+CM_Request_Device_Eject_ExW
+CM_Request_Eject_PC
+CM_Request_Eject_PC_Ex
+CM_RestoreAll_DefaultPowerSchemes
+CM_Restore_DefaultPowerScheme
+CM_Run_Detection
+CM_Run_Detection_Ex
+CM_Set_ActiveScheme
+CM_Set_Class_PropertyW
+CM_Set_Class_Property_ExW
+CM_Set_Class_Registry_PropertyA
+CM_Set_Class_Registry_PropertyW
+CM_Set_DevNode_Problem
+CM_Set_DevNode_Problem_Ex
+CM_Set_DevNode_PropertyW
+CM_Set_DevNode_Property_ExW
+CM_Set_DevNode_Registry_PropertyA
+CM_Set_DevNode_Registry_PropertyW
+CM_Set_DevNode_Registry_Property_ExA
+CM_Set_DevNode_Registry_Property_ExW
+CM_Set_Device_Interface_PropertyW
+CM_Set_Device_Interface_Property_ExW
+CM_Set_HW_Prof
+CM_Set_HW_Prof_Ex
+CM_Set_HW_Prof_FlagsA
+CM_Set_HW_Prof_FlagsW
+CM_Set_HW_Prof_Flags_ExA
+CM_Set_HW_Prof_Flags_ExW
+CM_Setup_DevNode
+CM_Setup_DevNode_Ex
+CM_Test_Range_Available
+CM_Uninstall_DevNode
+CM_Uninstall_DevNode_Ex
+CM_Unregister_Device_InterfaceA
+CM_Unregister_Device_InterfaceW
+CM_Unregister_Device_Interface_ExA
+CM_Unregister_Device_Interface_ExW
+CM_Unregister_Notification
+CM_Write_UserPowerKey
+DevCloseObjectQuery
+DevCreateObjectQuery
+DevCreateObjectQueryEx
+DevCreateObjectQueryFromId
+DevCreateObjectQueryFromIdEx
+DevCreateObjectQueryFromIds
+DevCreateObjectQueryFromIdsEx
+DevFindProperty
+DevFreeObjectProperties
+DevFreeObjects
+DevGetObjectProperties
+DevGetObjectPropertiesEx
+DevGetObjects
+DevGetObjectsEx
+DevSetObjectProperties
+SwDeviceClose
+SwDeviceCreate
+SwDeviceGetLifetime
+SwDeviceInterfacePropertySet
+SwDeviceInterfaceRegister
+SwDeviceInterfaceSetState
+SwDevicePropertySet
+SwDeviceSetLifetime
+SwMemFree
diff --git a/lib/libc/mingw/lib-common/clusapi.def b/lib/libc/mingw/lib-common/clusapi.def
new file mode 100644
index 0000000000..8351a74928
--- /dev/null
+++ b/lib/libc/mingw/lib-common/clusapi.def
@@ -0,0 +1,203 @@
+;
+; Definition file of CLUSAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "CLUSAPI.dll"
+EXPORTS
+CCHlpAddNodeUpdateCluster
+CCHlpConfigureNode
+CCHlpCreateClusterNameCOIfNotExists
+CCHlpGetClusterServiceSecret
+CCHlpGetDNSHostLabel
+CCHlpRestoreClusterVirtualObjectToInitialState
+AddClusterNode
+AddClusterResourceDependency
+AddClusterResourceNode
+AddResourceToClusterSharedVolumes
+BackupClusterDatabase
+CanResourceBeDependent
+CancelClusterGroupOperation
+ChangeClusterResourceGroup
+CloseCluster
+CloseClusterGroup
+CloseClusterNetInterface
+CloseClusterNetwork
+CloseClusterNode
+CloseClusterNotifyPort
+CloseClusterResource
+ClusterCloseEnum
+ClusterCloseEnumEx
+ClusterControl
+ClusterEnum
+ClusterEnumEx
+ClusterFreeMemory
+ClusterFreeMrrResponse
+ClusterGetEnumCount
+ClusterGetEnumCountEx
+ClusterGroupCloseEnum
+ClusterGroupCloseEnumEx
+ClusterGroupControl
+ClusterGroupEnum
+ClusterGroupEnumEx
+ClusterGroupGetEnumCount
+ClusterGroupGetEnumCountEx
+ClusterGroupOpenEnum
+ClusterGroupOpenEnumEx
+ClusterNetInterfaceControl
+ClusterNetworkCloseEnum
+ClusterNetworkControl
+ClusterNetworkEnum
+ClusterNetworkGetEnumCount
+ClusterNetworkOpenEnum
+ClusterNodeCloseEnum
+ClusterNodeCloseEnumEx
+ClusterNodeControl
+ClusterNodeEnum
+ClusterNodeEnumEx
+ClusterNodeGetEnumCount
+ClusterNodeGetEnumCountEx
+ClusterNodeOpenEnum
+ClusterNodeOpenEnumEx
+ClusterOpenEnum
+ClusterOpenEnumEx
+ClusterRegBatchAddCommand
+ClusterRegBatchCloseNotification
+ClusterRegBatchReadCommand
+ClusterRegCloseBatch
+ClusterRegCloseBatchEx
+ClusterRegCloseBatchNotifyPort
+ClusterRegCloseKey
+ClusterRegCloseReadBatch
+ClusterRegCloseReadBatchReply
+ClusterRegCreateBatch
+ClusterRegCreateBatchNotifyPort
+ClusterRegCreateKey
+ClusterRegCreateKeyForceSync
+ClusterRegCreateReadBatch
+ClusterRegDeleteKey
+ClusterRegDeleteKeyForceSync
+ClusterRegDeleteValue
+ClusterRegDeleteValueForceSync
+ClusterRegEnumKey
+ClusterRegEnumValue
+ClusterRegGetBatchNotification
+ClusterRegGetKeySecurity
+ClusterRegOpenKey
+ClusterRegQueryAllValues
+ClusterRegQueryInfoKey
+ClusterRegQueryValue
+ClusterRegReadBatchAddCommand
+ClusterRegReadBatchReplyNextCommand
+ClusterRegSetKeySecurity
+ClusterRegSetValue
+ClusterRegSetValueForceSync
+ClusterRegSyncDatabase
+ClusterResourceCloseEnum
+ClusterResourceCloseEnumEx
+ClusterResourceControl
+ClusterResourceEnum
+ClusterResourceEnumEx
+ClusterResourceGetEnumCount
+ClusterResourceGetEnumCountEx
+ClusterResourceOpenEnum
+ClusterResourceOpenEnumEx
+ClusterResourceTypeCloseEnum
+ClusterResourceTypeControl
+ClusterResourceTypeEnum
+ClusterResourceTypeGetEnumCount
+ClusterResourceTypeOpenEnum
+ClusterSendReceiveMrr
+ClusterSharedVolumeClearBackupState
+ClusterSharedVolumeSetSnapshotState
+ClusterStmFindDisk
+CreateCluster
+CreateClusterGroup
+CreateClusterGroupEx
+CreateClusterManagementPoint
+CreateClusterNotifyPort
+CreateClusterNotifyPortV2
+CreateClusterResource
+CreateClusterResourceType
+CreateClusterResourceWithId
+DeleteClusterGroup
+DeleteClusterResource
+DeleteClusterResourceType
+DestroyCluster
+DestroyClusterGroup
+EvictClusterNode
+EvictClusterNodeEx
+FailClusterResource
+GetClusterFromGroup
+GetClusterFromNetInterface
+GetClusterFromNetwork
+GetClusterFromNode
+GetClusterFromResource
+GetClusterGroupKey
+GetClusterGroupState
+GetClusterInformation
+GetClusterKey
+GetClusterNetInterface
+GetClusterNetInterfaceKey
+GetClusterNetInterfaceState
+GetClusterNetworkId
+GetClusterNetworkKey
+GetClusterNetworkState
+GetClusterNodeId
+GetClusterNodeKey
+GetClusterNodeState
+GetClusterNotify
+GetClusterNotifyV2
+GetClusterQuorumResource
+GetClusterResourceDependencyExpression
+GetClusterResourceKey
+GetClusterResourceNetworkName
+GetClusterResourceState
+GetClusterResourceTypeKey
+GetClusterSharedVolumeNameForFile
+GetNodeClusterState
+GetNotifyEventHandle
+IsFileOnClusterSharedVolume
+MoveClusterGroup
+MoveClusterGroupEx
+OfflineClusterGroup
+OfflineClusterGroupEx
+OfflineClusterResource
+OfflineClusterResourceEx
+OnlineClusterGroup
+OnlineClusterGroupEx
+OnlineClusterResource
+OnlineClusterResourceEx
+OpenCluster
+OpenClusterEx
+OpenClusterEx2
+OpenClusterGroup
+OpenClusterGroupEx
+OpenClusterNetInterface
+OpenClusterNetInterfaceEx
+OpenClusterNetwork
+OpenClusterNetworkEx
+OpenClusterNode
+OpenClusterNodeEx
+OpenClusterResource
+OpenClusterResourceEx
+PauseClusterNode
+PauseClusterNodeEx
+RegisterClusterNotify
+RegisterClusterNotifyV2
+RemoveClusterResourceDependency
+RemoveClusterResourceNode
+RemoveResourceFromClusterSharedVolumes
+RestartClusterResource
+RestoreClusterDatabase
+ResumeClusterNode
+ResumeClusterNodeEx
+SetClusterGroupName
+SetClusterGroupNodeList
+SetClusterName
+SetClusterNetworkName
+SetClusterNetworkPriorityOrder
+SetClusterQuorumResource
+SetClusterResourceDependencyExpression
+SetClusterResourceName
+SetClusterServiceAccountPassword
diff --git a/lib/libc/mingw/lib-common/credui.def b/lib/libc/mingw/lib-common/credui.def
new file mode 100644
index 0000000000..6566530cb5
--- /dev/null
+++ b/lib/libc/mingw/lib-common/credui.def
@@ -0,0 +1,33 @@
+;
+; Definition file of credui.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "credui.dll"
+EXPORTS
+CredPackAuthenticationBufferA
+CredPackAuthenticationBufferW
+CredUICmdLinePromptForCredentialsA
+CredUICmdLinePromptForCredentialsW
+CredUIConfirmCredentialsA
+CredUIConfirmCredentialsW
+CredUIInitControls
+CredUIParseUserNameA
+CredUIParseUserNameW
+CredUIPromptForCredentialsA
+CredUIPromptForCredentialsW
+CredUIPromptForWindowsCredentialsA
+CredUIPromptForWindowsCredentialsW
+CredUIPromptForWindowsCredentialsWorker
+CredUIReadSSOCredA
+CredUIReadSSOCredW
+CredUIStoreSSOCredA
+CredUIStoreSSOCredW
+CredUnPackAuthenticationBufferA
+CredUnPackAuthenticationBufferW
+SspiGetCredUIContext
+SspiIsPromptingNeeded
+SspiPromptForCredentialsA
+SspiPromptForCredentialsW
+SspiUnmarshalCredUIContext
+SspiUpdateCredentials
diff --git a/lib/libc/mingw/lib-common/cryptui.def b/lib/libc/mingw/lib-common/cryptui.def
new file mode 100644
index 0000000000..666e326c0c
--- /dev/null
+++ b/lib/libc/mingw/lib-common/cryptui.def
@@ -0,0 +1,69 @@
+LIBRARY "CRYPTUI.dll"
+EXPORTS
+AddChainToStore
+CertDllProtectedRootMessageBox
+CompareCertificate
+CryptUIDlgAddPolicyServer
+CryptUIDlgAddPolicyServerWithPriority
+CryptUIDlgPropertyPolicy
+DisplayHtmlHelp
+FormatDateStringAutoLayout
+GetUnknownErrorString
+InvokeHelpLink
+MyFormatEnhancedKeyUsageString
+ACUIProviderInvokeUI
+CertSelectionGetSerializedBlob
+CommonInit
+CryptDllProtectPrompt
+CryptUIDlgCertMgr
+CryptUIDlgFreeCAContext
+CryptUIDlgFreePolicyServerContext
+CryptUIDlgSelectCA
+CryptUIDlgSelectCertificateA
+CryptUIDlgSelectCertificateFromStore
+CryptUIDlgSelectCertificateW
+CryptUIDlgSelectPolicyServer
+CryptUIDlgSelectStoreA
+CryptUIDlgSelectStoreW
+CryptUIDlgViewCRLA
+CryptUIDlgViewCRLW
+CryptUIDlgViewCTLA
+CryptUIDlgViewCTLW
+CryptUIDlgViewCertificateA
+CryptUIDlgViewCertificatePropertiesA
+CryptUIDlgViewCertificatePropertiesW
+CryptUIDlgViewCertificateW
+CryptUIDlgViewContext
+CryptUIDlgViewSignerInfoA
+CryptUIDlgViewSignerInfoW
+CryptUIFreeCertificatePropertiesPagesA
+CryptUIFreeCertificatePropertiesPagesW
+CryptUIFreeViewSignaturesPagesA
+CryptUIFreeViewSignaturesPagesW
+CryptUIGetCertificatePropertiesPagesA
+CryptUIGetCertificatePropertiesPagesW
+CryptUIGetViewSignaturesPagesA
+CryptUIGetViewSignaturesPagesW
+CryptUIStartCertMgr
+CryptUIViewExpiringCerts
+CryptUIWizBuildCTL
+CryptUIWizCertRequest
+CryptUIWizCreateCertRequestNoDS
+CryptUIWizDigitalSign
+CryptUIWizExport
+CryptUIWizFreeCertRequestNoDS
+CryptUIWizFreeDigitalSignContext
+CryptUIWizImport
+CryptUIWizImportInternal
+CryptUIWizQueryCertRequestNoDS
+CryptUIWizSubmitCertRequestNoDS
+DllRegisterServer
+DllUnregisterServer
+EnrollmentCOMObjectFactory_getInstance
+I_CryptUIProtect
+I_CryptUIProtectFailure
+IsWizardExtensionAvailable
+LocalEnroll
+LocalEnrollNoDS
+RetrievePKCS7FromCA
+WizardFree
diff --git a/lib/libc/mingw/lib-common/cryptxml.def b/lib/libc/mingw/lib-common/cryptxml.def
new file mode 100644
index 0000000000..b467869ec3
--- /dev/null
+++ b/lib/libc/mingw/lib-common/cryptxml.def
@@ -0,0 +1,26 @@
+;
+; Definition file of CRYPTXML.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "CRYPTXML.dll"
+EXPORTS
+CryptXmlAddObject
+CryptXmlClose
+CryptXmlCreateReference
+CryptXmlDigestReference
+CryptXmlEncode
+CryptXmlEnumAlgorithmInfo
+CryptXmlFindAlgorithmInfo
+CryptXmlGetAlgorithmInfo
+CryptXmlGetDocContext
+CryptXmlGetReference
+CryptXmlGetSignature
+CryptXmlGetStatus
+CryptXmlGetTransforms
+CryptXmlImportPublicKey
+CryptXmlOpenToDecode
+CryptXmlOpenToEncode
+CryptXmlSetHMACSecret
+CryptXmlSign
+CryptXmlVerifySignature
diff --git a/lib/libc/mingw/lib-common/cscapi.def b/lib/libc/mingw/lib-common/cscapi.def
new file mode 100644
index 0000000000..b919322282
--- /dev/null
+++ b/lib/libc/mingw/lib-common/cscapi.def
@@ -0,0 +1,14 @@
+;
+; Definition file of CSCAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "CSCAPI.dll"
+EXPORTS
+CscNetApiGetInterface
+CscSearchApiGetInterface
+OfflineFilesEnable
+OfflineFilesGetShareCachingMode
+OfflineFilesQueryStatus
+OfflineFilesQueryStatusEx
+OfflineFilesStart
diff --git a/lib/libc/mingw/lib-common/d2d1.def b/lib/libc/mingw/lib-common/d2d1.def
new file mode 100644
index 0000000000..8d5b753c66
--- /dev/null
+++ b/lib/libc/mingw/lib-common/d2d1.def
@@ -0,0 +1,19 @@
+;
+; Definition file of d2d1.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "d2d1.dll"
+EXPORTS
+D2D1CreateFactory
+D2D1MakeRotateMatrix
+D2D1MakeSkewMatrix
+D2D1IsMatrixInvertible
+D2D1InvertMatrix
+D2D1ConvertColorSpace
+D2D1CreateDevice
+D2D1CreateDeviceContext
+D2D1SinCos
+D2D1Tan
+D2D1Vec3Length
+D2D1ComputeMaximumScaleFactor
diff --git a/lib/libc/mingw/lib-common/d3d10.def b/lib/libc/mingw/lib-common/d3d10.def
new file mode 100644
index 0000000000..be904546ef
--- /dev/null
+++ b/lib/libc/mingw/lib-common/d3d10.def
@@ -0,0 +1,31 @@
+LIBRARY "d3d10.dll"
+EXPORTS
+D3D10CompileEffectFromMemory
+D3D10CompileShader
+D3D10CreateBlob
+D3D10CreateDevice
+D3D10CreateDeviceAndSwapChain
+D3D10CreateEffectFromMemory
+D3D10CreateEffectPoolFromMemory
+D3D10CreateStateBlock
+D3D10DisassembleEffect
+D3D10DisassembleShader
+D3D10GetGeometryShaderProfile
+D3D10GetInputAndOutputSignatureBlob
+D3D10GetInputSignatureBlob
+D3D10GetOutputSignatureBlob
+D3D10GetPixelShaderProfile
+D3D10GetShaderDebugInfo
+D3D10GetVersion
+D3D10GetVertexShaderProfile
+D3D10PreprocessShader
+D3D10ReflectShader
+D3D10RegisterLayers
+D3D10StateBlockMaskDifference
+D3D10StateBlockMaskDisableAll
+D3D10StateBlockMaskDisableCapture
+D3D10StateBlockMaskEnableAll
+D3D10StateBlockMaskEnableCapture
+D3D10StateBlockMaskGetSetting
+D3D10StateBlockMaskIntersect
+D3D10StateBlockMaskUnion
diff --git a/lib/libc/mingw/lib-common/d3d11.def b/lib/libc/mingw/lib-common/d3d11.def
new file mode 100644
index 0000000000..fb0cddbeb5
--- /dev/null
+++ b/lib/libc/mingw/lib-common/d3d11.def
@@ -0,0 +1,58 @@
+;
+; Definition file of d3d11.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "d3d11.dll"
+EXPORTS
+D3D11CreateDeviceForD3D12
+D3DKMTCloseAdapter
+D3DKMTDestroyAllocation
+D3DKMTDestroyContext
+D3DKMTDestroyDevice
+D3DKMTDestroySynchronizationObject
+D3DKMTQueryAdapterInfo
+D3DKMTSetDisplayPrivateDriverFormat
+D3DKMTSignalSynchronizationObject
+D3DKMTUnlock
+D3DKMTWaitForSynchronizationObject
+EnableFeatureLevelUpgrade
+OpenAdapter10
+OpenAdapter10_2
+CreateDirect3D11DeviceFromDXGIDevice
+CreateDirect3D11SurfaceFromDXGISurface
+D3D11CoreCreateDevice
+D3D11CoreCreateLayeredDevice
+D3D11CoreGetLayeredDeviceSize
+D3D11CoreRegisterLayers
+D3D11CreateDevice
+D3D11CreateDeviceAndSwapChain
+D3D11On12CreateDevice
+D3DKMTCreateAllocation
+D3DKMTCreateContext
+D3DKMTCreateDevice
+D3DKMTCreateSynchronizationObject
+D3DKMTEscape
+D3DKMTGetContextSchedulingPriority
+D3DKMTGetDeviceState
+D3DKMTGetDisplayModeList
+D3DKMTGetMultisampleMethodList
+D3DKMTGetRuntimeData
+D3DKMTGetSharedPrimaryHandle
+D3DKMTLock
+D3DKMTOpenAdapterFromHdc
+D3DKMTOpenResource
+D3DKMTPresent
+D3DKMTQueryAllocationResidency
+D3DKMTQueryResourceInfo
+D3DKMTRender
+D3DKMTSetAllocationPriority
+D3DKMTSetContextSchedulingPriority
+D3DKMTSetDisplayMode
+D3DKMTSetGammaRamp
+D3DKMTSetVidPnSourceOwner
+D3DKMTWaitForVerticalBlankEvent
+D3DPerformance_BeginEvent
+D3DPerformance_EndEvent
+D3DPerformance_GetStatus
+D3DPerformance_SetMarker
diff --git a/lib/libc/mingw/lib-common/d3d12.def b/lib/libc/mingw/lib-common/d3d12.def
new file mode 100644
index 0000000000..dbb88e6157
--- /dev/null
+++ b/lib/libc/mingw/lib-common/d3d12.def
@@ -0,0 +1,19 @@
+LIBRARY "d3d12.dll"
+EXPORTS
+GetBehaviorValue
+D3D12CreateDevice
+D3D12GetDebugInterface
+SetAppCompatStringPointer
+D3D12CoreCreateLayeredDevice
+D3D12CoreGetLayeredDeviceSize
+D3D12CoreRegisterLayers
+D3D12CreateRootSignatureDeserializer
+D3D12CreateVersionedRootSignatureDeserializer
+D3D12DeviceRemovedExtendedData DATA
+D3D12EnableExperimentalFeatures
+D3D12PIXEventsReplaceBlock
+D3D12PIXGetThreadInfo
+D3D12PIXNotifyWakeFromFenceSignal
+D3D12PIXReportCounter
+D3D12SerializeRootSignature
+D3D12SerializeVersionedRootSignature
diff --git a/lib/libc/mingw/lib-common/d3d9.def b/lib/libc/mingw/lib-common/d3d9.def
new file mode 100644
index 0000000000..a4fbf14e27
--- /dev/null
+++ b/lib/libc/mingw/lib-common/d3d9.def
@@ -0,0 +1,23 @@
+;
+; Definition file of d3d9.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "d3d9.dll"
+EXPORTS
+ord_16 @16
+Direct3DShaderValidatorCreate9
+PSGPError
+PSGPSampleTexture
+D3DPERF_BeginEvent
+D3DPERF_EndEvent
+D3DPERF_GetStatus
+D3DPERF_QueryRepeatFrame
+D3DPERF_SetMarker
+D3DPERF_SetOptions
+D3DPERF_SetRegion
+DebugSetLevel
+DebugSetMute
+Direct3D9EnableMaximizedWindowedModeShim
+Direct3DCreate9
+Direct3DCreate9Ex
diff --git a/lib/libc/mingw/lib-common/d3dcompiler_47.def b/lib/libc/mingw/lib-common/d3dcompiler_47.def
new file mode 100644
index 0000000000..e6e9161ab0
--- /dev/null
+++ b/lib/libc/mingw/lib-common/d3dcompiler_47.def
@@ -0,0 +1,36 @@
+;
+; Definition file of D3DCOMPILER_47.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "D3DCOMPILER_47.dll"
+EXPORTS
+D3DAssemble
+DebugSetMute
+D3DCompile
+D3DCompile2
+D3DCompileFromFile
+D3DCompressShaders
+D3DCreateBlob
+D3DCreateFunctionLinkingGraph
+D3DCreateLinker
+D3DDecompressShaders
+D3DDisassemble
+D3DDisassemble10Effect
+D3DDisassemble11Trace
+D3DDisassembleRegion
+D3DGetBlobPart
+D3DGetDebugInfo
+D3DGetInputAndOutputSignatureBlob
+D3DGetInputSignatureBlob
+D3DGetOutputSignatureBlob
+D3DGetTraceInstructionOffsets
+D3DLoadModule
+D3DPreprocess
+D3DReadFileToBlob
+D3DReflect
+D3DReflectLibrary
+D3DReturnFailure1
+D3DSetBlobPart
+D3DStripShader
+D3DWriteBlobToFile
diff --git a/lib/libc/mingw/lib-common/davclnt.def b/lib/libc/mingw/lib-common/davclnt.def
new file mode 100644
index 0000000000..1f6062515c
--- /dev/null
+++ b/lib/libc/mingw/lib-common/davclnt.def
@@ -0,0 +1,28 @@
+;
+; Definition file of davclnt.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "davclnt.dll"
+EXPORTS
+DavCancelConnectionsToServer
+DavFreeUsedDiskSpace
+DavGetDiskSpaceUsage
+DavGetTheLockOwnerOfTheFile
+DavInvalidateCache
+DavRegisterAuthCallback
+DavSetCookieW
+DavUnregisterAuthCallback
+NPAddConnection
+NPAddConnection3
+NPCancelConnection
+NPCloseEnum
+NPEnumResource
+NPFormatNetworkName
+NPGetCaps
+NPGetConnection
+NPGetResourceInformation
+NPGetResourceParent
+NPGetUniversalName
+NPGetUser
+NPOpenEnum
diff --git a/lib/libc/mingw/lib-common/dcomp.def b/lib/libc/mingw/lib-common/dcomp.def
new file mode 100644
index 0000000000..4aa4723aba
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dcomp.def
@@ -0,0 +1,19 @@
+;
+; Definition file of dcomp.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dcomp.dll"
+EXPORTS
+DCompositionAttachMouseDragToHwnd
+DCompositionAttachMouseWheelToHwnd
+DCompositionCreateDevice
+DCompositionCreateDevice2
+DCompositionCreateDevice3
+DCompositionCreateSurfaceHandle
+DllCanUnloadNow
+DllGetActivationFactory
+DllGetClassObject
+DwmEnableMMCSS
+DwmFlush
+DwmpEnableDDASupport
diff --git a/lib/libc/mingw/lib-common/ddraw.def b/lib/libc/mingw/lib-common/ddraw.def
new file mode 100644
index 0000000000..768b73e4ed
--- /dev/null
+++ b/lib/libc/mingw/lib-common/ddraw.def
@@ -0,0 +1,27 @@
+;
+; Definition file of DDRAW.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "DDRAW.dll"
+EXPORTS
+AcquireDDThreadLock
+CompleteCreateSysmemSurface
+D3DParseUnknownCommand
+DDGetAttachedSurfaceLcl
+DDInternalLock
+DDInternalUnlock
+DSoundHelp
+DirectDrawCreate
+DirectDrawCreateClipper
+DirectDrawCreateEx
+DirectDrawEnumerateA
+DirectDrawEnumerateExA
+DirectDrawEnumerateExW
+DirectDrawEnumerateW
+GetDDSurfaceLocal
+GetOLEThunkData
+GetSurfaceFromDC
+RegisterSpecialCase
+ReleaseDDThreadLock
+SetAppCompatData
diff --git a/lib/libc/mingw/lib-common/dfscli.def b/lib/libc/mingw/lib-common/dfscli.def
new file mode 100644
index 0000000000..acf0e863f9
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dfscli.def
@@ -0,0 +1,36 @@
+;
+; Definition file of dfscli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dfscli.dll"
+EXPORTS
+I_NetDfsIsThisADomainName
+NetDfsAdd
+NetDfsAddFtRoot
+NetDfsAddRootTarget
+NetDfsAddStdRoot
+NetDfsAddStdRootForced
+NetDfsEnum
+NetDfsGetClientInfo
+NetDfsGetDcAddress
+NetDfsGetFtContainerSecurity
+NetDfsGetInfo
+NetDfsGetSecurity
+NetDfsGetStdContainerSecurity
+NetDfsGetSupportedNamespaceVersion
+NetDfsManagerGetConfigInfo
+NetDfsManagerInitialize
+NetDfsManagerSendSiteInfo
+NetDfsMove
+NetDfsRemove
+NetDfsRemoveFtRoot
+NetDfsRemoveFtRootForced
+NetDfsRemoveRootTarget
+NetDfsRemoveStdRoot
+NetDfsRename
+NetDfsSetClientInfo
+NetDfsSetFtContainerSecurity
+NetDfsSetInfo
+NetDfsSetSecurity
+NetDfsSetStdContainerSecurity
diff --git a/lib/libc/mingw/lib-common/dhcpcsvc.def b/lib/libc/mingw/lib-common/dhcpcsvc.def
new file mode 100644
index 0000000000..a0a3c8f375
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dhcpcsvc.def
@@ -0,0 +1,74 @@
+;
+; Definition file of dhcpcsvc.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "dhcpcsvc.DLL"
+EXPORTS
+DhcpAcquireParameters
+DhcpAcquireParametersByBroadcast
+DhcpCApiCleanup
+DhcpCApiInitialize
+DhcpClient_Generalize
+DhcpDeRegisterConnectionStateNotification
+DhcpDeRegisterOptions
+DhcpDeRegisterParamChange
+DhcpDelPersistentRequestParams
+DhcpEnableDhcp
+DhcpEnableTracing
+DhcpEnumClasses
+DhcpEnumInterfaces
+DhcpFallbackRefreshParams
+DhcpFreeEnumeratedInterfaces
+DhcpFreeLeaseInfo
+DhcpFreeLeaseInfoArray
+DhcpFreeMem
+DhcpGetClassId
+DhcpGetClientId
+DhcpGetDhcpServicedConnections
+DhcpGetFallbackParams
+DhcpGetNotificationStatus
+DhcpGetOriginalSubnetMask
+DhcpGetTraceArray
+DhcpGlobalIsShuttingDown DATA
+DhcpGlobalServiceSyncEvent DATA
+DhcpGlobalTerminateEvent DATA
+DhcpHandlePnPEvent
+DhcpIsEnabled
+DhcpLeaseIpAddress
+DhcpLeaseIpAddressEx
+DhcpNotifyConfigChange
+DhcpNotifyConfigChangeEx
+DhcpNotifyMediaReconnected
+DhcpOpenGlobalEvent
+DhcpPersistentRequestParams
+DhcpQueryLeaseInfo
+DhcpQueryLeaseInfoArray
+DhcpQueryLeaseInfoEx
+DhcpRegisterConnectionStateNotification
+DhcpRegisterOptions
+DhcpRegisterParamChange
+DhcpReleaseIpAddressLease
+DhcpReleaseIpAddressLeaseEx
+DhcpReleaseParameters
+DhcpRemoveDNSRegistrations
+DhcpRenewIpAddressLease
+DhcpRenewIpAddressLeaseEx
+DhcpRequestCachedParams
+DhcpRequestOptions
+DhcpRequestParams
+DhcpSetClassId
+DhcpSetClientId
+DhcpSetFallbackParams
+DhcpSetMSFTVendorSpecificOptions
+DhcpStaticRefreshParams
+DhcpUndoRequestParams
+Dhcpv4CheckServerAvailability
+Dhcpv4EnableDhcpEx
+McastApiCleanup
+McastApiStartup
+McastEnumerateScopes
+McastGenUID
+McastReleaseAddress
+McastRenewAddress
+McastRequestAddress
diff --git a/lib/libc/mingw/lib-common/dhcpsapi.def b/lib/libc/mingw/lib-common/dhcpsapi.def
new file mode 100644
index 0000000000..a38b7490ca
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dhcpsapi.def
@@ -0,0 +1,216 @@
+;
+; Definition file of DHCPSAPI.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "DHCPSAPI.DLL"
+EXPORTS
+DhcpAddFilterV4
+DhcpAddMScopeElement
+DhcpAddSecurityGroup
+DhcpAddServer
+DhcpAddSubnetElement
+DhcpAddSubnetElementV4
+DhcpAddSubnetElementV5
+DhcpAddSubnetElementV6
+DhcpAuditLogGetParams
+DhcpAuditLogSetParams
+DhcpCreateClass
+DhcpCreateClassV6
+DhcpCreateClientInfo
+DhcpCreateClientInfoV4
+DhcpCreateClientInfoVQ
+DhcpCreateOption
+DhcpCreateOptionV5
+DhcpCreateOptionV6
+DhcpCreateSubnet
+DhcpCreateSubnetV6
+DhcpCreateSubnetVQ
+DhcpDeleteClass
+DhcpDeleteClassV6
+DhcpDeleteClientInfo
+DhcpDeleteClientInfoV6
+DhcpDeleteFilterV4
+DhcpDeleteMClientInfo
+DhcpDeleteMScope
+DhcpDeleteServer
+DhcpDeleteSubnet
+DhcpDeleteSubnetV6
+DhcpDeleteSuperScopeV4
+DhcpDsCleanup
+DhcpDsClearHostServerEntries
+DhcpDsInit
+DhcpEnumClasses
+DhcpEnumClassesV6
+DhcpEnumFilterV4
+DhcpEnumMScopeClients
+DhcpEnumMScopeElements
+DhcpEnumMScopes
+DhcpEnumOptionValues
+DhcpEnumOptionValuesV5
+DhcpEnumOptionValuesV6
+DhcpEnumOptions
+DhcpEnumOptionsV5
+DhcpEnumOptionsV6
+DhcpEnumServers
+DhcpEnumSubnetClients
+DhcpEnumSubnetClientsFilterStatusInfo
+DhcpEnumSubnetClientsV4
+DhcpEnumSubnetClientsV5
+DhcpEnumSubnetClientsV6
+DhcpEnumSubnetClientsVQ
+DhcpEnumSubnetElements
+DhcpEnumSubnetElementsV4
+DhcpEnumSubnetElementsV5
+DhcpEnumSubnetElementsV6
+DhcpEnumSubnets
+DhcpEnumSubnetsV6
+DhcpGetAllOptionValues
+DhcpGetAllOptionValuesV6
+DhcpGetAllOptions
+DhcpGetAllOptionsV6
+DhcpGetClassInfo
+DhcpGetClientInfo
+DhcpGetClientInfoV4
+DhcpGetClientInfoV6
+DhcpGetClientInfoVQ
+DhcpGetClientOptions
+DhcpGetFilterV4
+DhcpGetMCastMibInfo
+DhcpGetMScopeInfo
+DhcpGetMibInfo
+DhcpGetMibInfoV5
+DhcpGetMibInfoV6
+DhcpGetMibInfoVQ
+DhcpGetOptionInfo
+DhcpGetOptionInfoV5
+DhcpGetOptionInfoV6
+DhcpGetOptionValue
+DhcpGetOptionValueV5
+DhcpGetOptionValueV6
+DhcpGetServerBindingInfo
+DhcpGetServerBindingInfoV6
+DhcpGetServerSpecificStrings
+DhcpGetSubnetDelayOffer
+DhcpGetSubnetInfo
+DhcpGetSubnetInfoV6
+DhcpGetSubnetInfoVQ
+DhcpGetSuperScopeInfoV4
+DhcpGetThreadOptions
+DhcpGetVersion
+DhcpHlprAddV4PolicyCondition
+DhcpHlprAddV4PolicyExpr
+DhcpHlprAddV4PolicyRange
+DhcpHlprCreateV4Policy
+DhcpHlprCreateV4PolicyEx
+DhcpHlprFindV4DhcpProperty
+DhcpHlprFreeV4DhcpProperty
+DhcpHlprFreeV4DhcpPropertyArray
+DhcpHlprFreeV4Policy
+DhcpHlprFreeV4PolicyArray
+DhcpHlprFreeV4PolicyEx
+DhcpHlprFreeV4PolicyExArray
+DhcpHlprIsV4PolicySingleUC
+DhcpHlprIsV4PolicyValid
+DhcpHlprIsV4PolicyWellFormed
+DhcpHlprModifyV4PolicyExpr
+DhcpHlprResetV4PolicyExpr
+DhcpModifyClass
+DhcpModifyClassV6
+DhcpRemoveMScopeElement
+DhcpRemoveOption
+DhcpRemoveOptionV5
+DhcpRemoveOptionV6
+DhcpRemoveOptionValue
+DhcpRemoveOptionValueV5
+DhcpRemoveOptionValueV6
+DhcpRemoveSubnetElement
+DhcpRemoveSubnetElementV4
+DhcpRemoveSubnetElementV5
+DhcpRemoveSubnetElementV6
+DhcpRpcFreeMemory
+DhcpScanDatabase
+DhcpScanMDatabase
+DhcpServerAuditlogParamsFree
+DhcpServerBackupDatabase
+DhcpServerGetConfig
+DhcpServerGetConfigV4
+DhcpServerGetConfigV6
+DhcpServerGetConfigVQ
+DhcpServerQueryAttribute
+DhcpServerQueryAttributes
+DhcpServerQueryDnsRegCredentials
+DhcpServerRedoAuthorization
+DhcpServerRestoreDatabase
+DhcpServerSetConfig
+DhcpServerSetConfigV4
+DhcpServerSetConfigV6
+DhcpServerSetConfigVQ
+DhcpServerSetDnsRegCredentials
+DhcpServerSetDnsRegCredentialsV5
+DhcpSetClientInfo
+DhcpSetClientInfoV4
+DhcpSetClientInfoV6
+DhcpSetClientInfoVQ
+DhcpSetFilterV4
+DhcpSetMScopeInfo
+DhcpSetOptionInfo
+DhcpSetOptionInfoV5
+DhcpSetOptionInfoV6
+DhcpSetOptionValue
+DhcpSetOptionValueV5
+DhcpSetOptionValueV6
+DhcpSetOptionValues
+DhcpSetOptionValuesV5
+DhcpSetServerBindingInfo
+DhcpSetServerBindingInfoV6
+DhcpSetSubnetDelayOffer
+DhcpSetSubnetInfo
+DhcpSetSubnetInfoV6
+DhcpSetSubnetInfoVQ
+DhcpSetSuperScopeV4
+DhcpSetThreadOptions
+DhcpV4AddPolicyRange
+DhcpV4CreateClientInfo
+DhcpV4CreateClientInfoEx
+DhcpV4CreatePolicy
+DhcpV4CreatePolicyEx
+DhcpV4DeletePolicy
+DhcpV4EnumPolicies
+DhcpV4EnumPoliciesEx
+DhcpV4EnumSubnetClients
+DhcpV4EnumSubnetClientsEx
+DhcpV4EnumSubnetReservations
+DhcpV4FailoverAddScopeToRelationship
+DhcpV4FailoverCreateRelationship
+DhcpV4FailoverDeleteRelationship
+DhcpV4FailoverDeleteScopeFromRelationship
+DhcpV4FailoverEnumRelationship
+DhcpV4FailoverGetAddressStatus
+DhcpV4FailoverGetClientInfo
+DhcpV4FailoverGetRelationship
+DhcpV4FailoverGetScopeRelationship
+DhcpV4FailoverGetScopeStatistics
+DhcpV4FailoverGetSystemTime
+DhcpV4FailoverSetRelationship
+DhcpV4FailoverTriggerAddrAllocation
+DhcpV4GetAllOptionValues
+DhcpV4GetClientInfo
+DhcpV4GetClientInfoEx
+DhcpV4GetFreeIPAddress
+DhcpV4GetOptionValue
+DhcpV4GetPolicy
+DhcpV4GetPolicyEx
+DhcpV4QueryPolicyEnforcement
+DhcpV4RemoveOptionValue
+DhcpV4RemovePolicyRange
+DhcpV4SetOptionValue
+DhcpV4SetOptionValues
+DhcpV4SetPolicy
+DhcpV4SetPolicyEnforcement
+DhcpV4SetPolicyEx
+DhcpV6CreateClientInfo
+DhcpV6GetFreeIPAddress
+DhcpV6GetStatelessStatistics
+DhcpV6GetStatelessStoreParams
+DhcpV6SetStatelessStoreParams
diff --git a/lib/libc/mingw/lib-common/dinput8.def b/lib/libc/mingw/lib-common/dinput8.def
new file mode 100644
index 0000000000..7ba9b3399b
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dinput8.def
@@ -0,0 +1,13 @@
+;
+; Exports of file DINPUT8.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY DINPUT8.dll
+EXPORTS
+DirectInput8Create
+DllCanUnloadNow
+DllGetClassObject
+DllRegisterServer
+DllUnregisterServer
diff --git a/lib/libc/mingw/lib-common/dnsapi.def b/lib/libc/mingw/lib-common/dnsapi.def
new file mode 100644
index 0000000000..929deecd68
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dnsapi.def
@@ -0,0 +1,295 @@
+;
+; Definition file of DNSAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "DNSAPI.dll"
+EXPORTS
+AdaptiveTimeout_ClearInterfaceSpecificConfiguration
+AdaptiveTimeout_ResetAdaptiveTimeout
+AddRefQueryBlobEx
+BreakRecordsIntoBlob
+Coalesce_UpdateNetVersion
+CombineRecordsInBlob
+DeRefQueryBlobEx
+DelaySortDAServerlist
+DnsAcquireContextHandle_A
+DnsAcquireContextHandle_W
+DnsAllocateRecord
+DnsApiAlloc
+DnsApiAllocZero
+DnsApiFree
+DnsApiHeapReset
+DnsApiRealloc
+DnsApiSetDebugGlobals
+DnsAsyncRegisterHostAddrs
+DnsAsyncRegisterInit
+DnsAsyncRegisterTerm
+DnsCancelQuery
+DnsCheckNrptRuleIntegrity
+DnsCheckNrptRules
+DnsConnectionDeletePolicyEntries
+DnsConnectionDeletePolicyEntriesPrivate
+DnsConnectionDeleteProxyInfo
+DnsConnectionFreeNameList
+DnsConnectionFreeProxyInfo
+DnsConnectionFreeProxyInfoEx
+DnsConnectionFreeProxyList
+DnsConnectionGetHandleForHostUrlPrivate
+DnsConnectionGetNameList
+DnsConnectionGetProxyInfo
+DnsConnectionGetProxyInfoForHostUrl
+DnsConnectionGetProxyList
+DnsConnectionSetPolicyEntries
+DnsConnectionSetPolicyEntriesPrivate
+DnsConnectionSetProxyInfo
+DnsConnectionUpdateIfIndexTable
+DnsCopyStringEx
+DnsCreateReverseNameStringForIpAddress
+DnsCreateStandardDnsNameCopy
+DnsCreateStringCopy
+DnsDeRegisterLocal
+DnsDhcpRegisterAddrs
+DnsDhcpRegisterHostAddrs
+DnsDhcpRegisterInit
+DnsDhcpRegisterTerm
+DnsDhcpRemoveRegistrations
+DnsDhcpSrvRegisterHostAddr
+DnsDhcpSrvRegisterHostAddrEx
+DnsDhcpSrvRegisterHostName
+DnsDhcpSrvRegisterHostNameEx
+DnsDhcpSrvRegisterInit
+DnsDhcpSrvRegisterInitEx
+DnsDhcpSrvRegisterInitialize
+DnsDhcpSrvRegisterTerm
+DnsDisableIdnEncoding
+DnsDowncaseDnsNameLabel
+DnsExtractRecordsFromMessage_UTF8
+DnsExtractRecordsFromMessage_W
+DnsFindAuthoritativeZone
+DnsFlushResolverCache
+DnsFlushResolverCacheEntry_A
+DnsFlushResolverCacheEntry_UTF8
+DnsFlushResolverCacheEntry_W
+DnsFree
+DnsFreeAdaptersInfo
+DnsFreeConfigStructure
+DnsFreeNrptRule
+DnsFreeNrptRuleNamesList
+DnsFreePolicyConfig
+DnsFreeProxyName
+DnsGetAdaptersInfo
+DnsGetApplicationIdentifier
+DnsGetBufferLengthForStringCopy
+DnsGetCacheDataTable
+DnsGetCacheDataTableEx
+DnsGetDnsServerList
+DnsGetDomainName
+DnsGetInterfaceSettings
+DnsGetLastFailedUpdateInfo
+DnsGetNrptRuleNamesList
+DnsGetPolicyTableInfo
+DnsGetPolicyTableInfoPrivate
+DnsGetPrimaryDomainName_A
+DnsGetProxyInfoPrivate
+DnsGetProxyInformation
+DnsGetQueryRetryTimeouts
+DnsGetSettings
+DnsGlobals DATA
+DnsIpv6AddressToString
+DnsIpv6StringToAddress
+DnsIsAMailboxType
+DnsIsNSECType
+DnsIsStatusRcode
+DnsIsStringCountValidForTextType
+DnsLogEvent
+DnsMapRcodeToStatus
+DnsModifyRecordsInSet_A
+DnsModifyRecordsInSet_UTF8
+DnsModifyRecordsInSet_W
+DnsNameCompareEx_A
+DnsNameCompareEx_UTF8
+DnsNameCompareEx_W
+DnsNameCompare_A
+DnsNameCompare_UTF8
+DnsNameCompare_W
+DnsNameCopy
+DnsNameCopyAllocate
+DnsNetworkInfo_CreateFromFAZ
+DnsNetworkInformation_CreateFromFAZ
+DnsNotifyResolver
+DnsNotifyResolverClusterIp
+DnsNotifyResolverEx
+DnsQueryConfig
+DnsQueryConfigAllocEx
+DnsQueryConfigDword
+DnsQueryEx
+DnsQueryExA
+DnsQueryExUTF8
+DnsQueryExW
+DnsQuery_A
+DnsQuery_UTF8
+DnsQuery_W
+DnsRecordBuild_UTF8
+DnsRecordBuild_W
+DnsRecordCompare
+DnsRecordCopyEx
+DnsRecordListFree
+DnsRecordListUnmapV4MappedAAAAInPlace
+DnsRecordSetCompare
+DnsRecordSetCopyEx
+DnsRecordSetDetach
+DnsRecordStringForType
+DnsRecordStringForWritableType
+DnsRecordTypeForName
+DnsRegisterLocal
+DnsReleaseContextHandle
+DnsRemoveNrptRule
+DnsRemoveRegistrations
+DnsReplaceRecordSetA
+DnsReplaceRecordSetUTF8
+DnsReplaceRecordSetW
+DnsResetQueryRetryTimeouts
+DnsResolverOp
+DnsResolverQueryHvsi
+DnsScreenLocalAddrsForRegistration
+DnsServiceBrowse
+DnsServiceBrowseCancel
+DnsServiceConstructInstance
+DnsServiceCopyInstance
+DnsServiceDeRegister
+DnsServiceFreeInstance
+DnsServiceRegister
+DnsServiceRegisterCancel
+DnsServiceResolve
+DnsServiceResolveCancel
+DnsSetConfigDword
+DnsSetConfigValue
+DnsSetInterfaceSettings
+DnsSetNrptRule
+DnsSetNrptRules
+DnsSetQueryRetryTimeouts
+DnsSetSettings
+DnsStartMulticastQuery
+DnsStatusString
+DnsStopMulticastQuery
+DnsStringCopyAllocateEx
+DnsTraceServerConfig
+DnsUnicodeToUtf8
+DnsUpdate
+DnsUpdateMachinePresence
+DnsUpdateTest_A
+DnsUpdateTest_UTF8
+DnsUpdateTest_W
+DnsUtf8ToUnicode
+DnsValidateNameOrIp_TempW
+DnsValidateName_A
+DnsValidateName_UTF8
+DnsValidateName_W
+DnsValidateServerArray_A
+DnsValidateServerArray_W
+DnsValidateServerStatus
+DnsValidateServer_A
+DnsValidateServer_W
+DnsValidateUtf8Byte
+DnsWriteQuestionToBuffer_UTF8
+DnsWriteQuestionToBuffer_W
+DnsWriteReverseNameStringForIpAddress
+Dns_AddRecordsToMessage
+Dns_AllocateMsgBuf
+Dns_BuildPacket
+Dns_CacheServiceCleanup
+Dns_CacheServiceInit
+Dns_CacheServiceStopIssued
+Dns_CleanupWinsock
+Dns_CloseConnection
+Dns_CloseSocket
+Dns_CreateMulticastSocket
+Dns_CreateSocket
+Dns_CreateSocketEx
+Dns_ExtractRecordsFromMessage
+Dns_FindAuthoritativeZoneLib
+Dns_FreeMsgBuf
+Dns_GetRandomXid
+Dns_InitializeMsgBuf
+Dns_InitializeMsgRemoteSockaddr
+Dns_InitializeWinsock
+Dns_OpenTcpConnectionAndSend
+Dns_ParseMessage
+Dns_ParsePacketRecord
+Dns_PingAdapterServers
+Dns_ReadPacketName
+Dns_ReadPacketNameAllocate
+Dns_ReadRecordStructureFromPacket
+Dns_RecvTcp
+Dns_ResetNetworkInfo
+Dns_SendAndRecvUdp
+Dns_SendEx
+Dns_SetRecordDatalength
+Dns_SetRecordsSection
+Dns_SetRecordsTtl
+Dns_SkipPacketName
+Dns_SkipToRecord
+Dns_UpdateLib
+Dns_UpdateLibEx
+Dns_WriteDottedNameToPacket
+Dns_WriteQuestionToMessage
+Dns_WriteRecordStructureToPacketEx
+ExtraInfo_Init
+Faz_AreServerListsInSameNameSpace
+FlushDnsPolicyUnreachableStatus
+GetCurrentTimeInSeconds
+HostsFile_Close
+HostsFile_Open
+HostsFile_ReadLine
+IpHelp_IsAddrOnLink
+Local_GetRecordsForLocalName
+Local_GetRecordsForLocalNameEx
+NetInfo_Build
+NetInfo_Clean
+NetInfo_Copy
+NetInfo_CopyNetworkIndex
+NetInfo_CreatePerNetworkNetinfo
+NetInfo_Free
+NetInfo_GetAdapterByAddress
+NetInfo_GetAdapterByInterfaceIndex
+NetInfo_GetAdapterByName
+NetInfo_IsAddrConfig
+NetInfo_IsForUpdate
+NetInfo_IsTcpipConfigChange
+NetInfo_ResetServerPriorities
+NetInfo_UpdateDnsInterfaceConfigChange
+NetInfo_UpdateNetworkProperties
+NetInfo_UpdateServerReachability
+QueryDirectEx
+Query_Cancel
+Query_Main
+Reg_FreeUpdateInfo
+Reg_GetValueEx
+Reg_ReadGlobalsEx
+Reg_ReadUpdateInfo
+Security_ContextListTimeout
+Send_AndRecvUdpWithParam
+Send_MessagePrivate
+Send_MessagePrivateEx
+Send_OpenTcpConnectionAndSend
+Socket_CacheCleanup
+Socket_CacheInit
+Socket_CleanupWinsock
+Socket_ClearMessageSockets
+Socket_CloseEx
+Socket_CloseMessageSockets
+Socket_Create
+Socket_CreateMulticast
+Socket_InitWinsock
+Socket_JoinMulticast
+Socket_RecvFrom
+Socket_SetMulticastInterface
+Socket_SetMulticastLoopBack
+Socket_SetTtl
+Socket_TcpListen
+Trace_Reset
+Update_ReplaceAddressRecordsW
+Util_IsIp6Running
+Util_IsRunningOnXboxOne
+WriteDnsNrptRulesToRegistry
diff --git a/lib/libc/mingw/lib-common/dsound.def b/lib/libc/mingw/lib-common/dsound.def
new file mode 100644
index 0000000000..54997c76b4
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dsound.def
@@ -0,0 +1,20 @@
+;
+; Exports of file DSOUND.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY DSOUND.dll
+EXPORTS
+DirectSoundCreate
+DirectSoundEnumerateA
+DirectSoundEnumerateW
+DllCanUnloadNow
+DllGetClassObject
+DirectSoundCaptureCreate
+DirectSoundCaptureEnumerateA
+DirectSoundCaptureEnumerateW
+GetDeviceID
+DirectSoundFullDuplexCreate
+DirectSoundCreate8
+DirectSoundCaptureCreate8
diff --git a/lib/libc/mingw/lib-common/dsprop.def b/lib/libc/mingw/lib-common/dsprop.def
new file mode 100644
index 0000000000..a0df5b32a1
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dsprop.def
@@ -0,0 +1,31 @@
+;
+; Exports of file dsprop.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY dsprop.dll
+EXPORTS
+CheckADsError
+CrackName
+DSPROP_GetGCSearchOnDomain
+ErrMsg
+ErrMsgParam
+FindSheet
+MsgBox
+ReportError
+Smart_PADS_ATTR_INFO__Empty
+ADsPropCheckIfWritable
+ADsPropCreateNotifyObj
+ADsPropGetInitInfo
+ADsPropSendErrorMessage
+ADsPropSetHwnd
+ADsPropSetHwndWithTitle
+ADsPropShowErrorDialog
+BringSheetToForeground
+DllCanUnloadNow
+DllGetClassObject
+DllRegisterServer
+DllUnregisterServer
+IsSheetAlreadyUp
+PostADsPropSheet
diff --git a/lib/libc/mingw/lib-common/dsrole.def b/lib/libc/mingw/lib-common/dsrole.def
new file mode 100644
index 0000000000..5ecffde38e
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dsrole.def
@@ -0,0 +1,21 @@
+;
+; Definition file of dsrole.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dsrole.dll"
+EXPORTS
+DsRoleAbortDownlevelServerUpgrade
+DsRoleCancel
+DsRoleDcAsDc
+DsRoleDcAsReplica
+DsRoleDemoteDc
+DsRoleDnsNameToFlatName
+DsRoleFreeMemory
+DsRoleGetDatabaseFacts
+DsRoleGetDcOperationProgress
+DsRoleGetDcOperationResults
+DsRoleGetPrimaryDomainInformation
+DsRoleIfmHandleFree
+DsRoleServerSaveStateForUpgrade
+DsRoleUpgradeDownlevelServer
diff --git a/lib/libc/mingw/lib-common/dssec.def b/lib/libc/mingw/lib-common/dssec.def
new file mode 100644
index 0000000000..dd5bd92db5
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dssec.def
@@ -0,0 +1,14 @@
+;
+; Exports of file DSSEC.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY DSSEC.dll
+EXPORTS
+DSCreateISecurityInfoObject
+DSCreateSecurityPage
+DSEditSecurity
+DSCreateISecurityInfoObjectEx
+DllCanUnloadNow
+DllGetClassObject
diff --git a/lib/libc/mingw/lib-common/dsuiext.def b/lib/libc/mingw/lib-common/dsuiext.def
new file mode 100644
index 0000000000..605789c44d
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dsuiext.def
@@ -0,0 +1,17 @@
+;
+; Exports of file dsuiext.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY dsuiext.dll
+EXPORTS
+DsBrowseForContainerA
+DsBrowseForContainerW
+DllCanUnloadNow
+DllGetClassObject
+DllInstall
+DllRegisterServer
+DllUnregisterServer
+DsGetIcon
+DsGetFriendlyClassName
diff --git a/lib/libc/mingw/lib-common/dwmapi.def b/lib/libc/mingw/lib-common/dwmapi.def
new file mode 100644
index 0000000000..6575c8492b
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dwmapi.def
@@ -0,0 +1,48 @@
+;
+; Definition file of dwmapi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "dwmapi.dll"
+EXPORTS
+DwmpDxGetWindowSharedSurface
+DwmpDxUpdateWindowSharedSurface
+DwmEnableComposition
+DwmAttachMilContent
+DwmDefWindowProc
+DwmDetachMilContent
+DwmEnableBlurBehindWindow
+DwmEnableMMCSS
+DwmExtendFrameIntoClientArea
+DwmFlush
+DwmGetColorizationColor
+DwmpDxBindSwapChain
+DwmpDxUnbindSwapChain
+DwmpDxgiIsThreadDesktopComposited
+DwmGetCompositionTimingInfo
+DwmGetGraphicsStreamClient
+DwmpDxUpdateWindowRedirectionBltSurface
+DwmpRenderFlick
+DwmpAllocateSecurityDescriptor
+DwmpFreeSecurityDescriptor
+DwmpEnableDDASupport
+DwmGetGraphicsStreamTransformHint
+DwmTetherTextContact
+DwmGetTransportAttributes
+DwmGetWindowAttribute
+DwmInvalidateIconicBitmaps
+DwmIsCompositionEnabled
+DwmModifyPreviousDxFrameDuration
+DwmQueryThumbnailSourceSize
+DwmRegisterThumbnail
+DwmRenderGesture
+DwmSetDxFrameDuration
+DwmSetIconicLivePreviewBitmap
+DwmSetIconicThumbnail
+DwmSetPresentParameters
+DwmSetWindowAttribute
+DwmShowContact
+DwmTetherContact
+DwmTransitionOwnedWindow
+DwmUnregisterThumbnail
+DwmUpdateThumbnailProperties
diff --git a/lib/libc/mingw/lib-common/dwrite.def b/lib/libc/mingw/lib-common/dwrite.def
new file mode 100644
index 0000000000..38be64c270
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dwrite.def
@@ -0,0 +1,8 @@
+;
+; Definition file of DWrite.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "DWrite.dll"
+EXPORTS
+DWriteCreateFactory
diff --git a/lib/libc/mingw/lib-common/dxgi.def b/lib/libc/mingw/lib-common/dxgi.def
new file mode 100644
index 0000000000..bbdaa85646
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dxgi.def
@@ -0,0 +1,54 @@
+LIBRARY "dxgi.dll"
+EXPORTS
+CompatString
+CompatValue
+D3DKMTCloseAdapter
+D3DKMTDestroyAllocation
+D3DKMTDestroyContext
+D3DKMTDestroyDevice
+D3DKMTDestroySynchronizationObject
+D3DKMTQueryAdapterInfo
+D3DKMTSetDisplayPrivateDriverFormat
+D3DKMTSignalSynchronizationObject
+D3DKMTUnlock
+D3DKMTWaitForSynchronizationObject
+DXGIDumpJournal
+DXGIRevertToSxS
+OpenAdapter10
+OpenAdapter10_2
+SetAppCompatStringPointer
+CreateDXGIFactory
+CreateDXGIFactory1
+CreateDXGIFactory2
+D3DKMTCreateAllocation
+D3DKMTCreateContext
+D3DKMTCreateDevice
+D3DKMTCreateSynchronizationObject
+D3DKMTEscape
+D3DKMTGetContextSchedulingPriority
+D3DKMTGetDeviceState
+D3DKMTGetDisplayModeList
+D3DKMTGetMultisampleMethodList
+D3DKMTGetRuntimeData
+D3DKMTGetSharedPrimaryHandle
+D3DKMTLock
+D3DKMTOpenAdapterFromHdc
+D3DKMTOpenResource
+D3DKMTPresent
+D3DKMTQueryAllocationResidency
+D3DKMTQueryResourceInfo
+D3DKMTRender
+D3DKMTSetAllocationPriority
+D3DKMTSetContextSchedulingPriority
+D3DKMTSetDisplayMode
+D3DKMTSetGammaRamp
+D3DKMTSetVidPnSourceOwner
+D3DKMTWaitForSynchronizationObject
+D3DKMTWaitForVerticalBlankEvent
+DXGID3D10CreateDevice
+DXGID3D10CreateLayeredDevice
+DXGID3D10ETWRundown
+DXGID3D10GetLayeredDeviceSize
+DXGID3D10RegisterLayers
+DXGIGetDebugInterface1
+DXGIReportAdapterConfiguration
diff --git a/lib/libc/mingw/lib-common/dxva2.def b/lib/libc/mingw/lib-common/dxva2.def
new file mode 100644
index 0000000000..5f88023f11
--- /dev/null
+++ b/lib/libc/mingw/lib-common/dxva2.def
@@ -0,0 +1,40 @@
+LIBRARY "dxva2.dll"
+EXPORTS
+CapabilitiesRequestAndCapabilitiesReply
+DXVA2CreateDirect3DDeviceManager9
+DXVA2CreateVideoService
+DXVAHD_CreateDevice
+DegaussMonitor
+DestroyPhysicalMonitor
+DestroyPhysicalMonitors
+GetCapabilitiesStringLength
+GetMonitorBrightness
+GetMonitorCapabilities
+GetMonitorColorTemperature
+GetMonitorContrast
+GetMonitorDisplayAreaPosition
+GetMonitorDisplayAreaSize
+GetMonitorRedGreenOrBlueDrive
+GetMonitorRedGreenOrBlueGain
+GetMonitorTechnologyType
+GetNumberOfPhysicalMonitorsFromHMONITOR
+GetNumberOfPhysicalMonitorsFromIDirect3DDevice9
+GetPhysicalMonitorsFromHMONITOR
+GetPhysicalMonitorsFromIDirect3DDevice9
+GetTimingReport
+GetVCPFeatureAndVCPFeatureReply
+OPMGetVideoOutputsFromHMONITOR
+OPMGetVideoOutputsFromIDirect3DDevice9Object
+RestoreMonitorFactoryColorDefaults
+RestoreMonitorFactoryDefaults
+SaveCurrentMonitorSettings
+SaveCurrentSettings
+SetMonitorBrightness
+SetMonitorColorTemperature
+SetMonitorContrast
+SetMonitorDisplayAreaPosition
+SetMonitorDisplayAreaSize
+SetMonitorRedGreenOrBlueDrive
+SetMonitorRedGreenOrBlueGain
+SetVCPFeature
+UABGetCertificate
diff --git a/lib/libc/mingw/lib-common/eappcfg.def b/lib/libc/mingw/lib-common/eappcfg.def
new file mode 100644
index 0000000000..6ce689df1f
--- /dev/null
+++ b/lib/libc/mingw/lib-common/eappcfg.def
@@ -0,0 +1,22 @@
+;
+; Definition file of eappcfg.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "eappcfg.dll"
+EXPORTS
+EapHostPeerConfigBlob2Xml
+EapHostPeerConfigXml2Blob
+EapHostPeerCreateMethodConfiguration
+EapHostPeerCredentialsXml2Blob
+EapHostPeerFreeErrorMemory
+EapHostPeerFreeMemory
+EapHostPeerGetMethodProperties
+EapHostPeerGetMethods
+EapHostPeerInvokeConfigUI
+EapHostPeerInvokeIdentityUI
+EapHostPeerInvokeInteractiveUI
+EapHostPeerQueryCredentialInputFields
+EapHostPeerQueryInteractiveUIInputFields
+EapHostPeerQueryUIBlobFromInteractiveUIInputFields
+EapHostPeerQueryUserBlobFromCredentialInputFields
diff --git a/lib/libc/mingw/lib-common/eappprxy.def b/lib/libc/mingw/lib-common/eappprxy.def
new file mode 100644
index 0000000000..e7bd7bc931
--- /dev/null
+++ b/lib/libc/mingw/lib-common/eappprxy.def
@@ -0,0 +1,23 @@
+;
+; Definition file of eappprxy.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "eappprxy.dll"
+EXPORTS
+EapHostPeerBeginSession
+EapHostPeerClearConnection
+EapHostPeerEndSession
+EapHostPeerFreeEapError
+EapHostPeerFreeRuntimeMemory
+EapHostPeerGetAuthStatus
+EapHostPeerGetIdentity
+EapHostPeerGetResponseAttributes
+EapHostPeerGetResult
+EapHostPeerGetSendPacket
+EapHostPeerGetUIContext
+EapHostPeerInitialize
+EapHostPeerProcessReceivedPacket
+EapHostPeerSetResponseAttributes
+EapHostPeerSetUIContext
+EapHostPeerUninitialize
diff --git a/lib/libc/mingw/lib-common/elscore.def b/lib/libc/mingw/lib-common/elscore.def
new file mode 100644
index 0000000000..e4b0f63f27
--- /dev/null
+++ b/lib/libc/mingw/lib-common/elscore.def
@@ -0,0 +1,12 @@
+;
+; Definition file of elscore.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "elscore.dll"
+EXPORTS
+MappingDoAction
+MappingFreePropertyBag
+MappingFreeServices
+MappingGetServices
+MappingRecognizeText
diff --git a/lib/libc/mingw/lib-common/evr.def b/lib/libc/mingw/lib-common/evr.def
new file mode 100644
index 0000000000..5ff1294259
--- /dev/null
+++ b/lib/libc/mingw/lib-common/evr.def
@@ -0,0 +1,31 @@
+;
+; Definition file of EVR.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "EVR.dll"
+EXPORTS
+MFConvertColorInfoFromDXVA
+MFConvertColorInfoToDXVA
+MFConvertFromFP16Array
+MFConvertToFP16Array
+MFCopyImage
+MFCreateDXSurfaceBuffer
+MFCreateVideoMediaType
+MFCreateVideoMediaTypeFromBitMapInfoHeader
+MFCreateVideoMediaTypeFromSubtype
+MFCreateVideoMediaTypeFromVideoInfoHeader
+MFCreateVideoMediaTypeFromVideoInfoHeader2
+MFCreateVideoMixer
+MFCreateVideoMixerAndPresenter
+MFCreateVideoOTA
+MFCreateVideoPresenter
+MFCreateVideoPresenter2
+MFCreateVideoSampleAllocator
+MFCreateVideoSampleFromSurface
+MFGetPlaneSize
+MFGetStrideForBitmapInfoHeader
+MFGetUncompressedVideoFormat
+MFInitVideoFormat
+MFInitVideoFormat_RGB
+MFIsFormatYUV
diff --git a/lib/libc/mingw/lib-common/fltlib.def b/lib/libc/mingw/lib-common/fltlib.def
new file mode 100644
index 0000000000..a1cb0b627b
--- /dev/null
+++ b/lib/libc/mingw/lib-common/fltlib.def
@@ -0,0 +1,37 @@
+;
+; Exports of file FLTLIB.DLL
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY FLTLIB.DLL
+EXPORTS
+FilterAttach
+FilterAttachAtAltitude
+FilterClose
+FilterConnectCommunicationPort
+FilterCreate
+FilterDetach
+FilterFindClose
+FilterFindFirst
+FilterFindNext
+FilterGetDosName
+FilterGetInformation
+FilterGetMessage
+FilterInstanceClose
+FilterInstanceCreate
+FilterInstanceFindClose
+FilterInstanceFindFirst
+FilterInstanceFindNext
+FilterInstanceGetInformation
+FilterLoad
+FilterReplyMessage
+FilterSendMessage
+FilterUnload
+FilterVolumeClose
+FilterVolumeFindClose
+FilterVolumeFindFirst
+FilterVolumeFindNext
+FilterVolumeInstanceFindClose
+FilterVolumeInstanceFindFirst
+FilterVolumeInstanceFindNext
diff --git a/lib/libc/mingw/lib-common/fontsub.def b/lib/libc/mingw/lib-common/fontsub.def
new file mode 100644
index 0000000000..c6180cf929
--- /dev/null
+++ b/lib/libc/mingw/lib-common/fontsub.def
@@ -0,0 +1,10 @@
+;
+; Exports of file FONTSUB.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY FONTSUB.dll
+EXPORTS
+CreateFontPackage
+MergeFontPackage
diff --git a/lib/libc/mingw/lib-common/gpedit.def b/lib/libc/mingw/lib-common/gpedit.def
new file mode 100644
index 0000000000..8b4c6743dd
--- /dev/null
+++ b/lib/libc/mingw/lib-common/gpedit.def
@@ -0,0 +1,18 @@
+;
+; Exports of file GPEDIT.DLL
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY GPEDIT.DLL
+EXPORTS
+BrowseForGPO
+CreateGPOLink
+DeleteAllGPOLinks
+DeleteGPOLink
+DllCanUnloadNow
+DllGetClassObject
+DllRegisterServer
+DllUnregisterServer
+ExportRSoPData
+ImportRSoPData
diff --git a/lib/libc/mingw/lib-common/hid.def b/lib/libc/mingw/lib-common/hid.def
new file mode 100644
index 0000000000..1be39fc185
--- /dev/null
+++ b/lib/libc/mingw/lib-common/hid.def
@@ -0,0 +1,52 @@
+;
+; Exports of file HID.DLL
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY HID.DLL
+EXPORTS
+HidD_FlushQueue
+HidD_FreePreparsedData
+HidD_GetAttributes
+HidD_GetConfiguration
+HidD_GetFeature
+HidD_GetHidGuid
+HidD_GetIndexedString
+HidD_GetInputReport
+HidD_GetManufacturerString
+HidD_GetMsGenreDescriptor
+HidD_GetNumInputBuffers
+HidD_GetPhysicalDescriptor
+HidD_GetPreparsedData
+HidD_GetProductString
+HidD_GetSerialNumberString
+HidD_Hello
+HidD_SetConfiguration
+HidD_SetFeature
+HidD_SetNumInputBuffers
+HidD_SetOutputReport
+HidP_GetButtonCaps
+HidP_GetCaps
+HidP_GetData
+HidP_GetExtendedAttributes
+HidP_GetLinkCollectionNodes
+HidP_GetScaledUsageValue
+HidP_GetSpecificButtonCaps
+HidP_GetSpecificValueCaps
+HidP_GetUsageValue
+HidP_GetUsageValueArray
+HidP_GetUsages
+HidP_GetUsagesEx
+HidP_GetValueCaps
+HidP_InitializeReportForID
+HidP_MaxDataListLength
+HidP_MaxUsageListLength
+HidP_SetData
+HidP_SetScaledUsageValue
+HidP_SetUsageValue
+HidP_SetUsageValueArray
+HidP_SetUsages
+HidP_TranslateUsagesToI8042ScanCodes
+HidP_UnsetUsages
+HidP_UsageListDifference
diff --git a/lib/libc/mingw/lib-common/hlink.def b/lib/libc/mingw/lib-common/hlink.def
new file mode 100644
index 0000000000..445c67037d
--- /dev/null
+++ b/lib/libc/mingw/lib-common/hlink.def
@@ -0,0 +1,40 @@
+;
+; Exports of file hlink.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY hlink.dll
+EXPORTS
+HlinkCreateFromMoniker
+HlinkCreateFromString
+HlinkCreateFromData
+HlinkCreateBrowseContext
+HlinkClone
+HlinkNavigateToStringReference
+HlinkOnNavigate
+HlinkNavigate
+HlinkUpdateStackItem
+HlinkOnRenameDocument
+DllCanUnloadNow
+HlinkResolveMonikerForData
+HlinkResolveStringForData
+OleSaveToStreamEx
+DllGetClassObject
+HlinkParseDisplayName
+DllRegisterServer
+HlinkQueryCreateFromData
+HlinkSetSpecialReference
+HlinkGetSpecialReference
+HlinkCreateShortcut
+HlinkResolveShortcut
+HlinkIsShortcut
+HlinkResolveShortcutToString
+HlinkCreateShortcutFromString
+HlinkGetValueFromParams
+HlinkCreateShortcutFromMoniker
+HlinkResolveShortcutToMoniker
+HlinkTranslateURL
+HlinkCreateExtensionServices
+HlinkPreprocessMoniker
+DllUnregisterServer
diff --git a/lib/libc/mingw/lib-common/icm32.def b/lib/libc/mingw/lib-common/icm32.def
new file mode 100644
index 0000000000..1b2873a260
--- /dev/null
+++ b/lib/libc/mingw/lib-common/icm32.def
@@ -0,0 +1,29 @@
+;
+; Exports of file ICM32.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY ICM32.dll
+EXPORTS
+CMCheckColors
+CMCheckColorsInGamut
+CMCheckRGBs
+CMCreateDeviceLinkProfile
+CMCreateMultiProfileTransform
+CMCreateProfile
+CMCreateProfileW
+CMCreateTransform
+CMCreateTransformExt
+CMCreateTransformExtW
+CMCreateTransformW
+CMDeleteTransform
+CMGetInfo
+CMIsProfileValid
+CMTranslateColors
+CMTranslateRGB
+CMTranslateRGBs
+CMTranslateRGBsExt
+CMConvertColorNameToIndex
+CMConvertIndexToColorName
+CMGetNamedProfileInfo
diff --git a/lib/libc/mingw/lib-common/icmui.def b/lib/libc/mingw/lib-common/icmui.def
new file mode 100644
index 0000000000..6c1bc82df6
--- /dev/null
+++ b/lib/libc/mingw/lib-common/icmui.def
@@ -0,0 +1,12 @@
+;
+; Exports of file ICMUI.DLL
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY ICMUI.DLL
+EXPORTS
+DllCanUnloadNow
+DllGetClassObject
+SetupColorMatchingA
+SetupColorMatchingW
diff --git a/lib/libc/mingw/lib-common/ksuser.def b/lib/libc/mingw/lib-common/ksuser.def
new file mode 100644
index 0000000000..92a684c0ef
--- /dev/null
+++ b/lib/libc/mingw/lib-common/ksuser.def
@@ -0,0 +1,15 @@
+;
+; Definition file of ksuser.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "ksuser.dll"
+EXPORTS
+KsCreateAllocator
+KsCreateAllocator2
+KsCreateClock
+KsCreateClock2
+KsCreatePin
+KsCreatePin2
+KsCreateTopologyNode
+KsCreateTopologyNode2
diff --git a/lib/libc/mingw/lib-common/ktmw32.def b/lib/libc/mingw/lib-common/ktmw32.def
new file mode 100644
index 0000000000..fd338ecd63
--- /dev/null
+++ b/lib/libc/mingw/lib-common/ktmw32.def
@@ -0,0 +1,51 @@
+;
+; Definition file of ktmw32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "ktmw32.dll"
+EXPORTS
+CommitComplete
+CommitEnlistment
+CommitTransaction
+CommitTransactionAsync
+CreateEnlistment
+CreateResourceManager
+CreateTransaction
+CreateTransactionManager
+GetCurrentClockTransactionManager
+GetEnlistmentId
+GetEnlistmentRecoveryInformation
+GetNotificationResourceManager
+GetNotificationResourceManagerAsync
+GetTransactionId
+GetTransactionInformation
+GetTransactionManagerId
+OpenEnlistment
+OpenResourceManager
+OpenTransaction
+OpenTransactionManager
+OpenTransactionManagerById
+PrePrepareComplete
+PrePrepareEnlistment
+PrepareComplete
+PrepareEnlistment
+PrivCreateTransaction
+PrivIsLogWritableTransactionManager
+PrivPropagationComplete
+PrivPropagationFailed
+PrivRegisterProtocolAddressInformation
+ReadOnlyEnlistment
+RecoverEnlistment
+RecoverResourceManager
+RecoverTransactionManager
+RenameTransactionManager
+RollbackComplete
+RollbackEnlistment
+RollbackTransaction
+RollbackTransactionAsync
+RollforwardTransactionManager
+SetEnlistmentRecoveryInformation
+SetResourceManagerCompletionPort
+SetTransactionInformation
+SinglePhaseReject
diff --git a/lib/libc/mingw/lib-common/loadperf.def b/lib/libc/mingw/lib-common/loadperf.def
new file mode 100644
index 0000000000..513cc56923
--- /dev/null
+++ b/lib/libc/mingw/lib-common/loadperf.def
@@ -0,0 +1,21 @@
+;
+; Definition file of loadperf.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "loadperf.dll"
+EXPORTS
+BackupPerfRegistryToFileW
+InstallPerfDllA
+InstallPerfDllW
+LoadPerfCounterTextStringsA
+LoadPerfCounterTextStringsW
+LpAcquireInstallationMutex
+LpReleaseInstallationMutex
+RestorePerfRegistryFromFileW
+SetServiceAsTrustedA
+SetServiceAsTrustedW
+UnloadPerfCounterTextStringsA
+UnloadPerfCounterTextStringsW
+UpdatePerfNameFilesA
+UpdatePerfNameFilesW
diff --git a/lib/libc/mingw/lib-common/logoncli.def b/lib/libc/mingw/lib-common/logoncli.def
new file mode 100644
index 0000000000..662b8c1d40
--- /dev/null
+++ b/lib/libc/mingw/lib-common/logoncli.def
@@ -0,0 +1,91 @@
+;
+; Definition file of logoncli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "logoncli.dll"
+EXPORTS
+AuthzrExtAccessCheck
+AuthzrExtFreeContext
+AuthzrExtFreeResourceManager
+AuthzrExtGetInformationFromContext
+AuthzrExtInitializeCompoundContext
+AuthzrExtInitializeContextFromSid
+AuthzrExtInitializeRemoteResourceManager
+AuthzrExtModifyClaims
+DsAddressToSiteNamesA
+DsAddressToSiteNamesExA
+DsAddressToSiteNamesExW
+DsAddressToSiteNamesW
+DsDeregisterDnsHostRecordsA
+DsDeregisterDnsHostRecordsW
+DsEnumerateDomainTrustsA
+DsEnumerateDomainTrustsW
+DsGetDcCloseW
+DsGetDcNameA
+DsGetDcNameW
+DsGetDcNameWithAccountA
+DsGetDcNameWithAccountW
+DsGetDcNextA
+DsGetDcNextW
+DsGetDcOpenA
+DsGetDcOpenW
+DsGetDcSiteCoverageA
+DsGetDcSiteCoverageW
+DsGetForestTrustInformationW
+DsGetSiteNameA
+DsGetSiteNameW
+DsMergeForestTrustInformationW
+DsValidateSubnetNameA
+DsValidateSubnetNameW
+I_DsUpdateReadOnlyServerDnsRecords
+I_NetAccountDeltas
+I_NetAccountSync
+I_NetChainSetClientAttributes
+I_NetChainSetClientAttributes2
+I_NetDatabaseDeltas
+I_NetDatabaseRedo
+I_NetDatabaseSync
+I_NetDatabaseSync2
+I_NetGetDCList
+I_NetGetForestTrustInformation
+I_NetLogonControl
+I_NetLogonControl2
+I_NetLogonGetCapabilities
+I_NetLogonGetDomainInfo
+I_NetLogonSamLogoff
+I_NetLogonSamLogon
+I_NetLogonSamLogonEx
+I_NetLogonSamLogonWithFlags
+I_NetLogonSendToSam
+I_NetLogonUasLogoff
+I_NetLogonUasLogon
+I_NetServerAuthenticate
+I_NetServerAuthenticate2
+I_NetServerAuthenticate3
+I_NetServerGetTrustInfo
+I_NetServerPasswordGet
+I_NetServerPasswordSet
+I_NetServerPasswordSet2
+I_NetServerReqChallenge
+I_NetServerTrustPasswordsGet
+I_NetlogonComputeClientDigest
+I_NetlogonComputeClientSignature
+I_NetlogonComputeServerDigest
+I_NetlogonComputeServerSignature
+I_NetlogonGetTrustRid
+I_RpcExtInitializeExtensionPoint
+NetAddServiceAccount
+NetEnumerateServiceAccounts
+NetEnumerateTrustedDomains
+NetGetAnyDCName
+NetGetDCName
+NetIsServiceAccount
+NetLogonGetTimeServiceParentDomain
+NetLogonSetServiceBits
+NetQueryServiceAccount
+NetRemoveServiceAccount
+NlBindingAddServerToCache
+NlBindingRemoveServerFromCache
+NlBindingSetAuthInfo
+NlSetDsIsCloningPDC
diff --git a/lib/libc/mingw/lib-common/mapi32.def b/lib/libc/mingw/lib-common/mapi32.def
new file mode 100644
index 0000000000..8b68b1159a
--- /dev/null
+++ b/lib/libc/mingw/lib-common/mapi32.def
@@ -0,0 +1,177 @@
+;
+; Definition file of MAPI32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "MAPI32.dll"
+EXPORTS
+ord_8 @8
+MAPILogonEx
+MAPIAllocateBuffer
+MAPIAllocateMore
+MAPIFreeBuffer
+MAPIAdminProfiles
+MAPIInitialize
+MAPIUninitialize
+PRProviderInit
+LAUNCHWIZARD
+LaunchWizard
+MAPIOpenFormMgr
+MAPIOpenLocalFormContainer
+ScInitMapiUtil
+DeinitMapiUtil
+ScGenerateMuid
+HrAllocAdviseSink
+WrapProgress
+HrThisThreadAdviseSink
+ScBinFromHexBounded
+FBinFromHex
+HexFromBin
+BuildDisplayTable
+SwapPlong
+SwapPword
+MAPIInitIdle
+MAPIDeinitIdle
+InstallFilterHook
+FtgRegisterIdleRoutine
+EnableIdleRoutine
+DeregisterIdleRoutine
+ChangeIdleRoutine
+MAPIGetDefaultMalloc
+CreateIProp
+CreateTable
+MNLS_lstrlenW
+MNLS_lstrcmpW
+MNLS_lstrcpyW
+MNLS_CompareStringW
+MNLS_MultiByteToWideChar
+MNLS_WideCharToMultiByte
+MNLS_IsBadStringPtrW
+FEqualNames
+WrapStoreEntryID
+IsBadBoundedStringPtr
+HrQueryAllRows
+PropCopyMore
+UlPropSize
+FPropContainsProp
+FPropCompareProp
+LPropCompareProp
+HrAddColumns
+HrAddColumnsEx
+FtAddFt
+FtAdcFt
+FtSubFt
+FtMulDw
+FtMulDwDw
+FtNegFt
+FtDivFtBogus
+UlAddRef
+UlRelease
+SzFindCh
+SzFindLastCh
+SzFindSz
+UFromSz
+HrGetOneProp
+HrSetOneProp
+FPropExists
+PpropFindProp
+FreePadrlist
+FreeProws
+HrSzFromEntryID
+HrEntryIDFromSz
+HrComposeEID
+HrDecomposeEID
+HrComposeMsgID
+HrDecomposeMsgID
+OpenStreamOnFile
+OpenTnefStream
+OpenTnefStreamEx
+GetTnefStreamCodepage
+UlFromSzHex
+UNKOBJ_ScAllocate
+UNKOBJ_ScAllocateMore
+UNKOBJ_Free
+UNKOBJ_FreeRows
+UNKOBJ_ScCOAllocate
+UNKOBJ_ScCOReallocate
+UNKOBJ_COFree
+UNKOBJ_ScSzFromIdsAlloc
+ScCountNotifications
+ScCopyNotifications
+ScRelocNotifications
+ScCountProps
+ScCopyProps
+ScRelocProps
+LpValFindProp
+ScDupPropset
+FBadRglpszA
+FBadRglpszW
+FBadRowSet
+FBadRglpNameID
+FBadPropTag
+FBadRow
+FBadProp
+FBadColumnSet
+RTFSync
+WrapCompressedRTFStream
+__ValidateParameters
+__CPPValidateParameters
+FBadSortOrderSet
+FBadEntryList
+FBadRestriction
+ScUNCFromLocalPath
+ScLocalPathFromUNC
+HrIStorageFromStream
+HrValidateIPMSubtree
+OpenIMsgSession
+CloseIMsgSession
+OpenIMsgOnIStg
+SetAttribIMsgOnIStg
+GetAttribIMsgOnIStg
+MapStorageSCode
+ScMAPIXFromCMC
+ScMAPIXFromSMAPI
+EncodeID
+FDecodeID
+CchOfEncoding
+CbOfEncoded
+MAPISendDocuments
+MAPILogon
+MAPILogoff
+MAPISendMail
+MAPISaveMail
+MAPIReadMail
+MAPIFindNext
+MAPIDeleteMail
+MAPIAddress
+MAPIDetails
+MAPIResolveName
+BMAPISendMail
+BMAPISaveMail
+BMAPIReadMail
+BMAPIGetReadMail
+BMAPIFindNext
+BMAPIAddress
+BMAPIGetAddress
+BMAPIDetails
+BMAPIResolveName
+cmc_act_on
+cmc_free
+cmc_list
+cmc_logoff
+cmc_logon
+cmc_look_up
+cmc_query_configuration
+cmc_read
+cmc_send
+cmc_send_documents
+HrDispatchNotifications
+HrValidateParametersV
+HrValidateParametersValist
+ScCreateConversationIndex
+HrGetOmiProvidersFlags
+HrSetOmiProvidersFlagsInvalid
+GetOutlookVersion
+FixMAPI
+FGetComponentPath
+MAPISendMailW
diff --git a/lib/libc/mingw/lib-common/mf.def b/lib/libc/mingw/lib-common/mf.def
new file mode 100644
index 0000000000..972f081676
--- /dev/null
+++ b/lib/libc/mingw/lib-common/mf.def
@@ -0,0 +1,97 @@
+;
+; Definition file of MF.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "MF.dll"
+EXPORTS
+AppendPropVariant
+ConvertPropVariant
+CopyPropertyStore
+CreateNamedPropertyStore
+ExtractPropVariant
+MFCreate3GPMediaSink
+MFCreateAC3MediaSink
+MFCreateADTSMediaSink
+MFCreateASFByteStreamPlugin
+MFCreateASFContentInfo
+MFCreateASFIndexer
+MFCreateASFIndexerByteStream
+MFCreateASFMediaSink
+MFCreateASFMediaSinkActivate
+MFCreateASFMultiplexer
+MFCreateASFProfile
+MFCreateASFProfileFromPresentationDescriptor
+MFCreateASFSplitter
+MFCreateASFStreamSelector
+MFCreateASFStreamingMediaSink
+MFCreateASFStreamingMediaSinkActivate
+MFCreateAggregateSource
+MFCreateAppSourceProxy
+MFCreateAudioRenderer
+MFCreateAudioRendererActivate
+MFCreateByteCacheFile
+MFCreateCacheManager
+MFCreateCredentialCache
+MFCreateDeviceSource
+MFCreateDeviceSourceActivate
+MFCreateDrmNetNDSchemePlugin
+MFCreateFMPEG4MediaSink
+MFCreateFileBlockMap
+MFCreateFileSchemePlugin
+MFCreateHttpSchemePlugin
+MFCreateLPCMByteStreamPlugin
+MFCreateMP3ByteStreamPlugin
+MFCreateMP3MediaSink
+MFCreateMPEG4MediaSink
+MFCreateMediaProcessor
+MFCreateMediaSession
+MFCreateMuxSink
+MFCreateNSCByteStreamPlugin
+MFCreateNetSchemePlugin
+MFCreatePMPHost
+MFCreatePMPMediaSession
+MFCreatePMPServer
+MFCreatePresentationClock
+MFCreatePresentationDescriptorFromASFProfile
+MFCreateProtectedEnvironmentAccess
+MFCreateProxyLocator
+MFCreateRemoteDesktopPlugin
+MFCreateSAMIByteStreamPlugin
+MFCreateSampleCopierMFT
+MFCreateSampleGrabberSinkActivate
+MFCreateSecureHttpSchemePlugin
+MFCreateSequencerSegmentOffset
+MFCreateSequencerSource
+MFCreateSequencerSourceRemoteStream
+MFCreateSimpleTypeHandler
+MFCreateSoundEventSchemePlugin
+MFCreateSourceResolver
+MFCreateStandardQualityManager
+MFCreateTopoLoader
+MFCreateTopology
+MFCreateTopologyNode
+MFCreateTranscodeProfile
+MFCreateTranscodeSinkActivate
+MFCreateTranscodeTopology
+MFCreateTranscodeTopologyFromByteStream
+MFCreateUrlmonSchemePlugin
+MFCreateVideoRenderer
+MFCreateVideoRendererActivate
+MFCreateWMAEncoderActivate
+MFCreateWMVEncoderActivate
+MFEnumDeviceSources
+MFGetLocalId
+MFGetMultipleServiceProviders
+MFGetService
+MFGetSupportedMimeTypes
+MFGetSupportedSchemes
+MFGetSystemId
+MFGetTopoNodeCurrentType
+MFLoadSignedLibrary
+MFRR_CreateActivate
+MFReadSequencerSegmentOffset
+MFRequireProtectedEnvironment
+MFShutdownObject
+MFTranscodeGetAudioOutputAvailableTypes
+MergePropertyStore
diff --git a/lib/libc/mingw/lib-common/mfplat.def b/lib/libc/mingw/lib-common/mfplat.def
new file mode 100644
index 0000000000..3dff9675ed
--- /dev/null
+++ b/lib/libc/mingw/lib-common/mfplat.def
@@ -0,0 +1,205 @@
+LIBRARY "MFPlat.DLL"
+EXPORTS
+FormatTagFromWfx
+MFCreateGuid
+MFGetIoPortHandle
+MFEnumLocalMFTRegistrations
+MFGetPlatformFlags
+MFGetPlatformVersion
+MFGetRandomNumber
+MFIsFeatureEnabled
+MFIsQueueThread
+MFPlatformBigEndian
+MFPlatformLittleEndian
+MFTraceError
+MFllMulDiv
+ValidateWaveFormat
+CopyPropVariant
+CreatePropVariant
+CreatePropertyStore
+DestroyPropVariant
+GetAMSubtypeFromD3DFormat
+GetD3DFormatFromMFSubtype
+LFGetGlobalPool
+MFAddPeriodicCallback
+MFAllocateSerialWorkQueue
+MFAllocateWorkQueue
+MFAllocateWorkQueueEx
+MFAppendCollection
+MFAverageTimePerFrameToFrameRate
+MFBeginCreateFile
+MFBeginGetHostByName
+MFBeginRegisterWorkQueueWithMMCSS
+MFBeginRegisterWorkQueueWithMMCSSEx
+MFBeginUnregisterWorkQueueWithMMCSS
+MFBlockThread
+MFCalculateBitmapImageSize
+MFCalculateImageSize
+MFCancelCreateFile
+MFCancelWorkItem
+MFClearLocalMFTs
+MFCompareFullToPartialMediaType
+MFCompareSockaddrAddresses
+MFConvertColorInfoFromDXVA
+MFConvertColorInfoToDXVA
+MFConvertFromFP16Array
+MFConvertToFP16Array
+MFCopyImage
+MFCreate2DMediaBuffer
+MFCreateAMMediaTypeFromMFMediaType
+MFCreateAlignedMemoryBuffer
+MFCreateAsyncResult
+MFCreateAttributes
+MFCreateAudioMediaType
+MFCreateCollection
+MFCreateDXGIDeviceManager
+MFCreateDXGISurfaceBuffer
+MFCreateDXSurfaceBuffer
+MFCreateEventQueue
+MFCreateFile
+MFCreateFileFromHandle
+MFCreateLegacyMediaBufferOnMFMediaBuffer
+MFCreateMFByteStreamOnStream
+MFCreateMFByteStreamOnStreamEx
+MFCreateMFByteStreamWrapper
+MFCreateMFVideoFormatFromMFMediaType
+MFCreateMediaBufferFromMediaType
+MFCreateMediaBufferWrapper
+MFCreateMediaEvent
+MFCreateMediaEventResult
+MFCreateMediaExtensionActivate
+MFCreateMediaExtensionActivateNoInit
+MFCreateMediaType
+MFCreateMediaTypeFromProperties
+MFCreateMediaTypeFromRepresentation
+MFCreateMemoryBuffer
+MFCreateMemoryStream
+MFCreatePathFromURL
+MFCreatePresentationDescriptor
+MFCreatePropertiesFromMediaType
+MFCreateReusableByteStream
+MFCreateSample
+MFCreateSocket
+MFCreateSocketListener
+MFCreateSourceResolver
+MFCreateSourceResolverInternal
+MFCreateStreamDescriptor
+MFCreateStreamOnMFByteStream
+MFCreateStreamOnMFByteStreamEx
+MFCreateSystemTimeSource
+MFCreateSystemUnderlyingClock
+MFCreateTempFile
+MFCreateTrackedSample
+MFCreateTransformActivate
+MFCreateURLFromPath
+MFCreateUdpSockets
+MFCreateVideoMediaType
+MFCreateVideoMediaTypeFromBitMapInfoHeader
+MFCreateVideoMediaTypeFromBitMapInfoHeaderEx
+MFCreateVideoMediaTypeFromSubtype
+MFCreateVideoMediaTypeFromVideoInfoHeader
+MFCreateVideoMediaTypeFromVideoInfoHeader2
+MFCreateVideoSampleAllocatorEx
+MFCreateWICBitmapBuffer
+MFCreateWaveFormatExFromMFMediaType
+MFDeserializeAttributesFromStream
+MFDeserializeEvent
+MFDeserializeMediaTypeFromStream
+MFDeserializePresentationDescriptor
+MFEndCreateFile
+MFEndGetHostByName
+MFEndRegisterWorkQueueWithMMCSS
+MFEndUnregisterWorkQueueWithMMCSS
+MFFrameRateToAverageTimePerFrame
+MFFreeAdaptersAddresses
+MFGetAdaptersAddresses
+MFGetAttributesAsBlob
+MFGetAttributesAsBlobSize
+MFGetConfigurationDWORD
+MFGetConfigurationPolicy
+MFGetConfigurationStore
+MFGetConfigurationString
+MFGetContentProtectionSystemCLSID
+MFGetMFTMerit
+MFGetNumericNameFromSockaddr
+MFGetPlaneSize
+MFGetPlatform
+MFGetPluginControl
+MFGetPrivateWorkqueues
+MFGetSockaddrFromNumericName
+MFGetStrideForBitmapInfoHeader
+MFGetSupportedMimeTypes
+MFGetSupportedSchemes
+MFGetSystemTime
+MFGetTimerPeriodicity
+MFGetUncompressedVideoFormat
+MFGetWorkQueueMMCSSClass
+MFGetWorkQueueMMCSSPriority
+MFGetWorkQueueMMCSSTaskId
+MFHeapAlloc
+MFHeapFree
+MFInitAMMediaTypeFromMFMediaType
+MFInitAttributesFromBlob
+MFInitMediaTypeFromAMMediaType
+MFInitMediaTypeFromMFVideoFormat
+MFInitMediaTypeFromMPEG1VideoInfo
+MFInitMediaTypeFromMPEG2VideoInfo
+MFInitMediaTypeFromVideoInfoHeader
+MFInitMediaTypeFromVideoInfoHeader2
+MFInitMediaTypeFromWaveFormatEx
+MFInitVideoFormat
+MFInitVideoFormat_RGB
+MFInvokeCallback
+MFJoinIoPort
+MFIsBottomUpFormat
+MFIsLocallyRegisteredMimeType
+MFJoinWorkQueue
+MFLockDXGIDeviceManager
+MFLockPlatform
+MFLockSharedWorkQueue
+MFLockWorkQueue
+MFMapDX9FormatToDXGIFormat
+MFMapDXGIFormatToDX9Format
+MFPutWaitingWorkItem
+MFPutWorkItem
+MFPutWorkItem2
+MFPutWorkItemEx
+MFPutWorkItemEx2
+MFRecordError
+MFRegisterLocalByteStreamHandler
+MFRegisterLocalSchemeHandler
+MFRegisterPlatformWithMMCSS
+MFRemovePeriodicCallback
+MFScheduleWorkItem
+MFScheduleWorkItemEx
+MFSerializeAttributesToStream
+MFSerializeEvent
+MFSerializeMediaTypeToStream
+MFSerializePresentationDescriptor
+MFSetSockaddrAny
+MFShutdown
+MFStartup
+MFStreamDescriptorProtectMediaType
+MFTEnum
+MFTEnumEx
+MFTGetInfo
+MFTRegister
+MFTRegisterLocal
+MFTRegisterLocalByCLSID
+MFTUnregister
+MFTUnregisterLocal
+MFTUnregisterLocalByCLSID
+MFTraceError
+MFTraceFuncEnter
+MFUnblockThread
+MFUnjoinWorkQueue
+MFUnlockDXGIDeviceManager
+MFUnlockPlatform
+MFUnlockWorkQueue
+MFUnregisterPlatformFromMMCSS
+MFUnwrapMediaType
+MFValidateMediaTypeSize
+MFWrapMediaType
+MFllMulDiv
+PropVariantFromStream
+PropVariantToStream
diff --git a/lib/libc/mingw/lib-common/mfreadwrite.def b/lib/libc/mingw/lib-common/mfreadwrite.def
new file mode 100644
index 0000000000..40d9728b99
--- /dev/null
+++ b/lib/libc/mingw/lib-common/mfreadwrite.def
@@ -0,0 +1,7 @@
+LIBRARY "MFReadWrite.dll"
+EXPORTS
+MFCreateSinkWriterFromMediaSink
+MFCreateSinkWriterFromURL
+MFCreateSourceReaderFromByteStream
+MFCreateSourceReaderFromMediaSource
+MFCreateSourceReaderFromURL
diff --git a/lib/libc/mingw/lib-common/mgmtapi.def b/lib/libc/mingw/lib-common/mgmtapi.def
new file mode 100644
index 0000000000..2c4a67fbb5
--- /dev/null
+++ b/lib/libc/mingw/lib-common/mgmtapi.def
@@ -0,0 +1,17 @@
+;
+; Exports of file mgmtapi.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY mgmtapi.dll
+EXPORTS
+SnmpMgrClose
+SnmpMgrCtl
+SnmpMgrGetTrap
+SnmpMgrGetTrapEx
+SnmpMgrOidToStr
+SnmpMgrOpen
+SnmpMgrRequest
+SnmpMgrStrToOid
+SnmpMgrTrapListen
diff --git a/lib/libc/mingw/lib-common/mmdevapi.def b/lib/libc/mingw/lib-common/mmdevapi.def
new file mode 100644
index 0000000000..4affff516d
--- /dev/null
+++ b/lib/libc/mingw/lib-common/mmdevapi.def
@@ -0,0 +1,3 @@
+LIBRARY "mmdevapi.dll"
+EXPORTS
+ActivateAudioInterfaceAsync
diff --git a/lib/libc/mingw/lib-common/msacm32.def b/lib/libc/mingw/lib-common/msacm32.def
new file mode 100644
index 0000000000..b040149c03
--- /dev/null
+++ b/lib/libc/mingw/lib-common/msacm32.def
@@ -0,0 +1,51 @@
+;
+; Definition file of MSACM32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "MSACM32.dll"
+EXPORTS
+XRegThunkEntry
+acmDriverAddA
+acmDriverAddW
+acmDriverClose
+acmDriverDetailsA
+acmDriverDetailsW
+acmDriverEnum
+acmDriverID
+acmDriverMessage
+acmDriverOpen
+acmDriverPriority
+acmDriverRemove
+acmFilterChooseA
+acmFilterChooseW
+acmFilterDetailsA
+acmFilterDetailsW
+acmFilterEnumA
+acmFilterEnumW
+acmFilterTagDetailsA
+acmFilterTagDetailsW
+acmFilterTagEnumA
+acmFilterTagEnumW
+acmFormatChooseA
+acmFormatChooseW
+acmFormatDetailsA
+acmFormatDetailsW
+acmFormatEnumA
+acmFormatEnumW
+acmFormatSuggest
+acmFormatTagDetailsA
+acmFormatTagDetailsW
+acmFormatTagEnumA
+acmFormatTagEnumW
+acmGetVersion
+acmMessage32
+acmMetrics
+acmStreamClose
+acmStreamConvert
+acmStreamMessage
+acmStreamOpen
+acmStreamPrepareHeader
+acmStreamReset
+acmStreamSize
+acmStreamUnprepareHeader
diff --git a/lib/libc/mingw/lib-common/msdmo.def b/lib/libc/mingw/lib-common/msdmo.def
new file mode 100644
index 0000000000..958b3c1978
--- /dev/null
+++ b/lib/libc/mingw/lib-common/msdmo.def
@@ -0,0 +1,23 @@
+;
+; Exports of file msdmo.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY msdmo.dll
+EXPORTS
+DMOEnum
+DMOGetName
+DMOGetTypes
+DMOGuidToStrA
+DMOGuidToStrW
+DMORegister
+DMOStrToGuidA
+DMOStrToGuidW
+DMOUnregister
+MoCopyMediaType
+MoCreateMediaType
+MoDeleteMediaType
+MoDuplicateMediaType
+MoFreeMediaType
+MoInitMediaType
diff --git a/lib/libc/mingw/lib-common/msdrm.def b/lib/libc/mingw/lib-common/msdrm.def
new file mode 100644
index 0000000000..7476cab4d3
--- /dev/null
+++ b/lib/libc/mingw/lib-common/msdrm.def
@@ -0,0 +1,98 @@
+;
+; Definition file of msdrm.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "msdrm.dll"
+EXPORTS
+DRMAcquireAdvisories
+DRMAcquireIssuanceLicenseTemplate
+DRMAcquireLicense
+DRMActivate
+DRMAddLicense
+DRMAddRightWithUser
+DRMAttest
+DRMCheckSecurity
+DRMClearAllRights
+DRMCloseEnvironmentHandle
+DRMCloseHandle
+DRMClosePubHandle
+DRMCloseQueryHandle
+DRMCloseSession
+DRMConstructCertificateChain
+DRMCreateBoundLicense
+DRMCreateClientSession
+DRMCreateEnablingBitsDecryptor
+DRMCreateEnablingBitsEncryptor
+DRMCreateEnablingPrincipal
+DRMCreateIssuanceLicense
+DRMCreateLicenseStorageSession
+DRMCreateRight
+DRMCreateUser
+DRMDecode
+DRMDeconstructCertificateChain
+DRMDecrypt
+DRMDeleteLicense
+DRMDuplicateEnvironmentHandle
+DRMDuplicateHandle
+DRMDuplicatePubHandle
+DRMDuplicateSession
+DRMEncode
+DRMEncrypt
+DRMEnumerateLicense
+DRMGetApplicationSpecificData
+DRMGetBoundLicenseAttribute
+DRMGetBoundLicenseAttributeCount
+DRMGetBoundLicenseObject
+DRMGetBoundLicenseObjectCount
+DRMGetCertificateChainCount
+DRMGetClientVersion
+DRMGetEnvironmentInfo
+DRMGetInfo
+DRMGetIntervalTime
+DRMGetIssuanceLicenseInfo
+DRMGetIssuanceLicenseTemplate
+DRMGetMetaData
+DRMGetNameAndDescription
+DRMGetOwnerLicense
+DRMGetProcAddress
+DRMGetRevocationPoint
+DRMGetRightExtendedInfo
+DRMGetRightInfo
+DRMGetSecurityProvider
+DRMGetServiceLocation
+DRMGetSignedIssuanceLicense
+DRMGetSignedIssuanceLicenseEx
+DRMGetTime
+DRMGetUnboundLicenseAttribute
+DRMGetUnboundLicenseAttributeCount
+DRMGetUnboundLicenseObject
+DRMGetUnboundLicenseObjectCount
+DRMGetUsagePolicy
+DRMGetUserInfo
+DRMGetUserRights
+DRMGetUsers
+DRMInitEnvironment
+DRMIsActivated
+DRMIsWindowProtected
+DRMLoadLibrary
+DRMParseUnboundLicense
+DRMRegisterContent
+DRMRegisterProtectedWindow
+DRMRegisterRevocationList
+DRMRepair
+DRMSetApplicationSpecificData
+DRMSetGlobalOptions
+DRMSetIntervalTime
+DRMSetMetaData
+DRMSetNameAndDescription
+DRMSetRevocationPoint
+DRMSetUsagePolicy
+DRMVerify
+DRMpCloseFile
+DRMpFileInitialize
+DRMpFileIsProtected
+DRMpFileProtect
+DRMpFileUnprotect
+DRMpFreeMemory
+__AddMachineCertToLicenseStore
diff --git a/lib/libc/mingw/lib-common/msi.def b/lib/libc/mingw/lib-common/msi.def
new file mode 100644
index 0000000000..fc9dac11c1
--- /dev/null
+++ b/lib/libc/mingw/lib-common/msi.def
@@ -0,0 +1,297 @@
+;
+; Definition file of msi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "msi.dll"
+EXPORTS
+MsiAdvertiseProductA
+MsiAdvertiseProductW
+MsiCloseAllHandles
+MsiCloseHandle
+MsiCollectUserInfoA
+MsiCollectUserInfoW
+MsiConfigureFeatureA
+MsiConfigureFeatureFromDescriptorA
+MsiConfigureFeatureFromDescriptorW
+MsiConfigureFeatureW
+MsiConfigureProductA
+MsiConfigureProductW
+MsiCreateRecord
+MsiDatabaseApplyTransformA
+MsiDatabaseApplyTransformW
+MsiDatabaseCommit
+MsiDatabaseExportA
+MsiDatabaseExportW
+MsiDatabaseGenerateTransformA
+MsiDatabaseGenerateTransformW
+MsiDatabaseGetPrimaryKeysA
+MsiDatabaseGetPrimaryKeysW
+MsiDatabaseImportA
+MsiDatabaseImportW
+MsiDatabaseMergeA
+MsiDatabaseMergeW
+MsiDatabaseOpenViewA
+MsiDatabaseOpenViewW
+MsiDoActionA
+MsiDoActionW
+MsiEnableUIPreview
+MsiEnumClientsA
+MsiEnumClientsW
+MsiEnumComponentQualifiersA
+MsiEnumComponentQualifiersW
+MsiEnumComponentsA
+MsiEnumComponentsW
+MsiEnumFeaturesA
+MsiEnumFeaturesW
+MsiEnumProductsA
+MsiEnumProductsW
+MsiEvaluateConditionA
+MsiEvaluateConditionW
+MsiGetLastErrorRecord
+MsiGetActiveDatabase
+MsiGetComponentStateA
+MsiGetComponentStateW
+MsiGetDatabaseState
+MsiGetFeatureCostA
+MsiGetFeatureCostW
+MsiGetFeatureInfoA
+MsiGetFeatureInfoW
+MsiGetFeatureStateA
+MsiGetFeatureStateW
+MsiGetFeatureUsageA
+MsiGetFeatureUsageW
+MsiGetFeatureValidStatesA
+MsiGetFeatureValidStatesW
+MsiGetLanguage
+MsiGetMode
+MsiGetProductCodeA
+MsiGetProductCodeW
+MsiGetProductInfoA
+MsiGetProductInfoFromScriptA
+MsiGetProductInfoFromScriptW
+MsiGetProductInfoW
+MsiGetProductPropertyA
+MsiGetProductPropertyW
+MsiGetPropertyA
+MsiGetPropertyW
+MsiGetSourcePathA
+MsiGetSourcePathW
+MsiGetSummaryInformationA
+MsiGetSummaryInformationW
+MsiGetTargetPathA
+MsiGetTargetPathW
+MsiGetUserInfoA
+MsiGetUserInfoW
+MsiInstallMissingComponentA
+MsiInstallMissingComponentW
+MsiInstallMissingFileA
+MsiInstallMissingFileW
+MsiInstallProductA
+MsiInstallProductW
+MsiLocateComponentA
+MsiLocateComponentW
+MsiOpenDatabaseA
+MsiOpenDatabaseW
+MsiOpenPackageA
+MsiOpenPackageW
+MsiOpenProductA
+MsiOpenProductW
+MsiPreviewBillboardA
+MsiPreviewBillboardW
+MsiPreviewDialogA
+MsiPreviewDialogW
+MsiProcessAdvertiseScriptA
+MsiProcessAdvertiseScriptW
+MsiProcessMessage
+MsiProvideComponentA
+MsiProvideComponentFromDescriptorA
+MsiProvideComponentFromDescriptorW
+MsiProvideComponentW
+MsiProvideQualifiedComponentA
+MsiProvideQualifiedComponentW
+MsiQueryFeatureStateA
+MsiQueryFeatureStateW
+MsiQueryProductStateA
+MsiQueryProductStateW
+MsiRecordDataSize
+MsiRecordGetFieldCount
+MsiRecordGetInteger
+MsiRecordGetStringA
+MsiRecordGetStringW
+MsiRecordIsNull
+MsiRecordReadStream
+MsiRecordSetInteger
+MsiRecordSetStreamA
+MsiRecordSetStreamW
+MsiRecordSetStringA
+MsiRecordSetStringW
+MsiReinstallFeatureA
+MsiReinstallFeatureFromDescriptorA
+MsiReinstallFeatureFromDescriptorW
+MsiReinstallFeatureW
+MsiReinstallProductA
+MsiReinstallProductW
+MsiSequenceA
+MsiSequenceW
+MsiSetComponentStateA
+MsiSetComponentStateW
+MsiSetExternalUIA
+MsiSetExternalUIW
+MsiSetFeatureStateA
+MsiSetFeatureStateW
+MsiSetInstallLevel
+MsiSetInternalUI
+MsiVerifyDiskSpace
+MsiSetMode
+MsiSetPropertyA
+MsiSetPropertyW
+MsiSetTargetPathA
+MsiSetTargetPathW
+MsiSummaryInfoGetPropertyA
+MsiSummaryInfoGetPropertyCount
+MsiSummaryInfoGetPropertyW
+MsiSummaryInfoPersist
+MsiSummaryInfoSetPropertyA
+MsiSummaryInfoSetPropertyW
+MsiUseFeatureA
+MsiUseFeatureW
+MsiVerifyPackageA
+MsiVerifyPackageW
+MsiViewClose
+MsiViewExecute
+MsiViewFetch
+MsiViewGetErrorA
+MsiViewGetErrorW
+MsiViewModify
+MsiDatabaseIsTablePersistentA
+MsiDatabaseIsTablePersistentW
+MsiViewGetColumnInfo
+MsiRecordClearData
+MsiEnableLogA
+MsiEnableLogW
+MsiFormatRecordA
+MsiFormatRecordW
+MsiGetComponentPathA
+MsiGetComponentPathW
+MsiApplyPatchA
+MsiApplyPatchW
+MsiAdvertiseScriptA
+MsiAdvertiseScriptW
+MsiGetPatchInfoA
+MsiGetPatchInfoW
+MsiEnumPatchesA
+MsiEnumPatchesW
+MsiGetProductCodeFromPackageCodeA
+MsiGetProductCodeFromPackageCodeW
+MsiCreateTransformSummaryInfoA
+MsiCreateTransformSummaryInfoW
+MsiQueryFeatureStateFromDescriptorA
+MsiQueryFeatureStateFromDescriptorW
+MsiConfigureProductExA
+MsiConfigureProductExW
+MsiInvalidateFeatureCache
+MsiUseFeatureExA
+MsiUseFeatureExW
+MsiGetFileVersionA
+MsiGetFileVersionW
+MsiLoadStringA
+MsiLoadStringW
+MsiMessageBoxA
+MsiMessageBoxW
+MsiDecomposeDescriptorA
+MsiDecomposeDescriptorW
+MsiProvideQualifiedComponentExA
+MsiProvideQualifiedComponentExW
+MsiEnumRelatedProductsA
+MsiEnumRelatedProductsW
+MsiSetFeatureAttributesA
+MsiSetFeatureAttributesW
+MsiSourceListClearAllA
+MsiSourceListClearAllW
+MsiSourceListAddSourceA
+MsiSourceListAddSourceW
+MsiSourceListForceResolutionA
+MsiSourceListForceResolutionW
+MsiIsProductElevatedA
+MsiIsProductElevatedW
+MsiGetShortcutTargetA
+MsiGetShortcutTargetW
+MsiGetFileHashA
+MsiGetFileHashW
+MsiEnumComponentCostsA
+MsiEnumComponentCostsW
+MsiCreateAndVerifyInstallerDirectory
+MsiGetFileSignatureInformationA
+MsiGetFileSignatureInformationW
+MsiProvideAssemblyA
+MsiProvideAssemblyW
+MsiAdvertiseProductExA
+MsiAdvertiseProductExW
+MsiNotifySidChangeA
+MsiNotifySidChangeW
+MsiOpenPackageExA
+MsiOpenPackageExW
+MsiDeleteUserDataA
+MsiDeleteUserDataW
+Migrate10CachedPackagesA
+Migrate10CachedPackagesW
+MsiRemovePatchesA
+MsiRemovePatchesW
+MsiApplyMultiplePatchesA
+MsiApplyMultiplePatchesW
+MsiExtractPatchXMLDataA
+MsiExtractPatchXMLDataW
+MsiGetPatchInfoExA
+MsiGetPatchInfoExW
+MsiEnumProductsExA
+MsiEnumProductsExW
+MsiGetProductInfoExA
+MsiGetProductInfoExW
+MsiQueryComponentStateA
+MsiQueryComponentStateW
+MsiQueryFeatureStateExA
+MsiQueryFeatureStateExW
+MsiDeterminePatchSequenceA
+MsiDeterminePatchSequenceW
+MsiSourceListAddSourceExA
+MsiSourceListAddSourceExW
+MsiSourceListClearSourceA
+MsiSourceListClearSourceW
+MsiSourceListClearAllExA
+MsiSourceListClearAllExW
+MsiSourceListForceResolutionExA
+MsiSourceListForceResolutionExW
+MsiSourceListEnumSourcesA
+MsiSourceListEnumSourcesW
+MsiSourceListGetInfoA
+MsiSourceListGetInfoW
+MsiSourceListSetInfoA
+MsiSourceListSetInfoW
+MsiEnumPatchesExA
+MsiEnumPatchesExW
+MsiSourceListEnumMediaDisksA
+MsiSourceListEnumMediaDisksW
+MsiSourceListAddMediaDiskA
+MsiSourceListAddMediaDiskW
+MsiSourceListClearMediaDiskA
+MsiSourceListClearMediaDiskW
+MsiDetermineApplicablePatchesA
+MsiDetermineApplicablePatchesW
+MsiMessageBoxExA
+MsiMessageBoxExW
+MsiSetExternalUIRecord
+MsiGetPatchFileListA
+MsiGetPatchFileListW
+MsiBeginTransactionA
+MsiBeginTransactionW
+MsiEndTransaction
+MsiJoinTransaction
+MsiSetOfflineContextW
+MsiEnumComponentsExA
+MsiEnumComponentsExW
+MsiEnumClientsExA
+MsiEnumClientsExW
+MsiGetComponentPathExA
+MsiGetComponentPathExW
+QueryInstanceCount
diff --git a/lib/libc/mingw/lib-common/msimg32.def b/lib/libc/mingw/lib-common/msimg32.def
new file mode 100644
index 0000000000..c6075081ba
--- /dev/null
+++ b/lib/libc/mingw/lib-common/msimg32.def
@@ -0,0 +1,13 @@
+;
+; Exports of file MSIMG32.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY MSIMG32.dll
+EXPORTS
+vSetDdrawflag
+AlphaBlend
+DllInitialize
+GradientFill
+TransparentBlt
diff --git a/lib/libc/mingw/lib-common/msports.def b/lib/libc/mingw/lib-common/msports.def
new file mode 100644
index 0000000000..7836cf32d7
--- /dev/null
+++ b/lib/libc/mingw/lib-common/msports.def
@@ -0,0 +1,19 @@
+;
+; Exports of file MSPORTS.DLL
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY MSPORTS.DLL
+EXPORTS
+ComDBClaimNextFreePort
+ComDBClaimPort
+ComDBClose
+ComDBGetCurrentPortUsage
+ComDBOpen
+ComDBReleasePort
+ComDBResizeDatabase
+ParallelPortPropPageProvider
+PortsClassInstaller
+SerialDisplayAdvancedSettings
+SerialPortPropPageProvider
diff --git a/lib/libc/mingw/lib-common/mstask.def b/lib/libc/mingw/lib-common/mstask.def
new file mode 100644
index 0000000000..d386874876
--- /dev/null
+++ b/lib/libc/mingw/lib-common/mstask.def
@@ -0,0 +1,21 @@
+;
+; Exports of file mstask.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY mstask.dll
+EXPORTS
+ConvertAtJobsToTasks
+DllCanUnloadNow
+DllGetClassObject
+GetNetScheduleAccountInformation
+NetrJobAdd
+NetrJobDel
+NetrJobEnum
+NetrJobGetInfo
+SAGetAccountInformation
+SAGetNSAccountInformation
+SASetAccountInformation
+SASetNSAccountInformation
+SetNetScheduleAccountInformation
diff --git a/lib/libc/mingw/lib-common/mtxdm.def b/lib/libc/mingw/lib-common/mtxdm.def
new file mode 100644
index 0000000000..faef6499b4
--- /dev/null
+++ b/lib/libc/mingw/lib-common/mtxdm.def
@@ -0,0 +1,9 @@
+;
+; Exports of file MTxDM.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY MTxDM.dll
+EXPORTS
+GetDispenserManager
diff --git a/lib/libc/mingw/lib-common/ndfapi.def b/lib/libc/mingw/lib-common/ndfapi.def
new file mode 100644
index 0000000000..f4f3c353d6
--- /dev/null
+++ b/lib/libc/mingw/lib-common/ndfapi.def
@@ -0,0 +1,31 @@
+;
+; Definition file of NDFAPI.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "NDFAPI.DLL"
+EXPORTS
+NdfRunDllDiagnoseIncident
+NdfRunDllDiagnoseNetConnectionIncident
+NdfRunDllDiagnoseWithAnswerFile
+NdfRunDllDuplicateIPDefendingSystem
+NdfRunDllDuplicateIPOffendingSystem
+NdfRunDllHelpTopic
+NdfCancelIncident
+NdfCloseIncident
+NdfCreateConnectivityIncident
+NdfCreateDNSIncident
+NdfCreateGroupingIncident
+NdfCreateInboundIncident
+NdfCreateIncident
+NdfCreateNetConnectionIncident
+NdfCreatePnrpIncident
+NdfCreateSharingIncident
+NdfCreateWebIncident
+NdfCreateWebIncidentEx
+NdfCreateWinSockIncident
+NdfDiagnoseIncident
+NdfExecuteDiagnosis
+NdfGetTraceFile
+NdfRepairIncident
+NdfRepairIncidentEx
diff --git a/lib/libc/mingw/lib-common/netutils.def b/lib/libc/mingw/lib-common/netutils.def
new file mode 100644
index 0000000000..9351512d2d
--- /dev/null
+++ b/lib/libc/mingw/lib-common/netutils.def
@@ -0,0 +1,29 @@
+;
+; Definition file of netutils.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "netutils.dll"
+EXPORTS
+NetApiBufferAllocate
+NetApiBufferFree
+NetApiBufferReallocate
+NetApiBufferSize
+NetRemoteComputerSupports
+NetapipBufferAllocate
+NetpIsComputerNameValid
+NetpIsDomainNameValid
+NetpIsGroupNameValid
+NetpIsRemote
+NetpIsRemoteNameValid
+NetpIsShareNameValid
+NetpIsUncComputerNameValid
+NetpIsUserNameValid
+NetpwListCanonicalize
+NetpwListTraverse
+NetpwNameCanonicalize
+NetpwNameCompare
+NetpwNameValidate
+NetpwPathCanonicalize
+NetpwPathCompare
+NetpwPathType
diff --git a/lib/libc/mingw/lib-common/normaliz.def b/lib/libc/mingw/lib-common/normaliz.def
new file mode 100644
index 0000000000..89663f4b80
--- /dev/null
+++ b/lib/libc/mingw/lib-common/normaliz.def
@@ -0,0 +1,12 @@
+;
+; Definition file of Normaliz.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "Normaliz.dll"
+EXPORTS
+IdnToAscii
+IdnToNameprepUnicode
+IdnToUnicode
+IsNormalizedString
+NormalizeString
diff --git a/lib/libc/mingw/lib-common/ntdsapi.def b/lib/libc/mingw/lib-common/ntdsapi.def
new file mode 100644
index 0000000000..8815d2bfc7
--- /dev/null
+++ b/lib/libc/mingw/lib-common/ntdsapi.def
@@ -0,0 +1,130 @@
+;
+; Definition file of NTDSAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "NTDSAPI.dll"
+EXPORTS
+DsAddCloneDCW
+DsAddSidHistoryA
+DsAddSidHistoryW
+DsBindA
+DsBindByInstanceA
+DsBindByInstanceW
+DsBindToISTGA
+DsBindToISTGW
+DsBindW
+DsBindWithCredA
+DsBindWithCredW
+DsBindWithSpnA
+DsBindWithSpnExA
+DsBindWithSpnExW
+DsBindWithSpnExWWorker
+DsBindWithSpnW
+DsBindingSetTimeout
+DsClientMakeSpnForTargetServerA
+DsClientMakeSpnForTargetServerW
+DsCrackNamesA
+DsCrackNamesW
+DsCrackNamesWWorker
+DsCrackSpn2A
+DsCrackSpn2W
+DsCrackSpn3W
+DsCrackSpn4W
+DsCrackSpnA
+DsCrackSpnW
+DsCrackUnquotedMangledRdnA
+DsCrackUnquotedMangledRdnW
+DsFinishDemotionW
+DsFreeCloneDcResult
+DsFreeDomainControllerInfoA
+DsFreeDomainControllerInfoW
+DsFreeDomainControllerInfoWWorker
+DsFreeNameResultA
+DsFreeNameResultW
+DsFreeNameResultWWorker
+DsFreePasswordCredentials
+DsFreePasswordCredentialsWorker
+DsFreeSchemaGuidMapA
+DsFreeSchemaGuidMapW
+DsFreeSpnArrayA
+DsFreeSpnArrayW
+DsGetBindAddrW
+DsGetBindAnnotW
+DsGetBindInstGuid
+DsGetDomainControllerInfoA
+DsGetDomainControllerInfoW
+DsGetDomainControllerInfoWWorker
+DsGetRdnW
+DsGetSpnA
+DsGetSpnW
+DsInheritSecurityIdentityA
+DsInheritSecurityIdentityW
+DsInitDemotionW
+DsIsMangledDnA
+DsIsMangledDnW
+DsIsMangledRdnValueA
+DsIsMangledRdnValueW
+DsListDomainsInSiteA
+DsListDomainsInSiteW
+DsListInfoForServerA
+DsListInfoForServerW
+DsListRolesA
+DsListRolesW
+DsListServersForDomainInSiteA
+DsListServersForDomainInSiteW
+DsListServersInSiteA
+DsListServersInSiteW
+DsListSitesA
+DsListSitesW
+DsLogEntry
+DsMakePasswordCredentialsA
+DsMakePasswordCredentialsW
+DsMakePasswordCredentialsWWorker
+DsMakeSpnA
+DsMakeSpnW
+DsMapSchemaGuidsA
+DsMapSchemaGuidsW
+DsQuerySitesByCostA
+DsQuerySitesByCostW
+DsQuerySitesFree
+DsQuoteRdnValueA
+DsQuoteRdnValueW
+DsRemoveDsDomainA
+DsRemoveDsDomainW
+DsRemoveDsServerA
+DsRemoveDsServerW
+DsReplicaAddA
+DsReplicaAddW
+DsReplicaConsistencyCheck
+DsReplicaDelA
+DsReplicaDelW
+DsReplicaDemotionW
+DsReplicaFreeInfo
+DsReplicaGetInfo2W
+DsReplicaGetInfoW
+DsReplicaModifyA
+DsReplicaModifyW
+DsReplicaSyncA
+DsReplicaSyncAllA
+DsReplicaSyncAllW
+DsReplicaSyncW
+DsReplicaUpdateRefsA
+DsReplicaUpdateRefsW
+DsReplicaVerifyObjectsA
+DsReplicaVerifyObjectsW
+DsServerRegisterSpnA
+DsServerRegisterSpnW
+DsUnBindA
+DsUnBindW
+DsUnBindWWorker
+DsUnquoteRdnValueA
+DsUnquoteRdnValueW
+DsWriteAccountSpnA
+DsWriteAccountSpnW
+DsaopBind
+DsaopBindWithCred
+DsaopBindWithSpn
+DsaopExecuteScript
+DsaopPrepareScript
+DsaopUnBind
diff --git a/lib/libc/mingw/lib-common/oleacc.def b/lib/libc/mingw/lib-common/oleacc.def
new file mode 100644
index 0000000000..45dd4247ab
--- /dev/null
+++ b/lib/libc/mingw/lib-common/oleacc.def
@@ -0,0 +1,31 @@
+;
+; Definition file of OLEACC.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "OLEACC.dll"
+EXPORTS
+AccGetRunningUtilityState
+AccNotifyTouchInteraction
+AccSetRunningUtilityState
+AccessibleChildren
+AccessibleObjectFromEvent
+AccessibleObjectFromPoint
+AccessibleObjectFromWindow
+AccessibleObjectFromWindowTimeout
+CreateStdAccessibleObject
+CreateStdAccessibleProxyA
+CreateStdAccessibleProxyW
+GetOleaccVersionInfo
+GetProcessHandleFromHwnd
+GetRoleTextA
+GetRoleTextW
+GetStateTextA
+GetStateTextW
+IID_IAccessible
+IID_IAccessibleHandler
+LIBID_Accessibility
+LresultFromObject
+ObjectFromLresult
+PropMgrClient_LookupProp
+WindowFromAccessibleObject
diff --git a/lib/libc/mingw/lib-common/oledlg.def b/lib/libc/mingw/lib-common/oledlg.def
new file mode 100644
index 0000000000..7bbdbb7b68
--- /dev/null
+++ b/lib/libc/mingw/lib-common/oledlg.def
@@ -0,0 +1,30 @@
+;
+; Definition file of oledlg.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "oledlg.dll"
+EXPORTS
+OleUIAddVerbMenuA
+OleUICanConvertOrActivateAs
+OleUIInsertObjectA
+OleUIPasteSpecialA
+OleUIEditLinksA
+OleUIChangeIconA
+OleUIConvertA
+OleUIBusyA
+OleUIUpdateLinksA
+OleUIPromptUserA
+OleUIObjectPropertiesA
+OleUIChangeSourceA
+OleUIAddVerbMenuW
+OleUIBusyW
+OleUIChangeIconW
+OleUIChangeSourceW
+OleUIConvertW
+OleUIEditLinksW
+OleUIInsertObjectW
+OleUIObjectPropertiesW
+OleUIPasteSpecialW
+OleUIPromptUserW
+OleUIUpdateLinksW
diff --git a/lib/libc/mingw/lib-common/p2p.def b/lib/libc/mingw/lib-common/p2p.def
new file mode 100644
index 0000000000..e5ba098661
--- /dev/null
+++ b/lib/libc/mingw/lib-common/p2p.def
@@ -0,0 +1,119 @@
+;
+; Definition file of P2P.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "P2P.dll"
+EXPORTS
+PeerGroupHandlePowerEvent
+PeerCollabAddContact
+PeerCollabAsyncInviteContact
+PeerCollabAsyncInviteEndpoint
+PeerCollabCancelInvitation
+PeerCollabCloseHandle
+PeerCollabDeleteContact
+PeerCollabDeleteEndpointData
+PeerCollabDeleteObject
+PeerCollabEnumApplicationRegistrationInfo
+PeerCollabEnumApplications
+PeerCollabEnumContacts
+PeerCollabEnumEndpoints
+PeerCollabEnumObjects
+PeerCollabEnumPeopleNearMe
+PeerCollabExportContact
+PeerCollabGetAppLaunchInfo
+PeerCollabGetApplicationRegistrationInfo
+PeerCollabGetContact
+PeerCollabGetEndpointName
+PeerCollabGetEventData
+PeerCollabGetInvitationResponse
+PeerCollabGetPresenceInfo
+PeerCollabGetSigninOptions
+PeerCollabInviteContact
+PeerCollabInviteEndpoint
+PeerCollabParseContact
+PeerCollabQueryContactData
+PeerCollabRefreshEndpointData
+PeerCollabRegisterApplication
+PeerCollabRegisterEvent
+PeerCollabSetEndpointName
+PeerCollabSetObject
+PeerCollabSetPresenceInfo
+PeerCollabShutdown
+PeerCollabSignin
+PeerCollabSignout
+PeerCollabStartup
+PeerCollabSubscribeEndpointData
+PeerCollabUnregisterApplication
+PeerCollabUnregisterEvent
+PeerCollabUnsubscribeEndpointData
+PeerCollabUpdateContact
+PeerCreatePeerName
+PeerEndEnumeration
+PeerEnumGroups
+PeerEnumIdentities
+PeerFreeData
+PeerGetItemCount
+PeerGetNextItem
+PeerGroupAddRecord
+PeerGroupClose
+PeerGroupCloseDirectConnection
+PeerGroupConnect
+PeerGroupConnectByAddress
+PeerGroupCreate
+PeerGroupCreateInvitation
+PeerGroupCreatePasswordInvitation
+PeerGroupDelete
+PeerGroupDeleteRecord
+PeerGroupEnumConnections
+PeerGroupEnumMembers
+PeerGroupEnumRecords
+PeerGroupExportConfig
+PeerGroupExportDatabase
+PeerGroupGetEventData
+PeerGroupGetProperties
+PeerGroupGetRecord
+PeerGroupGetStatus
+PeerGroupImportConfig
+PeerGroupImportDatabase
+PeerGroupIssueCredentials
+PeerGroupJoin
+PeerGroupOpen
+PeerGroupOpenDirectConnection
+PeerGroupParseInvitation
+PeerGroupPasswordJoin
+PeerGroupPeerTimeToUniversalTime
+PeerGroupRegisterEvent
+PeerGroupResumePasswordAuthentication
+PeerGroupSearchRecords
+PeerGroupSendData
+PeerGroupSetProperties
+PeerGroupShutdown
+PeerGroupStartup
+PeerGroupUniversalTimeToPeerTime
+PeerGroupUnregisterEvent
+PeerGroupUpdateRecord
+PeerHostNameToPeerName
+PeerIdentityCreate
+PeerIdentityDelete
+PeerIdentityExport
+PeerIdentityGetCert
+PeerIdentityGetCryptKey
+PeerIdentityGetDefault
+PeerIdentityGetFriendlyName
+PeerIdentityGetXML
+PeerIdentityImport
+PeerIdentitySetFriendlyName
+PeerNameToPeerHostName
+PeerPnrpEndResolve
+PeerPnrpGetCloudInfo
+PeerPnrpGetEndpoint
+PeerPnrpRegister
+PeerPnrpResolve
+PeerPnrpShutdown
+PeerPnrpStartResolve
+PeerPnrpStartup
+PeerPnrpUnregister
+PeerPnrpUpdateRegistration
+PeerSSPAddCredentials
+PeerSSPRemoveCredentials
diff --git a/lib/libc/mingw/lib-common/p2pgraph.def b/lib/libc/mingw/lib-common/p2pgraph.def
new file mode 100644
index 0000000000..c4fbd08d8a
--- /dev/null
+++ b/lib/libc/mingw/lib-common/p2pgraph.def
@@ -0,0 +1,47 @@
+;
+; Definition file of P2PGRAPH.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "P2PGRAPH.dll"
+EXPORTS
+PeerGraphForceStopPresencePrivate
+pMemoryHelper DATA
+PeerGraphAddRecord
+PeerGraphClose
+PeerGraphCloseDirectConnection
+PeerGraphConnect
+PeerGraphCreate
+PeerGraphDelete
+PeerGraphDeleteRecord
+PeerGraphEndEnumeration
+PeerGraphEnumConnections
+PeerGraphEnumNodes
+PeerGraphEnumRecords
+PeerGraphExportDatabase
+PeerGraphFreeData
+PeerGraphGetEventData
+PeerGraphGetItemCount
+PeerGraphGetNextItem
+PeerGraphGetNodeInfo
+PeerGraphGetProperties
+PeerGraphGetRecord
+PeerGraphGetStatus
+PeerGraphImportDatabase
+PeerGraphListen
+PeerGraphOpen
+PeerGraphOpenDirectConnection
+PeerGraphPeerTimeToUniversalTime
+PeerGraphRegisterEvent
+PeerGraphSearchRecords
+PeerGraphSendData
+PeerGraphSetNodeAttributes
+PeerGraphSetPresence
+PeerGraphSetProperties
+PeerGraphShutdown
+PeerGraphStartup
+PeerGraphSuspendTimers
+PeerGraphUniversalTimeToPeerTime
+PeerGraphUnregisterEvent
+PeerGraphUpdateRecord
+PeerGraphValidateDeferredRecords
diff --git a/lib/libc/mingw/lib-common/powrprof.def b/lib/libc/mingw/lib-common/powrprof.def
new file mode 100644
index 0000000000..8e8c03d4b8
--- /dev/null
+++ b/lib/libc/mingw/lib-common/powrprof.def
@@ -0,0 +1,116 @@
+;
+; Definition file of POWRPROF.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "POWRPROF.dll"
+EXPORTS
+CallNtPowerInformation
+CanUserWritePwrScheme
+DeletePwrScheme
+DevicePowerClose
+DevicePowerEnumDevices
+DevicePowerOpen
+DevicePowerSetDeviceState
+EnumPwrSchemes
+GUIDFormatToGlobalPowerPolicy
+GUIDFormatToPowerPolicy
+GetActivePwrScheme
+GetCurrentPowerPolicies
+GetPwrCapabilities
+GetPwrDiskSpindownRange
+IsAdminOverrideActive
+IsPwrHibernateAllowed
+IsPwrShutdownAllowed
+IsPwrSuspendAllowed
+LoadCurrentPwrScheme
+MergeLegacyPwrScheme
+PowerApplyPowerRequestOverride
+PowerApplySettingChanges
+PowerCanRestoreIndividualDefaultPowerScheme
+PowerCreatePossibleSetting
+PowerCreateSetting
+PowerCustomizePlatformPowerSettings
+PowerDebugDifPowerPolicies
+PowerDebugDifSystemPowerPolicies
+PowerDebugDumpPowerPolicy
+PowerDebugDumpPowerScheme
+PowerDebugDumpSystemPowerCapabilities
+PowerDebugDumpSystemPowerPolicy
+PowerDeleteScheme
+PowerDeterminePlatformRole
+PowerDeterminePlatformRoleEx
+PowerDuplicateScheme
+PowerEnumerate
+PowerGetActiveScheme
+PowerImportPowerScheme
+PowerInternalDeleteScheme
+PowerInternalDuplicateScheme
+PowerInternalImportPowerScheme
+PowerInternalRestoreDefaultPowerSchemes
+PowerInternalRestoreIndividualDefaultPowerScheme
+PowerInternalSetActiveScheme
+PowerInternalWriteToUserPowerKey
+PowerInformationWithPrivileges
+PowerIsSettingRangeDefined
+PowerOpenSystemPowerKey
+PowerOpenUserPowerKey
+PowerPolicyToGUIDFormat
+PowerReadACDefaultIndex
+PowerReadACValue
+PowerReadACValueIndex
+PowerReadDCDefaultIndex
+PowerReadDCValue
+PowerReadDCValueIndex
+PowerReadDescription
+PowerReadFriendlyName
+PowerReadIconResourceSpecifier
+PowerReadPossibleDescription
+PowerReadPossibleFriendlyName
+PowerReadPossibleValue
+PowerReadSecurityDescriptor
+PowerReadSettingAttributes
+PowerReadValueIncrement
+PowerReadValueMax
+PowerReadValueMin
+PowerReadValueUnitsSpecifier
+PowerRegisterSuspendResumeNotification
+PowerRemovePowerSetting
+PowerReplaceDefaultPowerSchemes
+PowerReportThermalEvent
+PowerRestoreDefaultPowerSchemes
+PowerRestoreIndividualDefaultPowerScheme
+PowerSetActiveScheme
+PowerSetAlsBrightnessOffset
+PowerSettingAccessCheck
+PowerSettingAccessCheckEx
+PowerSettingRegisterNotification
+PowerSettingRegisterNotificationEx
+PowerSettingUnregisterNotification
+PowerUnregisterSuspendResumeNotification
+PowerWriteACDefaultIndex
+PowerWriteACValueIndex
+PowerWriteDCDefaultIndex
+PowerWriteDCValueIndex
+PowerWriteDescription
+PowerWriteFriendlyName
+PowerWriteIconResourceSpecifier
+PowerWritePossibleDescription
+PowerWritePossibleFriendlyName
+PowerWritePossibleValue
+PowerWriteSecurityDescriptor
+PowerWriteSettingAttributes
+PowerWriteValueIncrement
+PowerWriteValueMax
+PowerWriteValueMin
+PowerWriteValueUnitsSpecifier
+ReadGlobalPwrPolicy
+ReadProcessorPwrScheme
+ReadPwrScheme
+SetActivePwrScheme
+SetSuspendState
+Sysprep_Generalize_Power
+ValidatePowerPolicies
+WriteGlobalPwrPolicy
+WriteProcessorPwrScheme
+WritePwrScheme
diff --git a/lib/libc/mingw/lib-common/prntvpt.def b/lib/libc/mingw/lib-common/prntvpt.def
new file mode 100644
index 0000000000..5a2d512897
--- /dev/null
+++ b/lib/libc/mingw/lib-common/prntvpt.def
@@ -0,0 +1,35 @@
+LIBRARY "prntvpt.dll"
+EXPORTS
+PTQuerySchemaVersionSupport
+PTOpenProvider
+PTOpenProviderEx
+PTCloseProvider
+BindPTProviderThunk
+PTGetPrintCapabilities
+PTMergeAndValidatePrintTicket
+PTConvertPrintTicketToDevMode
+PTConvertDevModeToPrintTicket
+PTReleaseMemory
+PTGetPrintDeviceCapabilities
+PTGetPrintDeviceResources
+ConvertDevModeToPrintTicketThunk
+ConvertDevModeToPrintTicketThunk2
+ConvertPrintTicketToDevModeThunk
+ConvertPrintTicketToDevModeThunk2
+DllCanUnloadNow
+DllGetClassObject
+DllMain
+DllRegisterServer
+DllUnregisterServer
+GetDeviceDefaultPrintTicketThunk
+GetDeviceNamespacesThunk
+GetPrintCapabilitiesThunk
+GetPrintCapabilitiesThunk2
+GetPrintDeviceCapabilitiesThunk
+GetPrintDeviceCapabilitiesThunk2
+GetPrintDeviceResourcesThunk
+GetPrintDeviceResourcesThunk2
+GetSchemaVersionThunk
+MergeAndValidatePrintTicketThunk
+MergeAndValidatePrintTicketThunk2
+UnbindPTProviderThunk
diff --git a/lib/libc/mingw/lib-common/propsys.def b/lib/libc/mingw/lib-common/propsys.def
new file mode 100644
index 0000000000..911ec39bf1
--- /dev/null
+++ b/lib/libc/mingw/lib-common/propsys.def
@@ -0,0 +1,226 @@
+LIBRARY "PROPSYS.dll"
+EXPORTS
+SHGetPropertyStoreForWindow
+ClearPropVariantArray
+ClearVariantArray
+DllCanUnloadNow
+DllGetClassObject
+DllRegisterServer
+DllUnregisterServer
+GetProxyDllInfo
+InitPropVariantFromBooleanVector
+InitPropVariantFromBuffer
+InitPropVariantFromCLSID
+InitPropVariantFromDoubleVector
+InitPropVariantFromFileTime
+InitPropVariantFromFileTimeVector
+InitPropVariantFromGUIDAsString
+InitPropVariantFromInt16Vector
+InitPropVariantFromInt32Vector
+InitPropVariantFromInt64Vector
+InitPropVariantFromPropVariantVectorElem
+InitPropVariantFromResource
+InitPropVariantFromStrRet
+InitPropVariantFromStringAsVector
+InitPropVariantFromStringVector
+InitPropVariantFromUInt16Vector
+InitPropVariantFromUInt32Vector
+InitPropVariantFromUInt64Vector
+InitPropVariantVectorFromPropVariant
+InitVariantFromBooleanArray
+InitVariantFromBuffer
+InitVariantFromDoubleArray
+InitVariantFromFileTime
+InitVariantFromFileTimeArray
+InitVariantFromGUIDAsString
+InitVariantFromInt16Array
+InitVariantFromInt32Array
+InitVariantFromInt64Array
+InitVariantFromResource
+InitVariantFromStrRet
+InitVariantFromStringArray
+InitVariantFromUInt16Array
+InitVariantFromUInt32Array
+InitVariantFromUInt64Array
+InitVariantFromVariantArrayElem
+PSCoerceToCanonicalValue
+PSCreateAdapterFromPropertyStore
+PSCreateDelayedMultiplexPropertyStore
+PSCreateMemoryPropertyStore
+PSCreateMultiplexPropertyStore
+PSCreatePropertyChangeArray
+PSCreatePropertyStoreFromObject
+PSCreatePropertyStoreFromPropertySetStorage
+PSCreateSimplePropertyChange
+PSEnumeratePropertyDescriptions
+PSFormatForDisplay
+PSFormatForDisplayAlloc
+PSFormatPropertyValue
+PSGetImageReferenceForValue
+PSGetItemPropertyHandler
+PSGetItemPropertyHandlerWithCreateObject
+PSGetNameFromPropertyKey
+PSGetNamedPropertyFromPropertyStorage
+PSGetPropertyDescription
+PSGetPropertyDescriptionByName
+PSGetPropertyDescriptionListFromString
+PSGetPropertyFromPropertyStorage
+PSGetPropertyKeyFromName
+PSGetPropertySystem
+PSGetPropertyValue
+PSLookupPropertyHandlerCLSID
+PSPropertyBag_Delete
+PSPropertyBag_ReadBOOL
+PSPropertyBag_ReadBSTR
+PSPropertyBag_ReadDWORD
+PSPropertyBag_ReadGUID
+PSPropertyBag_ReadInt
+PSPropertyBag_ReadLONG
+PSPropertyBag_ReadPOINTL
+PSPropertyBag_ReadPOINTS
+PSPropertyBag_ReadPropertyKey
+PSPropertyBag_ReadRECTL
+PSPropertyBag_ReadSHORT
+PSPropertyBag_ReadStr
+PSPropertyBag_ReadStrAlloc
+PSPropertyBag_ReadStream
+PSPropertyBag_ReadType
+PSPropertyBag_ReadULONGLONG
+PSPropertyBag_ReadUnknown
+PSPropertyBag_WriteBOOL
+PSPropertyBag_WriteBSTR
+PSPropertyBag_WriteDWORD
+PSPropertyBag_WriteGUID
+PSPropertyBag_WriteInt
+PSPropertyBag_WriteLONG
+PSPropertyBag_WritePOINTL
+PSPropertyBag_WritePOINTS
+PSPropertyBag_WritePropertyKey
+PSPropertyBag_WriteRECTL
+PSPropertyBag_WriteSHORT
+PSPropertyBag_WriteStr
+PSPropertyBag_WriteStream
+PSPropertyBag_WriteULONGLONG
+PSPropertyBag_WriteUnknown
+PSPropertyKeyFromString
+PSRefreshPropertySchema
+PSRegisterPropertySchema
+PSSetPropertyValue
+PSStringFromPropertyKey
+PSUnregisterPropertySchema
+PropVariantChangeType
+PropVariantCompareEx
+PropVariantGetBooleanElem
+PropVariantGetDoubleElem
+PropVariantGetElementCount
+PropVariantGetFileTimeElem
+PropVariantGetInt16Elem
+PropVariantGetInt32Elem
+PropVariantGetInt64Elem
+PropVariantGetStringElem
+PropVariantGetUInt16Elem
+PropVariantGetUInt32Elem
+PropVariantGetUInt64Elem
+PropVariantToBSTR
+PropVariantToBoolean
+PropVariantToBooleanVector
+PropVariantToBooleanVectorAlloc
+PropVariantToBooleanWithDefault
+PropVariantToBuffer
+PropVariantToDouble
+PropVariantToDoubleVector
+PropVariantToDoubleVectorAlloc
+PropVariantToDoubleWithDefault
+PropVariantToFileTime
+PropVariantToFileTimeVector
+PropVariantToFileTimeVectorAlloc
+PropVariantToGUID
+PropVariantToInt16
+PropVariantToInt16Vector
+PropVariantToInt16VectorAlloc
+PropVariantToInt16WithDefault
+PropVariantToInt32
+PropVariantToInt32Vector
+PropVariantToInt32VectorAlloc
+PropVariantToInt32WithDefault
+PropVariantToInt64
+PropVariantToInt64Vector
+PropVariantToInt64VectorAlloc
+PropVariantToInt64WithDefault
+PropVariantToStrRet
+PropVariantToString
+PropVariantToStringAlloc
+PropVariantToStringVector
+PropVariantToStringVectorAlloc
+PropVariantToStringWithDefault
+PropVariantToUInt16
+PropVariantToUInt16Vector
+PropVariantToUInt16VectorAlloc
+PropVariantToUInt16WithDefault
+PropVariantToUInt32
+PropVariantToUInt32Vector
+PropVariantToUInt32VectorAlloc
+PropVariantToUInt32WithDefault
+PropVariantToUInt64
+PropVariantToUInt64Vector
+PropVariantToUInt64VectorAlloc
+PropVariantToUInt64WithDefault
+PropVariantToVariant
+PropVariantToWinRTPropertyValue
+StgDeserializePropVariant
+StgSerializePropVariant
+VariantCompare
+VariantGetBooleanElem
+VariantGetDoubleElem
+VariantGetElementCount
+VariantGetInt16Elem
+VariantGetInt32Elem
+VariantGetInt64Elem
+VariantGetStringElem
+VariantGetUInt16Elem
+VariantGetUInt32Elem
+VariantGetUInt64Elem
+VariantToBoolean
+VariantToBooleanArray
+VariantToBooleanArrayAlloc
+VariantToBooleanWithDefault
+VariantToBuffer
+VariantToDosDateTime
+VariantToDouble
+VariantToDoubleArray
+VariantToDoubleArrayAlloc
+VariantToDoubleWithDefault
+VariantToFileTime
+VariantToGUID
+VariantToInt16
+VariantToInt16Array
+VariantToInt16ArrayAlloc
+VariantToInt16WithDefault
+VariantToInt32
+VariantToInt32Array
+VariantToInt32ArrayAlloc
+VariantToInt32WithDefault
+VariantToInt64
+VariantToInt64Array
+VariantToInt64ArrayAlloc
+VariantToInt64WithDefault
+VariantToPropVariant
+VariantToStrRet
+VariantToString
+VariantToStringAlloc
+VariantToStringArray
+VariantToStringArrayAlloc
+VariantToStringWithDefault
+VariantToUInt16
+VariantToUInt16Array
+VariantToUInt16ArrayAlloc
+VariantToUInt16WithDefault
+VariantToUInt32
+VariantToUInt32Array
+VariantToUInt32ArrayAlloc
+VariantToUInt32WithDefault
+VariantToUInt64
+VariantToUInt64Array
+VariantToUInt64ArrayAlloc
+VariantToUInt64WithDefault
+WinRTPropertyValueToPropVariant
diff --git a/lib/libc/mingw/lib-common/qwave.def b/lib/libc/mingw/lib-common/qwave.def
new file mode 100644
index 0000000000..f95058dd0f
--- /dev/null
+++ b/lib/libc/mingw/lib-common/qwave.def
@@ -0,0 +1,21 @@
+;
+; Definition file of qwave.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "qwave.dll"
+EXPORTS
+QDLHPathDiagnostics
+QDLHStartDiagnosingPath
+QOSAddSocketToFlow
+QOSCancel
+QOSCloseHandle
+QOSCreateHandle
+QOSEnumerateFlows
+QOSNotifyFlow
+QOSQueryFlow
+QOSRemoveSocketFromFlow
+QOSSetFlow
+QOSStartTrackingClient
+QOSStopTrackingClient
+ServiceMain
diff --git a/lib/libc/mingw/lib-common/resutils.def b/lib/libc/mingw/lib-common/resutils.def
new file mode 100644
index 0000000000..faf4d09d36
--- /dev/null
+++ b/lib/libc/mingw/lib-common/resutils.def
@@ -0,0 +1,128 @@
+;
+; Definition file of RESUTILS.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "RESUTILS.dll"
+EXPORTS
+CloseClusterCryptProvider
+ClusWorkerCheckTerminate
+ClusWorkerCreate
+ClusWorkerStart
+ClusWorkerTerminate
+ClusterClearBackupStateForSharedVolume
+ClusterDecrypt
+ClusterEncrypt
+ClusterEnumTasks
+ClusterFileShareCreate
+ClusterFileShareDelete
+ClusterFileShareUpdate
+ClusterFreeTaskInfo
+ClusterFreeTaskList
+ClusterGetTaskNode
+ClusterGetVolumeNameForVolumeMountPoint
+ClusterGetVolumePathName
+ClusterIsClusterDisk
+ClusterIsPathOnSharedVolume
+ClusterPrepareSharedVolumeForBackup
+ClusterSharedVolumeCheckSnapshotPresence
+ClusterSharedVolumeCreateSnapshot
+ClusterSharedVolumeReleaseSnapshot
+ClusterTaskChangeFromXML
+ClusterTaskChangeFromXMLFile
+ClusterTaskChange_TS_V1
+ClusterTaskCreateFromXML
+ClusterTaskCreateFromXMLFile
+ClusterTaskCreate_TS_V1
+ClusterTaskDelete
+ClusterTaskDelete_TS_V1
+ClusterTaskExists_TS_V1
+ClusterTaskQuery
+CreateClusterStorageSpacesClustering
+CreateClusterStorageSpacesResourceLocator
+CreateClusterStorageSpacesSubProvider
+FreeClusterCrypt
+OpenClusterCryptProvider
+ResUtilAddUnknownProperties
+ResUtilCreateDirectoryTree
+ResUtilDupParameterBlock
+ResUtilDupString
+ResUtilEnumPrivateProperties
+ResUtilEnumProperties
+ResUtilEnumResources
+ResUtilEnumResourcesEx
+ResUtilEnumResourcesEx2
+ResUtilExpandEnvironmentStrings
+ResUtilFindBinaryProperty
+ResUtilFindDependentDiskResourceDriveLetter
+ResUtilFindDwordProperty
+ResUtilFindExpandSzProperty
+ResUtilFindExpandedSzProperty
+ResUtilFindFileTimeProperty
+ResUtilFindLongProperty
+ResUtilFindMultiSzProperty
+ResUtilFindSzProperty
+ResUtilFreeEnvironment
+ResUtilFreeParameterBlock
+ResUtilGetAllProperties
+ResUtilGetBinaryProperty
+ResUtilGetBinaryValue
+ResUtilGetClusterRoleState
+ResUtilGetCoreClusterResources
+ResUtilGetCoreClusterResourcesEx
+ResUtilGetDwordProperty
+ResUtilGetDwordValue
+ResUtilGetEnvironmentWithNetName
+ResUtilGetFileTimeProperty
+ResUtilGetLongProperty
+ResUtilGetMultiSzProperty
+ResUtilGetPrivateProperties
+ResUtilGetProperties
+ResUtilGetPropertiesToParameterBlock
+ResUtilGetProperty
+ResUtilGetPropertyFormats
+ResUtilGetPropertySize
+ResUtilGetQwordValue
+ResUtilGetResourceDependency
+ResUtilGetResourceDependencyByClass
+ResUtilGetResourceDependencyByClassEx
+ResUtilGetResourceDependencyByName
+ResUtilGetResourceDependencyByNameAndClass
+ResUtilGetResourceDependencyByNameEx
+ResUtilGetResourceDependencyEx
+ResUtilGetResourceDependentIPAddressProps
+ResUtilGetResourceName
+ResUtilGetResourceNameDependency
+ResUtilGetResourceNameDependencyEx
+ResUtilGetSzProperty
+ResUtilGetSzValue
+ResUtilIsPathValid
+ResUtilIsResourceClassEqual
+ResUtilPropertyListFromParameterBlock
+ResUtilRemoveResourceServiceEnvironment
+ResUtilResourceTypesEqual
+ResUtilResourcesEqual
+ResUtilSetBinaryValue
+ResUtilSetDwordValue
+ResUtilSetExpandSzValue
+ResUtilSetMultiSzValue
+ResUtilSetPrivatePropertyList
+ResUtilSetPropertyParameterBlock
+ResUtilSetPropertyParameterBlockEx
+ResUtilSetPropertyTable
+ResUtilSetPropertyTableEx
+ResUtilSetQwordValue
+ResUtilSetResourceServiceEnvironment
+ResUtilSetResourceServiceStartParameters
+ResUtilSetResourceServiceStartParametersEx
+ResUtilSetSzValue
+ResUtilSetUnknownProperties
+ResUtilSetValueEx
+ResUtilStartResourceService
+ResUtilStopResourceService
+ResUtilStopService
+ResUtilTerminateServiceProcessFromResDll
+ResUtilVerifyPrivatePropertyList
+ResUtilVerifyPropertyTable
+ResUtilVerifyResourceService
+ResUtilVerifyService
diff --git a/lib/libc/mingw/lib-common/rstrtmgr.def b/lib/libc/mingw/lib-common/rstrtmgr.def
new file mode 100644
index 0000000000..6a035641f8
--- /dev/null
+++ b/lib/libc/mingw/lib-common/rstrtmgr.def
@@ -0,0 +1,19 @@
+;
+; Definition file of RstrtMgr.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "RstrtMgr.DLL"
+EXPORTS
+RmAddFilter
+RmCancelCurrentTask
+RmEndSession
+RmGetFilterList
+RmGetList
+RmJoinSession
+RmRegisterResources
+RmRemoveFilter
+RmReserveHeap
+RmRestart
+RmShutdown
+RmStartSession
diff --git a/lib/libc/mingw/lib-common/samcli.def b/lib/libc/mingw/lib-common/samcli.def
new file mode 100644
index 0000000000..be27577802
--- /dev/null
+++ b/lib/libc/mingw/lib-common/samcli.def
@@ -0,0 +1,43 @@
+;
+; Definition file of samcli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "samcli.dll"
+EXPORTS
+NetGetDisplayInformationIndex
+NetGroupAdd
+NetGroupAddUser
+NetGroupDel
+NetGroupDelUser
+NetGroupEnum
+NetGroupGetInfo
+NetGroupGetUsers
+NetGroupSetInfo
+NetGroupSetUsers
+NetLocalGroupAdd
+NetLocalGroupAddMember
+NetLocalGroupAddMembers
+NetLocalGroupDel
+NetLocalGroupDelMember
+NetLocalGroupDelMembers
+NetLocalGroupEnum
+NetLocalGroupGetInfo
+NetLocalGroupGetMembers
+NetLocalGroupSetInfo
+NetLocalGroupSetMembers
+NetQueryDisplayInformation
+NetUserAdd
+NetUserChangePassword
+NetUserDel
+NetUserEnum
+NetUserGetGroups
+NetUserGetInfo
+NetUserGetInternetIdentityInfo
+NetUserGetLocalGroups
+NetUserModalsGet
+NetUserModalsSet
+NetUserSetGroups
+NetUserSetInfo
+NetValidatePasswordPolicy
+NetValidatePasswordPolicyFree
diff --git a/lib/libc/mingw/lib-common/schannel.def b/lib/libc/mingw/lib-common/schannel.def
new file mode 100644
index 0000000000..4be72f0e73
--- /dev/null
+++ b/lib/libc/mingw/lib-common/schannel.def
@@ -0,0 +1,42 @@
+LIBRARY SCHANNEL.dll
+EXPORTS
+SpLsaModeInitialize
+AcceptSecurityContext
+AcquireCredentialsHandleA
+AcquireCredentialsHandleW
+ApplyControlToken
+CloseSslPerformanceData
+CollectSslPerformanceData
+CompleteAuthToken
+DeleteSecurityContext
+EnumerateSecurityPackagesA
+EnumerateSecurityPackagesW
+FreeContextBuffer
+FreeCredentialsHandle
+ImpersonateSecurityContext
+InitSecurityInterfaceA
+InitSecurityInterfaceW
+InitializeSecurityContextA
+InitializeSecurityContextW
+MakeSignature
+OpenSslPerformanceData
+QueryContextAttributesA
+QueryContextAttributesW
+QuerySecurityPackageInfoA
+QuerySecurityPackageInfoW
+RevertSecurityContext
+SealMessage
+SpLsaModeInitialize
+SpUserModeInitialize
+SslCrackCertificate
+SslEmptyCacheA
+SslEmptyCacheW
+SslFreeCertificate
+SslFreeCustomBuffer
+SslGenerateKeyPair
+SslGenerateRandomBits
+SslGetMaximumKeySize
+SslGetServerIdentity
+SslLoadCertificate
+UnsealMessage
+VerifySignature
diff --git a/lib/libc/mingw/lib-common/schedcli.def b/lib/libc/mingw/lib-common/schedcli.def
new file mode 100644
index 0000000000..ce5ff1dd3d
--- /dev/null
+++ b/lib/libc/mingw/lib-common/schedcli.def
@@ -0,0 +1,11 @@
+;
+; Definition file of schedcli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "schedcli.dll"
+EXPORTS
+NetScheduleJobAdd
+NetScheduleJobDel
+NetScheduleJobEnum
+NetScheduleJobGetInfo
diff --git a/lib/libc/mingw/lib-common/secur32.def b/lib/libc/mingw/lib-common/secur32.def
new file mode 100644
index 0000000000..04c43ad3d9
--- /dev/null
+++ b/lib/libc/mingw/lib-common/secur32.def
@@ -0,0 +1,113 @@
+;
+; Definition file of Secur32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "Secur32.dll"
+EXPORTS
+SecDeleteUserModeContext
+SecInitUserModeContext
+CloseLsaPerformanceData
+CollectLsaPerformanceData
+OpenLsaPerformanceData
+AcceptSecurityContext
+AcquireCredentialsHandleA
+AcquireCredentialsHandleW
+AddCredentialsA
+AddCredentialsW
+AddSecurityPackageA
+AddSecurityPackageW
+ApplyControlToken
+ChangeAccountPasswordA
+ChangeAccountPasswordW
+CompleteAuthToken
+CredMarshalTargetInfo
+CredParseUserNameWithType
+CredUnmarshalTargetInfo
+DecryptMessage
+DeleteSecurityContext
+DeleteSecurityPackageA
+DeleteSecurityPackageW
+EncryptMessage
+EnumerateSecurityPackagesA
+EnumerateSecurityPackagesW
+ExportSecurityContext
+FreeContextBuffer
+FreeCredentialsHandle
+GetComputerObjectNameA
+GetComputerObjectNameW
+GetSecurityUserInfo
+GetUserNameExA
+GetUserNameExW
+ImpersonateSecurityContext
+ImportSecurityContextA
+ImportSecurityContextW
+InitSecurityInterfaceA
+InitSecurityInterfaceW
+InitializeSecurityContextA
+InitializeSecurityContextW
+LsaCallAuthenticationPackage
+LsaConnectUntrusted
+LsaDeregisterLogonProcess
+LsaEnumerateLogonSessions
+LsaFreeReturnBuffer
+LsaGetLogonSessionData
+LsaLogonUser
+LsaLookupAuthenticationPackage
+LsaRegisterLogonProcess
+LsaRegisterPolicyChangeNotification
+LsaUnregisterPolicyChangeNotification
+MakeSignature
+QueryContextAttributesA
+QueryContextAttributesW
+QueryCredentialsAttributesA
+QueryCredentialsAttributesW
+QuerySecurityContextToken
+QuerySecurityPackageInfoA
+QuerySecurityPackageInfoW
+RevertSecurityContext
+SaslAcceptSecurityContext
+SaslEnumerateProfilesA
+SaslEnumerateProfilesW
+SaslGetContextOption
+SaslGetProfilePackageA
+SaslGetProfilePackageW
+SaslIdentifyPackageA
+SaslIdentifyPackageW
+SaslInitializeSecurityContextA
+SaslInitializeSecurityContextW
+SaslSetContextOption
+SealMessage
+SecCacheSspiPackages
+SeciAllocateAndSetCallFlags
+SeciAllocateAndSetIPAddress
+SeciFreeCallContext
+SecpFreeMemory
+SecpSetIPAddress
+SecpTranslateName
+SecpTranslateNameEx
+SetContextAttributesA
+SetContextAttributesW
+SetCredentialsAttributesA
+SetCredentialsAttributesW
+SspiCompareAuthIdentities
+SspiCopyAuthIdentity
+SspiDecryptAuthIdentity
+SspiEncodeAuthIdentityAsStrings
+SspiEncodeStringsAsAuthIdentity
+SspiEncryptAuthIdentity
+SspiExcludePackage
+SspiFreeAuthIdentity
+SspiGetTargetHostName
+SspiIsAuthIdentityEncrypted
+SspiLocalFree
+SspiMarshalAuthIdentity
+SspiPrepareForCredRead
+SspiPrepareForCredWrite
+SspiUnmarshalAuthIdentity
+SspiValidateAuthIdentity
+SspiZeroAuthIdentity
+TranslateNameA
+TranslateNameW
+UnsealMessage
+VerifySignature
diff --git a/lib/libc/mingw/lib-common/sensapi.def b/lib/libc/mingw/lib-common/sensapi.def
new file mode 100644
index 0000000000..a2a0d95569
--- /dev/null
+++ b/lib/libc/mingw/lib-common/sensapi.def
@@ -0,0 +1,11 @@
+;
+; Exports of file SensApi.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY SensApi.dll
+EXPORTS
+IsDestinationReachableA
+IsDestinationReachableW
+IsNetworkAlive
diff --git a/lib/libc/mingw/lib-common/setupapi.def b/lib/libc/mingw/lib-common/setupapi.def
new file mode 100644
index 0000000000..495f1e8078
--- /dev/null
+++ b/lib/libc/mingw/lib-common/setupapi.def
@@ -0,0 +1,766 @@
+;
+; Definition file of SETUPAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "SETUPAPI.dll"
+EXPORTS
+CMP_GetBlockedDriverInfo
+CMP_GetServerSideDeviceInstallFlags
+CMP_Init_Detection
+CMP_RegisterNotification
+CMP_Report_LogOn
+CMP_UnregisterNotification
+CMP_WaitNoPendingInstallEvents
+CMP_WaitServicesAvailable
+CM_Add_Driver_PackageW
+CM_Add_Empty_Log_Conf
+CM_Add_Empty_Log_Conf_Ex
+CM_Add_IDA
+CM_Add_IDW
+CM_Add_ID_ExA
+CM_Add_ID_ExW
+CM_Add_Range
+CM_Add_Res_Des
+CM_Add_Res_Des_Ex
+CM_Apply_PowerScheme
+CM_Connect_MachineA
+CM_Connect_MachineW
+CM_Create_DevNodeA
+CM_Create_DevNodeW
+CM_Create_DevNode_ExA
+CM_Create_DevNode_ExW
+CM_Create_Range_List
+CM_Delete_Class_Key
+CM_Delete_Class_Key_Ex
+CM_Delete_DevNode_Key
+CM_Delete_DevNode_Key_Ex
+CM_Delete_Device_Interface_KeyA
+CM_Delete_Device_Interface_KeyW
+CM_Delete_Device_Interface_Key_ExA
+CM_Delete_Device_Interface_Key_ExW
+CM_Delete_Driver_PackageW
+CM_Delete_PowerScheme
+CM_Delete_Range
+CM_Detect_Resource_Conflict
+CM_Detect_Resource_Conflict_Ex
+CM_Disable_DevNode
+CM_Disable_DevNode_Ex
+CM_Disconnect_Machine
+CM_Dup_Range_List
+CM_Duplicate_PowerScheme
+CM_Enable_DevNode
+CM_Enable_DevNode_Ex
+CM_Enumerate_Classes
+CM_Enumerate_Classes_Ex
+CM_Enumerate_EnumeratorsA
+CM_Enumerate_EnumeratorsW
+CM_Enumerate_Enumerators_ExA
+CM_Enumerate_Enumerators_ExW
+CM_Find_Range
+CM_First_Range
+CM_Free_Log_Conf
+CM_Free_Log_Conf_Ex
+CM_Free_Log_Conf_Handle
+CM_Free_Range_List
+CM_Free_Res_Des
+CM_Free_Res_Des_Ex
+CM_Free_Res_Des_Handle
+CM_Free_Resource_Conflict_Handle
+CM_Get_Child
+CM_Get_Child_Ex
+CM_Get_Class_Key_NameA
+CM_Get_Class_Key_NameW
+CM_Get_Class_Key_Name_ExA
+CM_Get_Class_Key_Name_ExW
+CM_Get_Class_NameA
+CM_Get_Class_NameW
+CM_Get_Class_Name_ExA
+CM_Get_Class_Name_ExW
+CM_Get_Class_Registry_PropertyA
+CM_Get_Class_Registry_PropertyW
+CM_Get_Depth
+CM_Get_Depth_Ex
+CM_Get_DevNode_Custom_PropertyA
+CM_Get_DevNode_Custom_PropertyW
+CM_Get_DevNode_Custom_Property_ExA
+CM_Get_DevNode_Custom_Property_ExW
+CM_Get_DevNode_Registry_PropertyA
+CM_Get_DevNode_Registry_PropertyW
+CM_Get_DevNode_Registry_Property_ExA
+CM_Get_DevNode_Registry_Property_ExW
+CM_Get_DevNode_Status
+CM_Get_DevNode_Status_Ex
+CM_Get_Device_IDA
+CM_Get_Device_IDW
+CM_Get_Device_ID_ExA
+CM_Get_Device_ID_ExW
+CM_Get_Device_ID_ListA
+CM_Get_Device_ID_ListW
+CM_Get_Device_ID_List_ExA
+CM_Get_Device_ID_List_ExW
+CM_Get_Device_ID_List_SizeA
+CM_Get_Device_ID_List_SizeW
+CM_Get_Device_ID_List_Size_ExA
+CM_Get_Device_ID_List_Size_ExW
+CM_Get_Device_ID_Size
+CM_Get_Device_ID_Size_Ex
+CM_Get_Device_Interface_AliasA
+CM_Get_Device_Interface_AliasW
+CM_Get_Device_Interface_Alias_ExA
+CM_Get_Device_Interface_Alias_ExW
+CM_Get_Device_Interface_ListA
+CM_Get_Device_Interface_ListW
+CM_Get_Device_Interface_List_ExA
+CM_Get_Device_Interface_List_ExW
+CM_Get_Device_Interface_List_SizeA
+CM_Get_Device_Interface_List_SizeW
+CM_Get_Device_Interface_List_Size_ExA
+CM_Get_Device_Interface_List_Size_ExW
+CM_Get_First_Log_Conf
+CM_Get_First_Log_Conf_Ex
+CM_Get_Global_State
+CM_Get_Global_State_Ex
+CM_Get_HW_Prof_FlagsA
+CM_Get_HW_Prof_FlagsW
+CM_Get_HW_Prof_Flags_ExA
+CM_Get_HW_Prof_Flags_ExW
+CM_Get_Hardware_Profile_InfoA
+CM_Get_Hardware_Profile_InfoW
+CM_Get_Hardware_Profile_Info_ExA
+CM_Get_Hardware_Profile_Info_ExW
+CM_Get_Log_Conf_Priority
+CM_Get_Log_Conf_Priority_Ex
+CM_Get_Next_Log_Conf
+CM_Get_Next_Log_Conf_Ex
+CM_Get_Next_Res_Des
+CM_Get_Next_Res_Des_Ex
+CM_Get_Parent
+CM_Get_Parent_Ex
+CM_Get_Res_Des_Data
+CM_Get_Res_Des_Data_Ex
+CM_Get_Res_Des_Data_Size
+CM_Get_Res_Des_Data_Size_Ex
+CM_Get_Resource_Conflict_Count
+CM_Get_Resource_Conflict_DetailsA
+CM_Get_Resource_Conflict_DetailsW
+CM_Get_Sibling
+CM_Get_Sibling_Ex
+CM_Get_Version
+CM_Get_Version_Ex
+CM_Import_PowerScheme
+CM_Install_DevNodeW
+CM_Install_DevNode_ExW
+CM_Intersect_Range_List
+CM_Invert_Range_List
+CM_Is_Dock_Station_Present
+CM_Is_Dock_Station_Present_Ex
+CM_Is_Version_Available
+CM_Is_Version_Available_Ex
+CM_Locate_DevNodeA
+CM_Locate_DevNodeW
+CM_Locate_DevNode_ExA
+CM_Locate_DevNode_ExW
+CM_Merge_Range_List
+CM_Modify_Res_Des
+CM_Modify_Res_Des_Ex
+CM_Move_DevNode
+CM_Move_DevNode_Ex
+CM_Next_Range
+CM_Open_Class_KeyA
+CM_Open_Class_KeyW
+CM_Open_Class_Key_ExA
+CM_Open_Class_Key_ExW
+CM_Open_DevNode_Key
+CM_Open_DevNode_Key_Ex
+CM_Open_Device_Interface_KeyA
+CM_Open_Device_Interface_KeyW
+CM_Open_Device_Interface_Key_ExA
+CM_Open_Device_Interface_Key_ExW
+CM_Query_And_Remove_SubTreeA
+CM_Query_And_Remove_SubTreeW
+CM_Query_And_Remove_SubTree_ExA
+CM_Query_And_Remove_SubTree_ExW
+CM_Query_Arbitrator_Free_Data
+CM_Query_Arbitrator_Free_Data_Ex
+CM_Query_Arbitrator_Free_Size
+CM_Query_Arbitrator_Free_Size_Ex
+CM_Query_Remove_SubTree
+CM_Query_Remove_SubTree_Ex
+CM_Query_Resource_Conflict_List
+CM_Reenumerate_DevNode
+CM_Reenumerate_DevNode_Ex
+CM_Register_Device_Driver
+CM_Register_Device_Driver_Ex
+CM_Register_Device_InterfaceA
+CM_Register_Device_InterfaceW
+CM_Register_Device_Interface_ExA
+CM_Register_Device_Interface_ExW
+CM_Remove_SubTree
+CM_Remove_SubTree_Ex
+CM_Request_Device_EjectA
+CM_Request_Device_EjectW
+CM_Request_Device_Eject_ExA
+CM_Request_Device_Eject_ExW
+CM_Request_Eject_PC
+CM_Request_Eject_PC_Ex
+CM_RestoreAll_DefaultPowerSchemes
+CM_Restore_DefaultPowerScheme
+CM_Run_Detection
+CM_Run_Detection_Ex
+CM_Set_ActiveScheme
+CM_Set_Class_Registry_PropertyA
+CM_Set_Class_Registry_PropertyW
+CM_Set_DevNode_Problem
+CM_Set_DevNode_Problem_Ex
+CM_Set_DevNode_Registry_PropertyA
+CM_Set_DevNode_Registry_PropertyW
+CM_Set_DevNode_Registry_Property_ExA
+CM_Set_DevNode_Registry_Property_ExW
+CM_Set_HW_Prof
+CM_Set_HW_Prof_Ex
+CM_Set_HW_Prof_FlagsA
+CM_Set_HW_Prof_FlagsW
+CM_Set_HW_Prof_Flags_ExA
+CM_Set_HW_Prof_Flags_ExW
+CM_Setup_DevNode
+CM_Setup_DevNode_Ex
+CM_Test_Range_Available
+CM_Uninstall_DevNode
+CM_Uninstall_DevNode_Ex
+CM_Unregister_Device_InterfaceA
+CM_Unregister_Device_InterfaceW
+CM_Unregister_Device_Interface_ExA
+CM_Unregister_Device_Interface_ExW
+CM_Write_UserPowerKey
+DoesUserHavePrivilege
+DriverStoreAddDriverPackageA
+DriverStoreAddDriverPackageW
+DriverStoreDeleteDriverPackageA
+DriverStoreDeleteDriverPackageW
+DriverStoreEnumDriverPackageA
+DriverStoreEnumDriverPackageW
+DriverStoreFindDriverPackageA
+DriverStoreFindDriverPackageW
+ExtensionPropSheetPageProc
+InstallCatalog
+InstallHinfSection
+InstallHinfSectionA
+InstallHinfSectionW
+IsUserAdmin
+MyFree
+MyMalloc
+MyRealloc
+PnpEnumDrpFile
+PnpIsFileAclIntact
+PnpIsFileContentIntact
+PnpIsFilePnpDriver
+PnpRepairWindowsProtectedDriver
+Remote_CMP_GetServerSideDeviceInstallFlags
+Remote_CMP_WaitServicesAvailable
+Remote_CM_Add_Empty_Log_Conf
+Remote_CM_Add_ID
+Remote_CM_Add_Res_Des
+Remote_CM_Connect_Machine_Worker
+Remote_CM_Create_DevNode
+Remote_CM_Delete_Class_Key
+Remote_CM_Delete_DevNode_Key
+Remote_CM_Delete_Device_Interface_Key
+Remote_CM_Disable_DevNode
+Remote_CM_Disconnect_Machine_Worker
+Remote_CM_Enable_DevNode
+Remote_CM_Enumerate_Classes
+Remote_CM_Enumerate_Enumerators
+Remote_CM_Free_Log_Conf
+Remote_CM_Free_Res_Des
+Remote_CM_Get_Child
+Remote_CM_Get_Class_Name
+Remote_CM_Get_Class_Property
+Remote_CM_Get_Class_Property_Keys
+Remote_CM_Get_Class_Registry_Property
+Remote_CM_Get_Depth
+Remote_CM_Get_DevNode_Custom_Property
+Remote_CM_Get_DevNode_Property
+Remote_CM_Get_DevNode_Property_Keys
+Remote_CM_Get_DevNode_Registry_Property
+Remote_CM_Get_DevNode_Status
+Remote_CM_Get_Device_ID_List
+Remote_CM_Get_Device_ID_List_Size
+Remote_CM_Get_Device_Interface_Alias
+Remote_CM_Get_Device_Interface_List
+Remote_CM_Get_Device_Interface_List_Size
+Remote_CM_Get_Device_Interface_Property
+Remote_CM_Get_Device_Interface_Property_Keys
+Remote_CM_Get_First_Log_Conf
+Remote_CM_Get_Global_State
+Remote_CM_Get_HW_Prof_Flags
+Remote_CM_Get_Hardware_Profile_Info
+Remote_CM_Get_Log_Conf_Priority
+Remote_CM_Get_Next_Log_Conf
+Remote_CM_Get_Next_Res_Des
+Remote_CM_Get_Parent
+Remote_CM_Get_Res_Des_Data
+Remote_CM_Get_Res_Des_Data_Size
+Remote_CM_Get_Sibling
+Remote_CM_Get_Version
+Remote_CM_Install_DevNode
+Remote_CM_Is_Dock_Station_Present
+Remote_CM_Is_Version_Available
+Remote_CM_Locate_DevNode_Worker
+Remote_CM_Modify_Res_Des
+Remote_CM_Open_Class_Key
+Remote_CM_Open_DevNode_Key
+Remote_CM_Open_Device_Interface_Key
+Remote_CM_Query_And_Remove_SubTree
+Remote_CM_Query_Arbitrator_Free_Data
+Remote_CM_Query_Arbitrator_Free_Size
+Remote_CM_Query_Resource_Conflict_List_Worker
+Remote_CM_Reenumerate_DevNode
+Remote_CM_Register_Device_Driver
+Remote_CM_Register_Device_Interface
+Remote_CM_Request_Device_Eject
+Remote_CM_Request_Eject_PC
+Remote_CM_Run_Detection
+Remote_CM_Set_Class_Property
+Remote_CM_Set_Class_Registry_Property
+Remote_CM_Set_DevNode_Problem
+Remote_CM_Set_DevNode_Property
+Remote_CM_Set_DevNode_Registry_Property
+Remote_CM_Set_Device_Interface_Property
+Remote_CM_Set_HW_Prof
+Remote_CM_Set_HW_Prof_Flags
+Remote_CM_Setup_DevNode
+Remote_CM_Uninstall_DevNode
+Remote_CM_Unregister_Device_Interface
+SetupAddInstallSectionToDiskSpaceListA
+SetupAddInstallSectionToDiskSpaceListW
+SetupAddSectionToDiskSpaceListA
+SetupAddSectionToDiskSpaceListW
+SetupAddToDiskSpaceListA
+SetupAddToDiskSpaceListW
+SetupAddToSourceListA
+SetupAddToSourceListW
+SetupAdjustDiskSpaceListA
+SetupAdjustDiskSpaceListW
+SetupBackupErrorA
+SetupBackupErrorW
+SetupCancelTemporarySourceList
+SetupCloseFileQueue
+SetupCloseInfFile
+SetupCloseLog
+SetupCommitFileQueue
+SetupCommitFileQueueA
+SetupCommitFileQueueW
+SetupConfigureWmiFromInfSectionA
+SetupConfigureWmiFromInfSectionW
+SetupCopyErrorA
+SetupCopyErrorW
+SetupCopyOEMInfA
+SetupCopyOEMInfW
+SetupCreateDiskSpaceListA
+SetupCreateDiskSpaceListW
+SetupDecompressOrCopyFileA
+SetupDecompressOrCopyFileW
+SetupDefaultQueueCallback
+SetupDefaultQueueCallbackA
+SetupDefaultQueueCallbackW
+SetupDeleteErrorA
+SetupDeleteErrorW
+SetupDestroyDiskSpaceList
+SetupDiApplyPowerScheme
+SetupDiAskForOEMDisk
+SetupDiBuildClassInfoList
+SetupDiBuildClassInfoListExA
+SetupDiBuildClassInfoListExW
+SetupDiBuildDriverInfoList
+SetupDiCallClassInstaller
+SetupDiCancelDriverInfoSearch
+SetupDiChangeState
+SetupDiClassGuidsFromNameA
+SetupDiClassGuidsFromNameExA
+SetupDiClassGuidsFromNameExW
+SetupDiClassGuidsFromNameW
+SetupDiClassNameFromGuidA
+SetupDiClassNameFromGuidExA
+SetupDiClassNameFromGuidExW
+SetupDiClassNameFromGuidW
+SetupDiCreateDevRegKeyA
+SetupDiCreateDevRegKeyW
+SetupDiCreateDeviceInfoA
+SetupDiCreateDeviceInfoList
+SetupDiCreateDeviceInfoListExA
+SetupDiCreateDeviceInfoListExW
+SetupDiCreateDeviceInfoW
+SetupDiCreateDeviceInterfaceA
+SetupDiCreateDeviceInterfaceRegKeyA
+SetupDiCreateDeviceInterfaceRegKeyW
+SetupDiCreateDeviceInterfaceW
+SetupDiDeleteDevRegKey
+SetupDiDeleteDeviceInfo
+SetupDiDeleteDeviceInterfaceData
+SetupDiDeleteDeviceInterfaceRegKey
+SetupDiDestroyClassImageList
+SetupDiDestroyDeviceInfoList
+SetupDiDestroyDriverInfoList
+SetupDiDrawMiniIcon
+SetupDiEnumDeviceInfo
+SetupDiEnumDeviceInterfaces
+SetupDiEnumDriverInfoA
+SetupDiEnumDriverInfoW
+SetupDiGetActualModelsSectionA
+SetupDiGetActualModelsSectionW
+SetupDiGetActualSectionToInstallA
+SetupDiGetActualSectionToInstallExA
+SetupDiGetActualSectionToInstallExW
+SetupDiGetActualSectionToInstallW
+SetupDiGetClassBitmapIndex
+SetupDiGetClassDescriptionA
+SetupDiGetClassDescriptionExA
+SetupDiGetClassDescriptionExW
+SetupDiGetClassDescriptionW
+SetupDiGetClassDevPropertySheetsA
+SetupDiGetClassDevPropertySheetsW
+SetupDiGetClassDevsA
+SetupDiGetClassDevsExA
+SetupDiGetClassDevsExW
+SetupDiGetClassDevsW
+SetupDiGetClassImageIndex
+SetupDiGetClassImageList
+SetupDiGetClassImageListExA
+SetupDiGetClassImageListExW
+SetupDiGetClassInstallParamsA
+SetupDiGetClassInstallParamsW
+SetupDiGetClassPropertyExW
+SetupDiGetClassPropertyKeys
+SetupDiGetClassPropertyKeysExW
+SetupDiGetClassPropertyW
+SetupDiGetClassRegistryPropertyA
+SetupDiGetClassRegistryPropertyW
+SetupDiGetCustomDevicePropertyA
+SetupDiGetCustomDevicePropertyW
+SetupDiGetDeviceInfoListClass
+SetupDiGetDeviceInfoListDetailA
+SetupDiGetDeviceInfoListDetailW
+SetupDiGetDeviceInstallParamsA
+SetupDiGetDeviceInstallParamsW
+SetupDiGetDeviceInstanceIdA
+SetupDiGetDeviceInstanceIdW
+SetupDiGetDeviceInterfaceAlias
+SetupDiGetDeviceInterfaceDetailA
+SetupDiGetDeviceInterfaceDetailW
+SetupDiGetDeviceInterfacePropertyKeys
+SetupDiGetDeviceInterfacePropertyW
+SetupDiGetDevicePropertyKeys
+SetupDiGetDevicePropertyW
+SetupDiGetDeviceRegistryPropertyA
+SetupDiGetDeviceRegistryPropertyW
+SetupDiGetDriverInfoDetailA
+SetupDiGetDriverInfoDetailW
+SetupDiGetDriverInstallParamsA
+SetupDiGetDriverInstallParamsW
+SetupDiGetHwProfileFriendlyNameA
+SetupDiGetHwProfileFriendlyNameExA
+SetupDiGetHwProfileFriendlyNameExW
+SetupDiGetHwProfileFriendlyNameW
+SetupDiGetHwProfileList
+SetupDiGetHwProfileListExA
+SetupDiGetHwProfileListExW
+SetupDiGetINFClassA
+SetupDiGetINFClassW
+SetupDiGetSelectedDevice
+SetupDiGetSelectedDriverA
+SetupDiGetSelectedDriverW
+SetupDiGetWizardPage
+SetupDiInstallClassA
+SetupDiInstallClassExA
+SetupDiInstallClassExW
+SetupDiInstallClassW
+SetupDiInstallDevice
+SetupDiInstallDeviceInterfaces
+SetupDiInstallDriverFiles
+SetupDiLoadClassIcon
+SetupDiLoadDeviceIcon
+SetupDiMoveDuplicateDevice
+SetupDiOpenClassRegKey
+SetupDiOpenClassRegKeyExA
+SetupDiOpenClassRegKeyExW
+SetupDiOpenDevRegKey
+SetupDiOpenDeviceInfoA
+SetupDiOpenDeviceInfoW
+SetupDiOpenDeviceInterfaceA
+SetupDiOpenDeviceInterfaceRegKey
+SetupDiOpenDeviceInterfaceW
+SetupDiRegisterCoDeviceInstallers
+SetupDiRegisterDeviceInfo
+SetupDiRemoveDevice
+SetupDiRemoveDeviceInterface
+SetupDiReportAdditionalSoftwareRequested
+SetupDiReportDeviceInstallError
+SetupDiReportDriverNotFoundError
+SetupDiReportDriverPackageImportationError
+SetupDiReportGenericDriverInstalled
+SetupDiReportPnPDeviceProblem
+SetupDiRestartDevices
+SetupDiSelectBestCompatDrv
+SetupDiSelectDevice
+SetupDiSelectOEMDrv
+SetupDiSetClassInstallParamsA
+SetupDiSetClassInstallParamsW
+SetupDiSetClassPropertyExW
+SetupDiSetClassPropertyW
+SetupDiSetClassRegistryPropertyA
+SetupDiSetClassRegistryPropertyW
+SetupDiSetDeviceInstallParamsA
+SetupDiSetDeviceInstallParamsW
+SetupDiSetDeviceInterfaceDefault
+SetupDiSetDeviceInterfacePropertyW
+SetupDiSetDevicePropertyW
+SetupDiSetDeviceRegistryPropertyA
+SetupDiSetDeviceRegistryPropertyW
+SetupDiSetDriverInstallParamsA
+SetupDiSetDriverInstallParamsW
+SetupDiSetSelectedDevice
+SetupDiSetSelectedDriverA
+SetupDiSetSelectedDriverW
+SetupDiUnremoveDevice
+SetupDuplicateDiskSpaceListA
+SetupDuplicateDiskSpaceListW
+SetupEnumInfSectionsA
+SetupEnumInfSectionsW
+SetupEnumPublishedInfA
+SetupEnumPublishedInfW
+SetupFindFirstLineA
+SetupFindFirstLineW
+SetupFindNextLine
+SetupFindNextMatchLineA
+SetupFindNextMatchLineW
+SetupFreeSourceListA
+SetupFreeSourceListW
+SetupGetBackupInformationA
+SetupGetBackupInformationW
+SetupGetBinaryField
+SetupGetFieldCount
+SetupGetFileCompressionInfoA
+SetupGetFileCompressionInfoExA
+SetupGetFileCompressionInfoExW
+SetupGetFileCompressionInfoW
+SetupGetFileQueueCount
+SetupGetFileQueueFlags
+SetupGetInfDriverStoreLocationA
+SetupGetInfDriverStoreLocationW
+SetupGetInfFileListA
+SetupGetInfFileListW
+SetupGetInfInformationA
+SetupGetInfInformationW
+SetupGetInfPublishedNameA
+SetupGetInfPublishedNameW
+SetupGetInfSections
+SetupGetIntField
+SetupGetLineByIndexA
+SetupGetLineByIndexW
+SetupGetLineCountA
+SetupGetLineCountW
+SetupGetLineTextA
+SetupGetLineTextW
+SetupGetMultiSzFieldA
+SetupGetMultiSzFieldW
+SetupGetNonInteractiveMode
+SetupGetSourceFileLocationA
+SetupGetSourceFileLocationW
+SetupGetSourceFileSizeA
+SetupGetSourceFileSizeW
+SetupGetSourceInfoA
+SetupGetSourceInfoW
+SetupGetStringFieldA
+SetupGetStringFieldW
+SetupGetTargetPathA
+SetupGetTargetPathW
+SetupGetThreadLogToken
+SetupInitDefaultQueueCallback
+SetupInitDefaultQueueCallbackEx
+SetupInitializeFileLogA
+SetupInitializeFileLogW
+SetupInstallFileA
+SetupInstallFileExA
+SetupInstallFileExW
+SetupInstallFileW
+SetupInstallFilesFromInfSectionA
+SetupInstallFilesFromInfSectionW
+SetupInstallFromInfSectionA
+SetupInstallFromInfSectionW
+SetupInstallLogCloseEventGroup
+SetupInstallLogCreateEventGroup
+SetupInstallServicesFromInfSectionA
+SetupInstallServicesFromInfSectionExA
+SetupInstallServicesFromInfSectionExW
+SetupInstallServicesFromInfSectionW
+SetupIterateCabinetA
+SetupIterateCabinetW
+SetupLogErrorA
+SetupLogErrorW
+SetupLogFileA
+SetupLogFileW
+SetupOpenAppendInfFileA
+SetupOpenAppendInfFileW
+SetupOpenFileQueue
+SetupOpenInfFileA
+SetupOpenInfFileW
+SetupOpenLog
+SetupOpenMasterInf
+SetupPrepareQueueForRestoreA
+SetupPrepareQueueForRestoreW
+SetupPromptForDiskA
+SetupPromptForDiskW
+SetupPromptReboot
+SetupQueryDrivesInDiskSpaceListA
+SetupQueryDrivesInDiskSpaceListW
+SetupQueryFileLogA
+SetupQueryFileLogW
+SetupQueryInfFileInformationA
+SetupQueryInfFileInformationW
+SetupQueryInfOriginalFileInformationA
+SetupQueryInfOriginalFileInformationW
+SetupQueryInfVersionInformationA
+SetupQueryInfVersionInformationW
+SetupQuerySourceListA
+SetupQuerySourceListW
+SetupQuerySpaceRequiredOnDriveA
+SetupQuerySpaceRequiredOnDriveW
+SetupQueueCopyA
+SetupQueueCopyIndirectA
+SetupQueueCopyIndirectW
+SetupQueueCopySectionA
+SetupQueueCopySectionW
+SetupQueueCopyW
+SetupQueueDefaultCopyA
+SetupQueueDefaultCopyW
+SetupQueueDeleteA
+SetupQueueDeleteSectionA
+SetupQueueDeleteSectionW
+SetupQueueDeleteW
+SetupQueueRenameA
+SetupQueueRenameSectionA
+SetupQueueRenameSectionW
+SetupQueueRenameW
+SetupRemoveFileLogEntryA
+SetupRemoveFileLogEntryW
+SetupRemoveFromDiskSpaceListA
+SetupRemoveFromDiskSpaceListW
+SetupRemoveFromSourceListA
+SetupRemoveFromSourceListW
+SetupRemoveInstallSectionFromDiskSpaceListA
+SetupRemoveInstallSectionFromDiskSpaceListW
+SetupRemoveSectionFromDiskSpaceListA
+SetupRemoveSectionFromDiskSpaceListW
+SetupRenameErrorA
+SetupRenameErrorW
+SetupScanFileQueue
+SetupScanFileQueueA
+SetupScanFileQueueW
+SetupSetDirectoryIdA
+SetupSetDirectoryIdExA
+SetupSetDirectoryIdExW
+SetupSetDirectoryIdW
+SetupSetFileQueueAlternatePlatformA
+SetupSetFileQueueAlternatePlatformW
+SetupSetFileQueueFlags
+SetupSetNonInteractiveMode
+SetupSetPlatformPathOverrideA
+SetupSetPlatformPathOverrideW
+SetupSetSourceListA
+SetupSetSourceListW
+SetupSetThreadLogToken
+SetupTermDefaultQueueCallback
+SetupTerminateFileLog
+SetupUninstallNewlyCopiedInfs
+SetupUninstallOEMInfA
+SetupUninstallOEMInfW
+SetupVerifyInfFileA
+SetupVerifyInfFileW
+SetupWriteTextLog
+SetupWriteTextLogError
+SetupWriteTextLogInfLine
+UnicodeToMultiByte
+VerifyCatalogFile
+pGetDriverPackageHash
+pSetupAccessRunOnceNodeList
+pSetupAddMiniIconToList
+pSetupAddTagToGroupOrderListEntry
+pSetupAppendPath
+pSetupCaptureAndConvertAnsiArg
+pSetupCenterWindowRelativeToParent
+pSetupCloseTextLogSection
+pSetupConcatenatePaths
+pSetupCreateTextLogSectionA
+pSetupCreateTextLogSectionW
+pSetupDestroyRunOnceNodeList
+pSetupDiBuildInfoDataFromStrongName
+pSetupDiCrimsonLogDeviceInstall
+pSetupDiEnumSelectedDrivers
+pSetupDiGetDriverInfoExtensionId
+pSetupDiGetStrongNameForDriverNode
+pSetupDiInvalidateHelperModules
+pSetupDoLastKnownGoodBackup
+pSetupDoesUserHavePrivilege
+pSetupDuplicateString
+pSetupEnablePrivilege
+pSetupFree
+pSetupGetCurrentDriverSigningPolicy
+pSetupGetDriverDate
+pSetupGetDriverVersion
+pSetupGetField
+pSetupGetFileTitle
+pSetupGetGlobalFlags
+pSetupGetIndirectStringsFromDriverInfo
+pSetupGetInfSections
+pSetupGetQueueFlags
+pSetupGetRealSystemTime
+pSetupGuidFromString
+pSetupHandleFailedVerification
+pSetupInfGetDigitalSignatureInfo
+pSetupInfIsInbox
+pSetupInfSetDigitalSignatureInfo
+pSetupInstallCatalog
+pSetupIsBiDiLocalizedSystemEx
+pSetupIsGuidNull
+pSetupIsLocalSystem
+pSetupIsUserAdmin
+pSetupIsUserTrustedInstaller
+pSetupLoadIndirectString
+pSetupMakeSurePathExists
+pSetupMalloc
+pSetupModifyGlobalFlags
+pSetupMultiByteToUnicode
+pSetupOpenAndMapFileForRead
+pSetupOutOfMemory
+pSetupQueryMultiSzValueToArray
+pSetupRealloc
+pSetupRegistryDelnode
+pSetupRetrieveServiceConfig
+pSetupSetArrayToMultiSzValue
+pSetupSetDriverPackageRestorePoint
+pSetupSetGlobalFlags
+pSetupSetQueueFlags
+pSetupShouldDeviceBeExcluded
+pSetupStringFromGuid
+pSetupStringTableAddString
+pSetupStringTableAddStringEx
+pSetupStringTableDestroy
+pSetupStringTableDuplicate
+pSetupStringTableEnum
+pSetupStringTableGetExtraData
+pSetupStringTableInitialize
+pSetupStringTableInitializeEx
+pSetupStringTableLookUpString
+pSetupStringTableLookUpStringEx
+pSetupStringTableSetExtraData
+pSetupStringTableStringFromId
+pSetupStringTableStringFromIdEx
+pSetupUnicodeToMultiByte
+pSetupUninstallCatalog
+pSetupUnmapAndCloseFile
+pSetupValidateDriverPackage
+pSetupVerifyCatalogFile
+pSetupVerifyQueuedCatalogs
+pSetupWriteLogEntry
+pSetupWriteLogError
diff --git a/lib/libc/mingw/lib-common/slcext.def b/lib/libc/mingw/lib-common/slcext.def
new file mode 100644
index 0000000000..e9a8f3496c
--- /dev/null
+++ b/lib/libc/mingw/lib-common/slcext.def
@@ -0,0 +1,28 @@
+;
+; Definition file of slcext.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "slcext.dll"
+EXPORTS
+;ord_300 @300
+;ord_301 @301
+;ord_302 @302
+;ord_303 @303
+;ord_304 @304
+SLAcquireGenuineTicket
+SLActivateProduct
+SLDepositTokenActivationResponse
+SLFreeTokenActivationCertificates
+SLFreeTokenActivationGrants
+SLGenerateTokenActivationChallenge
+SLGetPackageProductKey
+SLGetPackageProperties
+SLGetPackageToken
+SLGetReferralInformation
+SLGetServerStatus
+SLGetTokenActivationCertificates
+SLGetTokenActivationGrants
+SLInstallPackage
+SLSignTokenActivationChallenge
+SLUninstallPackage
diff --git a/lib/libc/mingw/lib-common/slwga.def b/lib/libc/mingw/lib-common/slwga.def
new file mode 100644
index 0000000000..7784cacb7a
--- /dev/null
+++ b/lib/libc/mingw/lib-common/slwga.def
@@ -0,0 +1,9 @@
+;
+; Definition file of SLWGA.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "SLWGA.dll"
+EXPORTS
+;ord_227 @227
+SLIsGenuineLocal
diff --git a/lib/libc/mingw/lib-common/snmpapi.def b/lib/libc/mingw/lib-common/snmpapi.def
new file mode 100644
index 0000000000..d5828bc4fb
--- /dev/null
+++ b/lib/libc/mingw/lib-common/snmpapi.def
@@ -0,0 +1,46 @@
+;
+; Exports of file snmpapi.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY snmpapi.dll
+EXPORTS
+SnmpSvcAddrIsIpx
+SnmpSvcAddrToSocket
+SnmpSvcGetEnterpriseOID
+SnmpSvcGetUptime
+SnmpSvcGetUptimeFromTime
+SnmpSvcInitUptime
+SnmpSvcSetLogLevel
+SnmpSvcSetLogType
+SnmpTfxClose
+SnmpTfxOpen
+SnmpTfxQuery
+SnmpUtilAnsiToUnicode
+SnmpUtilAsnAnyCpy
+SnmpUtilAsnAnyFree
+SnmpUtilDbgPrint
+SnmpUtilIdsToA
+SnmpUtilMemAlloc
+SnmpUtilMemFree
+SnmpUtilMemReAlloc
+SnmpUtilOctetsCmp
+SnmpUtilOctetsCpy
+SnmpUtilOctetsFree
+SnmpUtilOctetsNCmp
+SnmpUtilOidAppend
+SnmpUtilOidCmp
+SnmpUtilOidCpy
+SnmpUtilOidFree
+SnmpUtilOidNCmp
+SnmpUtilOidToA
+SnmpUtilPrintAsnAny
+SnmpUtilPrintOid
+SnmpUtilUTF8ToUnicode
+SnmpUtilUnicodeToAnsi
+SnmpUtilUnicodeToUTF8
+SnmpUtilVarBindCpy
+SnmpUtilVarBindFree
+SnmpUtilVarBindListCpy
+SnmpUtilVarBindListFree
diff --git a/lib/libc/mingw/lib-common/srvcli.def b/lib/libc/mingw/lib-common/srvcli.def
new file mode 100644
index 0000000000..736290d80d
--- /dev/null
+++ b/lib/libc/mingw/lib-common/srvcli.def
@@ -0,0 +1,64 @@
+;
+; Definition file of srvcli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "srvcli.dll"
+EXPORTS
+I_NetDfsGetVersion
+I_NetServerSetServiceBits
+I_NetServerSetServiceBitsEx
+LocalAliasGet
+LocalFileClose
+LocalFileEnum
+LocalFileEnumEx
+LocalFileGetInfo
+LocalFileGetInfoEx
+LocalSessionDel
+LocalSessionEnum
+LocalSessionEnumEx
+LocalSessionGetInfo
+LocalSessionGetInfoEx
+LocalShareAdd
+LocalShareDelEx
+LocalShareEnum
+LocalShareEnumEx
+LocalShareGetInfo
+LocalShareGetInfoEx
+LocalShareSetInfo
+NetConnectionEnum
+NetFileClose
+NetFileEnum
+NetFileGetInfo
+NetRemoteTOD
+NetServerAliasAdd
+NetServerAliasDel
+NetServerAliasEnum
+NetServerComputerNameAdd
+NetServerComputerNameDel
+NetServerDiskEnum
+NetServerGetInfo
+NetServerSetInfo
+NetServerStatisticsGet
+NetServerTransportAdd
+NetServerTransportAddEx
+NetServerTransportDel
+NetServerTransportEnum
+NetSessionDel
+NetSessionEnum
+NetSessionGetInfo
+NetShareAdd
+NetShareCheck
+NetShareDel
+NetShareDelEx
+NetShareDelSticky
+NetShareEnum
+NetShareEnumSticky
+NetShareGetInfo
+NetShareSetInfo
+NetpsNameCanonicalize
+NetpsNameCompare
+NetpsNameValidate
+NetpsPathCanonicalize
+NetpsPathCompare
+NetpsPathType
diff --git a/lib/libc/mingw/lib-common/sspicli.def b/lib/libc/mingw/lib-common/sspicli.def
new file mode 100644
index 0000000000..8557b5e578
--- /dev/null
+++ b/lib/libc/mingw/lib-common/sspicli.def
@@ -0,0 +1,107 @@
+;
+; Definition file of SspiCli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "SspiCli.dll"
+EXPORTS
+SecDeleteUserModeContext
+SecInitUserModeContext
+SspiUnmarshalAuthIdentityInternal
+AcceptSecurityContext
+AcquireCredentialsHandleA
+AcquireCredentialsHandleW
+AddCredentialsA
+AddCredentialsW
+AddSecurityPackageA
+AddSecurityPackageW
+ApplyControlToken
+ChangeAccountPasswordA
+ChangeAccountPasswordW
+CompleteAuthToken
+CredMarshalTargetInfo
+CredUnmarshalTargetInfo
+DecryptMessage
+DeleteSecurityContext
+DeleteSecurityPackageA
+DeleteSecurityPackageW
+EncryptMessage
+EnumerateSecurityPackagesA
+EnumerateSecurityPackagesW
+ExportSecurityContext
+FreeContextBuffer
+FreeCredentialsHandle
+GetSecurityUserInfo
+GetUserNameExA
+GetUserNameExW
+ImpersonateSecurityContext
+ImportSecurityContextA
+ImportSecurityContextW
+InitSecurityInterfaceA
+InitSecurityInterfaceW
+InitializeSecurityContextA
+InitializeSecurityContextW
+LogonUserExExW
+LsaCallAuthenticationPackage
+LsaConnectUntrusted
+LsaDeregisterLogonProcess
+LsaEnumerateLogonSessions
+LsaFreeReturnBuffer
+LsaGetLogonSessionData
+LsaLogonUser
+LsaLookupAuthenticationPackage
+LsaRegisterLogonProcess
+LsaRegisterPolicyChangeNotification
+LsaUnregisterPolicyChangeNotification
+MakeSignature
+QueryContextAttributesA
+QueryContextAttributesW
+QueryCredentialsAttributesA
+QueryCredentialsAttributesW
+QuerySecurityContextToken
+QuerySecurityPackageInfoA
+QuerySecurityPackageInfoW
+RevertSecurityContext
+SaslAcceptSecurityContext
+SaslEnumerateProfilesA
+SaslEnumerateProfilesW
+SaslGetContextOption
+SaslGetProfilePackageA
+SaslGetProfilePackageW
+SaslIdentifyPackageA
+SaslIdentifyPackageW
+SaslInitializeSecurityContextA
+SaslInitializeSecurityContextW
+SaslSetContextOption
+SealMessage
+SecCacheSspiPackages
+SeciAllocateAndSetCallFlags
+SeciAllocateAndSetIPAddress
+SeciFreeCallContext
+SeciIsProtectedUser
+SetContextAttributesA
+SetContextAttributesW
+SetCredentialsAttributesA
+SetCredentialsAttributesW
+SspiCompareAuthIdentities
+SspiCopyAuthIdentity
+SspiDecryptAuthIdentity
+SspiDecryptAuthIdentityEx
+SspiEncodeAuthIdentityAsStrings
+SspiEncodeStringsAsAuthIdentity
+SspiEncryptAuthIdentity
+SspiEncryptAuthIdentityEx
+SspiExcludePackage
+SspiFreeAuthIdentity
+SspiGetComputerNameForSPN
+SspiGetTargetHostName
+SspiIsAuthIdentityEncrypted
+SspiLocalFree
+SspiMarshalAuthIdentity
+SspiPrepareForCredRead
+SspiPrepareForCredWrite
+SspiUnmarshalAuthIdentity
+SspiValidateAuthIdentity
+SspiZeroAuthIdentity
+UnsealMessage
+VerifySignature
diff --git a/lib/libc/mingw/lib-common/t2embed.def b/lib/libc/mingw/lib-common/t2embed.def
new file mode 100644
index 0000000000..d11f792af9
--- /dev/null
+++ b/lib/libc/mingw/lib-common/t2embed.def
@@ -0,0 +1,22 @@
+;
+; Exports of file t2embed.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY t2embed.dll
+EXPORTS
+TTCharToUnicode
+TTDeleteEmbeddedFont
+TTEmbedFont
+TTEmbedFontEx
+TTEmbedFontFromFileA
+TTEnableEmbeddingForFacename
+TTGetEmbeddedFontInfo
+TTGetEmbeddingType
+TTGetNewFontName
+TTIsEmbeddingEnabled
+TTIsEmbeddingEnabledForFacename
+TTLoadEmbeddedFont
+TTRunValidationTests
+TTRunValidationTestsEx
diff --git a/lib/libc/mingw/lib-common/tapi32.def b/lib/libc/mingw/lib-common/tapi32.def
new file mode 100644
index 0000000000..9907663108
--- /dev/null
+++ b/lib/libc/mingw/lib-common/tapi32.def
@@ -0,0 +1,286 @@
+;
+; Exports of file TAPI32.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY TAPI32.dll
+EXPORTS
+GetTapi16CallbackMsg
+LAddrParamsInited
+LOpenDialAsst
+LocWizardDlgProc
+MMCAddProvider
+MMCConfigProvider
+MMCGetAvailableProviders
+MMCGetDeviceFlags
+MMCGetLineInfo
+MMCGetLineStatus
+MMCGetPhoneInfo
+MMCGetPhoneStatus
+MMCGetProviderList
+MMCGetServerConfig
+MMCInitialize
+MMCRemoveProvider
+MMCSetLineInfo
+MMCSetPhoneInfo
+MMCSetServerConfig
+MMCShutdown
+NonAsyncEventThread
+TAPIWndProc
+TUISPIDLLCallback
+internalConfig
+internalCreateDefLocation
+internalNewLocationW
+internalPerformance
+internalRemoveLocation
+internalRenameLocationW
+lineAccept
+lineAddProvider
+lineAddProviderA
+lineAddProviderW
+lineAddToConference
+lineAgentSpecific
+lineAnswer
+lineBlindTransfer
+lineBlindTransferA
+lineBlindTransferW
+lineClose
+lineCompleteCall
+lineCompleteTransfer
+lineConfigDialog
+lineConfigDialogA
+lineConfigDialogEdit
+lineConfigDialogEditA
+lineConfigDialogEditW
+lineConfigDialogW
+lineConfigProvider
+lineCreateAgentA
+lineCreateAgentSessionA
+lineCreateAgentSessionW
+lineCreateAgentW
+lineDeallocateCall
+lineDevSpecific
+lineDevSpecificFeature
+lineDial
+lineDialA
+lineDialW
+lineDrop
+lineForward
+lineForwardA
+lineForwardW
+lineGatherDigits
+lineGatherDigitsA
+lineGatherDigitsW
+lineGenerateDigits
+lineGenerateDigitsA
+lineGenerateDigitsW
+lineGenerateTone
+lineGetAddressCaps
+lineGetAddressCapsA
+lineGetAddressCapsW
+lineGetAddressID
+lineGetAddressIDA
+lineGetAddressIDW
+lineGetAddressStatus
+lineGetAddressStatusA
+lineGetAddressStatusW
+lineGetAgentActivityListA
+lineGetAgentActivityListW
+lineGetAgentCapsA
+lineGetAgentCapsW
+lineGetAgentGroupListA
+lineGetAgentGroupListW
+lineGetAgentInfo
+lineGetAgentSessionInfo
+lineGetAgentSessionList
+lineGetAgentStatusA
+lineGetAgentStatusW
+lineGetAppPriority
+lineGetAppPriorityA
+lineGetAppPriorityW
+lineGetCallInfo
+lineGetCallInfoA
+lineGetCallInfoW
+lineGetCallStatus
+lineGetConfRelatedCalls
+lineGetCountry
+lineGetCountryA
+lineGetCountryW
+lineGetDevCaps
+lineGetDevCapsA
+lineGetDevCapsW
+lineGetDevConfig
+lineGetDevConfigA
+lineGetDevConfigW
+lineGetGroupListA
+lineGetGroupListW
+lineGetID
+lineGetIDA
+lineGetIDW
+lineGetIcon
+lineGetIconA
+lineGetIconW
+lineGetLineDevStatus
+lineGetLineDevStatusA
+lineGetLineDevStatusW
+lineGetMessage
+lineGetNewCalls
+lineGetNumRings
+lineGetProviderList
+lineGetProviderListA
+lineGetProviderListW
+lineGetProxyStatus
+lineGetQueueInfo
+lineGetQueueListA
+lineGetQueueListW
+lineGetRequest
+lineGetRequestA
+lineGetRequestW
+lineGetStatusMessages
+lineGetTranslateCaps
+lineGetTranslateCapsA
+lineGetTranslateCapsW
+lineHandoff
+lineHandoffA
+lineHandoffW
+lineHold
+lineInitialize
+lineInitializeExA
+lineInitializeExW
+lineMakeCall
+lineMakeCallA
+lineMakeCallW
+lineMonitorDigits
+lineMonitorMedia
+lineMonitorTones
+lineNegotiateAPIVersion
+lineNegotiateExtVersion
+lineOpen
+lineOpenA
+lineOpenW
+linePark
+lineParkA
+lineParkW
+linePickup
+linePickupA
+linePickupW
+linePrepareAddToConference
+linePrepareAddToConferenceA
+linePrepareAddToConferenceW
+lineProxyMessage
+lineProxyResponse
+lineRedirect
+lineRedirectA
+lineRedirectW
+lineRegisterRequestRecipient
+lineReleaseUserUserInfo
+lineRemoveFromConference
+lineRemoveProvider
+lineSecureCall
+lineSendUserUserInfo
+lineSetAgentActivity
+lineSetAgentGroup
+lineSetAgentMeasurementPeriod
+lineSetAgentSessionState
+lineSetAgentState
+lineSetAgentStateEx
+lineSetAppPriority
+lineSetAppPriorityA
+lineSetAppPriorityW
+lineSetAppSpecific
+lineSetCallData
+lineSetCallParams
+lineSetCallPrivilege
+lineSetCallQualityOfService
+lineSetCallTreatment
+lineSetCurrentLocation
+lineSetDevConfig
+lineSetDevConfigA
+lineSetDevConfigW
+lineSetLineDevStatus
+lineSetMediaControl
+lineSetMediaMode
+lineSetNumRings
+lineSetQueueMeasurementPeriod
+lineSetStatusMessages
+lineSetTerminal
+lineSetTollList
+lineSetTollListA
+lineSetTollListW
+lineSetupConference
+lineSetupConferenceA
+lineSetupConferenceW
+lineSetupTransfer
+lineSetupTransferA
+lineSetupTransferW
+lineShutdown
+lineSwapHold
+lineTranslateAddress
+lineTranslateAddressA
+lineTranslateAddressW
+lineTranslateDialog
+lineTranslateDialogA
+lineTranslateDialogW
+lineUncompleteCall
+lineUnhold
+lineUnpark
+lineUnparkA
+lineUnparkW
+phoneClose
+phoneConfigDialog
+phoneConfigDialogA
+phoneConfigDialogW
+phoneDevSpecific
+phoneGetButtonInfo
+phoneGetButtonInfoA
+phoneGetButtonInfoW
+phoneGetData
+phoneGetDevCaps
+phoneGetDevCapsA
+phoneGetDevCapsW
+phoneGetDisplay
+phoneGetGain
+phoneGetHookSwitch
+phoneGetID
+phoneGetIDA
+phoneGetIDW
+phoneGetIcon
+phoneGetIconA
+phoneGetIconW
+phoneGetLamp
+phoneGetMessage
+phoneGetRing
+phoneGetStatus
+phoneGetStatusA
+phoneGetStatusMessages
+phoneGetStatusW
+phoneGetVolume
+phoneInitialize
+phoneInitializeExA
+phoneInitializeExW
+phoneNegotiateAPIVersion
+phoneNegotiateExtVersion
+phoneOpen
+phoneSetButtonInfo
+phoneSetButtonInfoA
+phoneSetButtonInfoW
+phoneSetData
+phoneSetDisplay
+phoneSetGain
+phoneSetHookSwitch
+phoneSetLamp
+phoneSetRing
+phoneSetStatusMessages
+phoneSetVolume
+phoneShutdown
+tapiGetLocationInfo
+tapiGetLocationInfoA
+tapiGetLocationInfoW
+tapiRequestDrop
+tapiRequestMakeCall
+tapiRequestMakeCallA
+tapiRequestMakeCallW
+tapiRequestMediaCall
+tapiRequestMediaCallA
+tapiRequestMediaCallW
diff --git a/lib/libc/mingw/lib-common/tbs.def b/lib/libc/mingw/lib-common/tbs.def
new file mode 100644
index 0000000000..a4093d9890
--- /dev/null
+++ b/lib/libc/mingw/lib-common/tbs.def
@@ -0,0 +1,25 @@
+;
+; Definition file of tbs.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "tbs.dll"
+EXPORTS
+Tbsi_Create_Attestation_From_Log
+Tbsi_Get_TCG_Logs
+GetDeviceID
+GetDeviceIDString
+GetDeviceIDWithTimeout
+Tbsi_Context_Create
+Tbsi_FilterLog
+Tbsi_GetDeviceInfo
+Tbsi_Get_OwnerAuth
+Tbsi_Get_TCG_Log
+Tbsi_Physical_Presence_Command
+Tbsi_Revoke_Attestation
+Tbsi_ShaHash
+Tbsip_Cancel_Commands
+Tbsip_Context_Close
+Tbsip_Submit_Command
+Tbsip_Submit_Command_NonBlocking
+Tbsip_TestMorBit
diff --git a/lib/libc/mingw/lib-common/tdh.def b/lib/libc/mingw/lib-common/tdh.def
new file mode 100644
index 0000000000..f720a99c9b
--- /dev/null
+++ b/lib/libc/mingw/lib-common/tdh.def
@@ -0,0 +1,43 @@
+;
+; Definition file of tdh.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "tdh.dll"
+EXPORTS
+TdhAggregatePayloadFilters
+TdhApplyPayloadFilter
+TdhCleanupPayloadEventFilterDescriptor
+TdhCloseDecodingHandle
+TdhCreatePayloadFilter
+TdhDeletePayloadFilter
+TdhEnumerateManifestProviderEvents
+TdhEnumerateProviderFieldInformation
+TdhEnumerateProviderFilters
+TdhEnumerateProviders
+TdhEnumerateRemoteWBEMProviderFieldInformation
+TdhEnumerateRemoteWBEMProviders
+TdhFormatProperty
+TdhGetAllEventsInformation
+TdhGetDecodingParameter
+TdhGetEventInformation
+TdhGetEventMapInformation
+TdhGetManifestEventInformation
+TdhGetProperty
+TdhGetPropertyOffsetAndSize
+TdhGetPropertySize
+TdhGetWppMessage
+TdhGetWppProperty
+TdhLoadManifest
+TdhLoadManifestFromBinary
+TdhLoadManifestFromMemory
+TdhOpenDecodingHandle
+TdhQueryProviderFieldInformation
+TdhQueryRemoteWBEMProviderFieldInformation
+TdhSetDecodingParameter
+TdhUnloadManifest
+TdhUnloadManifestFromMemory
+TdhValidatePayloadFilter
+TdhpFindMatchClassFromWBEM
+TdhpGetBestTraceEventInfoWBEM
+TdhpGetEventMapInfoWBEM
diff --git a/lib/libc/mingw/lib-common/traffic.def b/lib/libc/mingw/lib-common/traffic.def
new file mode 100644
index 0000000000..b2f5ab7912
--- /dev/null
+++ b/lib/libc/mingw/lib-common/traffic.def
@@ -0,0 +1,29 @@
+;
+; Definition file of TRAFFIC.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "TRAFFIC.dll"
+EXPORTS
+TcAddFilter
+TcAddFlow
+TcCloseInterface
+TcDeleteFilter
+TcDeleteFlow
+TcDeregisterClient
+TcEnumerateFlows
+TcEnumerateInterfaces
+TcGetFlowNameA
+TcGetFlowNameW
+TcGetInterfaceList
+TcModifyFlow
+TcOpenInterfaceA
+TcOpenInterfaceW
+TcQueryFlowA
+TcQueryFlowW
+TcQueryInterface
+TcRegisterClient
+TcSetFlowA
+TcSetFlowW
+TcSetInterface
+TcSetSocketFlow
diff --git a/lib/libc/mingw/lib-common/txfw32.def b/lib/libc/mingw/lib-common/txfw32.def
new file mode 100644
index 0000000000..0e0a63d669
--- /dev/null
+++ b/lib/libc/mingw/lib-common/txfw32.def
@@ -0,0 +1,16 @@
+;
+; Definition file of txfw32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "txfw32.dll"
+EXPORTS
+TxfGetThreadMiniVersionForCreate
+TxfLogCreateFileReadContext
+TxfLogCreateRangeReadContext
+TxfLogDestroyReadContext
+TxfLogReadRecords
+TxfLogRecordGetFileName
+TxfLogRecordGetGenericType
+TxfReadMetadataInfo
+TxfSetThreadMiniVersionForCreate
diff --git a/lib/libc/mingw/lib-common/usp10.def b/lib/libc/mingw/lib-common/usp10.def
new file mode 100644
index 0000000000..30596db5d6
--- /dev/null
+++ b/lib/libc/mingw/lib-common/usp10.def
@@ -0,0 +1,51 @@
+;
+; Definition file of USP10.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "USP10.dll"
+EXPORTS
+LpkPresent
+ScriptApplyDigitSubstitution
+ScriptApplyLogicalWidth
+ScriptBreak
+ScriptCPtoX
+ScriptCacheGetHeight
+ScriptFreeCache
+ScriptGetCMap
+ScriptGetFontAlternateGlyphs
+ScriptGetFontFeatureTags
+ScriptGetFontLanguageTags
+ScriptGetFontProperties
+ScriptGetFontScriptTags
+ScriptGetGlyphABCWidth
+ScriptGetLogicalWidths
+ScriptGetProperties
+ScriptIsComplex
+ScriptItemize
+ScriptItemizeOpenType
+ScriptJustify
+ScriptLayout
+ScriptPlace
+ScriptPlaceOpenType
+ScriptPositionSingleGlyph
+ScriptRecordDigitSubstitution
+ScriptShape
+ScriptShapeOpenType
+ScriptStringAnalyse
+ScriptStringCPtoX
+ScriptStringFree
+ScriptStringGetLogicalWidths
+ScriptStringGetOrder
+ScriptStringOut
+ScriptStringValidate
+ScriptStringXtoCP
+ScriptString_pLogAttr
+ScriptString_pSize
+ScriptString_pcOutChars
+ScriptSubstituteSingleGlyph
+ScriptTextOut
+ScriptXtoCP
+UspAllocCache
+UspAllocTemp
+UspFreeMem
diff --git a/lib/libc/mingw/lib-common/uxtheme.def b/lib/libc/mingw/lib-common/uxtheme.def
new file mode 100644
index 0000000000..bf7369d76b
--- /dev/null
+++ b/lib/libc/mingw/lib-common/uxtheme.def
@@ -0,0 +1,88 @@
+;
+; Definition file of UxTheme.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "UxTheme.dll"
+EXPORTS
+BeginPanningFeedback
+EndPanningFeedback
+UpdatePanningFeedback
+BeginBufferedAnimation
+BeginBufferedPaint
+BufferedPaintClear
+BufferedPaintInit
+BufferedPaintRenderAnimation
+BufferedPaintSetAlpha
+DrawThemeBackgroundEx
+BufferedPaintStopAllAnimations
+BufferedPaintUnInit
+CloseThemeData
+DrawThemeBackground
+DrawThemeEdge
+DrawThemeIcon
+OpenThemeDataEx
+DrawThemeParentBackground
+DrawThemeParentBackgroundEx
+DrawThemeText
+GetImmersiveColorFromColorSetEx
+GetImmersiveUserColorSetPreference
+DrawThemeTextEx
+GetUserColorPreference
+GetColorFromPreference
+EnableThemeDialogTexture
+EnableTheming
+EndBufferedAnimation
+EndBufferedPaint
+GetBufferedPaintBits
+GetBufferedPaintDC
+GetBufferedPaintTargetDC
+GetBufferedPaintTargetRect
+GetCurrentThemeName
+GetThemeAnimationProperty
+GetThemeAnimationTransform
+GetThemeAppProperties
+GetThemeBackgroundContentRect
+GetThemeBackgroundExtent
+GetThemeBackgroundRegion
+GetThemeBitmap
+GetThemeBool
+GetThemeColor
+GetThemeDocumentationProperty
+GetThemeEnumValue
+GetThemeFilename
+GetThemeFont
+GetThemeInt
+GetThemeIntList
+GetThemeMargins
+GetThemeMetric
+GetThemePartSize
+GetThemePosition
+GetThemePropertyOrigin
+GetThemeRect
+GetThemeStream
+GetThemeString
+GetThemeSysBool
+GetThemeSysColor
+GetThemeSysColorBrush
+GetThemeSysFont
+GetThemeSysInt
+GetThemeSysSize
+GetThemeSysString
+GetThemeTextExtent
+GetThemeTextMetrics
+GetThemeTimingFunction
+GetThemeTransitionDuration
+GetWindowTheme
+HitTestThemeBackground
+IsAppThemed
+IsCompositionActive
+IsThemeActive
+IsThemeBackgroundPartiallyTransparent
+IsThemeDialogTextureEnabled
+IsThemePartDefined
+OpenThemeData
+SetThemeAppProperties
+SetWindowTheme
+SetWindowThemeAttribute
+ThemeInitApiHook
diff --git a/lib/libc/mingw/lib-common/virtdisk.def b/lib/libc/mingw/lib-common/virtdisk.def
new file mode 100644
index 0000000000..6432c2d96a
--- /dev/null
+++ b/lib/libc/mingw/lib-common/virtdisk.def
@@ -0,0 +1,33 @@
+;
+; Definition file of VirtDisk.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "VirtDisk.dll"
+EXPORTS
+AddVirtualDiskParent
+ApplySnapshotVhdSet
+AttachVirtualDisk
+BreakMirrorVirtualDisk
+CompactVirtualDisk
+CreateVirtualDisk
+DeleteSnapshotVhdSet
+DeleteVirtualDiskMetadata
+DetachVirtualDisk
+EnumerateVirtualDiskMetadata
+ExpandVirtualDisk
+GetAllAttachedVirtualDiskPhysicalPaths
+GetStorageDependencyInformation
+GetVirtualDiskInformation
+GetVirtualDiskMetadata
+GetVirtualDiskOperationProgress
+GetVirtualDiskPhysicalPath
+MergeVirtualDisk
+MirrorVirtualDisk
+ModifyVhdSet
+OpenVirtualDisk
+QueryChangesVirtualDisk
+ResizeVirtualDisk
+SetVirtualDiskInformation
+SetVirtualDiskMetadata
+TakeSnapshotVhdSet
diff --git a/lib/libc/mingw/lib-common/websocket.def b/lib/libc/mingw/lib-common/websocket.def
new file mode 100644
index 0000000000..65ba4cd5a5
--- /dev/null
+++ b/lib/libc/mingw/lib-common/websocket.def
@@ -0,0 +1,15 @@
+LIBRARY "websocket.dll"
+EXPORTS
+WebSocketAbortHandle
+WebSocketBeginClientHandshake
+WebSocketBeginServerHandshake
+WebSocketCompleteAction
+WebSocketCreateClientHandle
+WebSocketCreateServerHandle
+WebSocketDeleteHandle
+WebSocketEndClientHandshake
+WebSocketEndServerHandshake
+WebSocketGetAction
+WebSocketGetGlobalProperty
+WebSocketReceive
+WebSocketSend
diff --git a/lib/libc/mingw/lib-common/wecapi.def b/lib/libc/mingw/lib-common/wecapi.def
new file mode 100644
index 0000000000..055be19cbb
--- /dev/null
+++ b/lib/libc/mingw/lib-common/wecapi.def
@@ -0,0 +1,26 @@
+;
+; Definition file of WecApi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "WecApi.dll"
+EXPORTS
+pszDbgAllocMsgA
+vDbgLogError
+EcIsConfigRequired
+EcQuickConfig
+EcClose
+EcDeleteSubscription
+EcEnumNextSubscription
+EcGetObjectArrayProperty
+EcGetObjectArraySize
+EcGetSubscriptionProperty
+EcGetSubscriptionRunTimeStatus
+EcInsertObjectArrayElement
+EcOpenSubscription
+EcOpenSubscriptionEnum
+EcRemoveObjectArrayElement
+EcRetrySubscription
+EcSaveSubscription
+EcSetObjectArrayProperty
+EcSetSubscriptionProperty
diff --git a/lib/libc/mingw/lib-common/wevtapi.def b/lib/libc/mingw/lib-common/wevtapi.def
new file mode 100644
index 0000000000..3b50e545da
--- /dev/null
+++ b/lib/libc/mingw/lib-common/wevtapi.def
@@ -0,0 +1,53 @@
+;
+; Definition file of wevtapi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "wevtapi.dll"
+EXPORTS
+EvtIntSysprepCleanup
+EvtSetObjectArrayProperty
+EvtArchiveExportedLog
+EvtCancel
+EvtClearLog
+EvtClose
+EvtCreateBookmark
+EvtCreateRenderContext
+EvtExportLog
+EvtFormatMessage
+EvtGetChannelConfigProperty
+EvtGetEventInfo
+EvtGetEventMetadataProperty
+EvtGetExtendedStatus
+EvtGetLogInfo
+EvtGetObjectArrayProperty
+EvtGetObjectArraySize
+EvtGetPublisherMetadataProperty
+EvtGetQueryInfo
+EvtIntAssertConfig
+EvtIntCreateBinXMLFromCustomXML
+EvtIntCreateLocalLogfile
+EvtIntGetClassicLogDisplayName
+EvtIntRenderResourceEventTemplate
+EvtIntReportAuthzEventAndSourceAsync
+EvtIntReportEventAndSourceAsync
+EvtIntRetractConfig
+EvtIntWriteXmlEventToLocalLogfile
+EvtNext
+EvtNextChannelPath
+EvtNextEventMetadata
+EvtNextPublisherId
+EvtOpenChannelConfig
+EvtOpenChannelEnum
+EvtOpenEventMetadataEnum
+EvtOpenLog
+EvtOpenPublisherEnum
+EvtOpenPublisherMetadata
+EvtOpenSession
+EvtQuery
+EvtRender
+EvtSaveChannelConfig
+EvtSeek
+EvtSetChannelConfigProperty
+EvtSubscribe
+EvtUpdateBookmark
diff --git a/lib/libc/mingw/lib-common/windowscodecs.def b/lib/libc/mingw/lib-common/windowscodecs.def
new file mode 100644
index 0000000000..ca49c8b8d9
--- /dev/null
+++ b/lib/libc/mingw/lib-common/windowscodecs.def
@@ -0,0 +1,116 @@
+LIBRARY "WindowsCodecs.dll"
+EXPORTS
+IEnumString_Next_WIC_Proxy
+IEnumString_Reset_WIC_Proxy
+IPropertyBag2_Write_Proxy
+IWICBitmapClipper_Initialize_Proxy
+IWICBitmapCodecInfo_DoesSupportAnimation_Proxy
+IWICBitmapCodecInfo_DoesSupportLossless_Proxy
+IWICBitmapCodecInfo_DoesSupportMultiframe_Proxy
+IWICBitmapCodecInfo_GetContainerFormat_Proxy
+IWICBitmapCodecInfo_GetDeviceManufacturer_Proxy
+IWICBitmapCodecInfo_GetDeviceModels_Proxy
+IWICBitmapCodecInfo_GetFileExtensions_Proxy
+IWICBitmapCodecInfo_GetMimeTypes_Proxy
+IWICBitmapDecoder_CopyPalette_Proxy
+IWICBitmapDecoder_GetColorContexts_Proxy
+IWICBitmapDecoder_GetDecoderInfo_Proxy
+IWICBitmapDecoder_GetFrameCount_Proxy
+IWICBitmapDecoder_GetFrame_Proxy
+IWICBitmapDecoder_GetMetadataQueryReader_Proxy
+IWICBitmapDecoder_GetPreview_Proxy
+IWICBitmapDecoder_GetThumbnail_Proxy
+IWICBitmapEncoder_Commit_Proxy
+IWICBitmapEncoder_CreateNewFrame_Proxy
+IWICBitmapEncoder_GetEncoderInfo_Proxy
+IWICBitmapEncoder_GetMetadataQueryWriter_Proxy
+IWICBitmapEncoder_Initialize_Proxy
+IWICBitmapEncoder_SetPalette_Proxy
+IWICBitmapEncoder_SetThumbnail_Proxy
+IWICBitmapFlipRotator_Initialize_Proxy
+IWICBitmapFrameDecode_GetColorContexts_Proxy
+IWICBitmapFrameDecode_GetMetadataQueryReader_Proxy
+IWICBitmapFrameDecode_GetThumbnail_Proxy
+IWICBitmapFrameEncode_Commit_Proxy
+IWICBitmapFrameEncode_GetMetadataQueryWriter_Proxy
+IWICBitmapFrameEncode_Initialize_Proxy
+IWICBitmapFrameEncode_SetColorContexts_Proxy
+IWICBitmapFrameEncode_SetResolution_Proxy
+IWICBitmapFrameEncode_SetSize_Proxy
+IWICBitmapFrameEncode_SetThumbnail_Proxy
+IWICBitmapFrameEncode_WriteSource_Proxy
+IWICBitmapLock_GetDataPointer_STA_Proxy
+IWICBitmapLock_GetStride_Proxy
+IWICBitmapScaler_Initialize_Proxy
+IWICBitmapSource_CopyPalette_Proxy
+IWICBitmapSource_CopyPixels_Proxy
+IWICBitmapSource_GetPixelFormat_Proxy
+IWICBitmapSource_GetResolution_Proxy
+IWICBitmapSource_GetSize_Proxy
+IWICBitmap_Lock_Proxy
+IWICBitmap_SetPalette_Proxy
+IWICBitmap_SetResolution_Proxy
+IWICColorContext_InitializeFromMemory_Proxy
+IWICComponentFactory_CreateMetadataWriterFromReader_Proxy
+IWICComponentFactory_CreateQueryWriterFromBlockWriter_Proxy
+IWICComponentInfo_GetAuthor_Proxy
+IWICComponentInfo_GetCLSID_Proxy
+IWICComponentInfo_GetFriendlyName_Proxy
+IWICComponentInfo_GetSpecVersion_Proxy
+IWICComponentInfo_GetVersion_Proxy
+IWICFastMetadataEncoder_Commit_Proxy
+IWICFastMetadataEncoder_GetMetadataQueryWriter_Proxy
+IWICFormatConverter_Initialize_Proxy
+IWICImagingFactory_CreateBitmapClipper_Proxy
+IWICImagingFactory_CreateBitmapFlipRotator_Proxy
+IWICImagingFactory_CreateBitmapFromHBITMAP_Proxy
+IWICImagingFactory_CreateBitmapFromHICON_Proxy
+IWICImagingFactory_CreateBitmapFromMemory_Proxy
+IWICImagingFactory_CreateBitmapFromSource_Proxy
+IWICImagingFactory_CreateBitmapScaler_Proxy
+IWICImagingFactory_CreateBitmap_Proxy
+IWICImagingFactory_CreateComponentInfo_Proxy
+IWICImagingFactory_CreateDecoderFromFileHandle_Proxy
+IWICImagingFactory_CreateDecoderFromFilename_Proxy
+IWICImagingFactory_CreateDecoderFromStream_Proxy
+IWICImagingFactory_CreateEncoder_Proxy
+IWICImagingFactory_CreateFastMetadataEncoderFromDecoder_Proxy
+IWICImagingFactory_CreateFastMetadataEncoderFromFrameDecode_Proxy
+IWICImagingFactory_CreateFormatConverter_Proxy
+IWICImagingFactory_CreatePalette_Proxy
+IWICImagingFactory_CreateQueryWriterFromReader_Proxy
+IWICImagingFactory_CreateQueryWriter_Proxy
+IWICImagingFactory_CreateStream_Proxy
+IWICMetadataBlockReader_GetCount_Proxy
+IWICMetadataBlockReader_GetReaderByIndex_Proxy
+IWICMetadataQueryReader_GetContainerFormat_Proxy
+IWICMetadataQueryReader_GetEnumerator_Proxy
+IWICMetadataQueryReader_GetLocation_Proxy
+IWICMetadataQueryReader_GetMetadataByName_Proxy
+IWICMetadataQueryWriter_RemoveMetadataByName_Proxy
+IWICMetadataQueryWriter_SetMetadataByName_Proxy
+IWICPalette_GetColorCount_Proxy
+IWICPalette_GetColors_Proxy
+IWICPalette_GetType_Proxy
+IWICPalette_HasAlpha_Proxy
+IWICPalette_InitializeCustom_Proxy
+IWICPalette_InitializeFromBitmap_Proxy
+IWICPalette_InitializeFromPalette_Proxy
+IWICPalette_InitializePredefined_Proxy
+IWICPixelFormatInfo_GetBitsPerPixel_Proxy
+IWICPixelFormatInfo_GetChannelCount_Proxy
+IWICPixelFormatInfo_GetChannelMask_Proxy
+IWICStream_InitializeFromIStream_Proxy
+IWICStream_InitializeFromMemory_Proxy
+WICConvertBitmapSource
+WICCreateBitmapFromSection
+WICCreateBitmapFromSectionEx
+WICCreateColorContext_Proxy
+WICCreateImagingFactory_Proxy
+WICGetMetadataContentSize
+WICMapGuidToShortName
+WICMapSchemaToName
+WICMapShortNameToGuid
+WICMatchMetadataContent
+WICSerializeMetadataContent
+WICSetEncoderFormat_Proxy
diff --git a/lib/libc/mingw/lib-common/winhttp.def b/lib/libc/mingw/lib-common/winhttp.def
new file mode 100644
index 0000000000..20c0b72aba
--- /dev/null
+++ b/lib/libc/mingw/lib-common/winhttp.def
@@ -0,0 +1,89 @@
+;
+; Definition file of WINHTTP.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "WINHTTP.dll"
+EXPORTS
+WinHttpPacJsWorkerMain
+DllCanUnloadNow
+DllGetClassObject
+Private1
+SvchostPushServiceGlobals
+WinHttpAddRequestHeaders
+WinHttpAddRequestHeadersEx
+WinHttpAutoProxySvcMain
+WinHttpCheckPlatform
+WinHttpCloseHandle
+WinHttpConnect
+WinHttpConnectionDeletePolicyEntries
+WinHttpConnectionDeleteProxyInfo
+WinHttpConnectionFreeNameList
+WinHttpConnectionFreeProxyInfo
+WinHttpConnectionFreeProxyList
+WinHttpConnectionGetNameList
+WinHttpConnectionGetProxyInfo
+WinHttpConnectionGetProxyList
+WinHttpConnectionSetPolicyEntries
+WinHttpConnectionSetProxyInfo
+WinHttpConnectionUpdateIfIndexTable
+WinHttpCrackUrl
+WinHttpCreateProxyResolver
+WinHttpCreateUrl
+WinHttpDetectAutoProxyConfigUrl
+WinHttpFreeProxyResult
+WinHttpFreeProxyResultEx
+WinHttpFreeProxySettings
+WinHttpGetDefaultProxyConfiguration
+WinHttpGetIEProxyConfigForCurrentUser
+WinHttpGetProxyForUrl
+WinHttpGetProxyForUrlEx
+WinHttpGetProxyForUrlEx2
+WinHttpGetProxyForUrlHvsi
+WinHttpGetProxyResult
+WinHttpGetProxyResultEx
+WinHttpGetProxySettingsVersion
+WinHttpGetTunnelSocket
+WinHttpOpen
+WinHttpOpenRequest
+WinHttpPalAcquireNextInterface
+WinHttpPalAcquireNextInterfaceAsync
+WinHttpPalCancelRequest
+WinHttpPalCreateCmSessionReference
+WinHttpPalCreateRequestCtx
+WinHttpPalDllInit
+WinHttpPalDllUnload
+WinHttpPalFreeProxyInfo
+WinHttpPalFreeRequestCtx
+WinHttpPalGetProxyCreds
+WinHttpPalGetProxyForCurrentInterface
+WinHttpPalIsImplemented
+WinHttpPalOnSendRequestComplete
+WinHttpProbeConnectivity
+WinHttpQueryAuthSchemes
+WinHttpQueryDataAvailable
+WinHttpQueryHeaders
+WinHttpQueryOption
+WinHttpReadData
+WinHttpReadProxySettings
+WinHttpReadProxySettingsHvsi
+WinHttpReceiveResponse
+WinHttpResetAutoProxy
+WinHttpSaveProxyCredentials
+WinHttpSendRequest
+WinHttpSetCredentials
+WinHttpSetDefaultProxyConfiguration
+WinHttpSetOption
+WinHttpSetProxySettingsPerUser
+WinHttpSetStatusCallback
+WinHttpSetTimeouts
+WinHttpTimeFromSystemTime
+WinHttpTimeToSystemTime
+WinHttpWebSocketClose
+WinHttpWebSocketCompleteUpgrade
+WinHttpWebSocketQueryCloseStatus
+WinHttpWebSocketReceive
+WinHttpWebSocketSend
+WinHttpWebSocketShutdown
+WinHttpWriteData
+WinHttpWriteProxySettings
diff --git a/lib/libc/mingw/lib-common/wininet.def b/lib/libc/mingw/lib-common/wininet.def
new file mode 100644
index 0000000000..74c64ec429
--- /dev/null
+++ b/lib/libc/mingw/lib-common/wininet.def
@@ -0,0 +1,300 @@
+;
+; Definition file of WININET.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "WININET.dll"
+EXPORTS
+DispatchAPICall
+AppCacheCheckManifest
+AppCacheCloseHandle
+AppCacheCreateAndCommitFile
+AppCacheDeleteGroup
+AppCacheDeleteIEGroup
+AppCacheDuplicateHandle
+AppCacheFinalize
+AppCacheFreeDownloadList
+AppCacheFreeGroupList
+AppCacheFreeIESpace
+AppCacheFreeSpace
+AppCacheGetDownloadList
+AppCacheGetFallbackUrl
+AppCacheGetGroupList
+AppCacheGetIEGroupList
+AppCacheGetInfo
+AppCacheGetManifestUrl
+AppCacheLookup
+CommitUrlCacheEntryA
+CommitUrlCacheEntryBinaryBlob
+CommitUrlCacheEntryW
+CreateMD5SSOHash
+CreateUrlCacheContainerA
+CreateUrlCacheContainerW
+CreateUrlCacheEntryA
+CreateUrlCacheEntryExW
+CreateUrlCacheEntryW
+CreateUrlCacheGroup
+DeleteIE3Cache
+DeleteUrlCacheContainerA
+DeleteUrlCacheContainerW
+DeleteUrlCacheEntry
+DeleteUrlCacheEntryA
+DeleteUrlCacheEntryW
+DeleteUrlCacheGroup
+DeleteWpadCacheForNetworks
+DetectAutoProxyUrl
+FindCloseUrlCache
+FindFirstUrlCacheContainerA
+FindFirstUrlCacheContainerW
+FindFirstUrlCacheEntryA
+FindFirstUrlCacheEntryExA
+FindFirstUrlCacheEntryExW
+FindFirstUrlCacheEntryW
+FindFirstUrlCacheGroup
+FindNextUrlCacheContainerA
+FindNextUrlCacheContainerW
+FindNextUrlCacheEntryA
+FindNextUrlCacheEntryExA
+FindNextUrlCacheEntryExW
+FindNextUrlCacheEntryW
+FindNextUrlCacheGroup
+ForceNexusLookup
+ForceNexusLookupExW
+FreeUrlCacheSpaceA
+FreeUrlCacheSpaceW
+FtpCommandA
+FtpCommandW
+FtpCreateDirectoryA
+FtpCreateDirectoryW
+FtpDeleteFileA
+FtpDeleteFileW
+FtpFindFirstFileA
+FtpFindFirstFileW
+FtpGetCurrentDirectoryA
+FtpGetCurrentDirectoryW
+FtpGetFileA
+FtpGetFileEx
+FtpGetFileSize
+FtpGetFileW
+FtpOpenFileA
+FtpOpenFileW
+FtpPutFileA
+FtpPutFileEx
+FtpPutFileW
+FtpRemoveDirectoryA
+FtpRemoveDirectoryW
+FtpRenameFileA
+FtpRenameFileW
+FtpSetCurrentDirectoryA
+FtpSetCurrentDirectoryW
+GetProxyDllInfo
+GetUrlCacheConfigInfoA
+GetUrlCacheConfigInfoW
+GetUrlCacheEntryBinaryBlob
+GetUrlCacheEntryInfoA
+GetUrlCacheEntryInfoExA
+GetUrlCacheEntryInfoExW
+GetUrlCacheEntryInfoW
+GetUrlCacheGroupAttributeA
+GetUrlCacheGroupAttributeW
+GetUrlCacheHeaderData
+GopherCreateLocatorA
+GopherCreateLocatorW
+GopherFindFirstFileA
+GopherFindFirstFileW
+GopherGetAttributeA
+GopherGetAttributeW
+GopherGetLocatorTypeA
+GopherGetLocatorTypeW
+GopherOpenFileA
+GopherOpenFileW
+HttpAddRequestHeadersA
+HttpAddRequestHeadersW
+HttpCheckDavCompliance
+HttpCloseDependencyHandle
+HttpDuplicateDependencyHandle
+HttpEndRequestA
+HttpEndRequestW
+HttpGetServerCredentials
+HttpGetTunnelSocket
+HttpIndicatePageLoadComplete
+HttpIsHostHstsEnabled
+HttpOpenDependencyHandle
+HttpOpenRequestA
+HttpOpenRequestW
+HttpPushClose
+HttpPushEnable
+HttpPushWait
+HttpQueryInfoA
+HttpQueryInfoW
+HttpSendRequestA
+HttpSendRequestExA
+HttpSendRequestExW
+HttpSendRequestW
+HttpWebSocketClose
+HttpWebSocketCompleteUpgrade
+HttpWebSocketQueryCloseStatus
+HttpWebSocketReceive
+HttpWebSocketSend
+HttpWebSocketShutdown
+IncrementUrlCacheHeaderData
+InternetAlgIdToStringA
+InternetAlgIdToStringW
+InternetAttemptConnect
+InternetAutodial
+InternetAutodialCallback
+InternetAutodialHangup
+InternetCanonicalizeUrlA
+InternetCanonicalizeUrlW
+InternetCheckConnectionA
+InternetCheckConnectionW
+InternetClearAllPerSiteCookieDecisions
+InternetCloseHandle
+InternetCombineUrlA
+InternetCombineUrlW
+InternetConfirmZoneCrossing
+InternetConfirmZoneCrossingA
+InternetConfirmZoneCrossingW
+InternetConnectA
+InternetConnectW
+InternetConvertUrlFromWireToWideChar
+InternetCrackUrlA
+InternetCrackUrlW
+InternetCreateUrlA
+InternetCreateUrlW
+InternetDial
+InternetDialA
+InternetDialW
+InternetEnumPerSiteCookieDecisionA
+InternetEnumPerSiteCookieDecisionW
+InternetErrorDlg
+InternetFindNextFileA
+InternetFindNextFileW
+InternetFortezzaCommand
+InternetFreeCookies
+InternetFreeProxyInfoList
+InternetGetCertByURL
+InternetGetCertByURLA
+InternetGetConnectedState
+InternetGetConnectedStateEx
+InternetGetConnectedStateExA
+InternetGetConnectedStateExW
+InternetGetCookieA
+InternetGetCookieEx2
+InternetGetCookieExA
+InternetGetCookieExW
+InternetGetCookieW
+InternetGetLastResponseInfoA
+InternetGetLastResponseInfoW
+InternetGetPerSiteCookieDecisionA
+InternetGetPerSiteCookieDecisionW
+InternetGetProxyForUrl
+InternetGetSecurityInfoByURL
+InternetGetSecurityInfoByURLA
+InternetGetSecurityInfoByURLW
+InternetGoOnline
+InternetGoOnlineA
+InternetGoOnlineW
+InternetHangUp
+InternetInitializeAutoProxyDll
+InternetLockRequestFile
+InternetOpenA
+InternetOpenUrlA
+InternetOpenUrlW
+InternetOpenW
+InternetQueryDataAvailable
+InternetQueryFortezzaStatus
+InternetQueryOptionA
+InternetQueryOptionW
+InternetReadFile
+InternetReadFileExA
+InternetReadFileExW
+InternetSecurityProtocolToStringA
+InternetSecurityProtocolToStringW
+InternetSetCookieA
+InternetSetCookieEx2
+InternetSetCookieExA
+InternetSetCookieExW
+InternetSetCookieW
+InternetSetDialState
+InternetSetDialStateA
+InternetSetDialStateW
+InternetSetFilePointer
+InternetSetOptionA
+InternetSetOptionExA
+InternetSetOptionExW
+InternetSetOptionW
+InternetSetPerSiteCookieDecisionA
+InternetSetPerSiteCookieDecisionW
+InternetSetStatusCallback
+InternetSetStatusCallbackA
+InternetSetStatusCallbackW
+InternetShowSecurityInfoByURL
+InternetShowSecurityInfoByURLA
+InternetShowSecurityInfoByURLW
+InternetTimeFromSystemTime
+InternetTimeFromSystemTimeA
+InternetTimeFromSystemTimeW
+InternetTimeToSystemTime
+InternetTimeToSystemTimeA
+InternetTimeToSystemTimeW
+InternetUnlockRequestFile
+InternetWriteFile
+InternetWriteFileExA
+InternetWriteFileExW
+IsHostInProxyBypassList
+IsUrlCacheEntryExpiredA
+IsUrlCacheEntryExpiredW
+LoadUrlCacheContent
+ParseX509EncodedCertificateForListBoxEntry
+PrivacyGetZonePreferenceW
+PrivacySetZonePreferenceW
+ReadUrlCacheEntryStream
+ReadUrlCacheEntryStreamEx
+RegisterUrlCacheNotification
+ResumeSuspendedDownload
+RetrieveUrlCacheEntryFileA
+RetrieveUrlCacheEntryFileW
+RetrieveUrlCacheEntryStreamA
+RetrieveUrlCacheEntryStreamW
+RunOnceUrlCache
+SetUrlCacheConfigInfoA
+SetUrlCacheConfigInfoW
+SetUrlCacheEntryGroup
+SetUrlCacheEntryGroupA
+SetUrlCacheEntryGroupW
+SetUrlCacheEntryInfoA
+SetUrlCacheEntryInfoW
+SetUrlCacheGroupAttributeA
+SetUrlCacheGroupAttributeW
+SetUrlCacheHeaderData
+ShowCertificate
+ShowClientAuthCerts
+ShowSecurityInfo
+ShowX509EncodedCertificate
+UnlockUrlCacheEntryFile
+UnlockUrlCacheEntryFileA
+UnlockUrlCacheEntryFileW
+UnlockUrlCacheEntryStream
+UpdateUrlCacheContentPath
+UrlCacheCheckEntriesExist
+UrlCacheCloseEntryHandle
+UrlCacheContainerSetEntryMaximumAge
+UrlCacheCreateContainer
+UrlCacheFindFirstEntry
+UrlCacheFindNextEntry
+UrlCacheFreeEntryInfo
+UrlCacheFreeGlobalSpace
+UrlCacheGetContentPaths
+UrlCacheGetEntryInfo
+UrlCacheGetGlobalCacheSize
+UrlCacheGetGlobalLimit
+UrlCacheReadEntryStream
+UrlCacheReloadSettings
+UrlCacheRetrieveEntryFile
+UrlCacheRetrieveEntryStream
+UrlCacheServer
+UrlCacheSetGlobalLimit
+UrlCacheUpdateEntryExtraData
+UrlZonesDetach
+_GetFileExtensionFromUrl
diff --git a/lib/libc/mingw/lib-common/winusb.def b/lib/libc/mingw/lib-common/winusb.def
new file mode 100644
index 0000000000..71579b25df
--- /dev/null
+++ b/lib/libc/mingw/lib-common/winusb.def
@@ -0,0 +1,41 @@
+;
+; Definition file of WINUSB.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "WINUSB.DLL"
+EXPORTS
+WinUsb_AbortPipe
+WinUsb_AbortPipeAsync
+WinUsb_ControlTransfer
+WinUsb_FlushPipe
+WinUsb_Free
+WinUsb_GetAdjustedFrameNumber
+WinUsb_GetAssociatedInterface
+WinUsb_GetCurrentAlternateSetting
+WinUsb_GetCurrentFrameNumber
+WinUsb_GetDescriptor
+WinUsb_GetOverlappedResult
+WinUsb_GetPipePolicy
+WinUsb_GetPowerPolicy
+WinUsb_Initialize
+WinUsb_ParseConfigurationDescriptor
+WinUsb_ParseDescriptors
+WinUsb_QueryDeviceInformation
+WinUsb_QueryInterfaceSettings
+WinUsb_QueryPipe
+WinUsb_QueryPipeEx
+WinUsb_ReadIsochPipe
+WinUsb_ReadIsochPipeAsap
+WinUsb_ReadPipe
+WinUsb_RegisterIsochBuffer
+WinUsb_ResetPipe
+WinUsb_ResetPipeAsync
+WinUsb_SetCurrentAlternateSetting
+WinUsb_SetCurrentAlternateSettingAsync
+WinUsb_SetPipePolicy
+WinUsb_SetPowerPolicy
+WinUsb_UnregisterIsochBuffer
+WinUsb_WriteIsochPipe
+WinUsb_WriteIsochPipeAsap
+WinUsb_WritePipe
diff --git a/lib/libc/mingw/lib-common/wkscli.def b/lib/libc/mingw/lib-common/wkscli.def
new file mode 100644
index 0000000000..9aac7f2802
--- /dev/null
+++ b/lib/libc/mingw/lib-common/wkscli.def
@@ -0,0 +1,30 @@
+;
+; Definition file of wkscli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "wkscli.dll"
+EXPORTS
+NetAddAlternateComputerName
+NetEnumerateComputerNames
+NetGetJoinInformation
+NetGetJoinableOUs
+NetJoinDomain
+NetRemoveAlternateComputerName
+NetRenameMachineInDomain
+NetSetPrimaryComputerName
+NetUnjoinDomain
+NetUseAdd
+NetUseDel
+NetUseEnum
+NetUseGetInfo
+NetValidateName
+NetWkstaGetInfo
+NetWkstaSetInfo
+NetWkstaStatisticsGet
+NetWkstaTransportAdd
+NetWkstaTransportDel
+NetWkstaTransportEnum
+NetWkstaUserEnum
+NetWkstaUserGetInfo
+NetWkstaUserSetInfo
diff --git a/lib/libc/mingw/lib-common/wlanapi.def b/lib/libc/mingw/lib-common/wlanapi.def
new file mode 100644
index 0000000000..2cc27852aa
--- /dev/null
+++ b/lib/libc/mingw/lib-common/wlanapi.def
@@ -0,0 +1,178 @@
+;
+; Definition file of wlanapi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "wlanapi.dll"
+EXPORTS
+WFDGetSessionEndpointPairsInt
+QueryNetconStatus
+QueryNetconVirtualCharacteristic
+WFDAcceptConnectRequestAndOpenSessionInt
+WFDAcceptGroupRequestAndOpenSessionInt
+WFDCancelConnectorPairWithOOB
+WFDCancelListenerPairWithOOB
+WFDCancelOpenSession
+WFDCancelOpenSessionInt
+WFDCloseHandle
+WFDCloseHandleInt
+WFDCloseLegacySessionInt
+WFDCloseOOBPairingSession
+WFDCloseSession
+WFDCloseSessionInt
+WFDConfigureFirewallForSessionInt
+WFDDeclineConnectRequestInt
+WFDDeclineGroupRequestInt
+WFDDiscoverDevicesInt
+WFDFlushVisibleDeviceListInt
+WFDForceDisconnectInt
+WFDForceDisconnectLegacyPeerInt
+WFDFreeMemoryInt
+WFDGetDefaultGroupProfileInt
+WFDGetOOBBlob
+WFDGetProfileKeyInfoInt
+WFDGetVisibleDevicesInt
+WFDIsInterfaceWiFiDirect
+WFDIsWiFiDirectRunningOnWiFiAdapter
+WFDLowPrivCancelOpenSessionInt
+WFDLowPrivCloseHandleInt
+WFDLowPrivCloseSessionInt
+WFDLowPrivConfigureFirewallForSessionInt
+WFDLowPrivGetSessionEndpointPairsInt
+WFDLowPrivIsWfdSupportedInt
+WFDLowPrivOpenHandleInt
+WFDLowPrivRegisterNotificationInt
+WFDLowPrivStartOpenSessionByInterfaceIdInt
+WFDOpenHandle
+WFDOpenHandleInt
+WFDOpenLegacySession
+WFDOpenLegacySessionInt
+WFDPairCancelByDeviceAddressInt
+WFDPairCancelInt
+WFDPairEnumerateCeremoniesInt
+WFDPairSelectCeremonyInt
+WFDPairWithDeviceAndOpenSessionExInt
+WFDPairWithDeviceAndOpenSessionInt
+WFDParseOOBBlob
+WFDParseProfileXmlInt
+WFDQueryPropertyInt
+WFDRegisterNotificationInt
+WFDSetAdditionalIEsInt
+WFDSetPropertyInt
+WFDSetSecondaryDeviceTypeListInt
+WFDStartConnectorPairWithOOB
+WFDStartListenerPairWithOOB
+WFDStartOpenSession
+WFDStartOpenSessionInt
+WFDStartUsingGroupInt
+WFDStopDiscoverDevicesInt
+WFDStopUsingGroupInt
+WFDUpdateDeviceVisibility
+WlanAllocateMemory
+WlanCancelPlap
+WlanCloseHandle
+WlanConnect
+WlanConnectEx
+WlanConnectWithInput
+WlanDeinitPlapParams
+WlanDeleteProfile
+WlanDisconnect
+WlanDoPlap
+WlanDoesBssMatchSecurity
+WlanEnumAllInterfaces
+WlanEnumInterfaces
+WlanExtractPsdIEDataList
+WlanFreeMemory
+WlanGenerateProfileXmlBasicSettings
+WlanGetAvailableNetworkList
+WlanGetFilterList
+WlanGetInterfaceCapability
+WlanGetMFPNegotiated
+WlanGetNetworkBssList
+WlanGetProfile
+WlanGetProfileCustomUserData
+WlanGetProfileEapUserDataInfo
+WlanGetProfileIndex
+WlanGetProfileKeyInfo
+WlanGetProfileList
+WlanGetProfileMetadata
+WlanGetProfileSsidList
+WlanGetRadioInformation
+WlanGetSecuritySettings
+WlanGetStoredRadioState
+WlanHostedNetworkForceStart
+WlanHostedNetworkForceStop
+WlanHostedNetworkFreeWCNSettings
+WlanHostedNetworkHlpQueryEverUsed
+WlanHostedNetworkInitSettings
+WlanHostedNetworkQueryProperty
+WlanHostedNetworkQuerySecondaryKey
+WlanHostedNetworkQueryStatus
+WlanHostedNetworkQueryWCNSettings
+WlanHostedNetworkRefreshSecuritySettings
+WlanHostedNetworkSetProperty
+WlanHostedNetworkSetSecondaryKey
+WlanHostedNetworkSetWCNSettings
+WlanHostedNetworkStartUsing
+WlanHostedNetworkStopUsing
+WlanIhvControl
+WlanInitPlapParams
+WlanInternalScan
+WlanIsActiveConsoleUser
+WlanIsNetworkSuppressed
+WlanIsUIRequestPending
+WlanLowPrivCloseHandle
+WlanLowPrivEnumInterfaces
+WlanLowPrivFreeMemory
+WlanLowPrivOpenHandle
+WlanLowPrivQueryInterface
+WlanLowPrivSetInterface
+WlanNotifyVsIeProviderInt
+WlanOpenHandle
+WlanParseProfileXmlBasicSettings
+WlanPrivateGetAvailableNetworkList
+WlanQueryAutoConfigParameter
+WlanQueryCreateAllUserProfileRestricted
+WlanQueryInterface
+WlanQueryPlapCredentials
+WlanQueryPreConnectInput
+WlanQueryVirtualInterfaceType
+WlanReasonCodeToString
+WlanRefreshConnections
+WlanRegisterNotification
+WlanRegisterVirtualStationNotification
+WlanRemoveUIForwardingNetworkList
+WlanRenameProfile
+WlanSaveTemporaryProfile
+WlanScan
+WlanSendUIResponse
+WlanSetAllUserProfileRestricted
+WlanSetAutoConfigParameter
+WlanSetFilterList
+WlanSetInterface
+WlanSetProfile
+WlanSetProfileCustomUserData
+WlanSetProfileEapUserData
+WlanSetProfileEapXmlUserData
+WlanSetProfileList
+WlanSetProfileMetadata
+WlanSetProfilePosition
+WlanSetPsdIEDataList
+WlanSetSecuritySettings
+WlanSetUIForwardingNetworkList
+WlanSignalValueToBar
+WlanSsidToDisplayName
+WlanStartAP
+WlanStopAP
+WlanStoreRadioStateOnEnteringAirPlaneMode
+WlanStringToSsid
+WlanTryUpgradeCurrentConnectionAuthCipher
+WlanUpdateProfileWithAuthCipher
+WlanUtf8SsidToDisplayName
+WlanWcmGetInterface
+WlanWcmGetProfileList
+WlanWcmSetInterface
+WlanWfdGOSetWCNSettings
+WlanWfdGetPeerInfo
+WlanWfdStartGO
+WlanWfdStopGO
diff --git a/lib/libc/mingw/lib-common/wscapi.def b/lib/libc/mingw/lib-common/wscapi.def
new file mode 100644
index 0000000000..a41bf816a2
--- /dev/null
+++ b/lib/libc/mingw/lib-common/wscapi.def
@@ -0,0 +1,38 @@
+;
+; Definition file of WSCAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "WSCAPI.dll"
+EXPORTS
+wscShowAMSCN
+CLSID_WSCProductList
+IID_IWSCProductList
+IID_IWscProduct
+LIBID_wscAPILib
+WscGetAntiMalwareUri
+WscGetSecurityProviderHealth
+WscQueryAntiMalwareUri
+WscRegisterForChanges
+WscRegisterForUserNotifications
+WscUnRegisterChanges
+wscAntiSpywareGetStatus
+wscAntiVirusExpiredBeyondThreshold
+wscAntiVirusGetStatus
+wscAutoUpdatesEnableScheduledMode
+wscAutoUpdatesGetStatus
+wscFirewallGetStatus
+wscGeneralSecurityGetStatus
+wscGetAlertStatus
+wscIcfEnable
+wscIeSettingsFix
+wscIsDefenderAntivirusSupported
+wscLuaSettingsFix
+wscOverrideComponentStatus
+wscPing
+wscProductInfoFree
+wscRegisterChangeNotification
+wscRegisterSecurityProduct
+wscUnRegisterChangeNotification
+wscUnregisterSecurityProduct
+wscUpdateProductStatus
diff --git a/lib/libc/mingw/lib-common/wtsapi32.def b/lib/libc/mingw/lib-common/wtsapi32.def
new file mode 100644
index 0000000000..ac1afac782
--- /dev/null
+++ b/lib/libc/mingw/lib-common/wtsapi32.def
@@ -0,0 +1,75 @@
+;
+; Definition file of WTSAPI32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "WTSAPI32.dll"
+EXPORTS
+QueryActiveSession
+QueryUserToken
+RegisterUsertokenForNoWinlogon
+WTSCloseServer
+WTSConnectSessionA
+WTSConnectSessionW
+WTSCreateListenerA
+WTSCreateListenerW
+WTSDisconnectSession
+WTSEnableChildSessions
+WTSEnumerateListenersA
+WTSEnumerateListenersW
+WTSEnumerateProcessesA
+WTSEnumerateProcessesExA
+WTSEnumerateProcessesExW
+WTSEnumerateProcessesW
+WTSEnumerateServersA
+WTSEnumerateServersW
+WTSEnumerateSessionsA
+WTSEnumerateSessionsExA
+WTSEnumerateSessionsExW
+WTSEnumerateSessionsW
+WTSFreeMemory
+WTSFreeMemoryExA
+WTSFreeMemoryExW
+WTSGetChildSessionId
+WTSGetListenerSecurityA
+WTSGetListenerSecurityW
+WTSIsChildSessionsEnabled
+WTSLogoffSession
+WTSOpenServerA
+WTSOpenServerExA
+WTSOpenServerExW
+WTSOpenServerW
+WTSQueryListenerConfigA
+WTSQueryListenerConfigW
+WTSQuerySessionInformationA
+WTSQuerySessionInformationW
+WTSQueryUserConfigA
+WTSQueryUserConfigW
+WTSQueryUserToken
+WTSRegisterSessionNotification
+WTSRegisterSessionNotificationEx
+WTSSendMessageA
+WTSSendMessageW
+WTSSetListenerSecurityA
+WTSSetListenerSecurityW
+WTSSetRenderHint
+WTSSetSessionInformationA
+WTSSetSessionInformationW
+WTSSetUserConfigA
+WTSSetUserConfigW
+WTSShutdownSystem
+WTSStartRemoteControlSessionA
+WTSStartRemoteControlSessionW
+WTSStopRemoteControlSession
+WTSTerminateProcess
+WTSUnRegisterSessionNotification
+WTSUnRegisterSessionNotificationEx
+WTSVirtualChannelClose
+WTSVirtualChannelOpen
+WTSVirtualChannelOpenEx
+WTSVirtualChannelPurgeInput
+WTSVirtualChannelPurgeOutput
+WTSVirtualChannelQuery
+WTSVirtualChannelRead
+WTSVirtualChannelWrite
+WTSWaitSystemEvent
diff --git a/lib/libc/mingw/lib32/aclui.def b/lib/libc/mingw/lib32/aclui.def
new file mode 100644
index 0000000000..834d5fd14c
--- /dev/null
+++ b/lib/libc/mingw/lib32/aclui.def
@@ -0,0 +1,7 @@
+LIBRARY ACLUI.dll
+
+EXPORTS
+CreateSecurityPage@4
+EditSecurity@8
+IID_ISecurityInformation DATA
+
diff --git a/lib/libc/mingw/lib32/activeds.def b/lib/libc/mingw/lib32/activeds.def
new file mode 100644
index 0000000000..be895630e4
--- /dev/null
+++ b/lib/libc/mingw/lib32/activeds.def
@@ -0,0 +1,36 @@
+;
+; Definition file of ACTIVEDS.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "ACTIVEDS.dll"
+EXPORTS
+ADsGetObject@12
+ADsBuildEnumerator@8
+ADsFreeEnumerator@4
+ADsEnumerateNext@16
+ADsBuildVarArrayStr@12
+ADsBuildVarArrayInt@12
+ADsOpenObject@24
+DllCanUnloadNow@0
+DllGetClassObject@12
+ADsSetLastError@12
+ADsGetLastError@20
+AllocADsMem@4
+FreeADsMem@4
+ReallocADsMem@12
+AllocADsStr@4
+FreeADsStr@4
+ReallocADsStr@8
+ADsEncodeBinaryData@12
+PropVariantToAdsType@16
+AdsTypeToPropVariant@12
+AdsFreeAdsValues@8
+ADsDecodeBinaryData@12
+AdsTypeToPropVariant2@28
+PropVariantToAdsType2@32
+ConvertSecDescriptorToVariant@24
+ConvertSecurityDescriptorToSecDes@28
+BinarySDToSecurityDescriptor@24
+SecurityDescriptorToBinarySD@40
+ConvertTrusteeToSid@28
diff --git a/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-1.def
new file mode 100644
index 0000000000..8e3959cff0
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-1.def
@@ -0,0 +1,19 @@
+LIBRARY api-ms-win-appmodel-runtime-l1-1-1
+
+EXPORTS
+
+FormatApplicationUserModelId@16
+GetCurrentApplicationUserModelId@8
+GetCurrentPackageFamilyName@8
+GetCurrentPackageId@8
+PackageFamilyNameFromFullName@12
+PackageFamilyNameFromId@12
+PackageFullNameFromId@12
+PackageIdFromFullName@16
+PackageNameAndPublisherIdFromFamilyName@20
+ParseApplicationUserModelId@20
+VerifyApplicationUserModelId@
+VerifyPackageFamilyName@
+VerifyPackageFullName@
+VerifyPackageId@
+VerifyPackageRelativeApplicationId@
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-1.def
new file mode 100644
index 0000000000..66b7c52fd4
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-1.def
@@ -0,0 +1,23 @@
+LIBRARY api-ms-win-core-comm-l1-1-1
+
+EXPORTS
+
+ClearCommBreak@4
+ClearCommError@12
+EscapeCommFunction@8
+GetCommConfig@12
+GetCommMask@8
+GetCommModemStatus@8
+GetCommProperties@8
+GetCommState@8
+GetCommTimeouts@8
+OpenCommPort@
+PurgeComm@8
+SetCommBreak@4
+SetCommConfig@12
+SetCommMask@8
+SetCommState@8
+SetCommTimeouts@8
+SetupComm@12
+TransmitCommChar@8
+WaitCommEvent@12
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-2.def
new file mode 100644
index 0000000000..2ef835d9b1
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-2.def
@@ -0,0 +1,24 @@
+LIBRARY api-ms-win-core-comm-l1-1-2
+
+EXPORTS
+
+ClearCommBreak@4
+ClearCommError@12
+EscapeCommFunction@8
+GetCommConfig@12
+GetCommMask@8
+GetCommModemStatus@8
+GetCommPorts@
+GetCommProperties@8
+GetCommState@8
+GetCommTimeouts@8
+OpenCommPort@
+PurgeComm@8
+SetCommBreak@4
+SetCommConfig@12
+SetCommMask@8
+SetCommState@8
+SetCommTimeouts@8
+SetupComm@12
+TransmitCommChar@8
+WaitCommEvent@12
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-3.def
new file mode 100644
index 0000000000..de1fc9ad78
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-3.def
@@ -0,0 +1,17 @@
+LIBRARY api-ms-win-core-errorhandling-l1-1-3
+
+EXPORTS
+
+AddVectoredExceptionHandler@8
+FatalAppExitA@8
+FatalAppExitW@8
+GetLastError@0
+GetThreadErrorMode@0
+RaiseException@16
+RaiseFailFastException@12
+RemoveVectoredExceptionHandler@4
+SetErrorMode@4
+SetLastError@4
+SetThreadErrorMode@8
+SetUnhandledExceptionFilter@4
+UnhandledExceptionFilter@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-0.def
new file mode 100644
index 0000000000..5cede3d02a
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-0.def
@@ -0,0 +1,9 @@
+LIBRARY api-ms-win-core-featurestaging-l1-1-0
+
+EXPORTS
+
+GetFeatureEnabledState@8
+RecordFeatureError@8
+RecordFeatureUsage@16
+SubscribeFeatureStateChangeNotification@12
+UnsubscribeFeatureStateChangeNotification@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-1.def
new file mode 100644
index 0000000000..d02a8623a0
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-1.def
@@ -0,0 +1,10 @@
+LIBRARY api-ms-win-core-featurestaging-l1-1-1
+
+EXPORTS
+
+GetFeatureEnabledState@8
+GetFeatureVariant@16
+RecordFeatureError@8
+RecordFeatureUsage@16
+SubscribeFeatureStateChangeNotification@12
+UnsubscribeFeatureStateChangeNotification@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-fromapp-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-file-fromapp-l1-1-0.def
new file mode 100644
index 0000000000..20a4dbfcc0
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-file-fromapp-l1-1-0.def
@@ -0,0 +1,15 @@
+LIBRARY api-ms-win-core-file-fromapp-l1-1-0
+
+EXPORTS
+
+CopyFileFromAppW@
+CreateDirectoryFromAppW@
+CreateFile2FromAppW@
+CreateFileFromAppW@
+DeleteFileFromAppW@
+FindFirstFileExFromAppW@
+GetFileAttributesExFromAppW@
+MoveFileFromAppW@
+RemoveDirectoryFromAppW@
+ReplaceFileFromAppW@
+SetFileAttributesFromAppW@
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-handle-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-handle-l1-1-0.def
new file mode 100644
index 0000000000..7d71381a51
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-handle-l1-1-0.def
@@ -0,0 +1,9 @@
+LIBRARY api-ms-win-core-handle-l1-1-0
+
+EXPORTS
+
+CloseHandle@4
+CompareObjectHandles@8
+DuplicateHandle@28
+GetHandleInformation@8
+SetHandleInformation@12
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l2-1-0.def
new file mode 100644
index 0000000000..92382c0fb3
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l2-1-0.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-libraryloader-l2-1-0
+
+EXPORTS
+
+LoadPackagedLibrary@8
+QueryOptionalDelayLoadedAPI@16
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-3.def
new file mode 100644
index 0000000000..65ee28b4d6
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-3.def
@@ -0,0 +1,35 @@
+LIBRARY api-ms-win-core-memory-l1-1-3
+
+EXPORTS
+
+CreateFileMappingFromApp@24
+CreateFileMappingW@24
+DiscardVirtualMemory@8
+FlushViewOfFile@8
+GetLargePageMinimum@0
+GetProcessWorkingSetSizeEx@16
+GetWriteWatch@24
+MapViewOfFile@20
+MapViewOfFileEx@24
+MapViewOfFileFromApp@20
+OfferVirtualMemory@12
+OpenFileMappingFromApp@12
+OpenFileMappingW@12
+ReadProcessMemory@20
+ReclaimVirtualMemory@8
+ResetWriteWatch@8
+SetProcessValidCallTargets
+SetProcessWorkingSetSizeEx@16
+UnmapViewOfFile@4
+UnmapViewOfFileEx@8
+VirtualAlloc@16
+VirtualAllocFromApp@16
+VirtualFree@12
+VirtualFreeEx@16
+VirtualLock@8
+VirtualProtect@16
+VirtualProtectFromApp@16
+VirtualQuery@12
+VirtualQueryEx@16
+VirtualUnlock@8
+WriteProcessMemory@20
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-4.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-4.def
new file mode 100644
index 0000000000..ee097f448a
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-4.def
@@ -0,0 +1,35 @@
+LIBRARY api-ms-win-core-memory-l1-1-4
+
+EXPORTS
+
+CreateFileMappingFromApp@24
+CreateFileMappingW@24
+DiscardVirtualMemory@8
+FlushViewOfFile@8
+GetLargePageMinimum@0
+GetProcessWorkingSetSizeEx@16
+GetWriteWatch@24
+MapViewOfFile@20
+MapViewOfFileEx@24
+MapViewOfFileFromApp@20
+OfferVirtualMemory@12
+OpenFileMappingFromApp@12
+OpenFileMappingW@12
+ReadProcessMemory@20
+ReclaimVirtualMemory@8
+ResetWriteWatch@8
+SetProcessValidCallTargets
+SetProcessWorkingSetSizeEx@16
+UnmapViewOfFile@4
+UnmapViewOfFileEx@8
+VirtualAlloc@16
+VirtualAllocFromApp@16
+VirtualFree@12
+VirtualFreeEx@16
+VirtualLock@8
+VirtualProtect@16
+VirtualProtectFromApp@16
+VirtualQuery@12
+VirtualQueryEx@16
+VirtualUnlock@8
+WriteProcessMemory@20
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-5.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-5.def
new file mode 100644
index 0000000000..2be4ec5349
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-5.def
@@ -0,0 +1,37 @@
+LIBRARY api-ms-win-core-memory-l1-1-5
+
+EXPORTS
+
+CreateFileMappingFromApp@24
+CreateFileMappingW@24
+DiscardVirtualMemory@8
+FlushViewOfFile@8
+GetLargePageMinimum@0
+GetProcessWorkingSetSizeEx@16
+GetWriteWatch@24
+MapViewOfFile@20
+MapViewOfFileEx@24
+MapViewOfFileFromApp@20
+OfferVirtualMemory@12
+OpenFileMappingFromApp@12
+OpenFileMappingW@12
+ReadProcessMemory@20
+ReclaimVirtualMemory@8
+ResetWriteWatch@8
+SetProcessValidCallTargets
+SetProcessWorkingSetSizeEx@16
+UnmapViewOfFile@4
+UnmapViewOfFile2@
+UnmapViewOfFileEx@8
+VirtualAlloc@16
+VirtualAllocFromApp@16
+VirtualFree@12
+VirtualFreeEx@16
+VirtualLock@8
+VirtualProtect@16
+VirtualProtectFromApp@16
+VirtualQuery@12
+VirtualQueryEx@16
+VirtualUnlock@8
+VirtualUnlockEx@
+WriteProcessMemory@20
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-6.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-6.def
new file mode 100644
index 0000000000..f4e2d125d1
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-6.def
@@ -0,0 +1,39 @@
+LIBRARY api-ms-win-core-memory-l1-1-6
+
+EXPORTS
+
+CreateFileMappingFromApp@24
+CreateFileMappingW@24
+DiscardVirtualMemory@8
+FlushViewOfFile@8
+GetLargePageMinimum@0
+GetProcessWorkingSetSizeEx@16
+GetWriteWatch@24
+MapViewOfFile@20
+MapViewOfFile3FromApp@
+MapViewOfFileEx@24
+MapViewOfFileFromApp@20
+OfferVirtualMemory@12
+OpenFileMappingFromApp@12
+OpenFileMappingW@12
+ReadProcessMemory@20
+ReclaimVirtualMemory@8
+ResetWriteWatch@8
+SetProcessValidCallTargets
+SetProcessWorkingSetSizeEx@16
+UnmapViewOfFile@4
+UnmapViewOfFile2@
+UnmapViewOfFileEx@8
+VirtualAlloc@16
+VirtualAlloc2FromApp@
+VirtualAllocFromApp@16
+VirtualFree@12
+VirtualFreeEx@16
+VirtualLock@8
+VirtualProtect@16
+VirtualProtectFromApp@16
+VirtualQuery@12
+VirtualQueryEx@16
+VirtualUnlock@8
+VirtualUnlockEx@
+WriteProcessMemory@20
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-7.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-7.def
new file mode 100644
index 0000000000..1664ce16d3
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-7.def
@@ -0,0 +1,40 @@
+LIBRARY api-ms-win-core-memory-l1-1-7
+
+EXPORTS
+
+CreateFileMappingFromApp@24
+CreateFileMappingW@24
+DiscardVirtualMemory@8
+FlushViewOfFile@8
+GetLargePageMinimum@0
+GetProcessWorkingSetSizeEx@16
+GetWriteWatch@24
+MapViewOfFile@20
+MapViewOfFile3FromApp@
+MapViewOfFileEx@24
+MapViewOfFileFromApp@20
+OfferVirtualMemory@12
+OpenFileMappingFromApp@12
+OpenFileMappingW@12
+ReadProcessMemory@20
+ReclaimVirtualMemory@8
+ResetWriteWatch@8
+SetProcessValidCallTargets
+SetProcessValidCallTargetsForMappedView@
+SetProcessWorkingSetSizeEx@16
+UnmapViewOfFile@4
+UnmapViewOfFile2@
+UnmapViewOfFileEx@8
+VirtualAlloc@16
+VirtualAlloc2FromApp@
+VirtualAllocFromApp@16
+VirtualFree@12
+VirtualFreeEx@16
+VirtualLock@8
+VirtualProtect@16
+VirtualProtectFromApp@16
+VirtualQuery@12
+VirtualQueryEx@16
+VirtualUnlock@8
+VirtualUnlockEx@
+WriteProcessMemory@20
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-path-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-path-l1-1-0.def
new file mode 100644
index 0000000000..61b2465ff0
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-path-l1-1-0.def
@@ -0,0 +1,26 @@
+LIBRARY api-ms-win-core-path-l1-1-0
+
+EXPORTS
+
+PathAllocCanonicalize@
+PathAllocCombine@
+PathCchAddBackslash@
+PathCchAddBackslashEx@
+PathCchAddExtension@
+PathCchAppend@
+PathCchAppendEx@
+PathCchCanonicalize@
+PathCchCanonicalizeEx@
+PathCchCombine@
+PathCchCombineEx@
+PathCchFindExtension@
+PathCchIsRoot@
+PathCchRemoveBackslash@
+PathCchRemoveBackslashEx@
+PathCchRemoveExtension@
+PathCchRemoveFileSpec@
+PathCchRenameExtension@
+PathCchSkipRoot@
+PathCchStripPrefix@
+PathCchStripToRoot@
+PathIsUNCEx@
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-psm-appnotify-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-psm-appnotify-l1-1-0.def
new file mode 100644
index 0000000000..0e7222a581
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-psm-appnotify-l1-1-0.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-psm-appnotify-l1-1-0
+
+EXPORTS
+
+RegisterAppStateChangeNotification@
+UnregisterAppStateChangeNotification@
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-1.def
new file mode 100644
index 0000000000..3088ac9d8d
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-1.def
@@ -0,0 +1,9 @@
+LIBRARY api-ms-win-core-realtime-l1-1-1
+
+EXPORTS
+
+QueryInterruptTime@4
+QueryInterruptTimePrecise@4
+QueryThreadCycleTime@8
+QueryUnbiasedInterruptTime@4
+QueryUnbiasedInterruptTimePrecise@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-2.def
new file mode 100644
index 0000000000..0e0c3a6fae
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-2.def
@@ -0,0 +1,12 @@
+LIBRARY api-ms-win-core-realtime-l1-1-2
+
+EXPORTS
+
+ConvertAuxiliaryCounterToPerformanceCounter@
+ConvertPerformanceCounterToAuxiliaryCounter@
+QueryAuxiliaryCounterFrequency@
+QueryInterruptTime@4
+QueryInterruptTimePrecise@4
+QueryThreadCycleTime@8
+QueryUnbiasedInterruptTime@4
+QueryUnbiasedInterruptTimePrecise@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-slapi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-slapi-l1-1-0.def
new file mode 100644
index 0000000000..0d46898305
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-slapi-l1-1-0.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-slapi-l1-1-0
+
+EXPORTS
+
+SLQueryLicenseValueFromApp@20
+SLQueryLicenseValueFromApp2@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-2-0.def
new file mode 100644
index 0000000000..f7e4275dc7
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-2-0.def
@@ -0,0 +1,59 @@
+LIBRARY api-ms-win-core-synch-l1-2-0
+
+EXPORTS
+
+AcquireSRWLockExclusive@4
+AcquireSRWLockShared@4
+CancelWaitableTimer@4
+CreateEventA@16
+CreateEventExA@16
+CreateEventExW@16
+CreateEventW@16
+CreateMutexA@12
+CreateMutexExA@16
+CreateMutexExW@16
+CreateMutexW@12
+CreateSemaphoreExW@24
+CreateWaitableTimerExW@16
+DeleteCriticalSection@4
+EnterCriticalSection@4
+InitializeConditionVariable@4
+InitializeCriticalSection@4
+InitializeCriticalSectionAndSpinCount@8
+InitializeCriticalSectionEx@12
+InitializeSRWLock@4
+InitOnceBeginInitialize@16
+InitOnceComplete@12
+InitOnceExecuteOnce@16
+InitOnceInitialize@4
+LeaveCriticalSection@4
+OpenEventA@12
+OpenEventW@12
+OpenMutexW@12
+OpenSemaphoreW@12
+OpenWaitableTimerW@12
+ReleaseMutex@4
+ReleaseSemaphore@12
+ReleaseSRWLockExclusive@4
+ReleaseSRWLockShared@4
+ResetEvent@4
+SetCriticalSectionSpinCount@8
+SetEvent@4
+SetWaitableTimer@24
+SetWaitableTimerEx@28
+SignalObjectAndWait@16
+Sleep@4
+SleepConditionVariableCS@12
+SleepConditionVariableSRW@16
+SleepEx@8
+TryAcquireSRWLockExclusive@4
+TryAcquireSRWLockShared@4
+TryEnterCriticalSection@4
+WaitForMultipleObjectsEx@20
+WaitForSingleObject@8
+WaitForSingleObjectEx@12
+WaitOnAddress@16
+WakeAllConditionVariable@4
+WakeByAddressAll@4
+WakeByAddressSingle@4
+WakeConditionVariable@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-0.def
new file mode 100644
index 0000000000..25e0b0ec93
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-0.def
@@ -0,0 +1,31 @@
+LIBRARY api-ms-win-core-sysinfo-l1-2-0
+
+EXPORTS
+
+EnumSystemFirmwareTables@12
+GetComputerNameExA@12
+GetComputerNameExW@12
+GetLocalTime@4
+GetLogicalProcessorInformation@8
+GetLogicalProcessorInformationEx@12
+GetNativeSystemInfo@4
+GetProductInfo@20
+GetSystemDirectoryA@8
+GetSystemDirectoryW@8
+GetSystemFirmwareTable@16
+GetSystemInfo@4
+GetSystemTime@4
+GetSystemTimeAdjustment@12
+GetSystemTimeAsFileTime@4
+GetSystemTimePreciseAsFileTime@4
+GetTickCount@0
+GetTickCount64@0
+GetVersion@0
+GetVersionExA@4
+GetVersionExW@4
+GetWindowsDirectoryA@8
+GetWindowsDirectoryW@8
+GlobalMemoryStatusEx@4
+SetLocalTime@4
+SetSystemTime@4
+VerSetConditionMask@16
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-3.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-3.def
new file mode 100644
index 0000000000..fba6ab14f6
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-3.def
@@ -0,0 +1,33 @@
+LIBRARY api-ms-win-core-sysinfo-l1-2-3
+
+EXPORTS
+
+EnumSystemFirmwareTables@12
+GetComputerNameExA@12
+GetComputerNameExW@12
+GetIntegratedDisplaySize@4
+GetLocalTime@4
+GetLogicalProcessorInformation@8
+GetLogicalProcessorInformationEx@12
+GetNativeSystemInfo@4
+GetPhysicallyInstalledSystemMemory@4
+GetProductInfo@20
+GetSystemDirectoryA@8
+GetSystemDirectoryW@8
+GetSystemFirmwareTable@16
+GetSystemInfo@4
+GetSystemTime@4
+GetSystemTimeAdjustment@12
+GetSystemTimeAsFileTime@4
+GetSystemTimePreciseAsFileTime@4
+GetTickCount@0
+GetTickCount64@0
+GetVersion@0
+GetVersionExA@4
+GetVersionExW@4
+GetWindowsDirectoryA@8
+GetWindowsDirectoryW@8
+GlobalMemoryStatusEx@4
+SetLocalTime@4
+SetSystemTime@4
+VerSetConditionMask@16
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-0.def
new file mode 100644
index 0000000000..a5a341d225
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-0.def
@@ -0,0 +1,15 @@
+LIBRARY api-ms-win-core-winrt-error-l1-1-0
+
+EXPORTS
+
+GetRestrictedErrorInfo@4
+RoCaptureErrorContext@4
+RoFailFastWithErrorContext@4
+RoGetErrorReportingFlags@4
+RoOriginateError@8
+RoOriginateErrorW@12
+RoResolveRestrictedErrorInfoReference@8
+RoSetErrorReportingFlags@4
+RoTransformError@12
+RoTransformErrorW@16
+SetRestrictedErrorInfo@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-1.def
new file mode 100644
index 0000000000..3be66b0154
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-1.def
@@ -0,0 +1,22 @@
+LIBRARY api-ms-win-core-winrt-error-l1-1-1
+
+EXPORTS
+
+GetRestrictedErrorInfo@4
+IsErrorPropagationEnabled@0
+RoCaptureErrorContext@4
+RoClearError@0
+RoFailFastWithErrorContext@4
+RoGetErrorReportingFlags@4
+RoGetMatchingRestrictedErrorInfo@8
+RoInspectCapturedStackBackTrace@24
+RoInspectThreadErrorInfo@20
+RoOriginateError@8
+RoOriginateErrorW@12
+RoOriginateLanguageException@12
+RoReportFailedDelegate@8
+RoReportUnhandledError@4
+RoSetErrorReportingFlags@4
+RoTransformError@12
+RoTransformErrorW@16
+SetRestrictedErrorInfo@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-l1-1-0.def
new file mode 100644
index 0000000000..5cafea3384
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-l1-1-0.def
@@ -0,0 +1,13 @@
+LIBRARY api-ms-win-core-winrt-l1-1-0
+
+EXPORTS
+
+RoActivateInstance@8
+RoGetActivationFactory@12
+RoGetApartmentIdentifier@4
+RoInitialize@4
+RoRegisterActivationFactories@16
+RoRegisterForApartmentShutdown@12
+RoRevokeActivationFactories@4
+RoUninitialize@0
+RoUnregisterForApartmentShutdown@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-registration-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-registration-l1-1-0.def
new file mode 100644
index 0000000000..7e9cbf3921
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-registration-l1-1-0.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-winrt-registration-l1-1-0
+
+EXPORTS
+
+RoGetActivatableClassRegistration@8
+RoGetServerActivatableClasses@12
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-robuffer-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-robuffer-l1-1-0.def
new file mode 100644
index 0000000000..c0a4a12043
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-robuffer-l1-1-0.def
@@ -0,0 +1,5 @@
+LIBRARY api-ms-win-core-winrt-robuffer-l1-1-0
+
+EXPORTS
+
+RoGetBufferMarshaler@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def
new file mode 100644
index 0000000000..bf1217cd75
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def
@@ -0,0 +1,7 @@
+LIBRARY api-ms-win-core-winrt-roparameterizediid-l1-1-0
+
+EXPORTS
+
+RoFreeParameterizedTypeExtra@4
+RoGetParameterizedTypeInstanceIID@20
+RoParameterizedTypeExtraGetTypeSignature@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-0.def
new file mode 100644
index 0000000000..14fa14ce93
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-0.def
@@ -0,0 +1,30 @@
+LIBRARY api-ms-win-core-winrt-string-l1-1-0
+
+EXPORTS
+
+HSTRING_UserFree@8
+HSTRING_UserFree64
+HSTRING_UserMarshal@12
+HSTRING_UserMarshal64
+HSTRING_UserSize@12
+HSTRING_UserSize64
+HSTRING_UserUnmarshal@12
+HSTRING_UserUnmarshal64
+WindowsCompareStringOrdinal@12
+WindowsConcatString@12
+WindowsCreateString@12
+WindowsCreateStringReference@16
+WindowsDeleteString@4
+WindowsDeleteStringBuffer@4
+WindowsDuplicateString@8
+WindowsGetStringLen@4
+WindowsGetStringRawBuffer@8
+WindowsIsStringEmpty@4
+WindowsPreallocateStringBuffer@12
+WindowsPromoteStringBuffer@8
+WindowsReplaceString@16
+WindowsStringHasEmbeddedNull@8
+WindowsSubstring@12
+WindowsSubstringWithSpecifiedLength@16
+WindowsTrimStringEnd@12
+WindowsTrimStringStart@12
diff --git a/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-1.def
new file mode 100644
index 0000000000..fe4fbbce3f
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-1.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-wow64-l1-1-1
+
+EXPORTS
+
+IsWow64Process@8
+IsWow64Process2@12
diff --git a/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-1.def
new file mode 100644
index 0000000000..03c04309d9
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-1.def
@@ -0,0 +1,17 @@
+LIBRARY api-ms-win-devices-config-l1-1-1
+
+EXPORTS
+
+CM_Get_Device_ID_List_SizeW@
+CM_Get_Device_ID_ListW@
+CM_Get_Device_IDW@
+CM_Get_Device_Interface_List_SizeW@
+CM_Get_Device_Interface_ListW@
+CM_Get_Device_Interface_PropertyW@
+CM_Get_DevNode_PropertyW@
+CM_Get_DevNode_Status@
+CM_Get_Parent@
+CM_Locate_DevNodeW@
+CM_MapCrToWin32Err@
+CM_Register_Notification@
+CM_Unregister_Notification@
diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-deviceinformation-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-gaming-deviceinformation-l1-1-0.def
new file mode 100644
index 0000000000..767ec6bc08
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-gaming-deviceinformation-l1-1-0.def
@@ -0,0 +1,5 @@
+LIBRARY api-ms-win-gaming-deviceinformation-l1-1-0
+
+EXPORTS
+
+GetGamingDeviceModelInformation@
diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-expandedresources-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-gaming-expandedresources-l1-1-0.def
new file mode 100644
index 0000000000..1c160a2c58
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-gaming-expandedresources-l1-1-0.def
@@ -0,0 +1,7 @@
+LIBRARY api-ms-win-gaming-expandedresources-l1-1-0
+
+EXPORTS
+
+GetExpandedResourceExclusiveCpuCount@
+HasExpandedResources@
+ReleaseExclusiveCpuSets@
diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-0.def
new file mode 100644
index 0000000000..ba5e6d4065
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-0.def
@@ -0,0 +1,11 @@
+LIBRARY api-ms-win-gaming-tcui-l1-1-0
+
+EXPORTS
+
+ProcessPendingGameUI@4
+ShowChangeFriendRelationshipUI@12
+ShowGameInviteUI@24
+ShowPlayerPickerUI@36
+ShowProfileCardUI@12
+ShowTitleAchievementsUI@12
+TryCancelPendingGameUI@0
diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-2.def
new file mode 100644
index 0000000000..4ee72ad7d4
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-2.def
@@ -0,0 +1,20 @@
+LIBRARY api-ms-win-gaming-tcui-l1-1-2
+
+EXPORTS
+
+CheckGamingPrivilegeSilently@16
+CheckGamingPrivilegeSilentlyForUser@20
+CheckGamingPrivilegeWithUI@24
+CheckGamingPrivilegeWithUIForUser@28
+ProcessPendingGameUI@4
+ShowChangeFriendRelationshipUI@12
+ShowChangeFriendRelationshipUIForUser@16
+ShowGameInviteUI@24
+ShowGameInviteUIForUser@28
+ShowPlayerPickerUI@36
+ShowPlayerPickerUIForUser@40
+ShowProfileCardUI@12
+ShowProfileCardUIForUser@16
+ShowTitleAchievementsUI@12
+ShowTitleAchievementsUIForUser@16
+TryCancelPendingGameUI@0
diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-3.def
new file mode 100644
index 0000000000..4dc0614774
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-3.def
@@ -0,0 +1,22 @@
+LIBRARY api-ms-win-gaming-tcui-l1-1-3
+
+EXPORTS
+
+CheckGamingPrivilegeSilently@16
+CheckGamingPrivilegeSilentlyForUser@20
+CheckGamingPrivilegeWithUI@24
+CheckGamingPrivilegeWithUIForUser@28
+ProcessPendingGameUI@4
+ShowChangeFriendRelationshipUI@12
+ShowChangeFriendRelationshipUIForUser@16
+ShowGameInviteUI@24
+ShowGameInviteUIForUser@28
+ShowGameInviteUIWithContext@
+ShowGameInviteUIWithContextForUser@
+ShowPlayerPickerUI@36
+ShowPlayerPickerUIForUser@40
+ShowProfileCardUI@12
+ShowProfileCardUIForUser@16
+ShowTitleAchievementsUI@12
+ShowTitleAchievementsUIForUser@16
+TryCancelPendingGameUI@0
diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-4.def b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-4.def
new file mode 100644
index 0000000000..084619ac25
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-4.def
@@ -0,0 +1,30 @@
+LIBRARY api-ms-win-gaming-tcui-l1-1-4
+
+EXPORTS
+
+CheckGamingPrivilegeSilently@16
+CheckGamingPrivilegeSilentlyForUser@20
+CheckGamingPrivilegeWithUI@24
+CheckGamingPrivilegeWithUIForUser@28
+ProcessPendingGameUI@4
+ShowChangeFriendRelationshipUI@12
+ShowChangeFriendRelationshipUIForUser@16
+ShowCustomizeUserProfileUI@
+ShowCustomizeUserProfileUIForUser@
+ShowFindFriendsUI@
+ShowFindFriendsUIForUser@
+ShowGameInfoUI@
+ShowGameInfoUIForUser@
+ShowGameInviteUI@24
+ShowGameInviteUIForUser@28
+ShowGameInviteUIWithContext@
+ShowGameInviteUIWithContextForUser@
+ShowPlayerPickerUI@36
+ShowPlayerPickerUIForUser@40
+ShowProfileCardUI@12
+ShowProfileCardUIForUser@16
+ShowTitleAchievementsUI@12
+ShowTitleAchievementsUIForUser@16
+ShowUserSettingsUI@
+ShowUserSettingsUIForUser@
+TryCancelPendingGameUI@0
diff --git a/lib/libc/mingw/lib32/api-ms-win-security-isolatedcontainer-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-isolatedcontainer-l1-1-0.def
new file mode 100644
index 0000000000..741499b16d
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-security-isolatedcontainer-l1-1-0.def
@@ -0,0 +1,5 @@
+LIBRARY api-ms-win-security-isolatedcontainer-l1-1-0
+
+EXPORTS
+
+IsProcessInIsolatedContainer@4
diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-stream-winrt-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-shcore-stream-winrt-l1-1-0.def
new file mode 100644
index 0000000000..5dafc212e5
--- /dev/null
+++ b/lib/libc/mingw/lib32/api-ms-win-shcore-stream-winrt-l1-1-0.def
@@ -0,0 +1,7 @@
+LIBRARY api-ms-win-shcore-stream-winrt-l1-1-0
+
+EXPORTS
+
+CreateRandomAccessStreamOnFile@16
+CreateRandomAccessStreamOverStream@16
+CreateStreamOverRandomAccessStream@12
diff --git a/lib/libc/mingw/lib32/authz.def b/lib/libc/mingw/lib32/authz.def
new file mode 100644
index 0000000000..262a2da26d
--- /dev/null
+++ b/lib/libc/mingw/lib32/authz.def
@@ -0,0 +1,53 @@
+;
+; Definition file of AUTHZ.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "AUTHZ.dll"
+EXPORTS
+AuthzAccessCheck@36
+AuthzAddSidsToContext@24
+AuthzCachedAccessCheck@20
+AuthzEnumerateSecurityEventSources@16
+AuthzEvaluateSacl@24
+AuthzFreeAuditEvent@4
+AuthzFreeContext@4
+AuthzFreeHandle@4
+AuthzFreeResourceManager@4
+AuthzGetInformationFromContext@20
+AuthzInitializeContextFromAuthzContext@28
+AuthzInitializeContextFromSid@32
+AuthzInitializeContextFromToken@32
+AuthzInitializeObjectAccessAuditEvent
+AuthzInitializeObjectAccessAuditEvent2
+AuthzInitializeResourceManager@24
+AuthzInstallSecurityEventSource@8
+AuthzModifySecurityAttributes@12
+AuthzOpenObjectAudit@32
+AuthzRegisterSecurityEventSource@12
+AuthzReportSecurityEvent
+AuthzReportSecurityEventFromParams@20
+AuthzUninstallSecurityEventSource@8
+AuthzUnregisterSecurityEventSource@8
+AuthziAccessCheckEx@40
+AuthziAllocateAuditParams@8
+AuthziCheckContextMembership@16
+AuthziFreeAuditEventType@4
+AuthziFreeAuditParams@4
+AuthziFreeAuditQueue@4
+AuthziGenerateAdminAlertAuditW@16
+AuthziInitializeAuditEvent@44
+AuthziInitializeAuditEventType@20
+AuthziInitializeAuditParams
+AuthziInitializeAuditParamsFromArray@20
+AuthziInitializeAuditParamsWithRM
+AuthziInitializeAuditQueue@20
+AuthziInitializeContextFromSid@32
+AuthziLogAuditEvent@12
+AuthziModifyAuditEvent2@32
+AuthziModifyAuditEvent@28
+AuthziModifyAuditEventType@20
+AuthziModifyAuditQueue@24
+AuthziModifySecurityAttributes@12
+AuthziQuerySecurityAttributes@24
+AuthziSourceAudit
diff --git a/lib/libc/mingw/lib32/avicap32.def b/lib/libc/mingw/lib32/avicap32.def
new file mode 100644
index 0000000000..cde12a4725
--- /dev/null
+++ b/lib/libc/mingw/lib32/avicap32.def
@@ -0,0 +1,8 @@
+LIBRARY AVICAP32.DLL
+EXPORTS
+videoThunk32@20
+capGetDriverDescriptionW@20
+capGetDriverDescriptionA@20
+capCreateCaptureWindowW@32
+capCreateCaptureWindowA@32
+AppCleanup@4
diff --git a/lib/libc/mingw/lib32/avifil32.def b/lib/libc/mingw/lib32/avifil32.def
new file mode 100644
index 0000000000..32f8cb633c
--- /dev/null
+++ b/lib/libc/mingw/lib32/avifil32.def
@@ -0,0 +1,77 @@
+LIBRARY AVIFIL32.DLL
+EXPORTS
+IID_IGetFrame
+IID_IAVIStream
+IID_IAVIFile
+IID_IAVIEditStream
+EditStreamSetNameW@8
+EditStreamSetNameA@8
+EditStreamSetName@8
+EditStreamSetInfoW@12
+EditStreamSetInfoA@12
+EditStreamSetInfo@12
+EditStreamPaste@24
+EditStreamCut@16
+EditStreamCopy@16
+EditStreamClone@8
+CreateEditableStream@8
+AVIStreamWriteData@16
+AVIStreamWrite@32
+AVIStreamTimeToSample@8
+AVIStreamStart@4
+AVIStreamSetFormat@16
+AVIStreamSampleToTime@8
+AVIStreamRelease@4
+AVIStreamReadFormat@16
+AVIStreamReadData@16
+AVIStreamRead@28
+AVIStreamOpenFromFileW@24
+AVIStreamOpenFromFileA@24
+AVIStreamOpenFromFile@24
+AVIStreamLength@4
+AVIStreamInfoW@12
+AVIStreamInfoA@12
+AVIStreamInfo@12
+AVIStreamGetFrameOpen@8
+AVIStreamGetFrameClose@4
+AVIStreamGetFrame@8
+AVIStreamFindSample@12
+AVIStreamEndStreaming@4
+AVIStreamCreate@16
+AVIStreamBeginStreaming@16
+AVIStreamAddRef@4
+AVISaveW
+AVISaveVW@24
+AVISaveVA@24
+AVISaveV@24
+AVISaveOptionsFree@8
+AVISaveOptions@20
+AVISaveA
+AVISave
+AVIPutFileOnClipboard@4
+AVIMakeStreamFromClipboard@12
+AVIMakeFileFromStreams@12
+AVIMakeCompressedStream@16
+AVIGetFromClipboard@4
+AVIFileWriteData@16
+AVIFileRelease@4
+AVIFileReadData@16
+AVIFileOpenW@16
+AVIFileOpenA@16
+AVIFileOpen@16
+AVIFileInit@0
+AVIFileInfoW@12
+AVIFileInfoA@12
+AVIFileInfo@12
+AVIFileGetStream@16
+AVIFileExit@0
+AVIFileEndRecord@4
+AVIFileCreateStreamW@12
+AVIFileCreateStreamA@12
+AVIFileCreateStream@12
+AVIFileAddRef@4
+AVIClearClipboard@0
+AVIBuildFilterW@12
+AVIBuildFilterA@12
+AVIBuildFilter@12
+
diff --git a/lib/libc/mingw/lib32/bluetoothapis.def b/lib/libc/mingw/lib32/bluetoothapis.def
new file mode 100644
index 0000000000..b91edb81fe
--- /dev/null
+++ b/lib/libc/mingw/lib32/bluetoothapis.def
@@ -0,0 +1,103 @@
+;
+; Definition file of BluetoothApis.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "BluetoothApis.dll"
+EXPORTS
+BluetoothAddressToString@12
+BluetoothDisconnectDevice@8
+BluetoothEnableDiscovery@8
+BluetoothEnableIncomingConnections@8
+BluetoothEnumerateInstalledServices@16
+BluetoothEnumerateInstalledServicesEx@16
+BluetoothEnumerateLocalServices@12
+BluetoothFindBrowseGroupClose@4
+BluetoothFindClassIdClose@4
+BluetoothFindDeviceClose@4
+BluetoothFindFirstBrowseGroup@8
+BluetoothFindFirstClassId@8
+BluetoothFindFirstDevice@8
+BluetoothFindFirstProfileDescriptor@8
+BluetoothFindFirstProtocolDescriptorStack@8
+BluetoothFindFirstProtocolEntry@8
+BluetoothFindFirstRadio@8
+BluetoothFindFirstService@8
+BluetoothFindFirstServiceEx@12
+BluetoothFindNextBrowseGroup@8
+BluetoothFindNextClassId@8
+BluetoothFindNextDevice@8
+BluetoothFindNextProfileDescriptor@8
+BluetoothFindNextProtocolDescriptorStack@8
+BluetoothFindNextProtocolEntry@8
+BluetoothFindNextRadio@8
+BluetoothFindNextService@8
+BluetoothFindProfileDescriptorClose@4
+BluetoothFindProtocolDescriptorStackClose@4
+BluetoothFindProtocolEntryClose@4
+BluetoothFindRadioClose@4
+BluetoothFindServiceClose@4
+BluetoothGATTAbortReliableWrite@16
+BluetoothGATTBeginReliableWrite@12
+BluetoothGATTEndReliableWrite@16
+BluetoothGATTGetCharacteristicValue@24
+BluetoothGATTGetCharacteristics@24
+BluetoothGATTGetDescriptorValue@24
+BluetoothGATTGetDescriptors@24
+BluetoothGATTGetIncludedServices@24
+BluetoothGATTGetServices@20
+BluetoothGATTRegisterEvent@28
+BluetoothGATTSetCharacteristicValue@24
+BluetoothGATTSetDescriptorValue@16
+BluetoothGATTUnregisterEvent@8
+BluetoothGetDeviceInfo@8
+BluetoothGetLocalServiceInfo@16
+BluetoothGetRadioInfo@8
+BluetoothGetServicePnpInstance@24
+BluetoothIsConnectable@4
+BluetoothIsDiscoverable@4
+BluetoothIsVersionAvailable@8
+BluetoothRegisterForAuthentication@16
+BluetoothRegisterForAuthenticationEx@16
+BluetoothRemoveDevice@4
+BluetoothSdpEnumAttributes@16
+BluetoothSdpGetAttributeValue@16
+BluetoothSdpGetContainerElementData@16
+BluetoothSdpGetElementData@12
+BluetoothSdpGetString@24
+BluetoothSendAuthenticationResponse@12
+BluetoothSendAuthenticationResponseEx@8
+BluetoothSetLocalServiceInfo@16
+BluetoothSetServiceState@16
+BluetoothSetServiceStateEx@20
+BluetoothUnregisterAuthentication@4
+BluetoothUpdateDeviceRecord@4
+BthpCheckForUnsupportedGuid@4
+BthpCleanupBRDeviceNode@8
+BthpCleanupDeviceLocalServices@4
+BthpCleanupDeviceRemoteServices@4
+BthpCleanupLEDeviceNodes@16
+BthpEnableA2DPIfPresent@8
+BthpEnableAllServices@8
+BthpEnableConnectableAndDiscoverable@12
+BthpEnableRadioSoftware@4
+BthpFindPnpInfo@16
+BthpGATTCloseSession@8
+BthpInnerRecord@12
+BthpIsBluetoothServiceRunning@0
+BthpIsConnectableByDefault@0
+BthpIsDiscoverable@4
+BthpIsDiscoverableByDefault@0
+BthpIsRadioSoftwareEnabled@4
+BthpIsTopOfServiceGroup@24
+BthpMapStatusToErr@4
+BthpNextRecord@8
+BthpRegisterForAuthentication@28
+BthpSetServiceState@36
+BthpSetServiceStateEx@40
+BthpTranspose16Bits@4
+BthpTranspose32Bits@4
+BthpTransposeAndExtendBytes@12
+FindNextOpenVCOMPort@4
+InstallIncomingComPort@8
+ShouldForceAuthentication@4
diff --git a/lib/libc/mingw/lib32/bthprops.def b/lib/libc/mingw/lib32/bthprops.def
new file mode 100644
index 0000000000..99abf0b826
--- /dev/null
+++ b/lib/libc/mingw/lib32/bthprops.def
@@ -0,0 +1,70 @@
+;
+; Definition file of bthprops.cpl
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "bthprops.cpl"
+EXPORTS
+ord_103@4 @103
+BluetoothAddressToString@12
+BluetoothAuthenticateDevice@20
+BluetoothAuthenticateDeviceEx@20
+BluetoothAuthenticateMultipleDevices@16
+BluetoothAuthenticationAgent@16
+BluetoothDisconnectDevice@8
+BluetoothDisplayDeviceProperties@8
+BluetoothEnableDiscovery@8
+BluetoothEnableIncomingConnections@8
+BluetoothEnumerateInstalledServices@16
+BluetoothFindBrowseGroupClose@4
+BluetoothFindClassIdClose@4
+BluetoothFindDeviceClose@4
+BluetoothFindFirstBrowseGroup@8
+BluetoothFindFirstClassId@8
+BluetoothFindFirstDevice@8
+BluetoothFindFirstProfileDescriptor@8
+BluetoothFindFirstProtocolDescriptorStack@8
+BluetoothFindFirstProtocolEntry@8
+BluetoothFindFirstRadio@8
+BluetoothFindFirstService@8
+BluetoothFindFirstServiceEx@12
+BluetoothFindNextBrowseGroup@8
+BluetoothFindNextClassId@8
+BluetoothFindNextDevice@8
+BluetoothFindNextProfileDescriptor@8
+BluetoothFindNextProtocolDescriptorStack@8
+BluetoothFindNextProtocolEntry@8
+BluetoothFindNextRadio@8
+BluetoothFindNextService@8
+BluetoothFindProfileDescriptorClose@4
+BluetoothFindProtocolDescriptorStackClose@4
+BluetoothFindProtocolEntryClose@4
+BluetoothFindRadioClose@4
+BluetoothFindServiceClose@4
+BluetoothGetDeviceInfo@8
+BluetoothGetRadioInfo@8
+BluetoothIsConnectable@4
+BluetoothIsDiscoverable@4
+BluetoothIsVersionAvailable@8
+BluetoothMapClassOfDeviceToImageIndex@4
+BluetoothMapClassOfDeviceToString@4
+BluetoothRegisterForAuthentication@16
+BluetoothRegisterForAuthenticationEx@16
+BluetoothRemoveDevice@4
+BluetoothSdpEnumAttributes@16
+BluetoothSdpGetAttributeValue@16
+BluetoothSdpGetContainerElementData@16
+BluetoothSdpGetElementData@12
+BluetoothSdpGetString@24
+BluetoothSelectDevices@4
+BluetoothSelectDevicesFree@4
+BluetoothSendAuthenticationResponse@12
+BluetoothSendAuthenticationResponseEx@8
+BluetoothSetLocalServiceInfo@16
+BluetoothSetServiceState@16
+BluetoothUnregisterAuthentication@4
+BluetoothUpdateDeviceRecord@4
+BthpEnableAllServices@8
+BthpFindPnpInfo@16
+BthpMapStatusToErr@4
+CPlApplet@16
diff --git a/lib/libc/mingw/lib32/cabinet.def b/lib/libc/mingw/lib32/cabinet.def
new file mode 100644
index 0000000000..e4dc8c1a8e
--- /dev/null
+++ b/lib/libc/mingw/lib32/cabinet.def
@@ -0,0 +1,21 @@
+;
+; Definition file of Cabinet.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "Cabinet.dll"
+EXPORTS
+GetDllVersion@0
+DllGetVersion@4
+Extract@8
+DeleteExtractedFiles@4
+FCICreate
+FCIAddFile
+FCIFlushFolder
+FCIFlushCabinet
+FCIDestroy
+FDICreate
+FDIIsCabinet
+FDICopy
+FDIDestroy
+FDITruncateCabinet
diff --git a/lib/libc/mingw/lib32/cfgmgr32.def b/lib/libc/mingw/lib32/cfgmgr32.def
new file mode 100644
index 0000000000..068e90c671
--- /dev/null
+++ b/lib/libc/mingw/lib32/cfgmgr32.def
@@ -0,0 +1,257 @@
+;
+; Definition file of CFGMGR32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "CFGMGR32.dll"
+EXPORTS
+CMP_GetBlockedDriverInfo@16
+CMP_GetServerSideDeviceInstallFlags@12
+CMP_Init_Detection@4
+CMP_RegisterNotification@24
+CMP_Report_LogOn@8
+CMP_UnregisterNotification@4
+CMP_WaitNoPendingInstallEvents@4
+CMP_WaitServicesAvailable@4
+CM_Add_Driver_PackageW@40
+CM_Add_Driver_Package_ExW@44
+CM_Add_Empty_Log_Conf@16
+CM_Add_Empty_Log_Conf_Ex@20
+CM_Add_IDA@12
+CM_Add_IDW@12
+CM_Add_ID_ExA@16
+CM_Add_ID_ExW@16
+CM_Add_Range@24
+CM_Add_Res_Des@24
+CM_Add_Res_Des_Ex@28
+CM_Apply_PowerScheme@0
+CM_Connect_MachineA@8
+CM_Connect_MachineW@8
+CM_Create_DevNodeA@16
+CM_Create_DevNodeW@16
+CM_Create_DevNode_ExA@20
+CM_Create_DevNode_ExW@20
+CM_Create_Range_List@8
+CM_Delete_Class_Key@8
+CM_Delete_Class_Key_Ex@12
+CM_Delete_DevNode_Key@12
+CM_Delete_DevNode_Key_Ex@16
+CM_Delete_Device_Interface_KeyA@8
+CM_Delete_Device_Interface_KeyW@8
+CM_Delete_Device_Interface_Key_ExA@12
+CM_Delete_Device_Interface_Key_ExW@12
+CM_Delete_Driver_PackageW@24
+CM_Delete_Driver_Package_ExW@28
+CM_Delete_PowerScheme@8
+CM_Delete_Range@24
+CM_Detect_Resource_Conflict@24
+CM_Detect_Resource_Conflict_Ex@28
+CM_Disable_DevNode@8
+CM_Disable_DevNode_Ex@12
+CM_Disconnect_Machine@4
+CM_Dup_Range_List@12
+CM_Duplicate_PowerScheme@12
+CM_Enable_DevNode@8
+CM_Enable_DevNode_Ex@12
+CM_Enumerate_Classes@12
+CM_Enumerate_Classes_Ex@16
+CM_Enumerate_EnumeratorsA@16
+CM_Enumerate_EnumeratorsW@16
+CM_Enumerate_Enumerators_ExA@20
+CM_Enumerate_Enumerators_ExW@20
+CM_Find_Range@40
+CM_First_Range@20
+CM_Free_Log_Conf@8
+CM_Free_Log_Conf_Ex@12
+CM_Free_Log_Conf_Handle@4
+CM_Free_Range_List@8
+CM_Free_Res_Des@12
+CM_Free_Res_Des_Ex@16
+CM_Free_Res_Des_Handle@4
+CM_Free_Resource_Conflict_Handle@4
+CM_Get_Child@12
+CM_Get_Child_Ex@16
+CM_Get_Class_Key_NameA@16
+CM_Get_Class_Key_NameW@16
+CM_Get_Class_Key_Name_ExA@20
+CM_Get_Class_Key_Name_ExW@20
+CM_Get_Class_NameA@16
+CM_Get_Class_NameW@16
+CM_Get_Class_Name_ExA@20
+CM_Get_Class_Name_ExW@20
+CM_Get_Class_PropertyW@24
+CM_Get_Class_Property_ExW@28
+CM_Get_Class_Property_Keys@16
+CM_Get_Class_Property_Keys_Ex@20
+CM_Get_Class_Registry_PropertyA@28
+CM_Get_Class_Registry_PropertyW@28
+CM_Get_Depth@12
+CM_Get_Depth_Ex@16
+CM_Get_DevNode_Custom_PropertyA@24
+CM_Get_DevNode_Custom_PropertyW@24
+CM_Get_DevNode_Custom_Property_ExA@28
+CM_Get_DevNode_Custom_Property_ExW@28
+CM_Get_DevNode_PropertyW@24
+CM_Get_DevNode_Property_ExW@28
+CM_Get_DevNode_Property_Keys@16
+CM_Get_DevNode_Property_Keys_Ex@20
+CM_Get_DevNode_Registry_PropertyA@24
+CM_Get_DevNode_Registry_PropertyW@24
+CM_Get_DevNode_Registry_Property_ExA@28
+CM_Get_DevNode_Registry_Property_ExW@28
+CM_Get_DevNode_Status@16
+CM_Get_DevNode_Status_Ex@20
+CM_Get_Device_IDA@16
+CM_Get_Device_IDW@16
+CM_Get_Device_ID_ExA@20
+CM_Get_Device_ID_ExW@20
+CM_Get_Device_ID_ListA@16
+CM_Get_Device_ID_ListW@16
+CM_Get_Device_ID_List_ExA@20
+CM_Get_Device_ID_List_ExW@20
+CM_Get_Device_ID_List_SizeA@12
+CM_Get_Device_ID_List_SizeW@12
+CM_Get_Device_ID_List_Size_ExA@16
+CM_Get_Device_ID_List_Size_ExW@16
+CM_Get_Device_ID_Size@12
+CM_Get_Device_ID_Size_Ex@16
+CM_Get_Device_Interface_AliasA@20
+CM_Get_Device_Interface_AliasW@20
+CM_Get_Device_Interface_Alias_ExA@24
+CM_Get_Device_Interface_Alias_ExW@24
+CM_Get_Device_Interface_ListA@20
+CM_Get_Device_Interface_ListW@20
+CM_Get_Device_Interface_List_ExA@24
+CM_Get_Device_Interface_List_ExW@24
+CM_Get_Device_Interface_List_SizeA@16
+CM_Get_Device_Interface_List_SizeW@16
+CM_Get_Device_Interface_List_Size_ExA@20
+CM_Get_Device_Interface_List_Size_ExW@20
+CM_Get_Device_Interface_PropertyW@24
+CM_Get_Device_Interface_Property_ExW@28
+CM_Get_Device_Interface_Property_KeysW@16
+CM_Get_Device_Interface_Property_Keys_ExW@20
+CM_Get_First_Log_Conf@12
+CM_Get_First_Log_Conf_Ex@16
+CM_Get_Global_State@8
+CM_Get_Global_State_Ex@12
+CM_Get_HW_Prof_FlagsA@16
+CM_Get_HW_Prof_FlagsW@16
+CM_Get_HW_Prof_Flags_ExA@20
+CM_Get_HW_Prof_Flags_ExW@20
+CM_Get_Hardware_Profile_InfoA@12
+CM_Get_Hardware_Profile_InfoW@12
+CM_Get_Hardware_Profile_Info_ExA@16
+CM_Get_Hardware_Profile_Info_ExW@16
+CM_Get_Log_Conf_Priority@12
+CM_Get_Log_Conf_Priority_Ex@16
+CM_Get_Next_Log_Conf@12
+CM_Get_Next_Log_Conf_Ex@16
+CM_Get_Next_Res_Des@20
+CM_Get_Next_Res_Des_Ex@24
+CM_Get_Parent@12
+CM_Get_Parent_Ex@16
+CM_Get_Res_Des_Data@16
+CM_Get_Res_Des_Data_Ex@20
+CM_Get_Res_Des_Data_Size@12
+CM_Get_Res_Des_Data_Size_Ex@16
+CM_Get_Resource_Conflict_Count@8
+CM_Get_Resource_Conflict_DetailsA@12
+CM_Get_Resource_Conflict_DetailsW@12
+CM_Get_Sibling@12
+CM_Get_Sibling_Ex@16
+CM_Get_Version@0
+CM_Get_Version_Ex@4
+CM_Import_PowerScheme@12
+CM_Install_DevNodeW@32
+CM_Install_DevNode_ExW@36
+CM_Intersect_Range_List@16
+CM_Invert_Range_List@20
+CM_Is_Dock_Station_Present@4
+CM_Is_Dock_Station_Present_Ex@8
+CM_Is_Version_Available@4
+CM_Is_Version_Available_Ex@8
+CM_Locate_DevNodeA@12
+CM_Locate_DevNodeW@12
+CM_Locate_DevNode_ExA@16
+CM_Locate_DevNode_ExW@16
+CM_MapCrToSpErr@8
+CM_MapCrToWin32Err@8
+CM_Merge_Range_List@16
+CM_Modify_Res_Des@24
+CM_Modify_Res_Des_Ex@28
+CM_Move_DevNode@12
+CM_Move_DevNode_Ex@16
+CM_Next_Range@16
+CM_Open_Class_KeyA@24
+CM_Open_Class_KeyW@24
+CM_Open_Class_Key_ExA@28
+CM_Open_Class_Key_ExW@28
+CM_Open_DevNode_Key@24
+CM_Open_DevNode_Key_Ex@28
+CM_Open_Device_Interface_KeyA@20
+CM_Open_Device_Interface_KeyW@20
+CM_Open_Device_Interface_Key_ExA@24
+CM_Open_Device_Interface_Key_ExW@24
+CM_Query_And_Remove_SubTreeA@20
+CM_Query_And_Remove_SubTreeW@20
+CM_Query_And_Remove_SubTree_ExA@24
+CM_Query_And_Remove_SubTree_ExW@24
+CM_Query_Arbitrator_Free_Data@20
+CM_Query_Arbitrator_Free_Data_Ex@24
+CM_Query_Arbitrator_Free_Size@16
+CM_Query_Arbitrator_Free_Size_Ex@20
+CM_Query_Remove_SubTree@8
+CM_Query_Remove_SubTree_Ex@12
+CM_Query_Resource_Conflict_List@28
+CM_Reenumerate_DevNode@8
+CM_Reenumerate_DevNode_Ex@12
+CM_Register_Device_Driver@8
+CM_Register_Device_Driver_Ex@12
+CM_Register_Device_InterfaceA@24
+CM_Register_Device_InterfaceW@24
+CM_Register_Device_Interface_ExA@28
+CM_Register_Device_Interface_ExW@28
+CM_Remove_SubTree@8
+CM_Remove_SubTree_Ex@12
+CM_Request_Device_EjectA@20
+CM_Request_Device_EjectW@20
+CM_Request_Device_Eject_ExA@24
+CM_Request_Device_Eject_ExW@24
+CM_Request_Eject_PC@0
+CM_Request_Eject_PC_Ex@4
+CM_RestoreAll_DefaultPowerSchemes@4
+CM_Restore_DefaultPowerScheme@8
+CM_Run_Detection@4
+CM_Run_Detection_Ex@8
+CM_Set_ActiveScheme@8
+CM_Set_Class_PropertyW@24
+CM_Set_Class_Property_ExW@28
+CM_Set_Class_Registry_PropertyA@24
+CM_Set_Class_Registry_PropertyW@24
+CM_Set_DevNode_Problem@12
+CM_Set_DevNode_Problem_Ex@16
+CM_Set_DevNode_PropertyW@24
+CM_Set_DevNode_Property_ExW@28
+CM_Set_DevNode_Registry_PropertyA@20
+CM_Set_DevNode_Registry_PropertyW@20
+CM_Set_DevNode_Registry_Property_ExA@24
+CM_Set_DevNode_Registry_Property_ExW@24
+CM_Set_Device_Interface_PropertyW@24
+CM_Set_Device_Interface_Property_ExW@28
+CM_Set_HW_Prof@8
+CM_Set_HW_Prof_Ex@12
+CM_Set_HW_Prof_FlagsA@16
+CM_Set_HW_Prof_FlagsW@16
+CM_Set_HW_Prof_Flags_ExA@20
+CM_Set_HW_Prof_Flags_ExW@20
+CM_Setup_DevNode@8
+CM_Setup_DevNode_Ex@12
+CM_Test_Range_Available@24
+CM_Uninstall_DevNode@8
+CM_Uninstall_DevNode_Ex@12
+CM_Unregister_Device_InterfaceA@8
+CM_Unregister_Device_InterfaceW@8
+CM_Unregister_Device_Interface_ExA@12
+CM_Unregister_Device_Interface_ExW@12
+CM_Write_UserPowerKey@32
diff --git a/lib/libc/mingw/lib32/clfsw32.def b/lib/libc/mingw/lib32/clfsw32.def
new file mode 100644
index 0000000000..f59ecdd656
--- /dev/null
+++ b/lib/libc/mingw/lib32/clfsw32.def
@@ -0,0 +1,69 @@
+;
+; Definition file of clfsw32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "clfsw32.dll"
+EXPORTS
+LsnDecrement@4
+AddLogContainer@16
+AddLogContainerSet@20
+AdvanceLogBase@16
+AlignReservedLog@16
+AllocReservedLog@12
+CLFS_LSN_INVALID DATA
+CLFS_LSN_NULL DATA
+CloseAndResetLogFile@4
+CreateLogContainerScanContext@24
+CreateLogFile@24
+CreateLogMarshallingArea@32
+DeleteLogByHandle@4
+DeleteLogFile@8
+DeleteLogMarshallingArea@4
+DeregisterManageableLogClient@4
+DumpLogRecords@44
+FlushLogBuffers@8
+FlushLogToLsn@16
+FreeReservedLog@12
+GetLogContainerName@20
+GetLogFileInformation@12
+GetLogIoStatistics@20
+GetNextLogArchiveExtent@16
+HandleLogFull@4
+InstallLogPolicy@8
+LogTailAdvanceFailure@8
+LsnBlockOffset@4
+LsnContainer@4
+LsnCreate@12
+LsnEqual@8
+LsnGreater@8
+LsnIncrement@4
+LsnInvalid@4
+LsnLess@8
+LsnNull@4
+LsnRecordSequence@4
+PrepareLogArchive@48
+QueryLogPolicy@16
+ReadLogArchiveMetadata@20
+ReadLogNotification@12
+ReadLogRecord@40
+ReadLogRestartArea@24
+ReadNextLogRecord@36
+ReadPreviousLogRestartArea@20
+RegisterForLogWriteNotification@12
+RegisterManageableLogClient@8
+RemoveLogContainer@16
+RemoveLogContainerSet@20
+RemoveLogPolicy@8
+ReserveAndAppendLog@40
+ReserveAndAppendLogAligned@44
+ScanLogContainers@12
+SetEndOfLog@12
+SetLogArchiveMode@8
+SetLogArchiveTail@12
+SetLogFileSizeWithPolicy@12
+TerminateLogArchive@4
+TerminateReadLog@4
+TruncateLog@12
+ValidateLog@16
+WriteLogRestartArea@32
diff --git a/lib/libc/mingw/lib32/clusapi.def b/lib/libc/mingw/lib32/clusapi.def
new file mode 100644
index 0000000000..1fe4f97196
--- /dev/null
+++ b/lib/libc/mingw/lib32/clusapi.def
@@ -0,0 +1,136 @@
+;
+; Definition file of CLUSAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "CLUSAPI.dll"
+EXPORTS
+AddClusterNode@16
+AddClusterResourceDependency@8
+AddClusterResourceNode@8
+BackupClusterDatabase@8
+CanResourceBeDependent@8
+ChangeClusterResourceGroup@8
+CloseCluster@4
+CloseClusterGroup@4
+CloseClusterNetInterface@4
+CloseClusterNetwork@4
+CloseClusterNode@4
+CloseClusterNotifyPort@4
+CloseClusterResource@4
+ClusterCloseEnum@4
+ClusterControl@32
+ClusterEnum@20
+ClusterGetEnumCount@4
+ClusterGroupCloseEnum@4
+ClusterGroupControl@32
+ClusterGroupEnum@20
+ClusterGroupGetEnumCount@4
+ClusterGroupOpenEnum@8
+ClusterNetInterfaceControl@32
+ClusterNetworkCloseEnum@4
+ClusterNetworkControl@32
+ClusterNetworkEnum@20
+ClusterNetworkGetEnumCount@4
+ClusterNetworkOpenEnum@8
+ClusterNodeCloseEnum@4
+ClusterNodeControl@32
+ClusterNodeEnum@20
+ClusterNodeGetEnumCount@4
+ClusterNodeOpenEnum@8
+ClusterOpenEnum@8
+ClusterRegBatchAddCommand@24
+ClusterRegBatchCloseNotification@4
+ClusterRegBatchReadCommand@8
+ClusterRegCloseBatch@12
+ClusterRegCloseBatchNotifyPort@4
+ClusterRegCloseKey@4
+ClusterRegCreateBatch@8
+ClusterRegCreateBatchNotifyPort@8
+ClusterRegCreateKey@28
+ClusterRegDeleteKey@8
+ClusterRegDeleteValue@8
+ClusterRegEnumKey@20
+ClusterRegEnumValue@28
+ClusterRegGetBatchNotification@8
+ClusterRegGetKeySecurity@16
+ClusterRegOpenKey@16
+ClusterRegQueryInfoKey@32
+ClusterRegQueryValue@20
+ClusterRegSetKeySecurity@12
+ClusterRegSetValue@20
+ClusterResourceCloseEnum@4
+ClusterResourceControl@32
+ClusterResourceEnum@20
+ClusterResourceGetEnumCount@4
+ClusterResourceOpenEnum@8
+ClusterResourceTypeCloseEnum@4
+ClusterResourceTypeControl@36
+ClusterResourceTypeEnum@20
+ClusterResourceTypeGetEnumCount@4
+ClusterResourceTypeOpenEnum@12
+CreateCluster@12
+CreateClusterGroup@8
+CreateClusterNotifyPort@16
+CreateClusterResource@16
+CreateClusterResourceType@24
+DeleteClusterGroup@4
+DeleteClusterResource@4
+DeleteClusterResourceType@8
+DestroyCluster@16
+DestroyClusterGroup@4
+EvictClusterNode@4
+EvictClusterNodeEx@12
+FailClusterResource@4
+GetClusterFromGroup@4
+GetClusterFromNetInterface@4
+GetClusterFromNetwork@4
+GetClusterFromNode@4
+GetClusterFromResource@4
+GetClusterGroupKey@8
+GetClusterGroupState@12
+GetClusterInformation@16
+GetClusterKey@8
+GetClusterNetInterface@20
+GetClusterNetInterfaceKey@8
+GetClusterNetInterfaceState@4
+GetClusterNetworkId@12
+GetClusterNetworkKey@8
+GetClusterNetworkState@4
+GetClusterNodeId@12
+GetClusterNodeKey@8
+GetClusterNodeState@4
+GetClusterNotify@24
+GetClusterQuorumResource@24
+GetClusterResourceDependencyExpression@12
+GetClusterResourceKey@8
+GetClusterResourceNetworkName@12
+GetClusterResourceState@20
+GetClusterResourceTypeKey@12
+GetNodeClusterState@8
+MoveClusterGroup@8
+OfflineClusterGroup@4
+OfflineClusterResource@4
+OnlineClusterGroup@8
+OnlineClusterResource@4
+OpenCluster@4
+OpenClusterGroup@8
+OpenClusterNetInterface@8
+OpenClusterNetwork@8
+OpenClusterNode@8
+OpenClusterResource@8
+PauseClusterNode@4
+RegisterClusterNotify@16
+RemoveClusterResourceDependency@8
+RemoveClusterResourceNode@8
+RestoreClusterDatabase@12
+ResumeClusterNode@4
+SetClusterGroupName@8
+SetClusterGroupNodeList@12
+SetClusterName@8
+SetClusterNetworkName@8
+SetClusterNetworkPriorityOrder@12
+SetClusterQuorumResource@12
+SetClusterResourceDependencyExpression@8
+SetClusterResourceName@8
+SetClusterServiceAccountPassword@20
diff --git a/lib/libc/mingw/lib32/credui.def b/lib/libc/mingw/lib32/credui.def
new file mode 100644
index 0000000000..01cd97b490
--- /dev/null
+++ b/lib/libc/mingw/lib32/credui.def
@@ -0,0 +1,31 @@
+;
+; Definition file of credui.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "credui.dll"
+EXPORTS
+CredPackAuthenticationBufferA@20
+CredPackAuthenticationBufferW@20
+CredUICmdLinePromptForCredentialsA@36
+CredUICmdLinePromptForCredentialsW@36
+CredUIConfirmCredentialsA@8
+CredUIConfirmCredentialsW@8
+CredUIInitControls
+CredUIParseUserNameA@20
+CredUIParseUserNameW@20
+CredUIPromptForCredentialsA@40
+CredUIPromptForCredentialsW@40
+CredUIPromptForWindowsCredentialsA@36
+CredUIPromptForWindowsCredentialsW@36
+CredUIPromptForWindowsCredentialsWorker@44
+CredUIReadSSOCredA@8
+CredUIReadSSOCredW@8
+CredUIStoreSSOCredA@16
+CredUIStoreSSOCredW@16
+CredUnPackAuthenticationBufferA@36
+CredUnPackAuthenticationBufferW@36
+DllCanUnloadNow
+DllGetClassObject@12
+DllRegisterServer
+DllUnregisterServer
diff --git a/lib/libc/mingw/lib32/cryptxml.def b/lib/libc/mingw/lib32/cryptxml.def
new file mode 100644
index 0000000000..c835169c6f
--- /dev/null
+++ b/lib/libc/mingw/lib32/cryptxml.def
@@ -0,0 +1,26 @@
+;
+; Definition file of CRYPTXML.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "CRYPTXML.dll"
+EXPORTS
+CryptXmlAddObject@24
+CryptXmlClose@4
+CryptXmlCreateReference@36
+CryptXmlDigestReference@12
+CryptXmlEncode@24
+CryptXmlEnumAlgorithmInfo@16
+CryptXmlFindAlgorithmInfo@16
+CryptXmlGetAlgorithmInfo@12
+CryptXmlGetDocContext@8
+CryptXmlGetReference@8
+CryptXmlGetSignature@8
+CryptXmlGetStatus@8
+CryptXmlGetTransforms@4
+CryptXmlImportPublicKey@12
+CryptXmlOpenToDecode@24
+CryptXmlOpenToEncode@28
+CryptXmlSetHMACSecret@12
+CryptXmlSign@32
+CryptXmlVerifySignature@12
diff --git a/lib/libc/mingw/lib32/cscapi.def b/lib/libc/mingw/lib32/cscapi.def
new file mode 100644
index 0000000000..643c6e9ac6
--- /dev/null
+++ b/lib/libc/mingw/lib32/cscapi.def
@@ -0,0 +1,11 @@
+;
+; Definition file of CSCAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "CSCAPI.dll"
+EXPORTS
+CscNetApiGetInterface@16
+CscSearchApiGetInterface@12
+OfflineFilesEnable@8
+OfflineFilesQueryStatus@8
diff --git a/lib/libc/mingw/lib32/d2d1.def b/lib/libc/mingw/lib32/d2d1.def
new file mode 100644
index 0000000000..846e49ba8a
--- /dev/null
+++ b/lib/libc/mingw/lib32/d2d1.def
@@ -0,0 +1,12 @@
+;
+; Definition file of d2d1.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "d2d1.dll"
+EXPORTS
+D2D1CreateFactory@16
+D2D1MakeRotateMatrix@16
+D2D1MakeSkewMatrix@20
+D2D1IsMatrixInvertible@4
+D2D1InvertMatrix@4
diff --git a/lib/libc/mingw/lib32/d3d10.def b/lib/libc/mingw/lib32/d3d10.def
new file mode 100644
index 0000000000..555d877b11
--- /dev/null
+++ b/lib/libc/mingw/lib32/d3d10.def
@@ -0,0 +1,31 @@
+LIBRARY "d3d10.dll"
+EXPORTS
+D3D10CompileEffectFromMemory@36
+D3D10CompileShader@40
+D3D10CreateBlob@8
+D3D10CreateDevice@24
+D3D10CreateDeviceAndSwapChain@32
+D3D10CreateEffectFromMemory@24
+D3D10CreateEffectPoolFromMemory@20
+D3D10CreateStateBlock@12
+D3D10DisassembleEffect@12
+D3D10DisassembleShader@20
+D3D10GetGeometryShaderProfile@4
+D3D10GetInputAndOutputSignatureBlob@12
+D3D10GetInputSignatureBlob@12
+D3D10GetOutputSignatureBlob@12
+D3D10GetPixelShaderProfile@4
+D3D10GetShaderDebugInfo@12
+D3D10GetVersion@0
+D3D10GetVertexShaderProfile@4
+D3D10PreprocessShader@28
+D3D10ReflectShader@12
+D3D10RegisterLayers@0
+D3D10StateBlockMaskDifference@12
+D3D10StateBlockMaskDisableAll@4
+D3D10StateBlockMaskDisableCapture@16
+D3D10StateBlockMaskEnableAll@4
+D3D10StateBlockMaskEnableCapture@16
+D3D10StateBlockMaskGetSetting@12
+D3D10StateBlockMaskIntersect@12
+D3D10StateBlockMaskUnion@12
diff --git a/lib/libc/mingw/lib32/d3d11.def b/lib/libc/mingw/lib32/d3d11.def
new file mode 100644
index 0000000000..7bc60078ee
--- /dev/null
+++ b/lib/libc/mingw/lib32/d3d11.def
@@ -0,0 +1,59 @@
+;
+; Definition file of d3d11.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "d3d11.dll"
+EXPORTS
+D3D11CreateDeviceForD3D12@36
+D3DKMTCloseAdapter@4
+D3DKMTDestroyAllocation@4
+D3DKMTDestroyContext@4
+D3DKMTDestroyDevice@4
+D3DKMTDestroySynchronizationObject@4
+D3DKMTPresent@4
+D3DKMTQueryAdapterInfo@4
+D3DKMTSetDisplayPrivateDriverFormat@4
+D3DKMTSignalSynchronizationObject@4
+D3DKMTUnlock@4
+D3DKMTWaitForSynchronizationObject@4
+EnableFeatureLevelUpgrade
+OpenAdapter10@4
+OpenAdapter10_2@4
+CreateDirect3D11DeviceFromDXGIDevice@8
+CreateDirect3D11SurfaceFromDXGISurface@8
+D3D11CoreCreateDevice@40
+D3D11CoreCreateLayeredDevice@20
+D3D11CoreGetLayeredDeviceSize@8
+D3D11CoreRegisterLayers@8
+D3D11CreateDevice@40
+D3D11CreateDeviceAndSwapChain@48
+D3D11On12CreateDevice@40
+D3DKMTCreateAllocation@4
+D3DKMTCreateContext@4
+D3DKMTCreateDevice@4
+D3DKMTCreateSynchronizationObject@4
+D3DKMTEscape@4
+D3DKMTGetContextSchedulingPriority@4
+D3DKMTGetDeviceState@4
+D3DKMTGetDisplayModeList@4
+D3DKMTGetMultisampleMethodList@4
+D3DKMTGetRuntimeData@4
+D3DKMTGetSharedPrimaryHandle@4
+D3DKMTLock@4
+D3DKMTOpenAdapterFromHdc@4
+D3DKMTOpenResource@4
+D3DKMTPresent@4
+D3DKMTQueryAllocationResidency@4
+D3DKMTQueryResourceInfo@4
+D3DKMTRender@4
+D3DKMTSetAllocationPriority@4
+D3DKMTSetContextSchedulingPriority@4
+D3DKMTSetDisplayMode@4
+D3DKMTSetGammaRamp@4
+D3DKMTSetVidPnSourceOwner@4
+D3DKMTWaitForVerticalBlankEvent@4
+D3DPerformance_BeginEvent@8
+D3DPerformance_EndEvent@4
+D3DPerformance_GetStatus@4
+D3DPerformance_SetMarker@8
diff --git a/lib/libc/mingw/lib32/d3d12.def b/lib/libc/mingw/lib32/d3d12.def
new file mode 100644
index 0000000000..81906ca3a4
--- /dev/null
+++ b/lib/libc/mingw/lib32/d3d12.def
@@ -0,0 +1,19 @@
+LIBRARY "d3d12.dll"
+EXPORTS
+GetBehaviorValue@8
+D3D12CreateDevice@16
+D3D12GetDebugInterface@8
+SetAppCompatStringPointer@8
+D3D12CoreCreateLayeredDevice@20
+D3D12CoreGetLayeredDeviceSize@8
+D3D12CoreRegisterLayers@8
+D3D12CreateRootSignatureDeserializer@16
+D3D12CreateVersionedRootSignatureDeserializer@16
+D3D12DeviceRemovedExtendedData DATA
+D3D12EnableExperimentalFeatures@16
+D3D12PIXEventsReplaceBlock@4
+D3D12PIXGetThreadInfo@0
+D3D12PIXNotifyWakeFromFenceSignal@4
+D3D12PIXReportCounter@8
+D3D12SerializeRootSignature@16
+D3D12SerializeVersionedRootSignature@12
diff --git a/lib/libc/mingw/lib32/d3d9.def b/lib/libc/mingw/lib32/d3d9.def
new file mode 100644
index 0000000000..f74c842d31
--- /dev/null
+++ b/lib/libc/mingw/lib32/d3d9.def
@@ -0,0 +1,16 @@
+LIBRARY d3d9.dll
+EXPORTS
+Direct3DShaderValidatorCreate9@0
+;PSGPError@12 ;unknown
+;PSGPSampleTexture@20 ;unknown
+D3DPERF_BeginEvent@8
+D3DPERF_EndEvent@0
+D3DPERF_GetStatus@0
+D3DPERF_QueryRepeatFrame@0
+D3DPERF_SetMarker@8
+D3DPERF_SetOptions@4
+D3DPERF_SetRegion@8
+;DebugSetLevel ;unknown
+;DebugSetMute@0
+Direct3DCreate9@4
+Direct3DCreate9Ex@8
diff --git a/lib/libc/mingw/lib32/d3dcompiler_47.def b/lib/libc/mingw/lib32/d3dcompiler_47.def
new file mode 100644
index 0000000000..85f506f8a5
--- /dev/null
+++ b/lib/libc/mingw/lib32/d3dcompiler_47.def
@@ -0,0 +1,36 @@
+;
+; Definition file of D3DCOMPILER_47.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "D3DCOMPILER_47.dll"
+EXPORTS
+D3DAssemble@32
+DebugSetMute
+D3DCompile2@56
+D3DCompile@44
+D3DCompileFromFile@36
+D3DCompressShaders@16
+D3DCreateBlob@8
+D3DCreateFunctionLinkingGraph@8
+D3DCreateLinker@4
+D3DDecompressShaders@32
+D3DDisassemble10Effect@12
+D3DDisassemble11Trace@28
+D3DDisassemble@20
+D3DDisassembleRegion@32
+D3DGetBlobPart@20
+D3DGetDebugInfo@12
+D3DGetInputAndOutputSignatureBlob@12
+D3DGetInputSignatureBlob@12
+D3DGetOutputSignatureBlob@12
+D3DGetTraceInstructionOffsets@28
+D3DLoadModule@12
+D3DPreprocess@28
+D3DReadFileToBlob@8
+D3DReflect@16
+D3DReflectLibrary@16
+D3DReturnFailure1@12
+D3DSetBlobPart@28
+D3DStripShader@16
+D3DWriteBlobToFile@12
diff --git a/lib/libc/mingw/lib32/davclnt.def b/lib/libc/mingw/lib32/davclnt.def
new file mode 100644
index 0000000000..5dcc9f8e6a
--- /dev/null
+++ b/lib/libc/mingw/lib32/davclnt.def
@@ -0,0 +1,30 @@
+;
+; Definition file of davclnt.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "davclnt.dll"
+EXPORTS
+DavCancelConnectionsToServer@8
+DavFreeUsedDiskSpace@4
+DavGetDiskSpaceUsage@16
+DavGetTheLockOwnerOfTheFile@12
+DavInvalidateCache@4
+DavRegisterAuthCallback@8
+DavUnregisterAuthCallback@4
+DllCanUnloadNow@0
+DllGetClassObject@12
+DllMain@12
+NPAddConnection3@20
+NPAddConnection@12
+NPCancelConnection@8
+NPCloseEnum@4
+NPEnumResource@16
+NPFormatNetworkName@20
+NPGetCaps@4
+NPGetConnection@12
+NPGetResourceInformation@16
+NPGetResourceParent@12
+NPGetUniversalName@16
+NPGetUser@12
+NPOpenEnum@20
diff --git a/lib/libc/mingw/lib32/dcomp.def b/lib/libc/mingw/lib32/dcomp.def
new file mode 100644
index 0000000000..da316b34b3
--- /dev/null
+++ b/lib/libc/mingw/lib32/dcomp.def
@@ -0,0 +1,19 @@
+;
+; Definition file of dcomp.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dcomp.dll"
+EXPORTS
+DCompositionAttachMouseDragToHwnd@12
+DCompositionAttachMouseWheelToHwnd@12
+DCompositionCreateDevice2@12
+DCompositionCreateDevice3@12
+DCompositionCreateDevice@12
+DCompositionCreateSurfaceHandle@12
+DllCanUnloadNow
+DllGetActivationFactory@8
+DllGetClassObject@12
+DwmEnableMMCSS@4
+DwmFlush
+DwmpEnableDDASupport
diff --git a/lib/libc/mingw/lib32/ddraw.def b/lib/libc/mingw/lib32/ddraw.def
new file mode 100644
index 0000000000..fdf57c18b0
--- /dev/null
+++ b/lib/libc/mingw/lib32/ddraw.def
@@ -0,0 +1,15 @@
+LIBRARY ddraw.dll
+EXPORTS
+DDGetAttachedSurfaceLcl@12
+DDInternalLock@8
+DDInternalUnlock@4
+DSoundHelp@12
+DirectDrawCreate@12
+DirectDrawCreateClipper@12
+DirectDrawCreateEx@16
+DirectDrawEnumerateA@8
+DirectDrawEnumerateExA@12
+DirectDrawEnumerateExW@12
+DirectDrawEnumerateW@8
+GetDDSurfaceLocal@12
+GetSurfaceFromDC@12
diff --git a/lib/libc/mingw/lib32/dfscli.def b/lib/libc/mingw/lib32/dfscli.def
new file mode 100644
index 0000000000..2378b81f23
--- /dev/null
+++ b/lib/libc/mingw/lib32/dfscli.def
@@ -0,0 +1,36 @@
+;
+; Definition file of dfscli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dfscli.dll"
+EXPORTS
+I_NetDfsIsThisADomainName@4
+NetDfsAdd@20
+NetDfsAddFtRoot@20
+NetDfsAddRootTarget@20
+NetDfsAddStdRoot@16
+NetDfsAddStdRootForced@16
+NetDfsEnum@24
+NetDfsGetClientInfo@20
+NetDfsGetDcAddress@16
+NetDfsGetFtContainerSecurity@16
+NetDfsGetInfo@20
+NetDfsGetSecurity@16
+NetDfsGetStdContainerSecurity@16
+NetDfsGetSupportedNamespaceVersion@12
+NetDfsManagerGetConfigInfo@28
+NetDfsManagerInitialize@8
+NetDfsManagerSendSiteInfo@12
+NetDfsMove@12
+NetDfsRemove@12
+NetDfsRemoveFtRoot@16
+NetDfsRemoveFtRootForced@20
+NetDfsRemoveRootTarget@12
+NetDfsRemoveStdRoot@12
+NetDfsRename@8
+NetDfsSetClientInfo@20
+NetDfsSetFtContainerSecurity@12
+NetDfsSetInfo@20
+NetDfsSetSecurity@12
+NetDfsSetStdContainerSecurity@12
diff --git a/lib/libc/mingw/lib32/dhcpcsvc.def b/lib/libc/mingw/lib32/dhcpcsvc.def
new file mode 100644
index 0000000000..d1e733caf4
--- /dev/null
+++ b/lib/libc/mingw/lib32/dhcpcsvc.def
@@ -0,0 +1,71 @@
+LIBRARY DHCPCSVC.DLL
+EXPORTS
+DhcpAcquireParameters@4
+DhcpAcquireParametersByBroadcast@4
+DhcpCApiCleanup
+DhcpCApiCleanup@0
+DhcpCApiInitialize@4
+DhcpClient_Generalize
+DhcpDeRegisterConnectionStateNotification@8
+DhcpDeRegisterOptions@4
+DhcpDeRegisterParamChange@12
+DhcpDelPersistentRequestParams@8
+DhcpEnableDhcp@8
+DhcpEnableTracing@4
+DhcpEnumClasses@16
+DhcpEnumInterfaces@4
+DhcpFallbackRefreshParams@4
+DhcpFreeEnumeratedInterfaces@4
+DhcpFreeLeaseInfo@4
+DhcpFreeLeaseInfoArray@8
+DhcpFreeMem@4
+DhcpGetClassId@8
+DhcpGetClientId@8
+DhcpGetDhcpServicedConnections@12
+DhcpGetFallbackParams@8
+DhcpGetNotificationStatus@8
+DhcpGetOriginalSubnetMask@8
+DhcpGetTraceArray@4
+DhcpGlobalIsShuttingDown DATA
+DhcpGlobalServiceSyncEvent DATA
+DhcpGlobalTerminateEvent DATA
+DhcpHandlePnPEvent@20
+DhcpIsEnabled@8
+DhcpLeaseIpAddress@24
+DhcpLeaseIpAddressEx@32
+DhcpNotifyConfigChange@28
+DhcpNotifyConfigChangeEx@32
+DhcpNotifyMediaReconnected@4
+DhcpOpenGlobalEvent
+DhcpPersistentRequestParams@28
+DhcpQueryLeaseInfo@8
+DhcpQueryLeaseInfoArray@12
+DhcpQueryLeaseInfoEx@12
+DhcpRegisterConnectionStateNotification@12
+DhcpRegisterOptions@16
+DhcpRegisterParamChange@28
+DhcpRemoveDNSRegistrations@0
+DhcpReleaseIpAddressLease@8
+DhcpReleaseIpAddressLeaseEx@16
+DhcpReleaseParameters@4
+DhcpRemoveDNSRegistrations
+DhcpRenewIpAddressLease@16
+DhcpRenewIpAddressLeaseEx@24
+DhcpRequestCachedParams@20
+DhcpRequestOptions@28
+DhcpRequestParams@44
+DhcpSetClassId@8
+DhcpSetClientId@8
+DhcpSetFallbackParams@8
+DhcpSetMSFTVendorSpecificOptions@24
+DhcpStaticRefreshParams@4
+DhcpUndoRequestParams@16
+Dhcpv4CheckServerAvailability@8
+Dhcpv4EnableDhcpEx@4
+McastApiCleanup
+McastApiStartup@4
+McastEnumerateScopes@20
+McastGenUID@4
+McastReleaseAddress@12
+McastRenewAddress@16
+McastRequestAddress@20
diff --git a/lib/libc/mingw/lib32/dhcpcsvc6.def b/lib/libc/mingw/lib32/dhcpcsvc6.def
new file mode 100644
index 0000000000..00ff21a136
--- /dev/null
+++ b/lib/libc/mingw/lib32/dhcpcsvc6.def
@@ -0,0 +1,17 @@
+;
+; Definition file of dhcpcsvc6.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dhcpcsvc6.DLL"
+EXPORTS
+Dhcpv6AcquireParameters@4
+Dhcpv6FreeLeaseInfo@4
+Dhcpv6IsEnabled@8
+Dhcpv6Main@4
+Dhcpv6QueryLeaseInfo@8
+Dhcpv6ReleaseParameters@4
+Dhcpv6ReleasePrefix@12
+Dhcpv6RenewPrefix@20
+Dhcpv6RequestParams@32
+Dhcpv6RequestPrefix@16
diff --git a/lib/libc/mingw/lib32/dhcpsapi.def b/lib/libc/mingw/lib32/dhcpsapi.def
new file mode 100644
index 0000000000..1857a26ff7
--- /dev/null
+++ b/lib/libc/mingw/lib32/dhcpsapi.def
@@ -0,0 +1,144 @@
+;
+; Definition file of DHCPSAPI.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "DHCPSAPI.DLL"
+EXPORTS
+DhcpAddMScopeElement@12
+DhcpAddServer@20
+DhcpAddSubnetElement@12
+DhcpAddSubnetElementV4@12
+DhcpAddSubnetElementV5@12
+DhcpAddSubnetElementV6@24
+DhcpAuditLogGetParams@24
+DhcpAuditLogSetParams@24
+DhcpCreateClass@12
+DhcpCreateClassV6@12
+DhcpCreateClientInfo@8
+DhcpCreateClientInfoV4@8
+DhcpCreateClientInfoVQ@8
+DhcpCreateOption@12
+DhcpCreateOptionV5@24
+DhcpCreateOptionV6@24
+DhcpCreateSubnet@12
+DhcpCreateSubnetV6@24
+DhcpCreateSubnetVQ@12
+DhcpDeleteClass@12
+DhcpDeleteClassV6@12
+DhcpDeleteClientInfo@8
+DhcpDeleteClientInfoV6@8
+DhcpDeleteMClientInfo@8
+DhcpDeleteMScope@12
+DhcpDeleteServer@20
+DhcpDeleteSubnet@12
+DhcpDeleteSubnetV6@24
+DhcpDeleteSuperScopeV4@8
+DhcpDsCleanup@0
+DhcpDsClearHostServerEntries@0
+DhcpDsInit@0
+DhcpEnumClasses@28
+DhcpEnumClassesV6@28
+DhcpEnumMScopeClients@28
+DhcpEnumMScopeElements@32
+DhcpEnumMScopes@24
+DhcpEnumOptionValues@28
+DhcpEnumOptionValuesV5@40
+DhcpEnumOptionValuesV6@40
+DhcpEnumOptions@24
+DhcpEnumOptionsV5@36
+DhcpEnumOptionsV6@36
+DhcpEnumServers@20
+DhcpEnumSubnetClients@28
+DhcpEnumSubnetClientsV4@28
+DhcpEnumSubnetClientsV5@28
+DhcpEnumSubnetClientsV6@40
+DhcpEnumSubnetClientsVQ@28
+DhcpEnumSubnetElements@32
+DhcpEnumSubnetElementsV4@32
+DhcpEnumSubnetElementsV5@32
+DhcpEnumSubnetElementsV6@44
+DhcpEnumSubnets@24
+DhcpEnumSubnetsV6@24
+DhcpGetAllOptionValues@16
+DhcpGetAllOptionValuesV6@16
+DhcpGetAllOptions@12
+DhcpGetAllOptionsV6@12
+DhcpGetClassInfo@16
+DhcpGetClientInfo@12
+DhcpGetClientInfoV4@12
+DhcpGetClientInfoV6@12
+DhcpGetClientInfoVQ@12
+DhcpGetClientOptions@16
+DhcpGetMCastMibInfo@8
+DhcpGetMScopeInfo@12
+DhcpGetMibInfo@8
+DhcpGetMibInfoV6@8
+DhcpGetMibInfoVQ@8
+DhcpGetOptionInfo@12
+DhcpGetOptionInfoV5@24
+DhcpGetOptionInfoV6@24
+DhcpGetOptionValue@16
+DhcpGetOptionValueV5@28
+DhcpGetOptionValueV6@28
+DhcpGetServerBindingInfo@12
+DhcpGetServerBindingInfoV6@12
+DhcpGetServerSpecificStrings@8
+DhcpGetSubnetInfo@12
+DhcpGetSubnetInfoV6@24
+DhcpGetSubnetInfoVQ@12
+DhcpGetSuperScopeInfoV4@8
+DhcpGetThreadOptions@8
+DhcpGetVersion@12
+DhcpModifyClass@12
+DhcpModifyClassV6@12
+DhcpRemoveMScopeElement@16
+DhcpRemoveOption@8
+DhcpRemoveOptionV5@20
+DhcpRemoveOptionV6@20
+DhcpRemoveOptionValue@12
+DhcpRemoveOptionValueV5@24
+DhcpRemoveOptionValueV6@24
+DhcpRemoveSubnetElement@16
+DhcpRemoveSubnetElementV4@16
+DhcpRemoveSubnetElementV5@16
+DhcpRemoveSubnetElementV6@28
+DhcpRpcFreeMemory@4
+DhcpScanDatabase@16
+DhcpScanMDatabase@16
+DhcpServerAuditlogParamsFree@4
+DhcpServerBackupDatabase@8
+DhcpServerGetConfig@8
+DhcpServerGetConfigV4@8
+DhcpServerGetConfigV6@12
+DhcpServerGetConfigVQ@8
+DhcpServerQueryAttribute@16
+DhcpServerQueryAttributes@20
+DhcpServerQueryDnsRegCredentials@20
+DhcpServerRedoAuthorization@8
+DhcpServerRestoreDatabase@8
+DhcpServerSetConfig@12
+DhcpServerSetConfigV4@12
+DhcpServerSetConfigV6@16
+DhcpServerSetConfigVQ@12
+DhcpServerSetDnsRegCredentials@16
+DhcpSetClientInfo@8
+DhcpSetClientInfoV4@8
+DhcpSetClientInfoV6@8
+DhcpSetClientInfoVQ@8
+DhcpSetMScopeInfo@16
+DhcpSetOptionInfo@12
+DhcpSetOptionInfoV5@24
+DhcpSetOptionInfoV6@24
+DhcpSetOptionValue@16
+DhcpSetOptionValueV5@28
+DhcpSetOptionValueV6@28
+DhcpSetOptionValues@12
+DhcpSetOptionValuesV5@24
+DhcpSetServerBindingInfo@12
+DhcpSetServerBindingInfoV6@12
+DhcpSetSubnetInfo@12
+DhcpSetSubnetInfoV6@24
+DhcpSetSubnetInfoVQ@12
+DhcpSetSuperScopeV4@16
+DhcpSetThreadOptions@8
diff --git a/lib/libc/mingw/lib32/dinput8.def b/lib/libc/mingw/lib32/dinput8.def
new file mode 100644
index 0000000000..a36cc53e04
--- /dev/null
+++ b/lib/libc/mingw/lib32/dinput8.def
@@ -0,0 +1,3 @@
+LIBRARY dinput8.dll
+EXPORTS
+DirectInput8Create@20
diff --git a/lib/libc/mingw/lib32/dnsapi.def b/lib/libc/mingw/lib32/dnsapi.def
new file mode 100644
index 0000000000..89b70ecda7
--- /dev/null
+++ b/lib/libc/mingw/lib32/dnsapi.def
@@ -0,0 +1,295 @@
+;
+; Definition file of DNSAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "DNSAPI.dll"
+EXPORTS
+DnsGetDomainName
+DnsIsAMailboxType
+DnsIsNSECType
+DnsIsStatusRcode
+DnsMapRcodeToStatus
+DnsStatusString
+DnsUnicodeToUtf8@8
+DnsUtf8ToUnicode@8
+Dns_ReadPacketName@20
+Dns_ReadPacketNameAllocate@20
+Dns_SkipPacketName
+Dns_WriteDottedNameToPacket@16
+AdaptiveTimeout_ClearInterfaceSpecificConfiguration
+AdaptiveTimeout_ResetAdaptiveTimeout
+AddRefQueryBlobEx@16
+BreakRecordsIntoBlob@12
+Coalesce_UpdateNetVersion
+CombineRecordsInBlob@8
+DeRefQueryBlobEx@16
+DelaySortDAServerlist
+DnsAcquireContextHandle_A@12
+DnsAcquireContextHandle_W@12
+DnsAllocateRecord@4
+DnsApiAlloc@4
+DnsApiAllocZero@4
+DnsApiFree@4
+DnsApiHeapReset@12
+DnsApiRealloc@8
+DnsApiSetDebugGlobals@4
+DnsAsyncRegisterHostAddrs@40
+DnsAsyncRegisterInit@4
+DnsAsyncRegisterTerm
+DnsCancelQuery@4
+DnsCheckNrptRuleIntegrity@4
+DnsCheckNrptRules@12
+DnsConnectionDeletePolicyEntries@4
+DnsConnectionDeletePolicyEntriesPrivate@8
+DnsConnectionDeleteProxyInfo@8
+DnsConnectionFreeNameList@4
+DnsConnectionFreeProxyInfo@4
+DnsConnectionFreeProxyInfoEx@4
+DnsConnectionFreeProxyList@4
+DnsConnectionGetHandleForHostUrlPrivate@24
+DnsConnectionGetNameList@4
+DnsConnectionGetProxyInfo@12
+DnsConnectionGetProxyInfoForHostUrl@20
+DnsConnectionGetProxyList@8
+DnsConnectionSetPolicyEntries@8
+DnsConnectionSetPolicyEntriesPrivate@12
+DnsConnectionSetProxyInfo@12
+DnsConnectionUpdateIfIndexTable@4
+DnsCopyStringEx@20
+DnsCreateReverseNameStringForIpAddress@4
+DnsCreateStandardDnsNameCopy@12
+DnsCreateStringCopy@8
+DnsDeRegisterLocal@8
+DnsDhcpRegisterAddrs@4
+DnsDhcpRegisterHostAddrs@40
+DnsDhcpRegisterInit
+DnsDhcpRegisterTerm
+DnsDhcpRemoveRegistrations
+DnsDhcpSrvRegisterHostAddr@4
+DnsDhcpSrvRegisterHostAddrEx@4
+DnsDhcpSrvRegisterHostName@48
+DnsDhcpSrvRegisterHostNameEx@60
+DnsDhcpSrvRegisterInit@8
+DnsDhcpSrvRegisterInitEx@12
+DnsDhcpSrvRegisterInitialize@4
+DnsDhcpSrvRegisterTerm
+DnsDisableIdnEncoding@8
+DnsDowncaseDnsNameLabel@16
+DnsExtractRecordsFromMessage_UTF8@12
+DnsExtractRecordsFromMessage_W@12
+DnsFindAuthoritativeZone@16
+DnsFlushResolverCache
+DnsFlushResolverCacheEntry_A@4
+DnsFlushResolverCacheEntry_UTF8@4
+DnsFlushResolverCacheEntry_W@4
+DnsFree@8
+DnsFreeAdaptersInfo@8
+DnsFreeConfigStructure@8
+DnsFreeNrptRule@4
+DnsFreeNrptRuleNamesList@8
+DnsFreePolicyConfig@4
+DnsFreeProxyName@4
+DnsGetAdaptersInfo@24
+DnsGetApplicationIdentifier@12
+DnsGetBufferLengthForStringCopy@16
+DnsGetCacheDataTable@4
+DnsGetCacheDataTableEx@12
+DnsGetDnsServerList@4
+DnsGetInterfaceSettings@20
+DnsGetLastFailedUpdateInfo@4
+DnsGetNrptRuleNamesList@8
+DnsGetPolicyTableInfo@16
+DnsGetPolicyTableInfoPrivate@16
+DnsGetPrimaryDomainName_A
+DnsGetProxyInfoPrivate@16
+DnsGetProxyInformation@20
+DnsGetQueryRetryTimeouts@24
+DnsGetSettings@4
+DnsGlobals DATA
+DnsIpv6AddressToString@8
+DnsIpv6StringToAddress@12
+DnsIsStringCountValidForTextType@8
+DnsLogEvent@16
+DnsModifyRecordsInSet_A@24
+DnsModifyRecordsInSet_UTF8@24
+DnsModifyRecordsInSet_W@24
+DnsNameCompareEx_A@12
+DnsNameCompareEx_UTF8@12
+DnsNameCompareEx_W@12
+DnsNameCompare_A@8
+DnsNameCompare_UTF8@8
+DnsNameCompare_W@8
+DnsNameCopy@24
+DnsNameCopyAllocate@16
+DnsNetworkInfo_CreateFromFAZ@20
+DnsNetworkInformation_CreateFromFAZ@16
+DnsNotifyResolver@8
+DnsNotifyResolverClusterIp@8
+DnsNotifyResolverEx@16
+DnsQueryConfig@24
+DnsQueryConfigAllocEx@12
+DnsQueryConfigDword@8
+DnsQueryEx@12
+DnsQueryExA@4
+DnsQueryExUTF8@4
+DnsQueryExW@4
+DnsQuery_A@24
+DnsQuery_UTF8@24
+DnsQuery_W@24
+DnsRecordBuild_UTF8@28
+DnsRecordBuild_W@28
+DnsRecordCompare@8
+DnsRecordCopyEx@12
+DnsRecordListFree@8
+DnsRecordListUnmapV4MappedAAAAInPlace@4
+DnsRecordSetCompare@16
+DnsRecordSetCopyEx@12
+DnsRecordSetDetach@4
+DnsRecordStringForType@4
+DnsRecordStringForWritableType@4
+DnsRecordTypeForName@8
+DnsRegisterLocal@16
+DnsReleaseContextHandle@4
+DnsRemoveNrptRule@4
+DnsRemoveRegistrations
+DnsReplaceRecordSetA@20
+DnsReplaceRecordSetUTF8@20
+DnsReplaceRecordSetW@20
+DnsResetQueryRetryTimeouts@16
+DnsResolverOp@12
+DnsResolverQueryHvsi@32
+DnsScreenLocalAddrsForRegistration@12
+DnsServiceBrowse@8
+DnsServiceBrowseCancel@4
+DnsServiceConstructInstance@40
+DnsServiceCopyInstance@4
+DnsServiceDeRegister@8
+DnsServiceFreeInstance@4
+DnsServiceRegister@8
+DnsServiceRegisterCancel@4
+DnsServiceResolve@8
+DnsServiceResolveCancel@4
+DnsSetConfigDword@12
+DnsSetConfigValue@20
+DnsSetInterfaceSettings@20
+DnsSetNrptRule@12
+DnsSetNrptRules@16
+DnsSetQueryRetryTimeouts@24
+DnsSetSettings@4
+DnsStartMulticastQuery@8
+DnsStopMulticastQuery@4
+DnsStringCopyAllocateEx@16
+DnsTraceServerConfig@12
+DnsUpdate@20
+DnsUpdateMachinePresence
+DnsUpdateTest_A@16
+DnsUpdateTest_UTF8@16
+DnsUpdateTest_W@16
+DnsValidateNameOrIp_TempW@8
+DnsValidateName_A@8
+DnsValidateName_UTF8@8
+DnsValidateName_W@8
+DnsValidateServerArray_A@12
+DnsValidateServerArray_W@12
+DnsValidateServerStatus@12
+DnsValidateServer_A@12
+DnsValidateServer_W@12
+DnsValidateUtf8Byte@8
+DnsWriteQuestionToBuffer_UTF8@24
+DnsWriteQuestionToBuffer_W@24
+DnsWriteReverseNameStringForIpAddress@8
+Dns_AddRecordsToMessage@12
+Dns_AllocateMsgBuf@4
+Dns_BuildPacket@28
+Dns_CacheServiceCleanup
+Dns_CacheServiceInit
+Dns_CacheServiceStopIssued
+Dns_CleanupWinsock@0
+Dns_CloseConnection@4
+Dns_CloseSocket@4
+Dns_CreateMulticastSocket@20
+Dns_CreateSocket@12
+Dns_CreateSocketEx@20
+Dns_ExtractRecordsFromMessage@12
+Dns_FindAuthoritativeZoneLib@16
+Dns_FreeMsgBuf@4
+Dns_GetRandomXid@4
+Dns_InitializeMsgBuf@4
+Dns_InitializeMsgRemoteSockaddr@8
+Dns_InitializeWinsock
+Dns_OpenTcpConnectionAndSend@12
+Dns_ParseMessage@20
+Dns_ParsePacketRecord@12
+Dns_PingAdapterServers@4
+Dns_ReadRecordStructureFromPacket@12
+Dns_RecvTcp@4
+Dns_ResetNetworkInfo@4
+Dns_SendAndRecvUdp@20
+Dns_SendEx@12
+Dns_SetRecordDatalength@8
+Dns_SetRecordsSection@8
+Dns_SetRecordsTtl@8
+Dns_SkipToRecord@12
+Dns_UpdateLib@20
+Dns_UpdateLibEx@28
+Dns_WriteQuestionToMessage@16
+Dns_WriteRecordStructureToPacketEx@20
+ExtraInfo_Init@8
+Faz_AreServerListsInSameNameSpace@12
+FlushDnsPolicyUnreachableStatus
+GetCurrentTimeInSeconds
+HostsFile_Close@4
+HostsFile_Open@4
+HostsFile_ReadLine@4
+IpHelp_IsAddrOnLink@4
+Local_GetRecordsForLocalName@8
+Local_GetRecordsForLocalNameEx@20
+NetInfo_Build@8
+NetInfo_Clean@8
+NetInfo_Copy@4
+NetInfo_CopyNetworkIndex@8
+NetInfo_CreatePerNetworkNetinfo@8
+NetInfo_Free@4
+NetInfo_GetAdapterByAddress@12
+NetInfo_GetAdapterByInterfaceIndex@12
+NetInfo_GetAdapterByName@8
+NetInfo_IsAddrConfig@8
+NetInfo_IsForUpdate@4
+NetInfo_IsTcpipConfigChange@4
+NetInfo_ResetServerPriorities@8
+NetInfo_UpdateDnsInterfaceConfigChange@4
+NetInfo_UpdateNetworkProperties@28
+NetInfo_UpdateServerReachability@12
+QueryDirectEx@40
+Query_Cancel@12
+Query_Main@4
+Reg_FreeUpdateInfo@8
+Reg_GetValueEx@28
+Reg_ReadGlobalsEx@8
+Reg_ReadUpdateInfo@8
+Security_ContextListTimeout@4
+Send_AndRecvUdpWithParam@4
+Send_MessagePrivate@12
+Send_MessagePrivateEx@16
+Send_OpenTcpConnectionAndSend@12
+Socket_CacheCleanup@0
+Socket_CacheInit@4
+Socket_CleanupWinsock@0
+Socket_ClearMessageSockets@4
+Socket_CloseEx@8
+Socket_CloseMessageSockets@4
+Socket_Create@20
+Socket_CreateMulticast@20
+Socket_InitWinsock@4
+Socket_JoinMulticast@20
+Socket_RecvFrom@40
+Socket_SetMulticastInterface@16
+Socket_SetMulticastLoopBack@12
+Socket_SetTtl@20
+Socket_TcpListen@4
+Trace_Reset@0
+Update_ReplaceAddressRecordsW@20
+Util_IsIp6Running@0
+Util_IsRunningOnXboxOne@0
+WriteDnsNrptRulesToRegistry@16
diff --git a/lib/libc/mingw/lib32/dsound.def b/lib/libc/mingw/lib32/dsound.def
new file mode 100644
index 0000000000..36049c94c1
--- /dev/null
+++ b/lib/libc/mingw/lib32/dsound.def
@@ -0,0 +1,12 @@
+LIBRARY dsound.dll
+EXPORTS
+DirectSoundCaptureCreate@12
+DirectSoundCaptureCreate8@12
+DirectSoundCaptureEnumerateA@8
+DirectSoundCaptureEnumerateW@8
+DirectSoundCreate@12
+DirectSoundCreate8@12
+DirectSoundEnumerateA@8
+DirectSoundEnumerateW@8
+DirectSoundFullDuplexCreate@40
+GetDeviceID@8
diff --git a/lib/libc/mingw/lib32/dsrole.def b/lib/libc/mingw/lib32/dsrole.def
new file mode 100644
index 0000000000..77e49dc689
--- /dev/null
+++ b/lib/libc/mingw/lib32/dsrole.def
@@ -0,0 +1,21 @@
+;
+; Definition file of dsrole.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dsrole.dll"
+EXPORTS
+DsRoleAbortDownlevelServerUpgrade@16
+DsRoleCancel@8
+DsRoleDcAsDc@68
+DsRoleDcAsReplica@12
+DsRoleDemoteDc@44
+DsRoleDnsNameToFlatName@16
+DsRoleFreeMemory@4
+DsRoleGetDatabaseFacts@24
+DsRoleGetDcOperationProgress@12
+DsRoleGetDcOperationResults@12
+DsRoleGetPrimaryDomainInformation@12
+DsRoleIfmHandleFree@8
+DsRoleServerSaveStateForUpgrade@4
+DsRoleUpgradeDownlevelServer@48
diff --git a/lib/libc/mingw/lib32/dssec.def b/lib/libc/mingw/lib32/dssec.def
new file mode 100644
index 0000000000..dbad4dba5c
--- /dev/null
+++ b/lib/libc/mingw/lib32/dssec.def
@@ -0,0 +1,13 @@
+;
+; Definition file of DSSEC.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "DSSEC.dll"
+EXPORTS
+DSCreateISecurityInfoObject@28
+DSCreateSecurityPage@28
+DSEditSecurity@32
+DSCreateISecurityInfoObjectEx@40
+DllCanUnloadNow
+DllGetClassObject@12
diff --git a/lib/libc/mingw/lib32/dwmapi.def b/lib/libc/mingw/lib32/dwmapi.def
new file mode 100644
index 0000000000..96009459f6
--- /dev/null
+++ b/lib/libc/mingw/lib32/dwmapi.def
@@ -0,0 +1,48 @@
+;
+; Definition file of dwmapi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dwmapi.dll"
+EXPORTS
+DwmpDxGetWindowSharedSurface@32
+DwmpDxUpdateWindowSharedSurface@24
+DwmEnableComposition@4
+DwmAttachMilContent@4
+DwmDefWindowProc@20
+DwmDetachMilContent@4
+DwmEnableBlurBehindWindow@8
+DwmEnableMMCSS@4
+DwmExtendFrameIntoClientArea@8
+DwmFlush@0
+DwmGetColorizationColor@8
+DwmpDxBindSwapChain@12
+DwmpDxUnbindSwapChain@8
+DwmpDxgiIsThreadDesktopComposited@4
+DwmGetCompositionTimingInfo@8
+DwmGetGraphicsStreamClient@8
+DwmpDxUpdateWindowRedirectionBltSurface@36
+DwmpRenderFlick@12
+DwmpAllocateSecurityDescriptor@8
+DwmpFreeSecurityDescriptor@4
+DwmpEnableDDASupport@0
+DwmGetGraphicsStreamTransformHint@8
+DwmTetherTextContact@20
+DwmGetTransportAttributes@12
+DwmGetWindowAttribute@16
+DwmInvalidateIconicBitmaps@4
+DwmIsCompositionEnabled@4
+DwmModifyPreviousDxFrameDuration@12
+DwmQueryThumbnailSourceSize@8
+DwmRegisterThumbnail@12
+DwmRenderGesture@16
+DwmSetDxFrameDuration@8
+DwmSetIconicLivePreviewBitmap@16
+DwmSetIconicThumbnail@12
+DwmSetPresentParameters@8
+DwmSetWindowAttribute@16
+DwmShowContact@8
+DwmTetherContact@16
+DwmTransitionOwnedWindow@8
+DwmUnregisterThumbnail@4
+DwmUpdateThumbnailProperties@8
diff --git a/lib/libc/mingw/lib32/dwrite.def b/lib/libc/mingw/lib32/dwrite.def
new file mode 100644
index 0000000000..9c429a0b35
--- /dev/null
+++ b/lib/libc/mingw/lib32/dwrite.def
@@ -0,0 +1,8 @@
+;
+; Definition file of DWrite.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "DWrite.dll"
+EXPORTS
+DWriteCreateFactory@12
diff --git a/lib/libc/mingw/lib32/dxgi.def b/lib/libc/mingw/lib32/dxgi.def
new file mode 100644
index 0000000000..5f589f7aa4
--- /dev/null
+++ b/lib/libc/mingw/lib32/dxgi.def
@@ -0,0 +1,51 @@
+;
+; Definition file of dxgi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dxgi.dll"
+EXPORTS
+D3DKMTCloseAdapter@4
+D3DKMTDestroyAllocation@4
+D3DKMTDestroyContext@4
+D3DKMTDestroyDevice@4
+D3DKMTDestroySynchronizationObject@4
+D3DKMTQueryAdapterInfo@4
+D3DKMTSetDisplayPrivateDriverFormat@4
+D3DKMTSignalSynchronizationObject@4
+D3DKMTUnlock@4
+DXGIDumpJournal@4
+OpenAdapter10@4
+OpenAdapter10_2@4
+CreateDXGIFactory1@8
+CreateDXGIFactory@8
+D3DKMTCreateAllocation@4
+D3DKMTCreateContext@4
+D3DKMTCreateDevice@4
+D3DKMTCreateSynchronizationObject@4
+D3DKMTEscape@4
+D3DKMTGetContextSchedulingPriority@4
+D3DKMTGetDeviceState@4
+D3DKMTGetDisplayModeList@4
+D3DKMTGetMultisampleMethodList@4
+D3DKMTGetRuntimeData@4
+D3DKMTGetSharedPrimaryHandle@4
+D3DKMTLock@4
+D3DKMTOpenAdapterFromHdc@4
+D3DKMTOpenResource@4
+D3DKMTPresent@4
+D3DKMTQueryAllocationResidency@4
+D3DKMTQueryResourceInfo@4
+D3DKMTRender@4
+D3DKMTSetAllocationPriority@4
+D3DKMTSetContextSchedulingPriority@4
+D3DKMTSetDisplayMode@4
+D3DKMTSetGammaRamp@4
+D3DKMTSetVidPnSourceOwner@4
+D3DKMTWaitForSynchronizationObject@4
+D3DKMTWaitForVerticalBlankEvent@4
+DXGID3D10CreateDevice@24
+DXGID3D10CreateLayeredDevice@20
+DXGID3D10GetLayeredDeviceSize@8
+DXGID3D10RegisterLayers@8
+DXGIReportAdapterConfiguration@4
diff --git a/lib/libc/mingw/lib32/dxva2.def b/lib/libc/mingw/lib32/dxva2.def
new file mode 100644
index 0000000000..d43af5be36
--- /dev/null
+++ b/lib/libc/mingw/lib32/dxva2.def
@@ -0,0 +1,44 @@
+;
+; Definition file of dxva2.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dxva2.dll"
+EXPORTS
+CapabilitiesRequestAndCapabilitiesReply@12
+DXVA2CreateDirect3DDeviceManager9@8
+DXVA2CreateVideoService@12
+DegaussMonitor@4
+DestroyPhysicalMonitor@4
+DestroyPhysicalMonitors@8
+GetCapabilitiesStringLength@8
+GetMonitorBrightness@16
+GetMonitorCapabilities@12
+GetMonitorColorTemperature@8
+GetMonitorContrast@16
+GetMonitorDisplayAreaPosition@20
+GetMonitorDisplayAreaSize@20
+GetMonitorRedGreenOrBlueDrive@20
+GetMonitorRedGreenOrBlueGain@20
+GetMonitorTechnologyType@8
+GetNumberOfPhysicalMonitorsFromHMONITOR@8
+GetNumberOfPhysicalMonitorsFromIDirect3DDevice9@8
+GetPhysicalMonitorsFromHMONITOR@12
+GetPhysicalMonitorsFromIDirect3DDevice9@12
+GetTimingReport@8
+GetVCPFeatureAndVCPFeatureReply@20
+OPMGetVideoOutputsFromHMONITOR@16
+OPMGetVideoOutputsFromIDirect3DDevice9Object@16
+RestoreMonitorFactoryColorDefaults@4
+RestoreMonitorFactoryDefaults@4
+SaveCurrentMonitorSettings@4
+SaveCurrentSettings@4
+SetMonitorBrightness@8
+SetMonitorColorTemperature@8
+SetMonitorContrast@8
+SetMonitorDisplayAreaPosition@12
+SetMonitorDisplayAreaSize@12
+SetMonitorRedGreenOrBlueDrive@12
+SetMonitorRedGreenOrBlueGain@12
+SetVCPFeature@12
+UABGetCertificate@12
diff --git a/lib/libc/mingw/lib32/eappcfg.def b/lib/libc/mingw/lib32/eappcfg.def
new file mode 100644
index 0000000000..f7a6d1c999
--- /dev/null
+++ b/lib/libc/mingw/lib32/eappcfg.def
@@ -0,0 +1,20 @@
+;
+; Definition file of eappcfg.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "eappcfg.dll"
+EXPORTS
+EapHostPeerConfigBlob2Xml@36
+EapHostPeerConfigXml2Blob@24
+EapHostPeerCredentialsXml2Blob@32
+EapHostPeerFreeErrorMemory@4
+EapHostPeerFreeMemory@4
+EapHostPeerGetMethods@8
+EapHostPeerInvokeConfigUI@44
+EapHostPeerInvokeIdentityUI@64
+EapHostPeerInvokeInteractiveUI@24
+EapHostPeerQueryCredentialInputFields@40
+EapHostPeerQueryInteractiveUIInputFields@28
+EapHostPeerQueryUIBlobFromInteractiveUIInputFields@36
+EapHostPeerQueryUserBlobFromCredentialInputFields@48
diff --git a/lib/libc/mingw/lib32/eappprxy.def b/lib/libc/mingw/lib32/eappprxy.def
new file mode 100644
index 0000000000..712886bd6f
--- /dev/null
+++ b/lib/libc/mingw/lib32/eappprxy.def
@@ -0,0 +1,23 @@
+;
+; Definition file of eappprxy.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "eappprxy.dll"
+EXPORTS
+EapHostPeerBeginSession@68
+EapHostPeerClearConnection@8
+EapHostPeerEndSession@8
+EapHostPeerFreeEapError@4
+EapHostPeerFreeRuntimeMemory@4
+EapHostPeerGetAuthStatus@20
+EapHostPeerGetIdentity@68
+EapHostPeerGetResponseAttributes@12
+EapHostPeerGetResult@16
+EapHostPeerGetSendPacket@16
+EapHostPeerGetUIContext@16
+EapHostPeerInitialize@0
+EapHostPeerProcessReceivedPacket@20
+EapHostPeerSetResponseAttributes@16
+EapHostPeerSetUIContext@20
+EapHostPeerUninitialize@0
diff --git a/lib/libc/mingw/lib32/elscore.def b/lib/libc/mingw/lib32/elscore.def
new file mode 100644
index 0000000000..8d50feaf06
--- /dev/null
+++ b/lib/libc/mingw/lib32/elscore.def
@@ -0,0 +1,12 @@
+;
+; Definition file of elscore.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "elscore.dll"
+EXPORTS
+MappingDoAction@12
+MappingFreePropertyBag@4
+MappingFreeServices@4
+MappingGetServices@12
+MappingRecognizeText@24
diff --git a/lib/libc/mingw/lib32/esent.def b/lib/libc/mingw/lib32/esent.def
new file mode 100644
index 0000000000..f0b3b6ccf8
--- /dev/null
+++ b/lib/libc/mingw/lib32/esent.def
@@ -0,0 +1,557 @@
+;
+; Definition file of ESENT.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "ESENT.dll"
+EXPORTS
+JetAddColumnA@28@28
+JetAddColumnW@28@28
+JetAttachDatabase2A@16@16
+JetAttachDatabase2W@16@16
+JetAttachDatabaseA@12@12
+JetAttachDatabaseW@12@12
+JetAttachDatabaseWithStreamingA@24@24
+JetAttachDatabaseWithStreamingW@24@24
+JetBackupA@12@12
+JetBackupInstanceA@16@16
+JetBackupInstanceW@16@16
+JetBackupW@12@12
+JetBeginExternalBackup@4@4
+JetBeginExternalBackupInstance@8@8
+JetBeginSessionA@16@16
+JetBeginSessionW@16@16
+JetBeginTransaction2@8@8
+JetBeginTransaction@4@4
+JetCloseDatabase@12@12
+JetCloseFile@4@4
+JetCloseFileInstance@8@8
+JetCloseTable@8@8
+JetCommitTransaction@8@8
+JetCompactA@24@24
+JetCompactW@24@24
+JetComputeStats@8@8
+JetConvertDDLA@20@20
+JetConvertDDLW@20@20
+JetCreateDatabase2A@20@20
+JetCreateDatabase2W@20@20
+JetCreateDatabaseA@20@20
+JetCreateDatabaseW@20@20
+JetCreateDatabaseWithStreamingA@28@28
+JetCreateDatabaseWithStreamingW@28@28
+JetCreateIndex2A@16@16
+JetCreateIndex2W@16@16
+JetCreateIndexA@28@28
+JetCreateIndexW@28@28
+JetCreateInstance2A@16@16
+JetCreateInstance2W@16@16
+JetCreateInstanceA@8@8
+JetCreateInstanceW@8@8
+JetCreateTableA@24@24
+JetCreateTableColumnIndex2A@12@12
+JetCreateTableColumnIndex2W@12@12
+JetCreateTableColumnIndexA@12@12
+JetCreateTableColumnIndexW@12@12
+JetCreateTableW@24@24
+JetDBUtilitiesA@4@4
+JetDBUtilitiesW@4@4
+JetDefragment2A@28@28
+JetDefragment2W@28@28
+JetDefragment3A@32@32
+JetDefragment3W@32@32
+JetDefragmentA@24@24
+JetDefragmentW@24@24
+JetDelete@8@8
+JetDeleteColumn2A@16@16
+JetDeleteColumn2W@16@16
+JetDeleteColumnA@12@12
+JetDeleteColumnW@12@12
+JetDeleteIndexA@12@12
+JetDeleteIndexW@12@12
+JetDeleteTableA@12@12
+JetDeleteTableW@12@12
+JetDetachDatabase2A@12@12
+JetDetachDatabase2W@12@12
+JetDetachDatabaseA@8@8
+JetDetachDatabaseW@8@8
+JetDupCursor@16@16
+JetDupSession@8@8
+JetEnableMultiInstanceA@12@12
+JetEnableMultiInstanceW@12@12
+JetEndExternalBackup@0@0
+JetEndExternalBackupInstance2@8@8
+JetEndExternalBackupInstance@4@4
+JetEndSession@8@8
+JetEnumerateColumns@40@40
+JetEscrowUpdate@36@36
+JetExternalRestore2A@40@40
+JetExternalRestore2W@40@40
+JetExternalRestoreA@32@32
+JetExternalRestoreW@32@32
+JetFreeBuffer@4@4
+JetGetAttachInfoA@12@12
+JetGetAttachInfoInstanceA@16@16
+JetGetAttachInfoInstanceW@16@16
+JetGetAttachInfoW@12@12
+JetGetBookmark@20@20
+JetGetColumnInfoA@28@28
+JetGetColumnInfoW@28@28
+JetGetCounter@12@12
+JetGetCurrentIndexA@16@16
+JetGetCurrentIndexW@16@16
+JetGetCursorInfo@20@20
+JetGetDatabaseFileInfoA@16@16
+JetGetDatabaseFileInfoW@16@16
+JetGetDatabaseInfoA@20@20
+JetGetDatabaseInfoW@20@20
+JetGetDatabasePages@28@28
+JetGetIndexInfoA@28@28
+JetGetIndexInfoW@28@28
+JetGetInstanceInfoA@8@8
+JetGetInstanceInfoW@8@8
+JetGetInstanceMiscInfo@16@16
+JetGetLS@16@16
+JetGetLock@12@12
+JetGetLogFileInfoA@16@16
+JetGetLogFileInfoW@16@16
+JetGetLogInfoA@12@12
+JetGetLogInfoInstance2A@20@20
+JetGetLogInfoInstance2W@20@20
+JetGetLogInfoInstanceA@16@16
+JetGetLogInfoInstanceW@16@16
+JetGetLogInfoW@12@12
+JetGetMaxDatabaseSize@16@16
+JetGetObjectInfoA@32@32
+JetGetObjectInfoW@32@32
+JetGetPageInfo@24@24
+JetGetRecordPosition@16@16
+JetGetRecordSize@16@16
+JetGetResourceParam@16@16
+JetGetSecondaryIndexBookmark@36@36
+JetGetSessionInfo@16@16
+JetGetSystemParameterA@24@24
+JetGetSystemParameterW@24@24
+JetGetTableColumnInfoA@24@24
+JetGetTableColumnInfoW@24@24
+JetGetTableIndexInfoA@24@24
+JetGetTableIndexInfoW@24@24
+JetGetTableInfoA@20@20
+JetGetTableInfoW@20@20
+JetGetThreadStats@8@8
+JetGetTruncateLogInfoInstanceA@16@16
+JetGetTruncateLogInfoInstanceW@16@16
+JetGetVersion@8@8
+JetGotoBookmark@16@16
+JetGotoPosition@12@12
+JetGotoSecondaryIndexBookmark@28@28
+JetGrowDatabase@16@16
+JetIdle@8@8
+JetIndexRecordCount@16@16
+JetInit2@8@8
+JetInit3A@12@12
+JetInit3W@12@12
+JetInit@4@4
+JetIntersectIndexes@20@20
+JetMakeKey@20@20
+JetMove@16@16
+JetOSSnapshotAbort@8@8
+JetOSSnapshotEnd@8@8
+JetOSSnapshotFreezeA@16@16
+JetOSSnapshotFreezeW@16@16
+JetOSSnapshotGetFreezeInfoA@16@16
+JetOSSnapshotGetFreezeInfoW@16@16
+JetOSSnapshotPrepare@8@8
+JetOSSnapshotPrepareInstance@12@12
+JetOSSnapshotThaw@8@8
+JetOSSnapshotTruncateLog@8@8
+JetOSSnapshotTruncateLogInstance@12@12
+JetOpenDatabaseA@20@20
+JetOpenDatabaseW@20@20
+JetOpenFileA@16@16
+JetOpenFileInstanceA@20@20
+JetOpenFileInstanceW@20@20
+JetOpenFileSectionInstanceA@28@28
+JetOpenFileSectionInstanceW@28@28
+JetOpenFileW@16@16
+JetOpenTableA@28@28
+JetOpenTableW@28@28
+JetOpenTempTable2@28@28
+JetOpenTempTable3@28@28
+JetOpenTempTable@24@24
+JetOpenTemporaryTable@8@8
+JetPrepareToCommitTransaction@16@16
+JetPrepareUpdate@12@12
+JetReadFile@16@16
+JetReadFileInstance@20@20
+JetRegisterCallback@24@24
+JetRenameColumnA@20@20
+JetRenameColumnW@20@20
+JetRenameTableA@16@16
+JetRenameTableW@16@16
+JetResetCounter@8@8
+JetResetSessionContext@4@4
+JetResetTableSequential@12@12
+JetRestore2A@12@12
+JetRestore2W@12@12
+JetRestoreA@8@8
+JetRestoreInstanceA@16@16
+JetRestoreInstanceW@16@16
+JetRestoreW@8@8
+JetRetrieveColumn@32@32
+JetRetrieveColumns@16@16
+JetRetrieveKey@24@24
+JetRetrieveTaggedColumnList@28@28
+JetRollback@8@8
+JetSeek@12@12
+JetSetColumn@28@28
+JetSetColumnDefaultValueA@28@28
+JetSetColumnDefaultValueW@28@28
+JetSetColumns@16@16
+JetSetCurrentIndex2A@16@16
+JetSetCurrentIndex2W@16@16
+JetSetCurrentIndex3A@20@20
+JetSetCurrentIndex3W@20@20
+JetSetCurrentIndex4A@24@24
+JetSetCurrentIndex4W@24@24
+JetSetCurrentIndexA@12@12
+JetSetCurrentIndexW@12@12
+JetSetDatabaseSizeA@16@16
+JetSetDatabaseSizeW@16@16
+JetSetIndexRange@12@12
+JetSetLS@16@16
+JetSetMaxDatabaseSize@16@16
+JetSetResourceParam@16@16
+JetSetSessionContext@8@8
+JetSetSystemParameterA@20@20
+JetSetSystemParameterW@20@20
+JetSetTableSequential@12@12
+JetSnapshotStartA@12@12
+JetSnapshotStartW@12@12
+JetSnapshotStop@8@8
+JetStopBackup@0@0
+JetStopBackupInstance@4@4
+JetStopService@0@0
+JetStopServiceInstance@4@4
+JetTerm2@8@8
+JetTerm@4@4
+JetTracing@12@12
+JetTruncateLog@0@0
+JetTruncateLogInstance@4@4
+JetUnregisterCallback@16@16
+JetUpdate2@24@24
+JetUpdate@20@20
+JetUpgradeDatabaseA@16@16
+JetUpgradeDatabaseW@16@16
+JetAddColumn@28
+JetAddColumnA@28
+JetAddColumnW@28
+JetAttachDatabase2@16
+JetAttachDatabase2A@16
+JetAttachDatabase2W@16
+JetAttachDatabase@12
+JetAttachDatabaseA@12
+JetAttachDatabaseW@12
+JetAttachDatabaseWithStreaming@24
+JetAttachDatabaseWithStreamingA@24
+JetAttachDatabaseWithStreamingW@24
+JetBackup@12
+JetBackupA@12
+JetBackupInstance@16
+JetBackupInstanceA@16
+JetBackupInstanceW@16
+JetBackupW@12
+JetBeginExternalBackup@4
+JetBeginExternalBackupInstance@8
+JetBeginSession@16
+JetBeginSessionA@16
+JetBeginSessionW@16
+JetBeginTransaction2@8
+JetBeginTransaction@4
+JetCloseDatabase@12
+JetCloseFile@4
+JetCloseFileInstance@8
+JetCloseTable@8
+JetCommitTransaction@8
+JetCompact@24
+JetCompactA@24
+JetCompactW@24
+JetComputeStats@8
+JetConvertDDL@20
+JetConvertDDLA@20
+JetConvertDDLW@20
+JetCreateDatabase2@20
+JetCreateDatabase2A@20
+JetCreateDatabase2W@20
+JetCreateDatabase@20
+JetCreateDatabaseA@20
+JetCreateDatabaseW@20
+JetCreateDatabaseWithStreaming@28
+JetCreateDatabaseWithStreamingA@28
+JetCreateDatabaseWithStreamingW@28
+JetCreateIndex2@16
+JetCreateIndex2A@16
+JetCreateIndex2W@16
+JetCreateIndex@28
+JetCreateIndexA@28
+JetCreateIndexW@28
+JetCreateInstance2@16
+JetCreateInstance2A@16
+JetCreateInstance2W@16
+JetCreateInstance@8
+JetCreateInstanceA@8
+JetCreateInstanceW@8
+JetCreateTable@24
+JetCreateTableA@24
+JetCreateTableColumnIndex2@12
+JetCreateTableColumnIndex2A@12
+JetCreateTableColumnIndex2W@12
+JetCreateTableColumnIndex@12
+JetCreateTableColumnIndexA@12
+JetCreateTableColumnIndexW@12
+JetCreateTableW@24
+JetDBUtilities@4
+JetDBUtilitiesA@4
+JetDBUtilitiesW@4
+JetDefragment2@28
+JetDefragment2A@28
+JetDefragment2W@28
+JetDefragment3@32
+JetDefragment3A@32
+JetDefragment3W@32
+JetDefragment@24
+JetDefragmentA@24
+JetDefragmentW@24
+JetDelete@8
+JetDeleteColumn2@16
+JetDeleteColumn2A@16
+JetDeleteColumn2W@16
+JetDeleteColumn@12
+JetDeleteColumnA@12
+JetDeleteColumnW@12
+JetDeleteIndex@12
+JetDeleteIndexA@12
+JetDeleteIndexW@12
+JetDeleteTable@12
+JetDeleteTableA@12
+JetDeleteTableW@12
+JetDetachDatabase2@12
+JetDetachDatabase2A@12
+JetDetachDatabase2W@12
+JetDetachDatabase@8
+JetDetachDatabaseA@8
+JetDetachDatabaseW@8
+JetDupCursor@16
+JetDupSession@8
+JetEnableMultiInstance@12
+JetEnableMultiInstanceA@12
+JetEnableMultiInstanceW@12
+JetEndExternalBackup@0
+JetEndExternalBackupInstance2@8
+JetEndExternalBackupInstance@4
+JetEndSession@8
+JetEnumerateColumns@40
+JetEscrowUpdate@36
+JetExternalRestore2@40
+JetExternalRestore2A@40
+JetExternalRestore2W@40
+JetExternalRestore@32
+JetExternalRestoreA@32
+JetExternalRestoreW@32
+JetFreeBuffer@4
+JetGetAttachInfo@12
+JetGetAttachInfoA@12
+JetGetAttachInfoInstance@16
+JetGetAttachInfoInstanceA@16
+JetGetAttachInfoInstanceW@16
+JetGetAttachInfoW@12
+JetGetBookmark@20
+JetGetColumnInfo@28
+JetGetColumnInfoA@28
+JetGetColumnInfoW@28
+JetGetCounter@12
+JetGetCurrentIndex@16
+JetGetCurrentIndexA@16
+JetGetCurrentIndexW@16
+JetGetCursorInfo@20
+JetGetDatabaseFileInfo@16
+JetGetDatabaseFileInfoA@16
+JetGetDatabaseFileInfoW@16
+JetGetDatabaseInfo@20
+JetGetDatabaseInfoA@20
+JetGetDatabaseInfoW@20
+JetGetDatabasePages@28
+JetGetIndexInfo@28
+JetGetIndexInfoA@28
+JetGetIndexInfoW@28
+JetGetInstanceInfo@8
+JetGetInstanceInfoA@8
+JetGetInstanceInfoW@8
+JetGetInstanceMiscInfo@16
+JetGetLS@16
+JetGetLock@12
+JetGetLogFileInfo@16
+JetGetLogFileInfoA@16
+JetGetLogFileInfoW@16
+JetGetLogInfo@12
+JetGetLogInfoA@12
+JetGetLogInfoInstance2@20
+JetGetLogInfoInstance2A@20
+JetGetLogInfoInstance2W@20
+JetGetLogInfoInstance@16
+JetGetLogInfoInstanceA@16
+JetGetLogInfoInstanceW@16
+JetGetLogInfoW@12
+JetGetMaxDatabaseSize@16
+JetGetObjectInfo@32
+JetGetObjectInfoA@32
+JetGetObjectInfoW@32
+JetGetPageInfo@24
+JetGetRecordPosition@16
+JetGetRecordSize@16
+JetGetResourceParam@16
+JetGetSecondaryIndexBookmark@36
+JetGetSessionInfo@16
+JetGetSystemParameter@24
+JetGetSystemParameterA@24
+JetGetSystemParameterW@24
+JetGetTableColumnInfo@24
+JetGetTableColumnInfoA@24
+JetGetTableColumnInfoW@24
+JetGetTableIndexInfo@24
+JetGetTableIndexInfoA@24
+JetGetTableIndexInfoW@24
+JetGetTableInfo@20
+JetGetTableInfoA@20
+JetGetTableInfoW@20
+JetGetThreadStats@8
+JetGetTruncateLogInfoInstance@16
+JetGetTruncateLogInfoInstanceA@16
+JetGetTruncateLogInfoInstanceW@16
+JetGetVersion@8
+JetGotoBookmark@16
+JetGotoPosition@12
+JetGotoSecondaryIndexBookmark@28
+JetGrowDatabase@16
+JetIdle@8
+JetIndexRecordCount@16
+JetInit2@8
+JetInit3@12
+JetInit3A@12
+JetInit3W@12
+JetInit@4
+JetIntersectIndexes@20
+JetMakeKey@20
+JetMove@16
+JetOSSnapshotAbort@8
+JetOSSnapshotEnd@8
+JetOSSnapshotFreeze@16
+JetOSSnapshotFreezeA@16
+JetOSSnapshotFreezeW@16
+JetOSSnapshotGetFreezeInfo@16
+JetOSSnapshotGetFreezeInfoA@16
+JetOSSnapshotGetFreezeInfoW@16
+JetOSSnapshotPrepare@8
+JetOSSnapshotPrepareInstance@12
+JetOSSnapshotThaw@8
+JetOSSnapshotTruncateLog@8
+JetOSSnapshotTruncateLogInstance@12
+JetOpenDatabase@20
+JetOpenDatabaseA@20
+JetOpenDatabaseW@20
+JetOpenFile@16
+JetOpenFileA@16
+JetOpenFileInstance@20
+JetOpenFileInstanceA@20
+JetOpenFileInstanceW@20
+JetOpenFileSectionInstance@28
+JetOpenFileSectionInstanceA@28
+JetOpenFileSectionInstanceW@28
+JetOpenFileW@16
+JetOpenTable@28
+JetOpenTableA@28
+JetOpenTableW@28
+JetOpenTempTable2@28
+JetOpenTempTable3@28
+JetOpenTempTable@24
+JetOpenTemporaryTable@8
+JetPrepareToCommitTransaction@16
+JetPrepareUpdate@12
+JetReadFile@16
+JetReadFileInstance@20
+JetRegisterCallback@24
+JetRenameColumn@20
+JetRenameColumnA@20
+JetRenameColumnW@20
+JetRenameTable@16
+JetRenameTableA@16
+JetRenameTableW@16
+JetResetCounter@8
+JetResetSessionContext@4
+JetResetTableSequential@12
+JetRestore2@12
+JetRestore2A@12
+JetRestore2W@12
+JetRestore@8
+JetRestoreA@8
+JetRestoreInstance@16
+JetRestoreInstanceA@16
+JetRestoreInstanceW@16
+JetRestoreW@8
+JetRetrieveColumn@32
+JetRetrieveColumns@16
+JetRetrieveKey@24
+JetRetrieveTaggedColumnList@28
+JetRollback@8
+JetSeek@12
+JetSetColumn@28
+JetSetColumnDefaultValue@28
+JetSetColumnDefaultValueA@28
+JetSetColumnDefaultValueW@28
+JetSetColumns@16
+JetSetCurrentIndex2@16
+JetSetCurrentIndex2A@16
+JetSetCurrentIndex2W@16
+JetSetCurrentIndex3@20
+JetSetCurrentIndex3A@20
+JetSetCurrentIndex3W@20
+JetSetCurrentIndex4@24
+JetSetCurrentIndex4A@24
+JetSetCurrentIndex4W@24
+JetSetCurrentIndex@12
+JetSetCurrentIndexA@12
+JetSetCurrentIndexW@12
+JetSetDatabaseSize@16
+JetSetDatabaseSizeA@16
+JetSetDatabaseSizeW@16
+JetSetIndexRange@12
+JetSetLS@16
+JetSetMaxDatabaseSize@16
+JetSetResourceParam@16
+JetSetSessionContext@8
+JetSetSystemParameter@20
+JetSetSystemParameterA@20
+JetSetSystemParameterW@20
+JetSetTableSequential@12
+JetSnapshotStart@12
+JetSnapshotStartA@12
+JetSnapshotStartW@12
+JetSnapshotStop@8
+JetStopBackup@0
+JetStopBackupInstance@4
+JetStopService@0
+JetStopServiceInstance@4
+JetTerm2@8
+JetTerm@4
+JetTracing@12
+JetTruncateLog@0
+JetTruncateLogInstance@4
+JetUnregisterCallback@16
+JetUpdate2@24
+JetUpdate@20
+JetUpgradeDatabase@16
+JetUpgradeDatabaseA@16
+JetUpgradeDatabaseW@16
+ese@20
+esent@12
+ese@20@20
+esent@12@12
diff --git a/lib/libc/mingw/lib32/evr.def b/lib/libc/mingw/lib32/evr.def
new file mode 100644
index 0000000000..5c5e20a2c5
--- /dev/null
+++ b/lib/libc/mingw/lib32/evr.def
@@ -0,0 +1,34 @@
+;
+; Definition file of EVR.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "EVR.dll"
+EXPORTS
+DllCanUnloadNow@0
+DllGetClassObject@12
+DllRegisterServer@0
+DllUnregisterServer@0
+MFConvertColorInfoFromDXVA@8
+MFConvertColorInfoToDXVA@8
+MFConvertFromFP16Array@12
+MFConvertToFP16Array@12
+MFCopyImage@24
+MFCreateDXSurfaceBuffer@16
+MFCreateVideoMediaType@8
+MFCreateVideoMediaTypeFromBitMapInfoHeader@48
+MFCreateVideoMediaTypeFromSubtype@8
+MFCreateVideoMediaTypeFromVideoInfoHeader2@24
+MFCreateVideoMediaTypeFromVideoInfoHeader@36
+MFCreateVideoMixer@16
+MFCreateVideoMixerAndPresenter@24
+MFCreateVideoOTA@8
+MFCreateVideoPresenter@16
+MFCreateVideoSampleAllocator@8
+MFCreateVideoSampleFromSurface@8
+MFGetPlaneSize@16
+MFGetStrideForBitmapInfoHeader@12
+MFGetUncompressedVideoFormat@4
+MFInitVideoFormat@8
+MFInitVideoFormat_RGB@16
+MFIsFormatYUV@4
diff --git a/lib/libc/mingw/lib32/faultrep.def b/lib/libc/mingw/lib32/faultrep.def
new file mode 100644
index 0000000000..dbc72725fa
--- /dev/null
+++ b/lib/libc/mingw/lib32/faultrep.def
@@ -0,0 +1,5 @@
+LIBRARY faultrep.DLL
+EXPORTS
+AddERExcludedApplicationA@4
+AddERExcludedApplicationW@4
+ReportFault@8
diff --git a/lib/libc/mingw/lib32/fwpuclnt.def b/lib/libc/mingw/lib32/fwpuclnt.def
new file mode 100644
index 0000000000..03c006c5b4
--- /dev/null
+++ b/lib/libc/mingw/lib32/fwpuclnt.def
@@ -0,0 +1,146 @@
+;
+; Definition file of fwpuclnt.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "fwpuclnt.dll"
+EXPORTS
+FwpmCalloutAdd0@16
+FwpmCalloutCreateEnumHandle0@12
+FwpmCalloutDeleteById0@8
+FwpmCalloutDeleteByKey0@8
+FwpmCalloutDestroyEnumHandle0@8
+FwpmCalloutEnum0@20
+FwpmCalloutGetById0@12
+FwpmCalloutGetByKey0@12
+FwpmCalloutGetSecurityInfoByKey0@32
+FwpmCalloutSetSecurityInfoByKey0@28
+FwpmCalloutSubscribeChanges0@20
+FwpmCalloutSubscriptionsGet0@12
+FwpmCalloutUnsubscribeChanges0@8
+FwpmDiagnoseNetFailure0@12
+FwpmEngineClose0@4
+FwpmEngineGetOption0@12
+FwpmEngineGetSecurityInfo0@28
+FwpmEngineOpen0@20
+FwpmEngineSetOption0@12
+FwpmEngineSetSecurityInfo0@24
+FwpmEventProviderCreate0@8
+FwpmEventProviderDestroy0@4
+FwpmEventProviderFireNetEvent0@12
+FwpmEventProviderIsNetEventTypeEnabled0@12
+FwpmFilterAdd0@16
+FwpmFilterCreateEnumHandle0@12
+FwpmFilterDeleteById0@12
+FwpmFilterDeleteByKey0@8
+FwpmFilterDestroyEnumHandle0@8
+FwpmFilterEnum0@20
+FwpmFilterGetById0@16
+FwpmFilterGetByKey0@12
+FwpmFilterGetSecurityInfoByKey0@32
+FwpmFilterSetSecurityInfoByKey0@28
+FwpmFilterSubscribeChanges0@20
+FwpmFilterSubscriptionsGet0@12
+FwpmFilterUnsubscribeChanges0@8
+FwpmFreeMemory0@4
+FwpmGetAppIdFromFileName0@8
+FwpmIPsecTunnelAdd0@28
+FwpmIPsecTunnelDeleteByKey0@8
+FwpmLayerCreateEnumHandle0@12
+FwpmLayerDestroyEnumHandle0@8
+FwpmLayerEnum0@20
+FwpmLayerGetById0@12
+FwpmLayerGetByKey0@12
+FwpmLayerGetSecurityInfoByKey0@32
+FwpmLayerSetSecurityInfoByKey0@28
+FwpmNetEventCreateEnumHandle0@12
+FwpmNetEventDestroyEnumHandle0@8
+FwpmNetEventEnum0@20
+FwpmNetEventsGetSecurityInfo0@28
+FwpmNetEventsSetSecurityInfo0@24
+FwpmProviderAdd0@12
+FwpmProviderContextAdd0@16
+FwpmProviderContextCreateEnumHandle0@12
+FwpmProviderContextDeleteById0@12
+FwpmProviderContextDeleteByKey0@8
+FwpmProviderContextDestroyEnumHandle0@8
+FwpmProviderContextEnum0@20
+FwpmProviderContextGetById0@16
+FwpmProviderContextGetByKey0@12
+FwpmProviderContextGetSecurityInfoByKey0@32
+FwpmProviderContextSetSecurityInfoByKey0@28
+FwpmProviderContextSubscribeChanges0@20
+FwpmProviderContextSubscriptionsGet0@12
+FwpmProviderContextUnsubscribeChanges0@8
+FwpmProviderCreateEnumHandle0@12
+FwpmProviderDeleteByKey0@8
+FwpmProviderDestroyEnumHandle0@8
+FwpmProviderEnum0@20
+FwpmProviderGetByKey0@12
+FwpmProviderGetSecurityInfoByKey0@32
+FwpmProviderSetSecurityInfoByKey0@28
+FwpmProviderSubscribeChanges0@20
+FwpmProviderSubscriptionsGet0@12
+FwpmProviderUnsubscribeChanges0@8
+FwpmSessionCreateEnumHandle0@12
+FwpmSessionDestroyEnumHandle0@8
+FwpmSessionEnum0@20
+FwpmSubLayerAdd0@12
+FwpmSubLayerCreateEnumHandle0@12
+FwpmSubLayerDeleteByKey0@8
+FwpmSubLayerDestroyEnumHandle0@8
+FwpmSubLayerEnum0@20
+FwpmSubLayerGetByKey0@12
+FwpmSubLayerGetSecurityInfoByKey0@32
+FwpmSubLayerSetSecurityInfoByKey0@28
+FwpmSubLayerSubscribeChanges0@20
+FwpmSubLayerSubscriptionsGet0@12
+FwpmSubLayerUnsubscribeChanges0@8
+FwpmTraceRestoreDefaults0@0
+FwpmTransactionAbort0@4
+FwpmTransactionBegin0@8
+FwpmTransactionCommit0@4
+FwpsAleExplicitCredentialsQuery0@16
+FwpsClassifyUser0@28
+FwpsFreeMemory0@4
+FwpsGetInProcReplicaOffset0@4
+FwpsLayerCreateInProcReplica0@8
+FwpsLayerReleaseInProcReplica0@8
+FwpsOpenToken0@20
+IPsecGetStatistics0@8
+IPsecKeyModuleAdd0@12
+IPsecKeyModuleCompleteAcquire0@16
+IPsecKeyModuleDelete0@8
+IPsecSaContextAddInbound0@16
+IPsecSaContextAddOutbound0@16
+IPsecSaContextCreate0@16
+IPsecSaContextCreateEnumHandle0@12
+IPsecSaContextDeleteById0@12
+IPsecSaContextDestroyEnumHandle0@8
+IPsecSaContextEnum0@20
+IPsecSaContextExpire0@12
+IPsecSaContextGetById0@16
+IPsecSaContextGetSpi0@20
+IPsecSaCreateEnumHandle0@12
+IPsecSaDbGetSecurityInfo0@28
+IPsecSaDbSetSecurityInfo0@24
+IPsecSaDestroyEnumHandle0@8
+IPsecSaEnum0@20
+IPsecSaInitiateAsync0@16
+IkeextGetConfigParameters0@4
+IkeextGetStatistics0@8
+IkeextSaCreateEnumHandle0@12
+IkeextSaDbGetSecurityInfo0@28
+IkeextSaDbSetSecurityInfo0@24
+IkeextSaDeleteById0@12
+IkeextSaDestroyEnumHandle0@8
+IkeextSaEnum0@20
+IkeextSaGetById0@16
+IkeextSetConfigParameters0@4
+WSADeleteSocketPeerTargetName@20
+WSAImpersonateSocketPeer@12
+WSAQuerySocketSecurity@28
+WSARevertImpersonation@0
+WSASetSocketPeerTargetName@20
+WSASetSocketSecurity@20
+wfpdiagW@16
diff --git a/lib/libc/mingw/lib32/gpedit.def b/lib/libc/mingw/lib32/gpedit.def
new file mode 100644
index 0000000000..cf5f320335
--- /dev/null
+++ b/lib/libc/mingw/lib32/gpedit.def
@@ -0,0 +1,20 @@
+;
+; Definition file of GPEDIT.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "GPEDIT.DLL"
+EXPORTS
+ord_100@8 @100
+ord_101@4 @101
+ord_102 @102
+ord_103@12 @103
+ord_104@12 @104
+BrowseForGPO@8
+CreateGPOLink@12
+DeleteAllGPOLinks@4
+DeleteGPOLink@8
+DllCanUnloadNow
+DllGetClassObject@12
+ExportRSoPData@8
+ImportRSoPData@8
diff --git a/lib/libc/mingw/lib32/hid.def b/lib/libc/mingw/lib32/hid.def
new file mode 100644
index 0000000000..bfbc9eaf0a
--- /dev/null
+++ b/lib/libc/mingw/lib32/hid.def
@@ -0,0 +1,47 @@
+LIBRARY hid.dll
+EXPORTS
+HidD_FlushQueue@4
+HidD_FreePreparsedData@4
+HidD_GetAttributes@8
+HidD_GetConfiguration@12
+HidD_GetFeature@12
+HidD_GetHidGuid@4
+HidD_GetIndexedString@16
+HidD_GetInputReport@12
+HidD_GetManufacturerString@12
+HidD_GetMsGenreDescriptor@12
+HidD_GetNumInputBuffers@8
+HidD_GetPhysicalDescriptor@12
+HidD_GetPreparsedData@8
+HidD_GetProductString@12
+HidD_GetSerialNumberString@12
+HidD_Hello@8
+HidD_SetConfiguration@12
+HidD_SetFeature@12
+HidD_SetNumInputBuffers@8
+HidD_SetOutputReport@12
+HidP_GetButtonCaps@16
+HidP_GetCaps@8
+HidP_GetData@24
+HidP_GetExtendedAttributes@20
+HidP_GetLinkCollectionNodes@12
+HidP_GetScaledUsageValue@32
+HidP_GetSpecificButtonCaps@28
+HidP_GetSpecificValueCaps@28
+HidP_GetUsageValue@32
+HidP_GetUsageValueArray@36
+HidP_GetUsages@32
+HidP_GetUsagesEx@28
+HidP_GetValueCaps@16
+HidP_InitializeReportForID@20
+HidP_MaxDataListLength@8
+HidP_MaxUsageListLength@12
+HidP_SetData@24
+HidP_SetScaledUsageValue@32
+HidP_SetUsageValue@32
+HidP_SetUsageValueArray@36
+HidP_SetUsages@32
+HidP_TranslateUsagesToI8042ScanCodes@24
+HidP_UnsetUsages@32
+HidP_UsageListDifference@20
+;HidservInstaller
diff --git a/lib/libc/mingw/lib32/httpapi.def b/lib/libc/mingw/lib32/httpapi.def
new file mode 100644
index 0000000000..4bd78ad15e
--- /dev/null
+++ b/lib/libc/mingw/lib32/httpapi.def
@@ -0,0 +1,44 @@
+;
+; Definition file of HTTPAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "HTTPAPI.dll"
+EXPORTS
+HttpAddFragmentToCache@20
+HttpAddUrl@12
+HttpAddUrlToUrlGroup@24
+HttpCancelHttpRequest@16
+HttpCloseRequestQueue@4
+HttpCloseServerSession@8
+HttpCloseUrlGroup@8
+HttpControlService@20
+HttpCreateHttpHandle@8
+HttpCreateRequestQueue@20
+HttpCreateServerSession@12
+HttpCreateUrlGroup@16
+HttpDeleteServiceConfiguration@20
+HttpFlushResponseCache@16
+HttpGetCounters@24
+HttpInitialize@12
+HttpQueryRequestQueueProperty@28
+HttpQueryServerSessionProperty@24
+HttpQueryServiceConfiguration@32
+HttpQueryUrlGroupProperty@24
+HttpReadFragmentFromCache@28
+HttpReceiveClientCertificate@32
+HttpReceiveHttpRequest@32
+HttpReceiveRequestEntityBody@32
+HttpRemoveUrl@8
+HttpRemoveUrlFromUrlGroup@16
+HttpSendHttpResponse@44
+HttpSendResponseEntityBody@44
+HttpSetRequestQueueProperty@24
+HttpSetServerSessionProperty@20
+HttpSetServiceConfiguration@20
+HttpSetUrlGroupProperty@20
+HttpShutdownRequestQueue@4
+HttpTerminate@8
+HttpWaitForDemandStart@8
+HttpWaitForDisconnect@16
+HttpWaitForDisconnectEx@20
diff --git a/lib/libc/mingw/lib32/icmui.def b/lib/libc/mingw/lib32/icmui.def
new file mode 100644
index 0000000000..679eeeb1db
--- /dev/null
+++ b/lib/libc/mingw/lib32/icmui.def
@@ -0,0 +1,4 @@
+LIBRARY ICMUI.DLL
+EXPORTS
+SetupColorMatchingA@4
+SetupColorMatchingW@4
diff --git a/lib/libc/mingw/lib32/iscsidsc.def b/lib/libc/mingw/lib32/iscsidsc.def
new file mode 100644
index 0000000000..9e4534b58a
--- /dev/null
+++ b/lib/libc/mingw/lib32/iscsidsc.def
@@ -0,0 +1,79 @@
+;
+; Definition file of ISCSIDSC.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "ISCSIDSC.dll"
+EXPORTS
+AddISNSServerA@4
+AddISNSServerW@4
+AddIScsiConnectionA@40
+AddIScsiConnectionW@40
+AddIScsiSendTargetPortalA@24
+AddIScsiSendTargetPortalW@24
+AddIScsiStaticTargetA@28
+AddIScsiStaticTargetW@28
+AddPersistentIScsiDeviceA@4
+AddPersistentIScsiDeviceW@4
+ClearPersistentIScsiDevices
+;DllMain@12
+GetDevicesForIScsiSessionA@12
+GetDevicesForIScsiSessionW@12
+GetIScsiIKEInfoA@16
+GetIScsiIKEInfoW@16
+GetIScsiInitiatorNodeNameA@4
+GetIScsiInitiatorNodeNameW@4
+GetIScsiSessionListA@12
+GetIScsiSessionListW@12
+GetIScsiTargetInformationA@20
+GetIScsiTargetInformationW@20
+GetIScsiVersionInformation@4
+LoginIScsiTargetA@56
+LoginIScsiTargetW@56
+LogoutIScsiTarget@4
+RefreshISNSServerA@4
+RefreshISNSServerW@4
+RefreshIScsiSendTargetPortalA@12
+RefreshIScsiSendTargetPortalW@12
+RemoveISNSServerA@4
+RemoveISNSServerW@4
+RemoveIScsiConnection@8
+RemoveIScsiPersistentTargetA@16
+RemoveIScsiPersistentTargetW@16
+RemoveIScsiSendTargetPortalA@12
+RemoveIScsiSendTargetPortalW@12
+RemoveIScsiStaticTargetA@4
+RemoveIScsiStaticTargetW@4
+RemovePersistentIScsiDeviceA@4
+RemovePersistentIScsiDeviceW@4
+ReportActiveIScsiTargetMappingsA@12
+ReportActiveIScsiTargetMappingsW@12
+ReportISNSServerListA@8
+ReportISNSServerListW@8
+ReportIScsiInitiatorListA@8
+ReportIScsiInitiatorListW@8
+ReportIScsiPersistentLoginsA@12
+ReportIScsiPersistentLoginsW@12
+ReportIScsiSendTargetPortalsA@8
+ReportIScsiSendTargetPortalsExA@12
+ReportIScsiSendTargetPortalsExW@12
+ReportIScsiSendTargetPortalsW@8
+ReportIScsiTargetPortalsA@20
+ReportIScsiTargetPortalsW@20
+ReportIScsiTargetsA@12
+ReportIScsiTargetsW@12
+ReportPersistentIScsiDevicesA@8
+ReportPersistentIScsiDevicesW@8
+SendScsiInquiry@40
+SendScsiReadCapacity@32
+SendScsiReportLuns@24
+SetIScsiGroupPresharedKey@12
+SetIScsiIKEInfoA@16
+SetIScsiIKEInfoW@16
+SetIScsiInitiatorCHAPSharedSecret@8
+SetIScsiInitiatorNodeNameA@4
+SetIScsiInitiatorNodeNameW@4
+SetIScsiTunnelModeOuterAddressA@20
+SetIScsiTunnelModeOuterAddressW@20
+SetupPersistentIScsiDevices
+SetupPersistentIScsiVolumes
diff --git a/lib/libc/mingw/lib32/ksuser.def b/lib/libc/mingw/lib32/ksuser.def
new file mode 100644
index 0000000000..63a6916186
--- /dev/null
+++ b/lib/libc/mingw/lib32/ksuser.def
@@ -0,0 +1,6 @@
+LIBRARY ksuser.dll
+EXPORTS
+KsCreateAllocator@12
+KsCreateClock@12
+KsCreatePin@16
+KsCreateTopologyNode@16
diff --git a/lib/libc/mingw/lib32/ktmw32.def b/lib/libc/mingw/lib32/ktmw32.def
new file mode 100644
index 0000000000..d07c9ae4e8
--- /dev/null
+++ b/lib/libc/mingw/lib32/ktmw32.def
@@ -0,0 +1,51 @@
+;
+; Definition file of ktmw32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "ktmw32.dll"
+EXPORTS
+CommitComplete@8
+CommitEnlistment@8
+CommitTransaction@4
+CommitTransactionAsync@4
+CreateEnlistment@24
+CreateResourceManager@20
+CreateTransaction@28
+CreateTransactionManager@16
+GetCurrentClockTransactionManager@8
+GetEnlistmentId@8
+GetEnlistmentRecoveryInformation@16
+GetNotificationResourceManager@20
+GetNotificationResourceManagerAsync@20
+GetTransactionId@8
+GetTransactionInformation@28
+GetTransactionManagerId@8
+OpenEnlistment@12
+OpenResourceManager@12
+OpenTransaction@8
+OpenTransactionManager@12
+OpenTransactionManagerById@12
+PrePrepareComplete@8
+PrePrepareEnlistment@8
+PrepareComplete@8
+PrepareEnlistment@8
+PrivCreateTransaction@28
+PrivIsLogWritableTransactionManager@4
+PrivPropagationComplete@16
+PrivPropagationFailed@8
+PrivRegisterProtocolAddressInformation@20
+ReadOnlyEnlistment@8
+RecoverEnlistment@8
+RecoverResourceManager@4
+RecoverTransactionManager@4
+RenameTransactionManager@8
+RollbackComplete@8
+RollbackEnlistment@8
+RollbackTransaction@4
+RollbackTransactionAsync@4
+RollforwardTransactionManager@8
+SetEnlistmentRecoveryInformation@12
+SetResourceManagerCompletionPort@12
+SetTransactionInformation@20
+SinglePhaseReject@8
diff --git a/lib/libc/mingw/lib32/logoncli.def b/lib/libc/mingw/lib32/logoncli.def
new file mode 100644
index 0000000000..6e01a9b602
--- /dev/null
+++ b/lib/libc/mingw/lib32/logoncli.def
@@ -0,0 +1,80 @@
+;
+; Definition file of logoncli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "logoncli.dll"
+EXPORTS
+DsAddressToSiteNamesA@16
+DsAddressToSiteNamesExA@20
+DsAddressToSiteNamesExW@20
+DsAddressToSiteNamesW@16
+DsDeregisterDnsHostRecordsA@20
+DsDeregisterDnsHostRecordsW@20
+DsEnumerateDomainTrustsA@16
+DsEnumerateDomainTrustsW@16
+DsGetDcCloseW@4
+DsGetDcNameA@24
+DsGetDcNameW@24
+DsGetDcNameWithAccountA@32
+DsGetDcNameWithAccountW@32
+DsGetDcNextA@16
+DsGetDcNextW@16
+DsGetDcOpenA@28
+DsGetDcOpenW@28
+DsGetDcSiteCoverageA@12
+DsGetDcSiteCoverageW@12
+DsGetForestTrustInformationW@16
+DsGetSiteNameA@8
+DsGetSiteNameW@8
+DsMergeForestTrustInformationW@16
+DsValidateSubnetNameA@4
+DsValidateSubnetNameW@4
+I_DsUpdateReadOnlyServerDnsRecords@28
+I_NetAccountDeltas@48
+I_NetAccountSync@48
+I_NetChainSetClientAttributes2@36
+I_NetChainSetClientAttributes@36
+I_NetDatabaseDeltas@32
+I_NetDatabaseRedo@28
+I_NetDatabaseSync2@36
+I_NetDatabaseSync@32
+I_NetGetDCList@16
+I_NetGetForestTrustInformation@24
+I_NetLogonControl2@20
+I_NetLogonControl@16
+I_NetLogonGetCapabilities@24
+I_NetLogonGetDomainInfo@28
+I_NetLogonSamLogoff@24
+I_NetLogonSamLogon@36
+I_NetLogonSamLogonEx@40
+I_NetLogonSamLogonWithFlags@40
+I_NetLogonSendToSam@24
+I_NetLogonUasLogoff@12
+I_NetLogonUasLogon@12
+I_NetServerAuthenticate2@28
+I_NetServerAuthenticate3@32
+I_NetServerAuthenticate@24
+I_NetServerGetTrustInfo@36
+I_NetServerPasswordGet@28
+I_NetServerPasswordSet2@28
+I_NetServerPasswordSet@28
+I_NetServerReqChallenge@16
+I_NetServerTrustPasswordsGet@32
+I_NetlogonComputeClientDigest@24
+I_NetlogonComputeServerDigest@24
+I_NetlogonGetTrustRid@12
+I_RpcExtInitializeExtensionPoint@8
+NetAddServiceAccount@16
+NetEnumerateServiceAccounts@16
+NetEnumerateTrustedDomains@8
+NetGetAnyDCName@12
+NetGetDCName@12
+NetIsServiceAccount@12
+NetLogonGetTimeServiceParentDomain@12
+NetLogonSetServiceBits@12
+NetQueryServiceAccount@16
+NetRemoveServiceAccount@12
+NlBindingAddServerToCache@8
+NlBindingRemoveServerFromCache@8
+NlBindingSetAuthInfo@20
diff --git a/lib/libc/mingw/lib32/mapi32.def b/lib/libc/mingw/lib32/mapi32.def
new file mode 100644
index 0000000000..2e4fe42fb2
--- /dev/null
+++ b/lib/libc/mingw/lib32/mapi32.def
@@ -0,0 +1,164 @@
+LIBRARY MAPI32.DLL
+EXPORTS
+BuildDisplayTable@40
+CbOfEncoded@4
+CchOfEncoding@4
+ChangeIdleRoutine@28
+CloseIMsgSession@4
+CreateIProp@24
+CreateTable@36
+DeinitMapiUtil@0
+DeregisterIdleRoutine@4
+EnableIdleRoutine@8
+EncodeID@12
+FBadColumnSet@4
+FBadEntryList@4
+FBadProp@4
+FBadPropTag@4
+FBadRestriction@4
+FBadRglpNameID@8
+FBadRglpszA@8
+FBadRglpszW@8
+FBadRow@4
+FBadRowSet@4
+FBadSortOrderSet@4
+FBinFromHex@8
+FDecodeID@12
+FEqualNames@8
+FPropCompareProp@12
+FPropContainsProp@12
+FPropExists@8
+FreePadrlist@4
+FreeProws@4
+FtAdcFt@20
+FtAddFt@16
+FtDivFtBogus@20
+FtMulDw@12
+FtMulDwDw@8
+FtNegFt@8
+FtSubFt@16
+FtgRegisterIdleRoutine@20
+GetAttribIMsgOnIStg@12
+GetTnefStreamCodepage
+GetTnefStreamCodepage@12
+HexFromBin@12
+HrAddColumns@16
+HrAddColumnsEx@20
+HrAllocAdviseSink@12
+HrComposeEID@28
+HrComposeMsgID@24
+HrDecomposeEID@28
+HrDecomposeMsgID@24
+HrDispatchNotifications@4
+HrEntryIDFromSz@12
+HrGetOneProp@12
+HrIStorageFromStream@16
+HrQueryAllRows@24
+HrSetOneProp@8
+HrSzFromEntryID@12
+HrThisThreadAdviseSink@8
+HrValidateIPMSubtree@20
+HrValidateParameters@8
+InstallFilterHook@4
+IsBadBoundedStringPtr@8
+LAUNCHWIZARD
+LPropCompareProp@8
+LaunchWizard@20
+LpValFindProp@12
+MAPI_NSCP_SynchronizeClient@8
+MAPIAddress@44
+MAPIAdminProfiles
+MAPIAdminProfiles@8
+MAPIAllocateBuffer
+MAPIAllocateBuffer@8
+MAPIAllocateMore
+MAPIAllocateMore@12
+MAPIDeinitIdle@0
+MAPIDeleteMail@20
+MAPIDetails@20
+MAPIFindNext@28
+MAPIFreeBuffer
+MAPIFreeBuffer@4
+MAPIGetDefaultMalloc@0
+MAPIGetNetscapeVersion@0
+MAPIInitIdle@4
+MAPIInitialize
+MAPIInitialize@4
+MAPILogoff@16
+MAPILogon@24
+MAPILogonEx
+MAPILogonEx@20
+MAPIOpenFormMgr
+MAPIOpenFormMgr@8
+MAPIOpenLocalFormContainer
+MAPIOpenLocalFormContainer@4
+MAPIReadMail@24
+MAPIResolveName@24
+MAPISaveMail@24
+MAPISendDocuments@20
+MAPISendMail
+MAPISendMail@20
+MAPIUninitialize
+MAPIUninitialize@0
+MNLS_CompareStringW@24
+MNLS_IsBadStringPtrW@8
+MNLS_MultiByteToWideChar@24
+MNLS_WideCharToMultiByte@32
+MNLS_lstrcmpW@8
+MNLS_lstrcpyW@8
+MNLS_lstrlenW@4
+MapStorageSCode@4
+OpenIMsgOnIStg@44
+OpenIMsgSession@12
+OpenStreamOnFile
+OpenStreamOnFile@24
+OpenTnefStream
+OpenTnefStream@28
+OpenTnefStreamEx
+OpenTnefStreamEx@32
+PRProviderInit
+PpropFindProp@12
+PropCopyMore@16
+RTFSync
+RTFSync@12
+ScBinFromHexBounded@12
+ScCopyNotifications@16
+ScCopyProps@16
+ScCountNotifications@12
+ScCountProps@12
+ScCreateConversationIndex@16
+ScDupPropset@16
+ScGenerateMuid@4
+ScInitMapiUtil@4
+ScLocalPathFromUNC@12
+ScMAPIXFromCMC
+ScMAPIXFromSMAPI
+ScRelocNotifications@20
+ScRelocProps@20
+ScSplEntry
+ScUNCFromLocalPath@12
+SetAttribIMsgOnIStg@16
+SwapPlong@8
+SwapPword@8
+SzFindCh@8
+SzFindLastCh@8
+SzFindSz@8
+UFromSz@4
+UNKOBJ_COFree@8
+UNKOBJ_Free@8
+UNKOBJ_FreeRows@8
+UNKOBJ_ScAllocate@12
+UNKOBJ_ScAllocateMore@16
+UNKOBJ_ScCOAllocate@12
+UNKOBJ_ScCOReallocate@12
+UNKOBJ_ScSzFromIdsAlloc@20
+UlAddRef@4
+UlFromSzHex@4
+UlPropSize@4
+UlRelease@4
+WrapCompressedRTFStream
+WrapCompressedRTFStream@12
+WrapProgress@20
+WrapStoreEntryID@24
+__CPPValidateParameters@8
+__ValidateParameters@8
diff --git a/lib/libc/mingw/lib32/mf.def b/lib/libc/mingw/lib32/mf.def
new file mode 100644
index 0000000000..96712a4cac
--- /dev/null
+++ b/lib/libc/mingw/lib32/mf.def
@@ -0,0 +1,73 @@
+;
+; Definition file of MF.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "MF.dll"
+EXPORTS
+AppendPropVariant@8
+ConvertPropVariant@8
+CopyPropertyStore@12
+CreateNamedPropertyStore@4
+DllCanUnloadNow@0
+DllGetClassObject@12
+DllRegisterServer@0
+DllUnregisterServer@0
+ExtractPropVariant@12
+MFCreateASFByteStreamPlugin@8
+MFCreateASFContentInfo@4
+MFCreateASFIndexer@4
+MFCreateASFIndexerByteStream@16
+MFCreateASFMediaSink@8
+MFCreateASFMediaSinkActivate@12
+MFCreateASFMultiplexer@4
+MFCreateASFProfile@4
+MFCreateASFProfileFromPresentationDescriptor@8
+MFCreateASFSplitter@4
+MFCreateASFStreamSelector@8
+MFCreateAppSourceProxy@12
+MFCreateAudioRenderer@8
+MFCreateAudioRendererActivate@4
+MFCreateByteCacheFile@8
+MFCreateCacheManager@8
+MFCreateCredentialCache@4
+MFCreateDrmNetNDSchemePlugin@8
+MFCreateFileBlockMap@32
+MFCreateFileSchemePlugin@8
+MFCreateHttpSchemePlugin@8
+MFCreateLPCMByteStreamPlugin@8
+MFCreateMP3ByteStreamPlugin@8
+MFCreateMediaProcessor@4
+MFCreateMediaSession@8
+MFCreateNetSchemePlugin@8
+MFCreatePMPHost@12
+MFCreatePMPMediaSession@16
+MFCreatePMPServer@8
+MFCreatePresentationClock@4
+MFCreatePresentationDescriptorFromASFProfile@8
+MFCreateProxyLocator@12
+MFCreateRemoteDesktopPlugin@4
+MFCreateSAMIByteStreamPlugin@8
+MFCreateSampleGrabberSinkActivate@12
+MFCreateSecureHttpSchemePlugin@8
+MFCreateSequencerSegmentOffset@16
+MFCreateSequencerSource@8
+MFCreateSequencerSourceRemoteStream@12
+MFCreateSimpleTypeHandler@4
+MFCreateSourceResolver@4
+MFCreateStandardQualityManager@4
+MFCreateTopoLoader@4
+MFCreateTopology@4
+MFCreateTopologyNode@8
+MFCreateVideoRenderer@8
+MFCreateVideoRendererActivate@8
+MFCreateWMAEncoderActivate@12
+MFCreateWMVEncoderActivate@12
+MFGetMultipleServiceProviders@16
+MFGetService@16
+MFGetSupportedMimeTypes@4
+MFGetSupportedSchemes@4
+MFReadSequencerSegmentOffset@12
+MFRequireProtectedEnvironment@4
+MFShutdownObject@4
+MergePropertyStore@12
diff --git a/lib/libc/mingw/lib32/mfplat.def b/lib/libc/mingw/lib32/mfplat.def
new file mode 100644
index 0000000000..2e29ad8adb
--- /dev/null
+++ b/lib/libc/mingw/lib32/mfplat.def
@@ -0,0 +1,133 @@
+;
+; Definition file of MFPlat.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "MFPlat.DLL"
+EXPORTS
+FormatTagFromWfx@4
+MFCreateGuid@4
+MFGetIoPortHandle@0
+MFGetRandomNumber@8
+MFIsQueueThread@4
+MFPlatformBigEndian@0
+MFPlatformLittleEndian@0
+MFTraceError@20
+MFllMulDiv@32
+ValidateWaveFormat@4
+CopyPropVariant@12
+CreatePropVariant@16
+CreatePropertyStore@4
+DestroyPropVariant@4
+LFGetGlobalPool@8
+MFAddPeriodicCallback@12
+MFAllocateWorkQueue@4
+MFAppendCollection@8
+MFAverageTimePerFrameToFrameRate@16
+MFBeginCreateFile@28
+MFBeginGetHostByName@12
+MFBeginRegisterWorkQueueWithMMCSS@20
+MFBeginUnregisterWorkQueueWithMMCSS@12
+MFBlockThread@0
+MFCalculateBitmapImageSize@16
+MFCalculateImageSize@16
+MFCancelCreateFile@4
+MFCancelWorkItem@8
+MFCompareFullToPartialMediaType@8
+MFCompareSockaddrAddresses@8
+MFCreateAMMediaTypeFromMFMediaType@24
+MFCreateAlignedMemoryBuffer@12
+MFCreateAsyncResult@16
+MFCreateAttributes@8
+MFCreateAudioMediaType@8
+MFCreateCollection@4
+MFCreateEventQueue@4
+MFCreateFile@20
+MFCreateLegacyMediaBufferOnMFMediaBuffer@16
+MFCreateMFVideoFormatFromMFMediaType@12
+MFCreateMediaBufferWrapper@16
+MFCreateMediaEvent@20
+MFCreateMediaType@4
+MFCreateMediaTypeFromRepresentation@24
+MFCreateMemoryBuffer@8
+MFCreateMemoryStream@16
+MFCreatePathFromURL@8
+MFCreatePresentationDescriptor@12
+MFCreateSample@4
+MFCreateSocket@16
+MFCreateSocketListener@12
+MFCreateStreamDescriptor@16
+MFCreateSystemTimeSource@4
+MFCreateSystemUnderlyingClock@4
+MFCreateTempFile@16
+MFCreateURLFromPath@8
+MFCreateUdpSockets@36
+MFCreateWaveFormatExFromMFMediaType@16
+MFDeserializeAttributesFromStream@12
+MFDeserializeEvent@12
+MFDeserializeMediaTypeFromStream@8
+MFDeserializePresentationDescriptor@12
+MFEndCreateFile@8
+MFEndGetHostByName@12
+MFEndRegisterWorkQueueWithMMCSS@8
+MFEndUnregisterWorkQueueWithMMCSS@4
+MFFrameRateToAverageTimePerFrame@12
+MFFreeAdaptersAddresses@4
+MFGetAdaptersAddresses@8
+MFGetAttributesAsBlob@12
+MFGetAttributesAsBlobSize@8
+MFGetConfigurationDWORD@12
+MFGetConfigurationPolicy@16
+MFGetConfigurationStore@16
+MFGetConfigurationString@16
+MFGetNumericNameFromSockaddr@20
+MFGetPlatform@0
+MFGetPrivateWorkqueues@4
+MFGetSockaddrFromNumericName@12
+MFGetSystemTime@0
+MFGetTimerPeriodicity@4
+MFGetWorkQueueMMCSSClass@12
+MFGetWorkQueueMMCSSTaskId@8
+MFHeapAlloc@20
+MFHeapFree@4
+MFInitAMMediaTypeFromMFMediaType@24
+MFInitAttributesFromBlob@12
+MFInitMediaTypeFromAMMediaType@8
+MFInitMediaTypeFromMFVideoFormat@12
+MFInitMediaTypeFromMPEG1VideoInfo@16
+MFInitMediaTypeFromMPEG2VideoInfo@16
+MFInitMediaTypeFromVideoInfoHeader2@16
+MFInitMediaTypeFromVideoInfoHeader@16
+MFInitMediaTypeFromWaveFormatEx@12
+MFInvokeCallback@4
+MFJoinIoPort@4
+MFLockPlatform@0
+MFLockWorkQueue@4
+MFPutWorkItem@12
+MFPutWorkItemEx@8
+MFRecordError@4
+MFRemovePeriodicCallback@4
+MFScheduleWorkItem@20
+MFScheduleWorkItemEx@16
+MFSerializeAttributesToStream@12
+MFSerializeEvent@12
+MFSerializeMediaTypeToStream@8
+MFSerializePresentationDescriptor@12
+MFSetSockaddrAny@8
+MFShutdown@0
+MFStartup@8
+MFStreamDescriptorProtectMediaType@8
+MFTEnum@40
+MFTEnumEx@36
+MFTGetInfo@40
+MFTRegister@60
+MFTUnregister@16
+MFTraceFuncEnter@16
+MFUnblockThread@0
+MFUnlockPlatform@0
+MFUnlockWorkQueue@4
+MFUnwrapMediaType@8
+MFValidateMediaTypeSize@24
+MFWrapMediaType@16
+PropVariantFromStream@8
+PropVariantToStream@8
diff --git a/lib/libc/mingw/lib32/mfreadwrite.def b/lib/libc/mingw/lib32/mfreadwrite.def
new file mode 100644
index 0000000000..7266b5a5c0
--- /dev/null
+++ b/lib/libc/mingw/lib32/mfreadwrite.def
@@ -0,0 +1,7 @@
+LIBRARY "MFReadWrite.dll"
+EXPORTS
+MFCreateSinkWriterFromMediaSink@12
+MFCreateSinkWriterFromURL@16
+MFCreateSourceReaderFromByteStream@12
+MFCreateSourceReaderFromMediaSource@12
+MFCreateSourceReaderFromURL@12
diff --git a/lib/libc/mingw/lib32/mgmtapi.def b/lib/libc/mingw/lib32/mgmtapi.def
new file mode 100644
index 0000000000..652621c901
--- /dev/null
+++ b/lib/libc/mingw/lib32/mgmtapi.def
@@ -0,0 +1,14 @@
+LIBRARY MGMTAPI.DLL
+EXPORTS
+SnmpMgrClose@4
+SnmpMgrCtl@28
+SnmpMgrGetTrap@24
+SnmpMgrGetTrapEx@32
+;SnmpMgrMIB2Disk@8
+SnmpMgrOidToStr@8
+SnmpMgrOpen@16
+SnmpMgrRequest@20
+SnmpMgrStrToOid@8
+SnmpMgrTrapListen@4
+serverTrapThread@4
+;dbginit@8
diff --git a/lib/libc/mingw/lib32/mmdevapi.def b/lib/libc/mingw/lib32/mmdevapi.def
new file mode 100644
index 0000000000..a13425cb60
--- /dev/null
+++ b/lib/libc/mingw/lib32/mmdevapi.def
@@ -0,0 +1,3 @@
+LIBRARY "mmdevapi.dll"
+EXPORTS
+ActivateAudioInterfaceAsync@20
diff --git a/lib/libc/mingw/lib32/mprapi.def b/lib/libc/mingw/lib32/mprapi.def
new file mode 100644
index 0000000000..ff7d4311bd
--- /dev/null
+++ b/lib/libc/mingw/lib32/mprapi.def
@@ -0,0 +1,141 @@
+;
+; Definition file of MPRAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "MPRAPI.dll"
+EXPORTS
+CompressPhoneNumber@8
+MprAdminBufferFree@4
+MprAdminConnectionClearStats@8
+MprAdminConnectionEnum@28
+MprAdminConnectionGetInfo@16
+MprAdminConnectionRemoveQuarantine@12
+MprAdminDeregisterConnectionNotification@8
+MprAdminDeviceEnum@16
+MprAdminEstablishDomainRasServer@12
+MprAdminGetErrorString@8
+MprAdminGetPDCServer@12
+MprAdminInterfaceConnect@16
+MprAdminInterfaceCreate@16
+MprAdminInterfaceDelete@8
+MprAdminInterfaceDeviceGetInfo@20
+MprAdminInterfaceDeviceSetInfo@20
+MprAdminInterfaceDisconnect@8
+MprAdminInterfaceEnum@28
+MprAdminInterfaceGetCredentials@20
+MprAdminInterfaceGetCredentialsEx@16
+MprAdminInterfaceGetHandle@16
+MprAdminInterfaceGetInfo@16
+MprAdminInterfaceQueryUpdateResult@16
+MprAdminInterfaceSetCredentials@20
+MprAdminInterfaceSetCredentialsEx@16
+MprAdminInterfaceSetInfo@16
+MprAdminInterfaceTransportAdd@20
+MprAdminInterfaceTransportGetInfo@20
+MprAdminInterfaceTransportRemove@12
+MprAdminInterfaceTransportSetInfo@20
+MprAdminInterfaceUpdatePhonebookInfo@8
+MprAdminInterfaceUpdateRoutes@16
+MprAdminIsDomainRasServer@12
+MprAdminIsServiceRunning@4
+MprAdminMIBBufferFree@4
+MprAdminMIBEntryCreate@20
+MprAdminMIBEntryDelete@20
+MprAdminMIBEntryGet@28
+MprAdminMIBEntryGetFirst@28
+MprAdminMIBEntryGetNext@28
+MprAdminMIBEntrySet@20
+MprAdminMIBServerConnect@8
+MprAdminMIBServerDisconnect@4
+MprAdminPortClearStats@8
+MprAdminPortDisconnect@8
+MprAdminPortEnum@32
+MprAdminPortGetInfo@16
+MprAdminPortReset@8
+MprAdminRegisterConnectionNotification@8
+MprAdminSendUserMessage@12
+MprAdminServerConnect@8
+MprAdminServerDisconnect@4
+MprAdminServerGetCredentials@12
+MprAdminServerGetInfo@12
+MprAdminServerSetCredentials@12
+MprAdminServerSetInfo@12
+MprAdminTransportCreate@32
+MprAdminTransportGetInfo@24
+MprAdminTransportSetInfo@24
+MprAdminUpgradeUsers@8
+MprAdminUserClose@4
+MprAdminUserGetInfo@16
+MprAdminUserOpen@12
+MprAdminUserRead@12
+MprAdminUserReadProfFlags@8
+MprAdminUserServerConnect@12
+MprAdminUserServerDisconnect@4
+MprAdminUserSetInfo@16
+MprAdminUserWrite@12
+MprAdminUserWriteProfFlags@8
+MprConfigBufferFree@4
+MprConfigFilterGetInfo@16
+MprConfigFilterSetInfo@16
+MprConfigGetFriendlyName@16
+MprConfigGetGuidName@16
+MprConfigInterfaceCreate@16
+MprConfigInterfaceDelete@8
+MprConfigInterfaceEnum@28
+MprConfigInterfaceGetHandle@12
+MprConfigInterfaceGetInfo@20
+MprConfigInterfaceSetInfo@16
+MprConfigInterfaceTransportAdd@28
+MprConfigInterfaceTransportEnum@32
+MprConfigInterfaceTransportGetHandle@16
+MprConfigInterfaceTransportGetInfo@20
+MprConfigInterfaceTransportRemove@12
+MprConfigInterfaceTransportSetInfo@20
+MprConfigServerBackup@8
+MprConfigServerConnect@8
+MprConfigServerDisconnect@4
+MprConfigServerGetInfo@12
+MprConfigServerInstall@8
+MprConfigServerRefresh@4
+MprConfigServerRestore@8
+MprConfigServerSetInfo@12
+MprConfigTransportCreate@36
+MprConfigTransportDelete@8
+MprConfigTransportEnum@28
+MprConfigTransportGetHandle@12
+MprConfigTransportGetInfo@28
+MprConfigTransportSetInfo@28
+MprDomainQueryAccess@8
+MprDomainQueryRasServer@12
+MprDomainRegisterRasServer@12
+MprDomainSetAccess@8
+MprGetUsrParams@12
+MprInfoBlockAdd@24
+MprInfoBlockFind@20
+MprInfoBlockQuerySize@4
+MprInfoBlockRemove@12
+MprInfoBlockSet@24
+MprInfoCreate@8
+MprInfoDelete@4
+MprInfoDuplicate@8
+MprInfoRemoveAll@8
+MprPortSetUsage@4
+MprSetupIpInIpInterfaceFriendlyNameCreate@8
+MprSetupIpInIpInterfaceFriendlyNameDelete@8
+MprSetupIpInIpInterfaceFriendlyNameEnum@12
+MprSetupIpInIpInterfaceFriendlyNameFree@4
+RasAdminConnectionClearStats@8
+RasAdminConnectionEnum@28
+RasAdminConnectionGetInfo@16
+MprAdminConnectionRemoveQuarantine@12
+RasAdminGetErrorString@12
+MprAdminGetPDCServer@12
+RasAdminPortClearStats@8
+RasAdminPortDisconnect@8
+RasAdminPortEnum@32
+RasAdminPortGetInfo@16
+RasAdminPortReset@8
+RasAdminUserGetInfo@12
+RasAdminUserSetInfo@12
+RasPrivilegeAndCallBackNumber@8
diff --git a/lib/libc/mingw/lib32/msacm32.def b/lib/libc/mingw/lib32/msacm32.def
new file mode 100644
index 0000000000..356b3aff1c
--- /dev/null
+++ b/lib/libc/mingw/lib32/msacm32.def
@@ -0,0 +1,46 @@
+LIBRARY MSACM32.DLL
+EXPORTS
+XRegThunkEntry@36
+acmDriverAddA@20
+acmDriverAddW@20
+acmDriverClose@8
+acmDriverDetailsA@12
+acmDriverDetailsW@12
+acmDriverEnum@12
+acmDriverID@12
+acmDriverMessage@16
+acmDriverOpen@12
+acmDriverPriority@12
+acmDriverRemove@8
+acmFilterChooseA@4
+acmFilterChooseW@4
+acmFilterDetailsA@12
+acmFilterDetailsW@12
+acmFilterEnumA@20
+acmFilterEnumW@20
+acmFilterTagDetailsA@12
+acmFilterTagDetailsW@12
+acmFilterTagEnumA@20
+acmFilterTagEnumW@20
+acmFormatChooseA@4
+acmFormatChooseW@4
+acmFormatDetailsA@12
+acmFormatDetailsW@12
+acmFormatEnumA@20
+acmFormatEnumW@20
+acmFormatSuggest@20
+acmFormatTagDetailsA@12
+acmFormatTagDetailsW@12
+acmFormatTagEnumA@20
+acmFormatTagEnumW@20
+acmGetVersion@0
+acmMessage32@24
+acmMetrics@12
+acmStreamClose@8
+acmStreamConvert@12
+acmStreamMessage@16
+acmStreamOpen@32
+acmStreamPrepareHeader@12
+acmStreamReset@8
+acmStreamSize@16
+acmStreamUnprepareHeader@12
diff --git a/lib/libc/mingw/lib32/mscms.def b/lib/libc/mingw/lib32/mscms.def
new file mode 100644
index 0000000000..a69544da7a
--- /dev/null
+++ b/lib/libc/mingw/lib32/mscms.def
@@ -0,0 +1,100 @@
+;
+; Definition file of mscms.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "mscms.dll"
+EXPORTS
+AssociateColorProfileWithDeviceA@12
+AssociateColorProfileWithDeviceW@12
+CheckBitmapBits@36
+CheckColors@20
+CloseColorProfile@4
+ColorCplGetDefaultProfileScope@16
+ColorCplGetDefaultRenderingIntentScope@4
+ColorCplGetProfileProperties@8
+ColorCplHasSystemWideAssociationListChanged@12
+ColorCplInitialize@0
+ColorCplLoadAssociationList@16
+ColorCplMergeAssociationLists@8
+ColorCplOverwritePerUserAssociationList@8
+ColorCplReleaseProfileProperties@4
+ColorCplResetSystemWideAssociationListChangedWarning@8
+ColorCplSaveAssociationList@16
+ColorCplSetUsePerUserProfiles@12
+ColorCplUninitialize@0
+ConvertColorNameToIndex@16
+ConvertIndexToColorName@16
+CreateColorTransformA@16
+CreateColorTransformW@16
+CreateDeviceLinkProfile@28
+CreateMultiProfileTransform@24
+CreateProfileFromLogColorSpaceA@8
+CreateProfileFromLogColorSpaceW@8
+DeleteColorTransform@4
+DeviceRenameEvent@12
+DisassociateColorProfileFromDeviceA@12
+DisassociateColorProfileFromDeviceW@12
+EnumColorProfilesA@20
+EnumColorProfilesW@20
+GenerateCopyFilePaths@36
+GetCMMInfo@8
+GetColorDirectoryA@12
+GetColorDirectoryW@12
+GetColorProfileElement@24
+GetColorProfileElementTag@12
+GetColorProfileFromHandle@12
+GetColorProfileHeader@8
+GetCountColorProfileElements@8
+GetNamedProfileInfo@8
+GetPS2ColorRenderingDictionary@20
+GetPS2ColorRenderingIntent@16
+GetPS2ColorSpaceArray@24
+GetStandardColorSpaceProfileA@16
+GetStandardColorSpaceProfileW@16
+InstallColorProfileA@8
+InstallColorProfileW@8
+InternalGetDeviceConfig@24
+InternalGetPS2CSAFromLCS@16
+InternalGetPS2ColorRenderingDictionary@20
+InternalGetPS2ColorSpaceArray@24
+InternalGetPS2PreviewCRD@24
+InternalSetDeviceConfig@24
+IsColorProfileTagPresent@12
+IsColorProfileValid@8
+OpenColorProfileA@16
+OpenColorProfileW@16
+RegisterCMMA@12
+RegisterCMMW@12
+SelectCMM@4
+SetColorProfileElement@20
+SetColorProfileElementReference@12
+SetColorProfileElementSize@12
+SetColorProfileHeader@8
+SetStandardColorSpaceProfileA@12
+SetStandardColorSpaceProfileW@12
+SpoolerCopyFileEvent@12
+TranslateBitmapBits@44
+TranslateColors@24
+UninstallColorProfileA@12
+UninstallColorProfileW@12
+UnregisterCMMA@8
+UnregisterCMMW@8
+WcsAssociateColorProfileWithDevice@12
+WcsCheckColors@28
+WcsCreateIccProfile@8
+WcsDisassociateColorProfileFromDevice@12
+WcsEnumColorProfiles@20
+WcsEnumColorProfilesSize@12
+WcsGetDefaultColorProfile@28
+WcsGetDefaultColorProfileSize@24
+WcsGetDefaultRenderingIntent@8
+WcsGetUsePerUserProfiles@12
+WcsGpCanInstallOrUninstallProfiles@4
+WcsGpCanModifyDeviceAssociationList@12
+WcsOpenColorProfileA@28
+WcsOpenColorProfileW@28
+WcsSetDefaultColorProfile@24
+WcsSetDefaultRenderingIntent@8
+WcsSetUsePerUserProfiles@12
+WcsTranslateColors@40
diff --git a/lib/libc/mingw/lib32/msctfmonitor.def b/lib/libc/mingw/lib32/msctfmonitor.def
new file mode 100644
index 0000000000..bb6edb4996
--- /dev/null
+++ b/lib/libc/mingw/lib32/msctfmonitor.def
@@ -0,0 +1,89 @@
+;
+; Definition file of MSCTF.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "MSCTF.dll"
+EXPORTS
+TF_GetLangDescriptionFromHKL@12
+TF_GetLangIcon@12
+TF_GetLangIconFromHKL@4
+TF_RunInputCPL@0
+CtfImeAssociateFocus@12
+CtfImeConfigure@16
+CtfImeConversionList@20
+CtfImeCreateInputContext@4
+CtfImeCreateThreadMgr@8
+CtfImeDestroy@4
+CtfImeDestroyInputContext@4
+CtfImeDestroyThreadMgr@0
+CtfImeDispatchDefImeMessage@16
+CtfImeEnumRegisterWord@20
+CtfImeEscape@12
+CtfImeEscapeEx@16
+CtfImeGetGuidAtom@12
+CtfImeGetRegisterWordStyle@8
+CtfImeInquire@12
+CtfImeInquireExW@16
+CtfImeIsGuidMapEnable@4
+CtfImeIsIME@4
+CtfImeProcessCicHotkey@12
+CtfImeProcessKey@16
+CtfImeRegisterWord@12
+CtfImeSelect@8
+CtfImeSelectEx@12
+CtfImeSetActiveContext@8
+CtfImeSetCompositionString@24
+CtfImeSetFocus@8
+CtfImeToAsciiEx@24
+CtfImeUnregisterWord@12
+CtfNotifyIME@16
+DllCanUnloadNow@0
+DllGetClassObject@12
+DllRegisterServer@0
+DllUnregisterServer@0
+SetInputScope@8
+SetInputScopeXML@8
+SetInputScopes2@24
+SetInputScopes@28
+TF_AttachThreadInput@8
+TF_CUASAppFix@4
+TF_CanUninitialize@0
+TF_CheckThreadInputIdle@8
+TF_CleanUpPrivateMessages@4
+TF_ClearLangBarAddIns@4
+TF_CreateCategoryMgr@4
+TF_CreateCicLoadMutex@4
+TF_CreateCicLoadWinStaMutex@0
+TF_CreateDisplayAttributeMgr@4
+TF_CreateInputProcessorProfiles@4
+TF_CreateLangBarItemMgr@4
+TF_CreateLangBarMgr@4
+TF_CreateThreadMgr@4
+TF_DllDetachInOther@0
+TF_GetAppCompatFlags@0
+TF_GetCompatibleKeyboardLayout@4
+TF_GetGlobalCompartment@4
+TF_GetInitSystemFlags@0
+TF_GetInputScope@8
+TF_GetShowFloatingStatus@4
+TF_GetThreadFlags@16
+TF_GetThreadMgr@4
+TF_InitSystem@4
+TF_InvalidAssemblyListCache@0
+TF_InvalidAssemblyListCacheIfExist@0
+TF_IsCtfmonRunning@0
+TF_IsFullScreenWindowActivated@0
+TF_IsThreadWithFlags@4
+TF_MapCompatibleHKL@12
+TF_MapCompatibleKeyboardTip@12
+TF_Notify@12
+TF_PostAllThreadMsg@8
+TF_RegisterLangBarAddIn@12
+TF_SendLangBandMsg@8
+TF_SetDefaultRemoteKeyboardLayout@8
+TF_SetShowFloatingStatus@8
+TF_SetThreadFlags@8
+TF_UninitSystem@0
+TF_UnregisterLangBarAddIn@8
+TF_WaitForInitialized@4
diff --git a/lib/libc/mingw/lib32/msdmo.def b/lib/libc/mingw/lib32/msdmo.def
new file mode 100644
index 0000000000..25d505db78
--- /dev/null
+++ b/lib/libc/mingw/lib32/msdmo.def
@@ -0,0 +1,17 @@
+LIBRARY msdmo.dll
+EXPORTS
+DMOEnum@28
+DMOGetName@8
+DMOGetTypes@28
+DMOGuidToStrA@8
+DMOGuidToStrW@8
+DMORegister@32
+DMOStrToGuidA@8
+DMOStrToGuidW@8
+DMOUnregister@8
+MoCopyMediaType@8
+MoCreateMediaType@8
+MoDeleteMediaType@4
+MoDuplicateMediaType@8
+MoFreeMediaType@4
+MoInitMediaType@8
diff --git a/lib/libc/mingw/lib32/msdrm.def b/lib/libc/mingw/lib32/msdrm.def
new file mode 100644
index 0000000000..0181e58e7a
--- /dev/null
+++ b/lib/libc/mingw/lib32/msdrm.def
@@ -0,0 +1,95 @@
+;
+; Definition file of msdrm.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "msdrm.dll"
+EXPORTS
+DRMAcquireAdvisories@16
+DRMAcquireIssuanceLicenseTemplate@28
+DRMAcquireLicense@28
+DRMActivate@24
+DRMAddLicense@12
+DRMAddRightWithUser@12
+DRMAttest@20
+DRMCheckSecurity@8
+DRMClearAllRights@4
+DRMCloseEnvironmentHandle@4
+DRMCloseHandle@4
+DRMClosePubHandle@4
+DRMCloseQueryHandle@4
+DRMCloseSession@4
+DRMConstructCertificateChain@16
+DRMCreateBoundLicense@20
+DRMCreateClientSession@20
+DRMCreateEnablingBitsDecryptor@20
+DRMCreateEnablingBitsEncryptor@20
+DRMCreateEnablingPrincipal@24
+DRMCreateIssuanceLicense@32
+DRMCreateLicenseStorageSession@24
+DRMCreateRight@28
+DRMCreateUser@16
+DRMDecode@16
+DRMDeconstructCertificateChain@16
+DRMDecrypt@24
+DRMDeleteLicense@8
+DRMDuplicateEnvironmentHandle@8
+DRMDuplicateHandle@8
+DRMDuplicatePubHandle@8
+DRMDuplicateSession@8
+DRMEncode@20
+DRMEncrypt@24
+DRMEnumerateLicense@24
+DRMGetApplicationSpecificData@24
+DRMGetBoundLicenseAttribute@24
+DRMGetBoundLicenseAttributeCount@12
+DRMGetBoundLicenseObject@16
+DRMGetBoundLicenseObjectCount@12
+DRMGetCertificateChainCount@8
+DRMGetClientVersion@4
+DRMGetEnvironmentInfo@20
+DRMGetInfo@20
+DRMGetIntervalTime@8
+DRMGetIssuanceLicenseInfo@40
+DRMGetIssuanceLicenseTemplate@12
+DRMGetMetaData@52
+DRMGetNameAndDescription@28
+DRMGetOwnerLicense@12
+DRMGetProcAddress@12
+DRMGetRevocationPoint@48
+DRMGetRightExtendedInfo@24
+DRMGetRightInfo@20
+DRMGetSecurityProvider@20
+DRMGetServiceLocation@24
+DRMGetSignedIssuanceLicense@40
+DRMGetTime@12
+DRMGetUnboundLicenseAttribute@24
+DRMGetUnboundLicenseAttributeCount@12
+DRMGetUnboundLicenseObject@16
+DRMGetUnboundLicenseObjectCount@12
+DRMGetUsagePolicy@64
+DRMGetUserInfo@28
+DRMGetUserRights@16
+DRMGetUsers@12
+DRMInitEnvironment@28
+DRMIsActivated@12
+DRMIsWindowProtected@8
+DRMLoadLibrary@20
+DRMParseUnboundLicense@8
+DRMRegisterContent@4
+DRMRegisterProtectedWindow@8
+DRMRegisterRevocationList@8
+DRMRepair@0
+DRMSetApplicationSpecificData@16
+DRMSetGlobalOptions@12
+DRMSetIntervalTime@8
+DRMSetMetaData@28
+DRMSetNameAndDescription@20
+DRMSetRevocationPoint@32
+DRMSetUsagePolicy@44
+DRMVerify@32
+DllCanUnloadNow@0
+DllGetClassObject@12
+DllRegisterServer@0
+DllUnregisterServer@0
+__AddMachineCertToLicenseStore@12
diff --git a/lib/libc/mingw/lib32/msi.def b/lib/libc/mingw/lib32/msi.def
new file mode 100644
index 0000000000..32b85953b4
--- /dev/null
+++ b/lib/libc/mingw/lib32/msi.def
@@ -0,0 +1,288 @@
+;
+; Definition file of msi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "msi.dll"
+EXPORTS
+MsiAdvertiseProductA@16
+MsiAdvertiseProductW@16
+MsiCloseAllHandles@0
+MsiCloseHandle@4
+MsiCollectUserInfoA@4
+MsiCollectUserInfoW@4
+MsiConfigureFeatureA@12
+MsiConfigureFeatureFromDescriptorA@8
+MsiConfigureFeatureFromDescriptorW@8
+MsiConfigureFeatureW@12
+MsiConfigureProductA@12
+MsiConfigureProductW@12
+MsiCreateRecord@4
+MsiDatabaseApplyTransformA@12
+MsiDatabaseApplyTransformW@12
+MsiDatabaseCommit@4
+MsiDatabaseExportA@16
+MsiDatabaseExportW@16
+MsiDatabaseGenerateTransformA@20
+MsiDatabaseGenerateTransformW@20
+MsiDatabaseGetPrimaryKeysA@12
+MsiDatabaseGetPrimaryKeysW@12
+MsiDatabaseImportA@12
+MsiDatabaseImportW@12
+MsiDatabaseMergeA@12
+MsiDatabaseMergeW@12
+MsiDatabaseOpenViewA@12
+MsiDatabaseOpenViewW@12
+MsiDoActionA@8
+MsiDoActionW@8
+MsiEnableUIPreview@8
+MsiEnumClientsA@12
+MsiEnumClientsW@12
+MsiEnumComponentQualifiersA@24
+MsiEnumComponentQualifiersW@24
+MsiEnumComponentsA@8
+MsiEnumComponentsW@8
+MsiEnumFeaturesA@16
+MsiEnumFeaturesW@16
+MsiEnumProductsA@8
+MsiEnumProductsW@8
+MsiEvaluateConditionA@8
+MsiEvaluateConditionW@8
+MsiGetLastErrorRecord@0
+MsiGetActiveDatabase@4
+MsiGetComponentStateA@16
+MsiGetComponentStateW@16
+MsiGetDatabaseState@4
+MsiGetFeatureCostA@20
+MsiGetFeatureCostW@20
+MsiGetFeatureInfoA@28
+MsiGetFeatureInfoW@28
+MsiGetFeatureStateA@16
+MsiGetFeatureStateW@16
+MsiGetFeatureUsageA@16
+MsiGetFeatureUsageW@16
+MsiGetFeatureValidStatesA@12
+MsiGetFeatureValidStatesW@12
+MsiGetLanguage@4
+MsiGetMode@8
+MsiGetProductCodeA@8
+MsiGetProductCodeW@8
+MsiGetProductInfoA@16
+MsiGetProductInfoFromScriptA@32
+MsiGetProductInfoFromScriptW@32
+MsiGetProductInfoW@16
+MsiGetProductPropertyA@16
+MsiGetProductPropertyW@16
+MsiGetPropertyA@16
+MsiGetPropertyW@16
+MsiGetSourcePathA@16
+MsiGetSourcePathW@16
+MsiGetSummaryInformationA@16
+MsiGetSummaryInformationW@16
+MsiGetTargetPathA@16
+MsiGetTargetPathW@16
+MsiGetUserInfoA@28
+MsiGetUserInfoW@28
+MsiInstallMissingComponentA@12
+MsiInstallMissingComponentW@12
+MsiInstallMissingFileA@8
+MsiInstallMissingFileW@8
+MsiInstallProductA@8
+MsiInstallProductW@8
+MsiLocateComponentA@12
+MsiLocateComponentW@12
+MsiOpenDatabaseA@12
+MsiOpenDatabaseW@12
+MsiOpenPackageA@8
+MsiOpenPackageW@8
+MsiOpenProductA@8
+MsiOpenProductW@8
+MsiPreviewBillboardA@12
+MsiPreviewBillboardW@12
+MsiPreviewDialogA@8
+MsiPreviewDialogW@8
+MsiProcessAdvertiseScriptA@20
+MsiProcessAdvertiseScriptW@20
+MsiProcessMessage@12
+MsiProvideComponentA@24
+MsiProvideComponentFromDescriptorA@16
+MsiProvideComponentFromDescriptorW@16
+MsiProvideComponentW@24
+MsiProvideQualifiedComponentA@20
+MsiProvideQualifiedComponentW@20
+MsiQueryFeatureStateA@8
+MsiQueryFeatureStateW@8
+MsiQueryProductStateA@4
+MsiQueryProductStateW@4
+MsiRecordDataSize@8
+MsiRecordGetFieldCount@4
+MsiRecordGetInteger@8
+MsiRecordGetStringA@16
+MsiRecordGetStringW@16
+MsiRecordIsNull@8
+MsiRecordReadStream@16
+MsiRecordSetInteger@12
+MsiRecordSetStreamA@12
+MsiRecordSetStreamW@12
+MsiRecordSetStringA@12
+MsiRecordSetStringW@12
+MsiReinstallFeatureA@12
+MsiReinstallFeatureFromDescriptorA@8
+MsiReinstallFeatureFromDescriptorW@8
+MsiReinstallFeatureW@12
+MsiReinstallProductA@8
+MsiReinstallProductW@8
+MsiSequenceA@12
+MsiSequenceW@12
+MsiSetComponentStateA@12
+MsiSetComponentStateW@12
+MsiSetExternalUIA@12
+MsiSetExternalUIW@12
+MsiSetFeatureStateA@12
+MsiSetFeatureStateW@12
+MsiSetInstallLevel@8
+MsiSetInternalUI@8
+MsiVerifyDiskSpace@4
+MsiSetMode@12
+MsiSetPropertyA@12
+MsiSetPropertyW@12
+MsiSetTargetPathA@12
+MsiSetTargetPathW@12
+MsiSummaryInfoGetPropertyA@28
+MsiSummaryInfoGetPropertyCount@8
+MsiSummaryInfoGetPropertyW@28
+MsiSummaryInfoPersist@4
+MsiSummaryInfoSetPropertyA@24
+MsiSummaryInfoSetPropertyW@24
+MsiUseFeatureA@8
+MsiUseFeatureW@8
+MsiVerifyPackageA@4
+MsiVerifyPackageW@4
+MsiViewClose@4
+MsiViewExecute@8
+MsiViewFetch@8
+MsiViewGetErrorA@12
+MsiViewGetErrorW@12
+MsiViewModify@12
+MsiDatabaseIsTablePersistentA@8
+MsiDatabaseIsTablePersistentW@8
+MsiViewGetColumnInfo@12
+MsiRecordClearData@4
+MsiEnableLogA@12
+MsiEnableLogW@12
+MsiFormatRecordA@16
+MsiFormatRecordW@16
+MsiGetComponentPathA@16
+MsiGetComponentPathW@16
+MsiApplyPatchA@16
+MsiApplyPatchW@16
+MsiAdvertiseScriptA@16
+MsiAdvertiseScriptW@16
+MsiGetPatchInfoA@16
+MsiGetPatchInfoW@16
+MsiEnumPatchesA@20
+MsiEnumPatchesW@20
+DllGetVersion@4
+MsiGetProductCodeFromPackageCodeA@8
+MsiGetProductCodeFromPackageCodeW@8
+MsiCreateTransformSummaryInfoA@20
+MsiCreateTransformSummaryInfoW@20
+MsiQueryFeatureStateFromDescriptorA@4
+MsiQueryFeatureStateFromDescriptorW@4
+MsiConfigureProductExA@16
+MsiConfigureProductExW@16
+;MsiInvalidateFeatureCache
+MsiUseFeatureExA@16
+MsiUseFeatureExW@16
+MsiGetFileVersionA@20
+MsiGetFileVersionW@20
+MsiLoadStringA@20
+MsiLoadStringW@20
+MsiMessageBoxA@24
+MsiMessageBoxW@24
+MsiDecomposeDescriptorA@20
+MsiDecomposeDescriptorW@20
+MsiProvideQualifiedComponentExA@32
+MsiProvideQualifiedComponentExW@32
+MsiEnumRelatedProductsA@16
+MsiEnumRelatedProductsW@16
+MsiSetFeatureAttributesA@12
+MsiSetFeatureAttributesW@12
+MsiSourceListClearAllA@12
+MsiSourceListClearAllW@12
+MsiSourceListAddSourceA@16
+MsiSourceListAddSourceW@16
+MsiSourceListForceResolutionA@12
+MsiSourceListForceResolutionW@12
+MsiIsProductElevatedA@8
+MsiIsProductElevatedW@8
+MsiGetShortcutTargetA@16
+MsiGetShortcutTargetW@16
+MsiGetFileHashA@12
+MsiGetFileHashW@12
+MsiEnumComponentCostsA@32
+MsiEnumComponentCostsW@32
+MsiCreateAndVerifyInstallerDirectory@4
+MsiGetFileSignatureInformationA@20
+MsiGetFileSignatureInformationW@20
+MsiProvideAssemblyA@24
+MsiProvideAssemblyW@24
+MsiAdvertiseProductExA@24
+MsiAdvertiseProductExW@24
+MsiNotifySidChangeA@8
+MsiNotifySidChangeW@8
+MsiOpenPackageExA@12
+MsiOpenPackageExW@12
+MsiDeleteUserDataA@12
+MsiDeleteUserDataW@12
+Migrate10CachedPackagesA@16
+Migrate10CachedPackagesW@16
+MsiRemovePatchesA@16
+MsiRemovePatchesW@16
+MsiApplyMultiplePatchesA@12
+MsiApplyMultiplePatchesW@12
+MsiExtractPatchXMLDataA@16
+MsiExtractPatchXMLDataW@16
+MsiGetPatchInfoExA@28
+MsiGetPatchInfoExW@28
+MsiEnumProductsExA@32
+MsiEnumProductsExW@32
+MsiGetProductInfoExA@24
+MsiGetProductInfoExW@24
+MsiQueryComponentStateA@20
+MsiQueryComponentStateW@20
+MsiQueryFeatureStateExA@20
+MsiQueryFeatureStateExW@20
+MsiDeterminePatchSequenceA@20
+MsiDeterminePatchSequenceW@20
+MsiSourceListAddSourceExA@24
+MsiSourceListAddSourceExW@24
+MsiSourceListClearSourceA@20
+MsiSourceListClearSourceW@20
+MsiSourceListClearAllExA@16
+MsiSourceListClearAllExW@16
+MsiSourceListForceResolutionExA@16
+MsiSourceListForceResolutionExW@16
+MsiSourceListEnumSourcesA@28
+MsiSourceListEnumSourcesW@28
+MsiSourceListGetInfoA@28
+MsiSourceListGetInfoW@28
+MsiSourceListSetInfoA@24
+MsiSourceListSetInfoW@24
+MsiEnumPatchesExA@40
+MsiEnumPatchesExW@40
+MsiSourceListEnumMediaDisksA@40
+MsiSourceListEnumMediaDisksW@40
+MsiSourceListAddMediaDiskA@28
+MsiSourceListAddMediaDiskW@28
+MsiSourceListClearMediaDiskA@20
+MsiSourceListClearMediaDiskW@20
+MsiDetermineApplicablePatchesA@12
+MsiDetermineApplicablePatchesW@12
+MsiMessageBoxExA@28
+MsiMessageBoxExW@28
+MsiSetExternalUIRecord@16
+;DllCanUnloadNow
+;DllGetClassObject@12
+;DllRegisterServer
+;DllUnregisterServer
diff --git a/lib/libc/mingw/lib32/msimg32.def b/lib/libc/mingw/lib32/msimg32.def
new file mode 100644
index 0000000000..4f722a15be
--- /dev/null
+++ b/lib/libc/mingw/lib32/msimg32.def
@@ -0,0 +1,5 @@
+LIBRARY MSIMG32.DLL
+EXPORTS
+AlphaBlend@44
+GradientFill@24
+TransparentBlt@44
diff --git a/lib/libc/mingw/lib32/mstask.def b/lib/libc/mingw/lib32/mstask.def
new file mode 100644
index 0000000000..2cc5298e78
--- /dev/null
+++ b/lib/libc/mingw/lib32/mstask.def
@@ -0,0 +1,33 @@
+;
+; Definition file of mstask.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "mstask.dll"
+EXPORTS
+ConvertAtJobsToTasks@0
+DllCanUnloadNow@0
+DllGetClassObject@12
+GetNetScheduleAccountInformation@12
+NetrJobAdd@12
+NetrJobDel@12
+NetrJobEnum@20
+NetrJobGetInfo@12
+SAGetAccountInformation@16
+SAGetNSAccountInformation@12
+SASetAccountInformation@20
+SASetNSAccountInformation@12
+SetNetScheduleAccountInformation@12
+_ConvertAtJobsToTasks@0@0
+_DllCanUnloadNow@0@0
+_DllGetClassObject@12@12
+_GetNetScheduleAccountInformation@12@12
+_NetrJobAdd@12@12
+_NetrJobDel@12@12
+_NetrJobEnum@20@20
+_NetrJobGetInfo@12@12
+_SAGetAccountInformation@16@16
+_SAGetNSAccountInformation@12@12
+_SASetAccountInformation@20@20
+_SASetNSAccountInformation@12@12
+_SetNetScheduleAccountInformation@12@12
diff --git a/lib/libc/mingw/lib32/msvfw32.def b/lib/libc/mingw/lib32/msvfw32.def
new file mode 100644
index 0000000000..7428c6e354
--- /dev/null
+++ b/lib/libc/mingw/lib32/msvfw32.def
@@ -0,0 +1,49 @@
+LIBRARY MSVFW32.DLL
+EXPORTS
+VideoForWindowsVersion@0
+StretchDIB@48
+MCIWndRegisterClass
+MCIWndCreateW
+MCIWndCreateA
+MCIWndCreate
+ICSeqCompressFrameStart@8
+ICSeqCompressFrameEnd@4
+ICSeqCompressFrame@20
+ICSendMessage@16
+ICRemove@12
+ICOpenFunction@16
+ICOpen@12
+ICMThunk32@20
+ICLocate@20
+ICInstall@20
+ICInfo@12
+ICImageDecompress@20
+ICImageCompress@28
+ICGetInfo@12
+ICGetDisplayFormat@24
+ICDrawBegin
+ICDraw
+ICDecompress
+ICCompressorFree@4
+ICCompressorChoose@24
+ICCompress
+ICClose@4
+GetSaveFileNamePreviewW@4
+GetSaveFileNamePreviewA@4
+GetOpenFileNamePreviewW@4
+GetOpenFileNamePreviewA@4
+GetOpenFileNamePreview@4
+DrawDibTime@8
+DrawDibStop@4
+DrawDibStart@8
+DrawDibSetPalette@8
+DrawDibRealize@12
+DrawDibProfileDisplay@4
+DrawDibOpen@0
+DrawDibGetPalette@4
+DrawDibGetBuffer@16
+DrawDibEnd@4
+DrawDibDraw@52
+DrawDibClose@4
+DrawDibChangePalette@16
+DrawDibBegin@32
diff --git a/lib/libc/mingw/lib32/ndfapi.def b/lib/libc/mingw/lib32/ndfapi.def
new file mode 100644
index 0000000000..590baca306
--- /dev/null
+++ b/lib/libc/mingw/lib32/ndfapi.def
@@ -0,0 +1,25 @@
+;
+; Definition file of NDFAPI.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "NDFAPI.DLL"
+EXPORTS
+NdfRunDllDiagnoseIncident@16
+NdfRunDllDiagnoseNetConnectionIncident@16
+NdfRunDllDuplicateIPDefendingSystem@16
+NdfRunDllDuplicateIPOffendingSystem@16
+NdfRunDllHelpTopic@16
+DllCanUnloadNow@0
+DllGetClassObject@12
+DllRegisterServer@0
+DllUnregisterServer@0
+NdfCloseIncident@4
+NdfCreateConnectivityIncident@4
+NdfCreateDNSIncident@12
+NdfCreateIncident@16
+NdfCreateSharingIncident@8
+NdfCreateWebIncident@8
+NdfCreateWebIncidentEx@16
+NdfCreateWinSockIncident@24
+NdfExecuteDiagnosis@8
diff --git a/lib/libc/mingw/lib32/netutils.def b/lib/libc/mingw/lib32/netutils.def
new file mode 100644
index 0000000000..a28fcd2f41
--- /dev/null
+++ b/lib/libc/mingw/lib32/netutils.def
@@ -0,0 +1,29 @@
+;
+; Definition file of netutils.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "netutils.dll"
+EXPORTS
+NetApiBufferAllocate@8
+NetApiBufferFree@4
+NetApiBufferReallocate@12
+NetApiBufferSize@8
+NetRemoteComputerSupports@12
+NetapipBufferAllocate@8
+NetpIsComputerNameValid@4
+NetpIsDomainNameValid@4
+NetpIsGroupNameValid@4
+NetpIsRemote@20
+NetpIsRemoteNameValid@4
+NetpIsShareNameValid@4
+NetpIsUncComputerNameValid@4
+NetpIsUserNameValid@4
+NetpwListCanonicalize@32
+NetpwListTraverse@12
+NetpwNameCanonicalize@20
+NetpwNameCompare@16
+NetpwNameValidate@12
+NetpwPathCanonicalize@24
+NetpwPathCompare@16
+NetpwPathType@12
diff --git a/lib/libc/mingw/lib32/newdev.def b/lib/libc/mingw/lib32/newdev.def
new file mode 100644
index 0000000000..d75d69443b
--- /dev/null
+++ b/lib/libc/mingw/lib32/newdev.def
@@ -0,0 +1,6 @@
+LIBRARY newdev.dll
+EXPORTS
+UpdateDriverForPlugAndPlayDevicesA
+UpdateDriverForPlugAndPlayDevicesW
+UpdateDriverForPlugAndPlayDevicesA@20==UpdateDriverForPlugAndPlayDevicesA
+UpdateDriverForPlugAndPlayDevicesW@20==UpdateDriverForPlugAndPlayDevicesW
diff --git a/lib/libc/mingw/lib32/normaliz.def b/lib/libc/mingw/lib32/normaliz.def
new file mode 100644
index 0000000000..731e255577
--- /dev/null
+++ b/lib/libc/mingw/lib32/normaliz.def
@@ -0,0 +1,12 @@
+;
+; Definition file of Normaliz.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "Normaliz.dll"
+EXPORTS
+IdnToAscii@20
+IdnToNameprepUnicode@20
+IdnToUnicode@20
+IsNormalizedString@12
+NormalizeString@20
diff --git a/lib/libc/mingw/lib32/ntdsapi.def b/lib/libc/mingw/lib32/ntdsapi.def
new file mode 100644
index 0000000000..eb4e7b5ff2
--- /dev/null
+++ b/lib/libc/mingw/lib32/ntdsapi.def
@@ -0,0 +1,119 @@
+;
+; Definition file of NTDSAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "NTDSAPI.dll"
+EXPORTS
+DsAddSidHistoryA@32
+DsAddSidHistoryW@32
+DsBindA@12
+DsBindByInstanceA@32
+DsBindByInstanceW@32
+DsBindToISTGA@8
+DsBindToISTGW@8
+DsBindW@12
+DsBindWithCredA@16
+DsBindWithCredW@16
+DsBindWithSpnA@20
+DsBindWithSpnExA@24
+DsBindWithSpnExW@24
+DsBindWithSpnW@20
+DsBindingSetTimeout@8
+DsClientMakeSpnForTargetServerA@16
+DsClientMakeSpnForTargetServerW@16
+DsCrackNamesA@28
+DsCrackNamesW@28
+DsCrackSpn2A@36
+DsCrackSpn2W@36
+DsCrackSpn3W@44
+DsCrackSpnA@32
+DsCrackSpnW@32
+DsCrackUnquotedMangledRdnA@16
+DsCrackUnquotedMangledRdnW@16
+DsFinishDemotionW@20
+DsFreeDomainControllerInfoA@12
+DsFreeDomainControllerInfoW@12
+DsFreeNameResultA@4
+DsFreeNameResultW@4
+DsFreePasswordCredentials@4
+DsFreeSchemaGuidMapA@4
+DsFreeSchemaGuidMapW@4
+DsFreeSpnArrayA@8
+DsFreeSpnArrayW@8
+DsGetBindAddrW@4
+DsGetBindAnnotW@4
+DsGetBindInstGuid@4
+DsGetDomainControllerInfoA@20
+DsGetDomainControllerInfoW@20
+DsGetRdnW@24
+DsGetSpnA@36
+DsGetSpnW@36
+DsInheritSecurityIdentityA@16
+DsInheritSecurityIdentityW@16
+DsInitDemotionW@4
+DsIsMangledDnA@8
+DsIsMangledDnW@8
+DsIsMangledRdnValueA@12
+DsIsMangledRdnValueW@12
+DsListDomainsInSiteA@12
+DsListDomainsInSiteW@12
+DsListInfoForServerA@12
+DsListInfoForServerW@12
+DsListRolesA@8
+DsListRolesW@8
+DsListServersForDomainInSiteA@16
+DsListServersForDomainInSiteW@16
+DsListServersInSiteA@12
+DsListServersInSiteW@12
+DsListSitesA@8
+DsListSitesW@8
+DsLogEntry@0
+DsMakePasswordCredentialsA@16
+DsMakePasswordCredentialsW@16
+DsMakeSpnA@28
+DsMakeSpnW@28
+DsMapSchemaGuidsA@16
+DsMapSchemaGuidsW@16
+DsQuerySitesByCostA@24
+DsQuerySitesByCostW@24
+DsQuerySitesFree@4
+DsQuoteRdnValueA@16
+DsQuoteRdnValueW@16
+DsRemoveDsDomainA@8
+DsRemoveDsDomainW@8
+DsRemoveDsServerA@20
+DsRemoveDsServerW@20
+DsReplicaAddA@28
+DsReplicaAddW@28
+DsReplicaConsistencyCheck@12
+DsReplicaDelA@16
+DsReplicaDelW@16
+DsReplicaDemotionW@16
+DsReplicaFreeInfo@8
+DsReplicaGetInfo2W@36
+DsReplicaGetInfoW@20
+DsReplicaModifyA@36
+DsReplicaModifyW@36
+DsReplicaSyncA@16
+DsReplicaSyncAllA@24
+DsReplicaSyncAllW@24
+DsReplicaSyncW@16
+DsReplicaUpdateRefsA@20
+DsReplicaUpdateRefsW@20
+DsReplicaVerifyObjectsA@16
+DsReplicaVerifyObjectsW@16
+DsServerRegisterSpnA@12
+DsServerRegisterSpnW@12
+DsUnBindA@4
+DsUnBindW@4
+DsUnquoteRdnValueA@16
+DsUnquoteRdnValueW@16
+DsWriteAccountSpnA@20
+DsWriteAccountSpnW@20
+DsaopBind@20
+DsaopBindWithCred@24
+DsaopBindWithSpn@28
+DsaopExecuteScript@24
+DsaopPrepareScript@16
+DsaopUnBind@4
diff --git a/lib/libc/mingw/lib32/oleacc.def b/lib/libc/mingw/lib32/oleacc.def
new file mode 100644
index 0000000000..e369523baf
--- /dev/null
+++ b/lib/libc/mingw/lib32/oleacc.def
@@ -0,0 +1,31 @@
+;
+; Definition file of OLEACC.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "OLEACC.dll"
+EXPORTS
+DllRegisterServer@0
+DllUnregisterServer@0
+AccessibleChildren@20
+AccessibleObjectFromEvent@20
+AccessibleObjectFromPoint@16
+AccessibleObjectFromWindow@16
+CreateStdAccessibleObject@16
+CreateStdAccessibleProxyA@20
+CreateStdAccessibleProxyW@20
+DllCanUnloadNow@0
+DllGetClassObject@12
+GetOleaccVersionInfo@8
+GetProcessHandleFromHwnd@4
+GetRoleTextA@12
+GetRoleTextW@12
+GetStateTextA@12
+GetStateTextW@12
+;IID_IAccessible DATA
+;IID_IAccessibleHandler DATA
+;LIBID_Accessibility DATA
+LresultFromObject@12
+ObjectFromLresult@16
+PropMgrClient_LookupProp@28
+WindowFromAccessibleObject@8
diff --git a/lib/libc/mingw/lib32/oledlg.def b/lib/libc/mingw/lib32/oledlg.def
new file mode 100644
index 0000000000..9b4928334c
--- /dev/null
+++ b/lib/libc/mingw/lib32/oledlg.def
@@ -0,0 +1,30 @@
+;
+; Definition file of oledlg.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "oledlg.dll"
+EXPORTS
+OleUIAddVerbMenuA@36
+OleUICanConvertOrActivateAs@12
+OleUIInsertObjectA@4
+OleUIPasteSpecialA@4
+OleUIEditLinksA@4
+OleUIChangeIconA@4
+OleUIConvertA@4
+OleUIBusyA@4
+OleUIUpdateLinksA@16
+OleUIPromptUserA
+OleUIObjectPropertiesA@4
+OleUIChangeSourceA@4
+OleUIAddVerbMenuW@36
+OleUIBusyW@4
+OleUIChangeIconW@4
+OleUIChangeSourceW@4
+OleUIConvertW@4
+OleUIEditLinksW@4
+OleUIInsertObjectW@4
+OleUIObjectPropertiesW@4
+OleUIPasteSpecialW@4
+OleUIPromptUserW
+OleUIUpdateLinksW@16
diff --git a/lib/libc/mingw/lib32/p2p.def b/lib/libc/mingw/lib32/p2p.def
new file mode 100644
index 0000000000..ee8c00b6e7
--- /dev/null
+++ b/lib/libc/mingw/lib32/p2p.def
@@ -0,0 +1,118 @@
+;
+; Definition file of P2P.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "P2P.dll"
+EXPORTS
+DllMain@12
+PeerCollabAddContact@8
+PeerCollabAsyncInviteContact@20
+PeerCollabAsyncInviteEndpoint@16
+PeerCollabCancelInvitation@4
+PeerCollabCloseHandle@4
+PeerCollabDeleteContact@4
+PeerCollabDeleteEndpointData@4
+PeerCollabDeleteObject@4
+PeerCollabEnumApplicationRegistrationInfo@8
+PeerCollabEnumApplications@12
+PeerCollabEnumContacts@4
+PeerCollabEnumEndpoints@8
+PeerCollabEnumObjects@12
+PeerCollabEnumPeopleNearMe@4
+PeerCollabExportContact@8
+PeerCollabGetAppLaunchInfo@4
+PeerCollabGetApplicationRegistrationInfo@12
+PeerCollabGetContact@8
+PeerCollabGetEndpointName@4
+PeerCollabGetEventData@8
+PeerCollabGetInvitationResponse@8
+PeerCollabGetPresenceInfo@8
+PeerCollabGetSigninOptions@4
+PeerCollabInviteContact@16
+PeerCollabInviteEndpoint@12
+PeerCollabParseContact@8
+PeerCollabQueryContactData@8
+PeerCollabRefreshEndpointData@4
+PeerCollabRegisterApplication@8
+PeerCollabRegisterEvent@16
+PeerCollabSetEndpointName@4
+PeerCollabSetObject@4
+PeerCollabSetPresenceInfo@4
+PeerCollabShutdown@0
+PeerCollabSignin@8
+PeerCollabSignout@4
+PeerCollabStartup@4
+PeerCollabSubscribeEndpointData@4
+PeerCollabUnregisterApplication@8
+PeerCollabUnregisterEvent@4
+PeerCollabUnsubscribeEndpointData@4
+PeerCollabUpdateContact@4
+PeerCreatePeerName@12
+PeerEndEnumeration@4
+PeerEnumGroups@8
+PeerEnumIdentities@4
+PeerFreeData@4
+PeerGetItemCount@8
+PeerGetNextItem@12
+PeerGroupAddRecord@12
+PeerGroupClose@4
+PeerGroupCloseDirectConnection@12
+PeerGroupConnect@4
+PeerGroupConnectByAddress@12
+PeerGroupCreate@8
+PeerGroupCreateInvitation@24
+PeerGroupCreatePasswordInvitation@8
+PeerGroupDelete@8
+PeerGroupDeleteRecord@8
+PeerGroupEnumConnections@12
+PeerGroupEnumMembers@16
+PeerGroupEnumRecords@12
+PeerGroupExportConfig@12
+PeerGroupExportDatabase@8
+PeerGroupGetEventData@8
+PeerGroupGetProperties@8
+PeerGroupGetRecord@12
+PeerGroupGetStatus@8
+PeerGroupImportConfig@20
+PeerGroupImportDatabase@8
+PeerGroupIssueCredentials@20
+PeerGroupJoin@16
+PeerGroupOpen@16
+PeerGroupOpenDirectConnection@16
+PeerGroupParseInvitation@8
+PeerGroupPasswordJoin@20
+PeerGroupPeerTimeToUniversalTime@12
+PeerGroupRegisterEvent@20
+PeerGroupSearchRecords@12
+PeerGroupSendData@24
+PeerGroupSetProperties@8
+PeerGroupShutdown@0
+PeerGroupStartup@8
+PeerGroupUniversalTimeToPeerTime@12
+PeerGroupUnregisterEvent@4
+PeerGroupUpdateRecord@8
+PeerHostNameToPeerName@8
+PeerIdentityCreate@16
+PeerIdentityDelete@4
+PeerIdentityExport@12
+PeerIdentityGetCert@12
+PeerIdentityGetCryptKey@8
+PeerIdentityGetDefault@4
+PeerIdentityGetFriendlyName@8
+PeerIdentityGetXML@8
+PeerIdentityImport@12
+PeerIdentitySetFriendlyName@8
+PeerNameToPeerHostName@8
+PeerPnrpEndResolve@4
+PeerPnrpGetCloudInfo@8
+PeerPnrpGetEndpoint@8
+PeerPnrpRegister@12
+PeerPnrpResolve@16
+PeerPnrpShutdown@0
+PeerPnrpStartResolve@20
+PeerPnrpStartup@4
+PeerPnrpUnregister@4
+PeerPnrpUpdateRegistration@8
+PeerSSPAddCredentials@12
+PeerSSPRemoveCredentials@4
diff --git a/lib/libc/mingw/lib32/p2pgraph.def b/lib/libc/mingw/lib32/p2pgraph.def
new file mode 100644
index 0000000000..852a002422
--- /dev/null
+++ b/lib/libc/mingw/lib32/p2pgraph.def
@@ -0,0 +1,45 @@
+;
+; Definition file of P2PGRAPH.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "P2PGRAPH.dll"
+EXPORTS
+pMemoryHelper DATA
+PeerGraphAddRecord@12
+PeerGraphClose@4
+PeerGraphCloseDirectConnection@12
+PeerGraphConnect@16
+PeerGraphCreate@16
+PeerGraphDelete@12
+PeerGraphDeleteRecord@12
+PeerGraphEndEnumeration@4
+PeerGraphEnumConnections@12
+PeerGraphEnumNodes@12
+PeerGraphEnumRecords@16
+PeerGraphExportDatabase@8
+PeerGraphFreeData@4
+PeerGraphGetEventData@8
+PeerGraphGetItemCount@8
+PeerGraphGetNextItem@12
+PeerGraphGetNodeInfo@16
+PeerGraphGetProperties@8
+PeerGraphGetRecord@12
+PeerGraphGetStatus@8
+PeerGraphImportDatabase@8
+PeerGraphListen@16
+PeerGraphOpen@28
+PeerGraphOpenDirectConnection@16
+PeerGraphPeerTimeToUniversalTime@12
+PeerGraphRegisterEvent@20
+PeerGraphSearchRecords@12
+PeerGraphSendData@24
+PeerGraphSetNodeAttributes@8
+PeerGraphSetPresence@8
+PeerGraphSetProperties@8
+PeerGraphShutdown@0
+PeerGraphStartup@8
+PeerGraphUniversalTimeToPeerTime@12
+PeerGraphUnregisterEvent@4
+PeerGraphUpdateRecord@8
+PeerGraphValidateDeferredRecords@12
diff --git a/lib/libc/mingw/lib32/pdh.def b/lib/libc/mingw/lib32/pdh.def
new file mode 100644
index 0000000000..6694af95c5
--- /dev/null
+++ b/lib/libc/mingw/lib32/pdh.def
@@ -0,0 +1,135 @@
+;
+; Definition file of pdh.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "pdh.dll"
+EXPORTS
+PdhAdd009CounterA@16
+PdhAdd009CounterW@16
+PdhAddCounterA@16
+PdhAddCounterW@16
+PdhAddEnglishCounterA@16
+PdhAddEnglishCounterW@16
+PdhAddRelogCounter@28
+PdhBindInputDataSourceA@8
+PdhBindInputDataSourceW@8
+PdhBrowseCountersA@4
+PdhBrowseCountersHA@4
+PdhBrowseCountersHW@4
+PdhBrowseCountersW@4
+PdhCalculateCounterFromRawValue@20
+PdhCloseLog@8
+PdhCloseQuery@4
+PdhCollectQueryData@4
+PdhCollectQueryDataEx@12
+PdhCollectQueryDataWithTime@8
+PdhComputeCounterStatistics@24
+PdhConnectMachineA@4
+PdhConnectMachineW@4
+PdhCreateSQLTablesA@4
+PdhCreateSQLTablesW@4
+PdhEnumLogSetNamesA@12
+PdhEnumLogSetNamesW@12
+PdhEnumMachinesA@12
+PdhEnumMachinesHA@12
+PdhEnumMachinesHW@12
+PdhEnumMachinesW@12
+PdhEnumObjectItemsA@36
+PdhEnumObjectItemsHA@36
+PdhEnumObjectItemsHW@36
+PdhEnumObjectItemsW@36
+PdhEnumObjectsA@24
+PdhEnumObjectsHA@24
+PdhEnumObjectsHW@24
+PdhEnumObjectsW@24
+PdhExpandCounterPathA@12
+PdhExpandCounterPathW@12
+PdhExpandWildCardPathA@20
+PdhExpandWildCardPathHA@20
+PdhExpandWildCardPathHW@20
+PdhExpandWildCardPathW@20
+PdhFormatFromRawValue@24
+PdhGetCounterInfoA@16
+PdhGetCounterInfoW@16
+PdhGetCounterTimeBase@8
+PdhGetDataSourceTimeRangeA@16
+PdhGetDataSourceTimeRangeH@16
+PdhGetDataSourceTimeRangeW@16
+PdhGetDefaultPerfCounterA@20
+PdhGetDefaultPerfCounterHA@20
+PdhGetDefaultPerfCounterHW@20
+PdhGetDefaultPerfCounterW@20
+PdhGetDefaultPerfObjectA@16
+PdhGetDefaultPerfObjectHA@16
+PdhGetDefaultPerfObjectHW@16
+PdhGetDefaultPerfObjectW@16
+PdhGetDllVersion@4
+PdhGetExplainText@12
+PdhGetFormattedCounterArrayA@20
+PdhGetFormattedCounterArrayW@20
+PdhGetFormattedCounterValue@16
+PdhGetLogFileSize@8
+PdhGetLogFileTypeA@8
+PdhGetLogFileTypeW@8
+PdhGetLogSetGUID@12
+PdhGetRawCounterArrayA@16
+PdhGetRawCounterArrayW@16
+PdhGetRawCounterValue@12
+PdhIsRealTimeQuery@4
+PdhListLogFileHeaderA@12
+PdhListLogFileHeaderW@12
+PdhLookupPerfIndexByNameA@12
+PdhLookupPerfIndexByNameW@12
+PdhLookupPerfNameByIndexA@16
+PdhLookupPerfNameByIndexW@16
+PdhMakeCounterPathA@16
+PdhMakeCounterPathW@16
+PdhOpenLogA@28
+PdhOpenLogW@28
+PdhOpenQuery@12
+PdhOpenQueryA@12
+PdhOpenQueryH@12
+PdhOpenQueryW@12
+PdhParseCounterPathA@16
+PdhParseCounterPathW@16
+PdhParseInstanceNameA@24
+PdhParseInstanceNameW@24
+PdhReadRawLogRecord@20
+PdhRelogA@8
+PdhRelogW@8
+PdhRemoveCounter@4
+PdhResetRelogCounterValues@4
+PdhSelectDataSourceA@16
+PdhSelectDataSourceW@16
+PdhSetCounterScaleFactor@8
+PdhSetCounterValue@12
+PdhSetDefaultRealTimeDataSource@4
+PdhSetLogSetRunID@8
+PdhSetQueryTimeRange@8
+PdhTranslate009CounterA@12
+PdhTranslate009CounterW@12
+PdhTranslateLocaleCounterA@12
+PdhTranslateLocaleCounterW@12
+PdhUpdateLogA@8
+PdhUpdateLogFileCatalog@4
+PdhUpdateLogW@8
+PdhValidatePathA@4
+PdhValidatePathExA@8
+PdhValidatePathExW@8
+PdhValidatePathW@4
+PdhVbAddCounter@12
+PdhVbCreateCounterPathList@8
+PdhVbGetCounterPathElements@28
+PdhVbGetCounterPathFromList@12
+PdhVbGetDoubleCounterValue@8
+PdhVbGetLogFileSize@8
+PdhVbGetOneCounterPath@16
+PdhVbIsGoodStatus@4
+PdhVbOpenLog@28
+PdhVbOpenQuery@4
+PdhVbUpdateLog@8
+PdhVerifySQLDBA@4
+PdhVerifySQLDBW@4
+PdhWriteRelogSample@12
+PdhpGetLoggerName@16
diff --git a/lib/libc/mingw/lib32/powrprof.def b/lib/libc/mingw/lib32/powrprof.def
new file mode 100644
index 0000000000..518227f3d0
--- /dev/null
+++ b/lib/libc/mingw/lib32/powrprof.def
@@ -0,0 +1,103 @@
+;
+; Definition file of POWRPROF.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "POWRPROF.dll"
+EXPORTS
+CallNtPowerInformation@20
+CanUserWritePwrScheme@0
+DeletePwrScheme@4
+DevicePowerClose
+DevicePowerEnumDevices@20
+DevicePowerOpen@4
+DevicePowerSetDeviceState@12
+EnumPwrSchemes@8
+GUIDFormatToGlobalPowerPolicy@8
+GUIDFormatToPowerPolicy@8
+GetActivePwrScheme@4
+GetCurrentPowerPolicies@8
+GetPwrCapabilities@4
+GetPwrDiskSpindownRange@8
+IsAdminOverrideActive@4
+IsPwrHibernateAllowed@0
+IsPwrShutdownAllowed@0
+IsPwrSuspendAllowed@0
+LoadCurrentPwrScheme@16
+MergeLegacyPwrScheme@16
+PowerCanRestoreIndividualDefaultPowerScheme@4
+PowerCreatePossibleSetting@16
+PowerCreateSetting@12
+PowerCustomizePlatformPowerSettings@0
+PowerDebugDifPowerPolicies@16
+PowerDebugDifSystemPowerPolicies@16
+PowerDebugDumpPowerPolicy@12
+PowerDebugDumpPowerScheme@12
+PowerDebugDumpSystemPowerCapabilities@12
+PowerDebugDumpSystemPowerPolicy@12
+PowerDeleteScheme@8
+PowerDeterminePlatformRole@0
+PowerDuplicateScheme@12
+PowerEnumerate@28
+PowerGetActiveScheme@8
+PowerImportPowerScheme@12
+PowerInternalDeleteScheme@8
+PowerInternalDuplicateScheme@12
+PowerInternalImportPowerScheme@12
+PowerInternalRestoreDefaultPowerSchemes@0
+PowerInternalRestoreIndividualDefaultPowerScheme@4
+PowerInternalSetActiveScheme@8
+PowerInternalWriteToUserPowerKey@32
+PowerOpenSystemPowerKey@12
+PowerOpenUserPowerKey@12
+PowerPolicyToGUIDFormat@8
+PowerReadACDefaultIndex@20
+PowerReadACValue@28
+PowerReadACValueIndex@20
+PowerReadDCDefaultIndex@20
+PowerReadDCValue@28
+PowerReadDCValueIndex@20
+PowerReadDescription@24
+PowerReadFriendlyName@24
+PowerReadIconResourceSpecifier@24
+PowerReadPossibleDescription@24
+PowerReadPossibleFriendlyName@24
+PowerReadPossibleValue@28
+PowerReadSecurityDescriptor@12
+PowerReadSettingAttributes@8
+PowerReadValueIncrement@16
+PowerReadValueMax@16
+PowerReadValueMin@16
+PowerReadValueUnitsSpecifier@20
+PowerRemovePowerSetting@8
+PowerReplaceDefaultPowerSchemes@0
+PowerRestoreDefaultPowerSchemes@0
+PowerRestoreIndividualDefaultPowerScheme@4
+PowerSetActiveScheme@8
+PowerSettingAccessCheck@8
+PowerWriteACDefaultIndex@20
+PowerWriteACValueIndex@20
+PowerWriteDCDefaultIndex@20
+PowerWriteDCValueIndex@20
+PowerWriteDescription@24
+PowerWriteFriendlyName@24
+PowerWriteIconResourceSpecifier@24
+PowerWritePossibleDescription@24
+PowerWritePossibleFriendlyName@24
+PowerWritePossibleValue@28
+PowerWriteSecurityDescriptor@12
+PowerWriteSettingAttributes@12
+PowerWriteValueIncrement@16
+PowerWriteValueMax@16
+PowerWriteValueMin@16
+PowerWriteValueUnitsSpecifier@20
+ReadGlobalPwrPolicy@4
+ReadProcessorPwrScheme@8
+ReadPwrScheme@8
+SetActivePwrScheme@12
+SetSuspendState@12
+Sysprep_Generalize_Power@0
+ValidatePowerPolicies@8
+WriteGlobalPwrPolicy@4
+WriteProcessorPwrScheme@8
+WritePwrScheme@16
diff --git a/lib/libc/mingw/lib32/prntvpt.def b/lib/libc/mingw/lib32/prntvpt.def
new file mode 100644
index 0000000000..c93f48ea18
--- /dev/null
+++ b/lib/libc/mingw/lib32/prntvpt.def
@@ -0,0 +1,35 @@
+LIBRARY "prntvpt.dll"
+EXPORTS
+PTQuerySchemaVersionSupport@8
+PTOpenProvider@12
+PTOpenProviderEx@20
+PTCloseProvider@4
+BindPTProviderThunk@20
+PTGetPrintCapabilities@16
+PTMergeAndValidatePrintTicket@24
+PTConvertPrintTicketToDevMode@28
+PTConvertDevModeToPrintTicket@20
+PTReleaseMemory@4
+PTGetPrintDeviceCapabilities@16
+PTGetPrintDeviceResources@20
+ConvertDevModeToPrintTicketThunk2@24
+ConvertDevModeToPrintTicketThunk@20
+ConvertPrintTicketToDevModeThunk2@32
+ConvertPrintTicketToDevModeThunk@28
+DllCanUnloadNow@0
+DllGetClassObject@12
+DllMain@12
+DllRegisterServer@0
+DllUnregisterServer@0
+GetDeviceDefaultPrintTicketThunk@12
+GetDeviceNamespacesThunk@12
+GetPrintCapabilitiesThunk2@24
+GetPrintCapabilitiesThunk@20
+GetPrintDeviceCapabilitiesThunk2@24
+GetPrintDeviceCapabilitiesThunk@20
+GetPrintDeviceResourcesThunk2@28
+GetPrintDeviceResourcesThunk@24
+GetSchemaVersionThunk@4
+MergeAndValidatePrintTicketThunk2@36
+MergeAndValidatePrintTicketThunk@28
+UnbindPTProviderThunk@4
diff --git a/lib/libc/mingw/lib32/propsys.def b/lib/libc/mingw/lib32/propsys.def
new file mode 100644
index 0000000000..2f766c8ec7
--- /dev/null
+++ b/lib/libc/mingw/lib32/propsys.def
@@ -0,0 +1,226 @@
+LIBRARY "PROPSYS.dll"
+EXPORTS
+SHGetPropertyStoreForWindow@12
+ClearPropVariantArray@8
+ClearVariantArray@8
+DllCanUnloadNow@0
+DllGetClassObject@12
+DllRegisterServer@0
+DllUnregisterServer@0
+GetProxyDllInfo@8
+InitPropVariantFromBooleanVector@12
+InitPropVariantFromBuffer@12
+InitPropVariantFromCLSID@8
+InitPropVariantFromDoubleVector@12
+InitPropVariantFromFileTime@8
+InitPropVariantFromFileTimeVector@12
+InitPropVariantFromGUIDAsString@8
+InitPropVariantFromInt16Vector@12
+InitPropVariantFromInt32Vector@12
+InitPropVariantFromInt64Vector@12
+InitPropVariantFromPropVariantVectorElem@12
+InitPropVariantFromResource@12
+InitPropVariantFromStrRet@12
+InitPropVariantFromStringAsVector@8
+InitPropVariantFromStringVector@12
+InitPropVariantFromUInt16Vector@12
+InitPropVariantFromUInt32Vector@12
+InitPropVariantFromUInt64Vector@12
+InitPropVariantVectorFromPropVariant@8
+InitVariantFromBooleanArray@12
+InitVariantFromBuffer@12
+InitVariantFromDoubleArray@12
+InitVariantFromFileTime@8
+InitVariantFromFileTimeArray@12
+InitVariantFromGUIDAsString@8
+InitVariantFromInt16Array@12
+InitVariantFromInt32Array@12
+InitVariantFromInt64Array@12
+InitVariantFromResource@12
+InitVariantFromStrRet@12
+InitVariantFromStringArray@12
+InitVariantFromUInt16Array@12
+InitVariantFromUInt32Array@12
+InitVariantFromUInt64Array@12
+InitVariantFromVariantArrayElem@12
+PSCoerceToCanonicalValue@8
+PSCreateAdapterFromPropertyStore@12
+PSCreateDelayedMultiplexPropertyStore@24
+PSCreateMemoryPropertyStore@8
+PSCreateMultiplexPropertyStore@16
+PSCreatePropertyChangeArray@24
+PSCreatePropertyStoreFromObject@16
+PSCreatePropertyStoreFromPropertySetStorage@16
+PSCreateSimplePropertyChange@20
+PSEnumeratePropertyDescriptions@12
+PSFormatForDisplay@20
+PSFormatForDisplayAlloc@16
+PSFormatPropertyValue@16
+PSGetImageReferenceForValue@12
+PSGetItemPropertyHandler@16
+PSGetItemPropertyHandlerWithCreateObject@20
+PSGetNameFromPropertyKey@8
+PSGetNamedPropertyFromPropertyStorage@16
+PSGetPropertyDescription@12
+PSGetPropertyDescriptionByName@12
+PSGetPropertyDescriptionListFromString@12
+PSGetPropertyFromPropertyStorage@16
+PSGetPropertyKeyFromName@8
+PSGetPropertySystem@8
+PSGetPropertyValue@12
+PSLookupPropertyHandlerCLSID@8
+PSPropertyBag_Delete@8
+PSPropertyBag_ReadBOOL@12
+PSPropertyBag_ReadBSTR@12
+PSPropertyBag_ReadDWORD@12
+PSPropertyBag_ReadGUID@12
+PSPropertyBag_ReadInt@12
+PSPropertyBag_ReadLONG@12
+PSPropertyBag_ReadPOINTL@12
+PSPropertyBag_ReadPOINTS@12
+PSPropertyBag_ReadPropertyKey@12
+PSPropertyBag_ReadRECTL@12
+PSPropertyBag_ReadSHORT@12
+PSPropertyBag_ReadStr@16
+PSPropertyBag_ReadStrAlloc@12
+PSPropertyBag_ReadStream@12
+PSPropertyBag_ReadType@16
+PSPropertyBag_ReadULONGLONG@12
+PSPropertyBag_ReadUnknown@16
+PSPropertyBag_WriteBOOL@12
+PSPropertyBag_WriteBSTR@12
+PSPropertyBag_WriteDWORD@12
+PSPropertyBag_WriteGUID@12
+PSPropertyBag_WriteInt@12
+PSPropertyBag_WriteLONG@12
+PSPropertyBag_WritePOINTL@12
+PSPropertyBag_WritePOINTS@12
+PSPropertyBag_WritePropertyKey@12
+PSPropertyBag_WriteRECTL@12
+PSPropertyBag_WriteSHORT@12
+PSPropertyBag_WriteStr@12
+PSPropertyBag_WriteStream@12
+PSPropertyBag_WriteULONGLONG@16
+PSPropertyBag_WriteUnknown@12
+PSPropertyKeyFromString@8
+PSRefreshPropertySchema@0
+PSRegisterPropertySchema@4
+PSSetPropertyValue@12
+PSStringFromPropertyKey@12
+PSUnregisterPropertySchema@4
+PropVariantChangeType@16
+PropVariantCompareEx@16
+PropVariantGetBooleanElem@12
+PropVariantGetDoubleElem@12
+PropVariantGetElementCount@4
+PropVariantGetFileTimeElem@12
+PropVariantGetInt16Elem@12
+PropVariantGetInt32Elem@12
+PropVariantGetInt64Elem@12
+PropVariantGetStringElem@12
+PropVariantGetUInt16Elem@12
+PropVariantGetUInt32Elem@12
+PropVariantGetUInt64Elem@12
+PropVariantToBSTR@8
+PropVariantToBoolean@8
+PropVariantToBooleanVector@16
+PropVariantToBooleanVectorAlloc@12
+PropVariantToBooleanWithDefault@8
+PropVariantToBuffer@12
+PropVariantToDouble@8
+PropVariantToDoubleVector@16
+PropVariantToDoubleVectorAlloc@12
+PropVariantToDoubleWithDefault@12
+PropVariantToFileTime@12
+PropVariantToFileTimeVector@16
+PropVariantToFileTimeVectorAlloc@12
+PropVariantToGUID@8
+PropVariantToInt16@8
+PropVariantToInt16Vector@16
+PropVariantToInt16VectorAlloc@12
+PropVariantToInt16WithDefault@8
+PropVariantToInt32@8
+PropVariantToInt32Vector@16
+PropVariantToInt32VectorAlloc@12
+PropVariantToInt32WithDefault@8
+PropVariantToInt64@8
+PropVariantToInt64Vector@16
+PropVariantToInt64VectorAlloc@12
+PropVariantToInt64WithDefault@12
+PropVariantToStrRet@8
+PropVariantToString@12
+PropVariantToStringAlloc@8
+PropVariantToStringVector@16
+PropVariantToStringVectorAlloc@12
+PropVariantToStringWithDefault@8
+PropVariantToUInt16@8
+PropVariantToUInt16Vector@16
+PropVariantToUInt16VectorAlloc@12
+PropVariantToUInt16WithDefault@8
+PropVariantToUInt32@8
+PropVariantToUInt32Vector@16
+PropVariantToUInt32VectorAlloc@12
+PropVariantToUInt32WithDefault@8
+PropVariantToUInt64@8
+PropVariantToUInt64Vector@16
+PropVariantToUInt64VectorAlloc@12
+PropVariantToUInt64WithDefault@12
+PropVariantToVariant@8
+PropVariantToWinRTPropertyValue@12
+StgDeserializePropVariant@12
+StgSerializePropVariant@12
+VariantCompare@8
+VariantGetBooleanElem@12
+VariantGetDoubleElem@12
+VariantGetElementCount@4
+VariantGetInt16Elem@12
+VariantGetInt32Elem@12
+VariantGetInt64Elem@12
+VariantGetStringElem@12
+VariantGetUInt16Elem@12
+VariantGetUInt32Elem@12
+VariantGetUInt64Elem@12
+VariantToBoolean@8
+VariantToBooleanArray@16
+VariantToBooleanArrayAlloc@12
+VariantToBooleanWithDefault@8
+VariantToBuffer@12
+VariantToDosDateTime@12
+VariantToDouble@8
+VariantToDoubleArray@16
+VariantToDoubleArrayAlloc@12
+VariantToDoubleWithDefault@12
+VariantToFileTime@12
+VariantToGUID@8
+VariantToInt16@8
+VariantToInt16Array@16
+VariantToInt16ArrayAlloc@12
+VariantToInt16WithDefault@8
+VariantToInt32@8
+VariantToInt32Array@16
+VariantToInt32ArrayAlloc@12
+VariantToInt32WithDefault@8
+VariantToInt64@8
+VariantToInt64Array@16
+VariantToInt64ArrayAlloc@12
+VariantToInt64WithDefault@12
+VariantToPropVariant@8
+VariantToStrRet@8
+VariantToString@12
+VariantToStringAlloc@8
+VariantToStringArray@16
+VariantToStringArrayAlloc@12
+VariantToStringWithDefault@8
+VariantToUInt16@8
+VariantToUInt16Array@16
+VariantToUInt16ArrayAlloc@12
+VariantToUInt16WithDefault@8
+VariantToUInt32@8
+VariantToUInt32Array@16
+VariantToUInt32ArrayAlloc@12
+VariantToUInt32WithDefault@8
+VariantToUInt64@8
+VariantToUInt64Array@16
+VariantToUInt64ArrayAlloc@12
+VariantToUInt64WithDefault@12
+WinRTPropertyValueToPropVariant@8
diff --git a/lib/libc/mingw/lib32/quartz.def b/lib/libc/mingw/lib32/quartz.def
new file mode 100644
index 0000000000..8cfb105049
--- /dev/null
+++ b/lib/libc/mingw/lib32/quartz.def
@@ -0,0 +1,7 @@
+LIBRARY quartz.dll
+EXPORTS
+AMGetErrorTextA@12
+AMGetErrorTextW@12
+AmpFactorToDB@4
+DBToAmpFactor@4
+
diff --git a/lib/libc/mingw/lib32/qwave.def b/lib/libc/mingw/lib32/qwave.def
new file mode 100644
index 0000000000..8120a92962
--- /dev/null
+++ b/lib/libc/mingw/lib32/qwave.def
@@ -0,0 +1,21 @@
+;
+; Definition file of qwave.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "qwave.dll"
+EXPORTS
+QDLHPathDiagnostics@20
+QDLHStartDiagnosingPath@12
+QOSAddSocketToFlow@24
+QOSCancel@8
+QOSCloseHandle@4
+QOSCreateHandle@8
+QOSEnumerateFlows@12
+QOSNotifyFlow@28
+QOSQueryFlow@28
+QOSRemoveSocketFromFlow@16
+QOSSetFlow@28
+QOSStartTrackingClient@12
+QOSStopTrackingClient@12
+ServiceMain@8
diff --git a/lib/libc/mingw/lib32/rasapi32.def b/lib/libc/mingw/lib32/rasapi32.def
new file mode 100644
index 0000000000..492f2a5fe5
--- /dev/null
+++ b/lib/libc/mingw/lib32/rasapi32.def
@@ -0,0 +1,146 @@
+LIBRARY RASAPI32.DLL
+EXPORTS
+DDMGetPhonebookInfo@32
+DwCloneEntry@12
+DwDeleteSubEntry@12
+DwEnumEntriesForAllUsers@12
+DwEnumEntryDetails@16
+FreeSharedAccessApplication@4
+FreeSharedAccessServer@4
+RasAutoDialSharedConnection@0
+RasAutodialAddressToNetwork@12
+RasAutodialEntryToNetwork@12
+RasClearConnectionStatistics@4
+RasClearLinkStatistics@8
+RasConnectionNotificationA@12
+RasConnectionNotificationW@12
+RasCreatePhonebookEntryA@8
+RasCreatePhonebookEntryW@8
+RasDeleteEntryA@8
+RasDeleteEntryW@8
+RasDialA@24
+RasDialW@24
+RasDialWow@20
+RasEditPhonebookEntryA@12
+RasEditPhonebookEntryW@12
+RasEnumAutodialAddressesA@12
+RasEnumAutodialAddressesW@12
+RasEnumConnectionsA@12
+RasEnumConnectionsW@12
+RasEnumConnectionsWow@12
+RasEnumDevicesA@12
+RasEnumDevicesW@12
+RasEnumEntriesA@20
+RasEnumEntriesW@20
+RasEnumEntriesWow@20
+RasFreeEapUserIdentityA@4
+RasFreeEapUserIdentityW@4
+RasFreeLanConnTable@8
+RasFreeSharedAccessSettings@4
+RasGetAutodialAddressA@20
+RasGetAutodialAddressW@20
+RasGetAutodialEnableA@8
+RasGetAutodialEnableW@8
+RasGetAutodialParamA@12
+RasGetAutodialParamW@12
+RasGetConnectResponse@8
+RasGetConnectStatusA@8
+RasGetConnectStatusW@8
+RasGetConnectStatusWow@8
+RasGetConnectionStatistics@8
+RasGetCountryInfoA@8
+RasGetCountryInfoW@8
+RasGetCredentialsA@12
+RasGetCredentialsW@12
+RasGetCustomAuthDataA@16
+RasGetCustomAuthDataW@16
+RasGetEapUserDataA@20
+RasGetEapUserDataW@20
+RasGetEapUserIdentityA@20
+RasGetEapUserIdentityW@20
+RasGetEntryDialParamsA@12
+RasGetEntryDialParamsW@12
+RasGetEntryHrasconnA@12
+RasGetEntryHrasconnW@12
+RasGetEntryPropertiesA@24
+RasGetEntryPropertiesW@24
+RasGetErrorStringA@12
+RasGetErrorStringW@12
+RasGetErrorStringWow@12
+RasGetHport@4
+RasGetLinkStatistics@12
+RasGetProjectionInfoA@16
+RasGetProjectionInfoW@16
+RasGetSubEntryHandleA@12
+RasGetSubEntryHandleW@12
+RasGetSubEntryPropertiesA@28
+RasGetSubEntryPropertiesW@28
+RasHangUpA@4
+RasHangUpW@4
+RasHangUpWow@4
+RasInvokeEapUI@16
+RasIsRouterConnection@4
+RasIsSharedConnection@8
+RasLoadSharedAccessSettings@4
+RasNameFromSharedConnection@8
+RasQueryLanConnTable@12
+RasQueryRedialOnLinkFailure@12
+RasQuerySharedAutoDial@4
+RasQuerySharedConnection@4
+RasQuerySharedConnectionCredentials@8
+RasQuerySharedPrivateLan@4
+RasQuerySharedPrivateLanAddress@4
+RasRenameEntryA@12
+RasRenameEntryW@12
+RasSaveSharedAccessSettings@4
+RasSetAutodialAddressA@20
+RasSetAutodialAddressW@20
+RasSetAutodialEnableA@8
+RasSetAutodialEnableW@8
+RasSetAutodialParamA@12
+RasSetAutodialParamW@12
+RasSetCredentialsA@16
+RasSetCredentialsW@16
+RasSetCustomAuthDataA@16
+RasSetCustomAuthDataW@16
+RasSetEapUserDataA@20
+RasSetEapUserDataW@20
+RasSetEntryDialParamsA@12
+RasSetEntryDialParamsW@12
+RasSetEntryPropertiesA@24
+RasSetEntryPropertiesW@24
+RasSetOldPassword@8
+RasSetSharedAutoDial@4
+RasSetSharedConnectionCredentials@8
+RasSetSubEntryPropertiesA@28
+RasSetSubEntryPropertiesW@28
+RasShareConnection@8
+RasUnshareConnection@4
+RasValidateEntryNameA@8
+RasValidateEntryNameW@8
+RasfileClose@4
+RasfileDeleteLine@4
+RasfileFindFirstLine@12
+RasfileFindLastLine@12
+RasfileFindMarkedLine@8
+RasfileFindNextKeyLine@12
+RasfileFindNextLine@12
+RasfileFindPrevLine@12
+RasfileFindSectionLine@12
+RasfileGetKeyValueFields@12
+RasfileGetLine@4
+RasfileGetLineMark@4
+RasfileGetLineText@8
+RasfileGetLineType@4
+RasfileGetSectionName@8
+RasfileInsertLine@12
+RasfileLoad@16
+RasfileLoadInfo@8
+RasfilePutKeyValueFields@12
+RasfilePutLineMark@8
+RasfilePutLineText@8
+RasfilePutSectionName@8
+RasfileWrite@8
+SharedAccessResponseListToString@8
+SharedAccessResponseStringToList@12
+UnInitializeRAS@0
diff --git a/lib/libc/mingw/lib32/rasdlg.def b/lib/libc/mingw/lib32/rasdlg.def
new file mode 100644
index 0000000000..099c1a7779
--- /dev/null
+++ b/lib/libc/mingw/lib32/rasdlg.def
@@ -0,0 +1,8 @@
+LIBRARY RASDLG.DLL
+EXPORTS
+RasDialDlgA@16
+RasDialDlgW@16
+RasEntryDlgA@12
+RasEntryDlgW@12
+RasPhonebookDlgA@12
+RasPhonebookDlgW@12
diff --git a/lib/libc/mingw/lib32/rstrtmgr.def b/lib/libc/mingw/lib32/rstrtmgr.def
new file mode 100644
index 0000000000..6e04fce5cf
--- /dev/null
+++ b/lib/libc/mingw/lib32/rstrtmgr.def
@@ -0,0 +1,19 @@
+;
+; Definition file of RstrtMgr.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "RstrtMgr.DLL"
+EXPORTS
+RmAddFilter@20
+RmCancelCurrentTask@4
+RmEndSession@4
+RmGetFilterList@16
+RmGetList@20
+RmJoinSession@8
+RmRegisterResources@28
+RmRemoveFilter@16
+RmReserveHeap@4
+RmRestart@12
+RmShutdown@12
+RmStartSession@12
diff --git a/lib/libc/mingw/lib32/rtm.def b/lib/libc/mingw/lib32/rtm.def
new file mode 100644
index 0000000000..b156914ffb
--- /dev/null
+++ b/lib/libc/mingw/lib32/rtm.def
@@ -0,0 +1,18 @@
+LIBRARY RTM.DLL
+EXPORTS
+MgmAddGroupMembershipEntry@32
+MgmDeleteGroupMembershipEntry@32
+MgmDeRegisterMProtocol@4
+MgmGetFirstMfe@12
+MgmGetFirstMfeStats@16
+MgmGetMfe@12
+MgmGetMfeStats@16
+MgmGetNextMfe@16
+MgmGetNextMfeStats@20
+MgmGetProtocolOnInterface@16
+MgmGroupEnumerationEnd@4
+MgmGroupEnumerationGetNext@16
+MgmGroupEnumerationStart@12
+MgmRegisterMProtocol@16
+MgmReleaseInterfaceOwnership@12
+MgmTakeInterfaceOwnership@12
diff --git a/lib/libc/mingw/lib32/samcli.def b/lib/libc/mingw/lib32/samcli.def
new file mode 100644
index 0000000000..5a10a53647
--- /dev/null
+++ b/lib/libc/mingw/lib32/samcli.def
@@ -0,0 +1,42 @@
+;
+; Definition file of samcli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "samcli.dll"
+EXPORTS
+NetGetDisplayInformationIndex@16
+NetGroupAdd@16
+NetGroupAddUser@12
+NetGroupDel@8
+NetGroupDelUser@12
+NetGroupEnum@28
+NetGroupGetInfo@16
+NetGroupGetUsers@32
+NetGroupSetInfo@20
+NetGroupSetUsers@20
+NetLocalGroupAdd@16
+NetLocalGroupAddMember@12
+NetLocalGroupAddMembers@20
+NetLocalGroupDel@8
+NetLocalGroupDelMember@12
+NetLocalGroupDelMembers@20
+NetLocalGroupEnum@28
+NetLocalGroupGetInfo@16
+NetLocalGroupGetMembers@32
+NetLocalGroupSetInfo@20
+NetLocalGroupSetMembers@20
+NetQueryDisplayInformation@28
+NetUserAdd@16
+NetUserChangePassword@16
+NetUserDel@8
+NetUserEnum@32
+NetUserGetGroups@28
+NetUserGetInfo@16
+NetUserGetLocalGroups@32
+NetUserModalsGet@12
+NetUserModalsSet@16
+NetUserSetGroups@20
+NetUserSetInfo@20
+NetValidatePasswordPolicy@20
+NetValidatePasswordPolicyFree@4
diff --git a/lib/libc/mingw/lib32/schannel.def b/lib/libc/mingw/lib32/schannel.def
new file mode 100644
index 0000000000..40d6b2c8fc
--- /dev/null
+++ b/lib/libc/mingw/lib32/schannel.def
@@ -0,0 +1,40 @@
+LIBRARY SCHANNEL.dll
+EXPORTS
+AcceptSecurityContext@36
+AcquireCredentialsHandleA@36
+AcquireCredentialsHandleW@36
+ApplyControlToken@8
+CloseSslPerformanceData
+CollectSslPerformanceData@16
+CompleteAuthToken@8
+DeleteSecurityContext@4
+EnumerateSecurityPackagesA@8
+EnumerateSecurityPackagesW@8
+FreeContextBuffer@4
+FreeCredentialsHandle@4
+ImpersonateSecurityContext@4
+InitSecurityInterfaceA@0
+InitSecurityInterfaceW@0
+InitializeSecurityContextA@48
+InitializeSecurityContextW@48
+MakeSignature@16
+OpenSslPerformanceData@4
+QueryContextAttributesA@12
+QueryContextAttributesW@12
+QuerySecurityPackageInfoA@8
+QuerySecurityPackageInfoW@8
+RevertSecurityContext@4
+SealMessage@16
+SpLsaModeInitialize@16
+SpUserModeInitialize@16
+SslCrackCertificate@16
+SslEmptyCacheA@8
+SslEmptyCacheW@8
+SslFreeCertificate@4
+SslGenerateKeyPair@16
+SslGenerateRandomBits@8
+SslGetMaximumKeySize@4
+SslLoadCertificate@12
+SupportsChannelBinding
+UnsealMessage@16
+VerifySignature@16
diff --git a/lib/libc/mingw/lib32/schedcli.def b/lib/libc/mingw/lib32/schedcli.def
new file mode 100644
index 0000000000..9104959cb7
--- /dev/null
+++ b/lib/libc/mingw/lib32/schedcli.def
@@ -0,0 +1,11 @@
+;
+; Definition file of schedcli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "schedcli.dll"
+EXPORTS
+NetScheduleJobAdd@12
+NetScheduleJobDel@12
+NetScheduleJobEnum@24
+NetScheduleJobGetInfo@12
diff --git a/lib/libc/mingw/lib32/secur32.def b/lib/libc/mingw/lib32/secur32.def
new file mode 100644
index 0000000000..e6ad24024e
--- /dev/null
+++ b/lib/libc/mingw/lib32/secur32.def
@@ -0,0 +1,111 @@
+;
+; Definition file of Secur32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "Secur32.dll"
+EXPORTS
+CloseLsaPerformanceData@0
+CollectLsaPerformanceData@16
+OpenLsaPerformanceData@4
+AcceptSecurityContext@36
+AcquireCredentialsHandleA@36
+AcquireCredentialsHandleW@36
+ApplyControlTokenA@8
+ApplyControlTokenW@8
+AddCredentialsA@32
+AddCredentialsW@32
+AddSecurityPackageA@8
+AddSecurityPackageW@8
+ApplyControlToken@8
+ChangeAccountPasswordA@32
+ChangeAccountPasswordW@32
+CompleteAuthToken@8
+CredMarshalTargetInfo@12
+CredParseUserNameWithType@16
+CredUnmarshalTargetInfo@16
+DecryptMessage@16
+DeleteSecurityContext@4
+DeleteSecurityPackageA@4
+DeleteSecurityPackageW@4
+EncryptMessage@16
+EnumerateSecurityPackagesA@8
+EnumerateSecurityPackagesW@8
+ExportSecurityContext@16
+FreeContextBuffer@4
+FreeCredentialsHandle@4
+GetComputerObjectNameA@12
+GetComputerObjectNameW@12
+GetSecurityUserInfo@12
+GetUserNameExA@12
+GetUserNameExW@12
+ImpersonateSecurityContext@4
+ImportSecurityContextA@16
+ImportSecurityContextW@16
+InitSecurityInterfaceA@0
+InitSecurityInterfaceW@0
+InitializeSecurityContextA@48
+InitializeSecurityContextW@48
+LsaCallAuthenticationPackage@28
+LsaConnectUntrusted@4
+LsaDeregisterLogonProcess@4
+LsaEnumerateLogonSessions@8
+LsaFreeReturnBuffer@4
+LsaGetLogonSessionData@8
+LsaLogonUser@56
+LsaLookupAuthenticationPackage@12
+LsaRegisterLogonProcess@12
+LsaRegisterPolicyChangeNotification@8
+LsaUnregisterPolicyChangeNotification@8
+MakeSignature@16
+QueryContextAttributesA@12
+QueryContextAttributesW@12
+QueryCredentialsAttributesA@12
+QueryCredentialsAttributesW@12
+QuerySecurityContextToken@8
+QuerySecurityPackageInfoA@8
+QuerySecurityPackageInfoW@8
+RevertSecurityContext@4
+SaslAcceptSecurityContext@36
+SaslEnumerateProfilesA@8
+SaslEnumerateProfilesW@8
+SaslGetContextOption@20
+SaslGetProfilePackageA@8
+SaslGetProfilePackageW@8
+SaslIdentifyPackageA@8
+SaslIdentifyPackageW@8
+SaslInitializeSecurityContextA@48
+SaslInitializeSecurityContextW@48
+SaslSetContextOption@16
+SealMessage@16
+SeciAllocateAndSetCallFlags@8
+SeciAllocateAndSetIPAddress@12
+SeciFreeCallContext@0
+SecpFreeMemory@4
+SecpTranslateName@24
+SecpTranslateNameEx@24
+SetContextAttributesA@16
+SetContextAttributesW@16
+SetCredentialsAttributesA@16
+SetCredentialsAttributesW@16
+SspiCompareAuthIdentities@16
+SspiCopyAuthIdentity@8
+SspiDecryptAuthIdentity@4
+SspiEncodeAuthIdentityAsStrings@16
+SspiEncodeStringsAsAuthIdentity@16
+SspiEncryptAuthIdentity@4
+SspiExcludePackage@12
+SspiFreeAuthIdentity@4
+SspiGetTargetHostName@8
+SspiIsAuthIdentityEncrypted@4
+SspiLocalFree@4
+SspiMarshalAuthIdentity@12
+SspiPrepareForCredRead@16
+SspiPrepareForCredWrite@28
+SspiUnmarshalAuthIdentity@12
+SspiValidateAuthIdentity@4
+SspiZeroAuthIdentity@4
+TranslateNameA@20
+TranslateNameW@20
+UnsealMessage@16
+VerifySignature@16
diff --git a/lib/libc/mingw/lib32/slc.def b/lib/libc/mingw/lib32/slc.def
new file mode 100644
index 0000000000..6168d9ae79
--- /dev/null
+++ b/lib/libc/mingw/lib32/slc.def
@@ -0,0 +1,55 @@
+;
+; Definition file of slc.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "slc.dll"
+EXPORTS
+SLpAuthenticateGenuineTicketResponse@4
+SLpBeginGenuineTicketTransaction@4
+SLpCheckProductKey@4
+SLpDepositTokenActivationResponse@4
+SLpGenerateTokenActivationChallenge@4
+SLpGetGenuineBlob@4
+SLpGetGenuineLocal@4
+SLpGetLicenseAcquisitionInfo@4
+SLpGetMachineUGUID@4
+SLpGetTokenActivationGrantInfo@4
+SLpVLActivateProduct@4
+SLClose@4
+SLConsumeRight@4
+SLConsumeWindowsRight@4
+SLDepositOfflineConfirmationId@4
+SLFireEvent@4
+SLGenerateOfflineInstallationId@4
+SLGetGenuineInformation@4
+SLGetInstalledProductKeyIds@4
+SLGetInstalledSAMLicenseApplications@4
+SLGetLicense@4
+SLGetLicenseFileId@4
+SLGetLicenseInformation@24
+SLGetLicensingStatusInformation@4
+SLGetPKeyId@4
+SLGetPKeyInformation@24
+SLGetPolicyInformation@20
+SLGetPolicyInformationDWORD@12
+SLGetProductSkuInformation@24
+SLGetSAMLicense@4
+SLGetSLIDList@4
+SLGetServiceInformation@20
+SLGetWindowsInformation@4
+SLGetWindowsInformationDWORD@4
+SLInstallLicense@4
+SLInstallProofOfPurchase@4
+SLInstallSAMLicense@4
+SLOpen@4
+SLReArmWindows@4
+SLRegisterEvent@4
+SLRegisterWindowsEvent@4
+SLSetCurrentProductKey@4
+SLSetGenuineInformation@4
+SLUninstallLicense@4
+SLUninstallProofOfPurchase@4
+SLUninstallSAMLicense@4
+SLUnregisterEvent@4
+SLUnregisterWindowsEvent@4
diff --git a/lib/libc/mingw/lib32/slcext.def b/lib/libc/mingw/lib32/slcext.def
new file mode 100644
index 0000000000..850bb54bb0
--- /dev/null
+++ b/lib/libc/mingw/lib32/slcext.def
@@ -0,0 +1,28 @@
+;
+; Definition file of slcext.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "slcext.dll"
+EXPORTS
+;ord_300@28 @300
+;ord_301@36 @301
+;ord_302@28 @302
+;ord_303@40 @303
+;ord_304@16 @304
+SLAcquireGenuineTicket@4
+SLActivateProduct@4
+SLDepositTokenActivationResponse@4
+SLFreeTokenActivationCertificates@4
+SLFreeTokenActivationGrants@4
+SLGenerateTokenActivationChallenge@4
+SLGetPackageProductKey@12
+SLGetPackageProperties@16
+SLGetPackageToken@16
+SLGetReferralInformation@20
+SLGetServerStatus@4
+SLGetTokenActivationCertificates@4
+SLGetTokenActivationGrants@4
+SLInstallPackage@24
+SLSignTokenActivationChallenge@4
+SLUninstallPackage@20
diff --git a/lib/libc/mingw/lib32/slwga.def b/lib/libc/mingw/lib32/slwga.def
new file mode 100644
index 0000000000..603a475439
--- /dev/null
+++ b/lib/libc/mingw/lib32/slwga.def
@@ -0,0 +1,9 @@
+;
+; Definition file of SLWGA.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "SLWGA.dll"
+EXPORTS
+;ord_227@8 @227
+SLIsGenuineLocal@12
diff --git a/lib/libc/mingw/lib32/snmpapi.def b/lib/libc/mingw/lib32/snmpapi.def
new file mode 100644
index 0000000000..0c16c1c299
--- /dev/null
+++ b/lib/libc/mingw/lib32/snmpapi.def
@@ -0,0 +1,40 @@
+LIBRARY snmpapi.dll
+EXPORTS
+SnmpSvcAddrIsIpx@12
+SnmpSvcAddrToSocket@8
+SnmpSvcBufRevAndCpy@12
+SnmpSvcBufRevInPlace@8
+SnmpSvcDecodeMessage@20
+SnmpSvcEncodeMessage@16
+SnmpSvcGenerateAuthFailTrap@4
+SnmpSvcGenerateColdStartTrap@4
+SnmpSvcGenerateLinkDownTrap@8
+SnmpSvcGenerateLinkUpTrap@8
+SnmpSvcGenerateTrap@20
+SnmpSvcGenerateWarmStartTrap@4
+SnmpSvcGetUptime@0
+SnmpSvcInitUptime@0
+SnmpSvcReleaseMessage@4
+SnmpSvcReportEvent@16
+SnmpSvcSetLogLevel@4
+SnmpSvcSetLogType@4
+SnmpUtilAnsiToUnicode@12
+SnmpUtilDbgPrint
+SnmpUtilIdsToA@8
+SnmpUtilMemAlloc@4
+SnmpUtilMemFree@4
+SnmpUtilMemReAlloc@8
+SnmpUtilOidAppend@8
+SnmpUtilOidCmp@8
+SnmpUtilOidCpy@8
+SnmpUtilOidFree@4
+SnmpUtilOidNCmp@12
+SnmpUtilOidToA@4
+SnmpUtilPrintAsnAny@4
+SnmpUtilPrintOid@4
+SnmpUtilStrlenW@4
+SnmpUtilUnicodeToAnsi@12
+SnmpUtilVarBindCpy@8
+SnmpUtilVarBindFree@4
+SnmpUtilVarBindListCpy@8
+SnmpUtilVarBindListFree@4
diff --git a/lib/libc/mingw/lib32/spoolss.def b/lib/libc/mingw/lib32/spoolss.def
new file mode 100644
index 0000000000..3d9c081257
--- /dev/null
+++ b/lib/libc/mingw/lib32/spoolss.def
@@ -0,0 +1,217 @@
+;
+; Definition file of SPOOLSS.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "SPOOLSS.DLL"
+EXPORTS
+OpenPrinterExW@16
+RouterCorePrinterDriverInstalled@44
+RouterCreatePrintAsyncNotificationChannel@24
+RouterDeletePrinterDriverPackage@12
+RouterGetCorePrinterDrivers@20
+RouterGetPrintClassObject@12
+RouterGetPrinterDriverPackagePath@28
+RouterInstallPrinterDriverFromPackage@20
+RouterRegisterForPrintAsyncNotifications@24
+RouterUnregisterForPrintAsyncNotifications@4
+RouterUploadPrinterDriverPackage@24
+AbortPrinter@4
+AddFormW@12
+AddJobW@20
+AddMonitorW@12
+AddPerMachineConnectionW@16
+AddPortExW@16
+AddPortW@12
+AddPrintProcessorW@16
+AddPrintProvidorW@12
+AddPrinterConnectionW@4
+AddPrinterDriverExW@16
+AddPrinterDriverW@12
+AddPrinterExW@20
+AddPrinterW@12
+AdjustPointers@12
+AdjustPointersInStructuresArray@20
+AlignKMPtr@8
+AlignRpcPtr@8
+AllocSplStr@4
+AllowRemoteCalls@0
+AppendPrinterNotifyInfoData@12
+BuildOtherNamesFromMachineName@8
+CacheAddName@4
+CacheCreateAndAddNode@8
+CacheCreateAndAddNodeWithIPAddresses@16
+CacheDeleteNode@4
+CacheIsNameCluster@4
+CacheIsNameInNodeList@8
+CallDrvDevModeConversion@28
+CallRouterFindFirstPrinterChangeNotification@20
+CheckLocalCall@0
+ClosePrinter@4
+ClusterSplClose@4
+ClusterSplIsAlive@4
+ClusterSplOpen@20
+ConfigurePortW@12
+CreatePrinterIC@8
+DeleteFormW@8
+DeleteMonitorW@12
+DeletePerMachineConnectionW@8
+DeletePortW@12
+DeletePrintProcessorW@12
+DeletePrintProvidorW@12
+DeletePrinter@4
+DeletePrinterConnectionW@4
+DeletePrinterDataExW@12
+DeletePrinterDataW@8
+DeletePrinterDriverExW@20
+DeletePrinterDriverW@12
+DeletePrinterIC@4
+DeletePrinterKeyW@8
+DllAllocSplMem@4
+DllAllocSplStr@4
+DllCanUnloadNow@0
+DllFreeSplMem@4
+DllFreeSplStr@4
+DllGetClassObject@12
+DllMain@12
+DllReallocSplMem@12
+DllReallocSplStr@8
+DllRegisterServer@0
+DllUnregisterServer@0
+EndDocPrinter@4
+EndPagePrinter@4
+EnumFormsW@24
+EnumJobsW@32
+EnumMonitorsW@24
+EnumPerMachineConnectionsW@20
+EnumPortsW@24
+EnumPrintProcessorDatatypesW@28
+EnumPrintProcessorsW@28
+EnumPrinterDataExW@24
+EnumPrinterDataW@36
+EnumPrinterDriversW@28
+EnumPrinterKeyW@20
+EnumPrintersW@28
+FindClosePrinterChangeNotification@4
+FlushPrinter@20
+FormatPrinterForRegistryKey@12
+FormatRegistryKeyForPrinter@12
+FreeOtherNames@8
+GetBindingHandleIndex@0
+GetFormW@24
+GetJobAttributes@12
+GetJobAttributesEx@24
+GetJobW@24
+GetNetworkId@8
+GetPrintProcessorDirectoryW@24
+GetPrinterDataExW@28
+GetPrinterDataW@24
+GetPrinterDriverDirectoryW@24
+GetPrinterDriverExW@40
+GetPrinterDriverW@24
+GetPrinterW@20
+GetServerPolicy@8
+GetShrinkedSize@8
+ImpersonatePrinterClient@4
+InitializeRouter@4
+IsNameTheLocalMachineOrAClusterSpooler@4
+IsNamedPipeRpcCall@0
+LoadDriver@4
+LoadDriverFiletoConvertDevmode@4
+LoadDriverWithVersion@8
+LogWmiTraceEvent@12
+MIDL_user_allocate1@4
+MIDL_user_free1@4
+MarshallDownStructure@16
+MarshallDownStructuresArray@20
+MarshallUpStructure@20
+MarshallUpStructuresArray@24
+OldGetPrinterDriverW@24
+OpenPrinter2W@16
+OpenPrinterPort2W@16
+OpenPrinterW@12
+PackStrings@16
+PartialReplyPrinterChangeNotification@8
+PlayGdiScriptOnPrinterIC@24
+PrinterHandleRundown@4
+PrinterMessageBoxW@24
+ProvidorFindClosePrinterChangeNotification@4
+ProvidorFindFirstPrinterChangeNotification@24
+ReadPrinter@16
+ReallocSplMem@12
+ReallocSplStr@8
+RemoteFindFirstPrinterChangeNotification@28
+ReplyClosePrinter@4
+ReplyOpenPrinter@20
+ReplyPrinterChangeNotification@16
+ReplyPrinterChangeNotificationEx@20
+ReportJobProcessingProgress@16
+ResetPrinterW@8
+RevertToPrinterSelf@0
+RouterAddPrinterConnection2@12
+RouterAllocBidiMem@4
+RouterAllocBidiResponseContainer@4
+RouterAllocPrinterNotifyInfo@4
+RouterBroadcastMessage@20
+;RouterFindCompatibleDriver ; Check!!! Couldn't determine function argument count. Function doesn't return.
+RouterFindFirstPrinterChangeNotification@24
+RouterFindNextPrinterChangeNotification@20
+RouterFreeBidiMem@4
+RouterFreeBidiResponseContainer@4
+RouterFreePrinterNotifyInfo@4
+RouterInternalGetPrinterDriver@40
+RouterRefreshPrinterChangeNotification@16
+RouterReplyPrinter@24
+RouterSpoolerSetPolicy@12
+ScheduleJob@8
+SeekPrinter@24
+SendRecvBidiData@16
+SetFormW@16
+SetJobW@20
+SetPortW@16
+SetPrinterDataExW@24
+SetPrinterDataW@20
+SetPrinterW@16
+SplCloseSpoolFileHandle@4
+SplCommitSpoolData@28
+SplDriverUnloadComplete@4
+SplGetClientUserHandle@4
+SplGetSpoolFileInfo@24
+SplGetUserSidStringFromToken@16
+SplInitializeWinSpoolDrv@4
+SplIsSessionZero@12
+SplIsUpgrade@0
+SplPowerEvent@4
+SplProcessPnPEvent@12
+SplProcessSessionEvent@12
+SplPromptUIInUsersSession@16
+SplQueryUserInfo@8
+SplReadPrinter@12
+SplRegisterForDeviceEvents@12
+SplRegisterForSessionEvents@8
+SplShutDownRouter@0
+SplUnregisterForDeviceEvents@4
+SplUnregisterForSessionEvents@4
+SplWerNotifyLogger@4
+SpoolerFindClosePrinterChangeNotification@4
+SpoolerFindFirstPrinterChangeNotification@32
+SpoolerFindNextPrinterChangeNotification@16
+SpoolerFreePrinterNotifyInfo@4
+SpoolerHasInitialized@0
+SpoolerInit@0
+SpoolerRefreshPrinterChangeNotification@16
+StartDocPrinterW@12
+StartPagePrinter@4
+UndoAlignKMPtr@8
+UndoAlignRpcPtr@16
+UnloadDriver@4
+UnloadDriverFile@4
+UpdateBufferSize@24
+UpdatePrinterRegAll@16
+UpdatePrinterRegUser@20
+WaitForPrinterChange@8
+WaitForSpoolerInitialization@0
+WritePrinter@16
+XcvDataW@32
+bGetDevModePerUser@12
+bSetDevModePerUser@12
diff --git a/lib/libc/mingw/lib32/srvcli.def b/lib/libc/mingw/lib32/srvcli.def
new file mode 100644
index 0000000000..bb61721677
--- /dev/null
+++ b/lib/libc/mingw/lib32/srvcli.def
@@ -0,0 +1,46 @@
+;
+; Definition file of srvcli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "srvcli.dll"
+EXPORTS
+I_NetDfsGetVersion@8
+I_NetServerSetServiceBits@16
+I_NetServerSetServiceBitsEx@24
+NetConnectionEnum@32
+NetFileClose@8
+NetFileEnum@36
+NetFileGetInfo@16
+NetRemoteTOD@8
+NetServerAliasAdd@12
+NetServerAliasDel@12
+NetServerAliasEnum@28
+NetServerComputerNameAdd@12
+NetServerComputerNameDel@8
+NetServerDiskEnum@28
+NetServerGetInfo@12
+NetServerSetInfo@16
+NetServerStatisticsGet@16
+NetServerTransportAdd@12
+NetServerTransportAddEx@12
+NetServerTransportDel@12
+NetServerTransportEnum@28
+NetSessionDel@12
+NetSessionEnum@36
+NetSessionGetInfo@20
+NetShareAdd@16
+NetShareCheck@12
+NetShareDel@12
+NetShareDelEx@12
+NetShareDelSticky@12
+NetShareEnum@28
+NetShareEnumSticky@28
+NetShareGetInfo@16
+NetShareSetInfo@20
+NetpsNameCanonicalize@24
+NetpsNameCompare@20
+NetpsNameValidate@16
+NetpsPathCanonicalize@28
+NetpsPathCompare@20
+NetpsPathType@16
diff --git a/lib/libc/mingw/lib32/sspicli.def b/lib/libc/mingw/lib32/sspicli.def
new file mode 100644
index 0000000000..91851a3ce0
--- /dev/null
+++ b/lib/libc/mingw/lib32/sspicli.def
@@ -0,0 +1,104 @@
+;
+; Definition file of SspiCli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "SspiCli.dll"
+EXPORTS
+SecDeleteUserModeContext@4
+SecInitUserModeContext@8
+SspiUnmarshalAuthIdentityInternal@16
+AcceptSecurityContext@36
+AcquireCredentialsHandleA@36
+AcquireCredentialsHandleW@36
+AddCredentialsA@32
+AddCredentialsW@32
+AddSecurityPackageA@8
+AddSecurityPackageW@8
+ApplyControlToken@8
+ChangeAccountPasswordA@32
+ChangeAccountPasswordW@32
+CompleteAuthToken@8
+CredMarshalTargetInfo@12
+CredUnmarshalTargetInfo@16
+DecryptMessage@16
+DeleteSecurityContext@4
+DeleteSecurityPackageA@4
+DeleteSecurityPackageW@4
+EncryptMessage@16
+EnumerateSecurityPackagesA@8
+EnumerateSecurityPackagesW@8
+ExportSecurityContext@16
+FreeContextBuffer@4
+FreeCredentialsHandle@4
+GetSecurityUserInfo@12
+GetUserNameExA@12
+GetUserNameExW@12
+ImpersonateSecurityContext@4
+ImportSecurityContextA@16
+ImportSecurityContextW@16
+InitSecurityInterfaceA@0
+InitSecurityInterfaceW@0
+InitializeSecurityContextA@48
+InitializeSecurityContextW@48
+LogonUserExExW@44
+LsaCallAuthenticationPackage@28
+LsaConnectUntrusted@4
+LsaDeregisterLogonProcess@4
+LsaEnumerateLogonSessions@8
+LsaFreeReturnBuffer@4
+LsaGetLogonSessionData@8
+LsaLogonUser@56
+LsaLookupAuthenticationPackage@12
+LsaRegisterLogonProcess@12
+LsaRegisterPolicyChangeNotification@8
+LsaUnregisterPolicyChangeNotification@8
+MakeSignature@16
+QueryContextAttributesA@12
+QueryContextAttributesW@12
+QueryCredentialsAttributesA@12
+QueryCredentialsAttributesW@12
+QuerySecurityContextToken@8
+QuerySecurityPackageInfoA@8
+QuerySecurityPackageInfoW@8
+RevertSecurityContext@4
+SaslAcceptSecurityContext@36
+SaslEnumerateProfilesA@8
+SaslEnumerateProfilesW@8
+SaslGetContextOption@20
+SaslGetProfilePackageA@8
+SaslGetProfilePackageW@8
+SaslIdentifyPackageA@8
+SaslIdentifyPackageW@8
+SaslInitializeSecurityContextA@48
+SaslInitializeSecurityContextW@48
+SaslSetContextOption@16
+SealMessage@16
+SecCacheSspiPackages@0
+SeciAllocateAndSetCallFlags@8
+SeciAllocateAndSetIPAddress@12
+SeciFreeCallContext@0
+SetContextAttributesA@16
+SetContextAttributesW@16
+SetCredentialsAttributesA@16
+SetCredentialsAttributesW@16
+SspiCompareAuthIdentities@16
+SspiCopyAuthIdentity@8
+SspiDecryptAuthIdentity@4
+SspiEncodeAuthIdentityAsStrings@16
+SspiEncodeStringsAsAuthIdentity@16
+SspiEncryptAuthIdentity@4
+SspiExcludePackage@12
+SspiFreeAuthIdentity@4
+SspiGetComputerNameForSPN@8
+SspiGetTargetHostName@8
+SspiIsAuthIdentityEncrypted@4
+SspiLocalFree@4
+SspiMarshalAuthIdentity@12
+SspiPrepareForCredRead@16
+SspiPrepareForCredWrite@28
+SspiUnmarshalAuthIdentity@12
+SspiValidateAuthIdentity@4
+SspiZeroAuthIdentity@4
+UnsealMessage@16
+VerifySignature@16
diff --git a/lib/libc/mingw/lib32/t2embed.def b/lib/libc/mingw/lib32/t2embed.def
new file mode 100644
index 0000000000..f186061eea
--- /dev/null
+++ b/lib/libc/mingw/lib32/t2embed.def
@@ -0,0 +1,27 @@
+LIBRARY t2embed.dll
+EXPORTS
+TTCharToUnicode@24
+TTDeleteEmbeddedFont@12
+TTEmbedFont@44
+TTEmbedFontFromFileA@52
+TTEnableEmbeddingForFacename@8
+TTGetEmbeddedFontInfo@28
+TTGetEmbeddingType@8
+TTIsEmbeddingEnabled@8
+TTIsEmbeddingEnabledForFacename@8
+TTLoadEmbeddedFont@40
+TTRunValidationTests@8
+_TTCharToUnicode@24@24
+_TTDeleteEmbeddedFont@12@12
+_TTEmbedFont@44@44
+_TTEmbedFontFromFileA@52@52
+_TTEnableEmbeddingForFacename@8@8
+_TTGetEmbeddedFontInfo@28@28
+_TTGetEmbeddingType@8@8
+_TTIsEmbeddingEnabled@8@8
+_TTIsEmbeddingEnabledForFacename@8@8
+_TTLoadEmbeddedFont@40@40
+_TTRunValidationTests@8@8
+TTEmbedFontEx@44
+TTRunValidationTestsEx@8
+TTGetNewFontName@20
diff --git a/lib/libc/mingw/lib32/tapi32.def b/lib/libc/mingw/lib32/tapi32.def
new file mode 100644
index 0000000000..214ca36df5
--- /dev/null
+++ b/lib/libc/mingw/lib32/tapi32.def
@@ -0,0 +1,285 @@
+;
+; Definition file of TAPI32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "TAPI32.dll"
+EXPORTS
+;GetTapi16CallbackMsg@8
+;LAddrParamsInited@4
+;LOpenDialAsst@16
+;LocWizardDlgProc@16
+;MMCAddProvider@16
+;MMCConfigProvider@12
+;MMCGetAvailableProviders@8
+;MMCGetDeviceFlags@24
+;MMCGetLineInfo@8
+;MMCGetLineStatus@24
+;MMCGetPhoneInfo@8
+;MMCGetPhoneStatus@24
+;MMCGetProviderList@8
+;MMCGetServerConfig@8
+;MMCInitialize@16
+;MMCRemoveProvider@12
+;MMCSetLineInfo@8
+;MMCSetPhoneInfo@8
+;MMCSetServerConfig@8
+;MMCShutdown@4
+;NonAsyncEventThread
+;TAPIWndProc@16
+;TUISPIDLLCallback@16
+;internalConfig@16
+;internalCreateDefLocation@4
+;internalNewLocationW@4
+;internalPerformance@4
+;internalRemoveLocation@4
+;internalRenameLocationW@8
+lineAccept@12
+lineAddProvider@12
+lineAddProviderA@12
+lineAddProviderW@12
+lineAddToConference@8
+lineAgentSpecific@20
+lineAnswer@12
+lineBlindTransfer@12
+lineBlindTransferA@12
+lineBlindTransferW@12
+lineClose@4
+lineCompleteCall@16
+lineCompleteTransfer@16
+lineConfigDialog@12
+lineConfigDialogA@12
+lineConfigDialogEdit@24
+lineConfigDialogEditA@24
+lineConfigDialogEditW@24
+lineConfigDialogW@12
+lineConfigProvider@8
+lineCreateAgentA@16
+lineCreateAgentSessionA@24
+lineCreateAgentSessionW@24
+lineCreateAgentW@16
+lineDeallocateCall@4
+lineDevSpecific@20
+lineDevSpecificFeature@16
+lineDial@12
+lineDialA@12
+lineDialW@12
+lineDrop@12
+lineForward@28
+lineForwardA@28
+lineForwardW@28
+lineGatherDigits@28
+lineGatherDigitsA@28
+lineGatherDigitsW@28
+lineGenerateDigits@16
+lineGenerateDigitsA@16
+lineGenerateDigitsW@16
+lineGenerateTone@20
+lineGetAddressCaps@24
+lineGetAddressCapsA@24
+lineGetAddressCapsW@24
+lineGetAddressID@20
+lineGetAddressIDA@20
+lineGetAddressIDW@20
+lineGetAddressStatus@12
+lineGetAddressStatusA@12
+lineGetAddressStatusW@12
+lineGetAgentActivityListA@12
+lineGetAgentActivityListW@12
+lineGetAgentCapsA@20
+lineGetAgentCapsW@20
+lineGetAgentGroupListA@12
+lineGetAgentGroupListW@12
+lineGetAgentInfo@12
+lineGetAgentSessionInfo@12
+lineGetAgentSessionList@12
+lineGetAgentStatusA@12
+lineGetAgentStatusW@12
+lineGetAppPriority@24
+lineGetAppPriorityA@24
+lineGetAppPriorityW@24
+lineGetCallInfo@8
+lineGetCallInfoA@8
+lineGetCallInfoW@8
+lineGetCallStatus@8
+lineGetConfRelatedCalls@8
+lineGetCountry@12
+lineGetCountryA@12
+lineGetCountryW@12
+lineGetDevCaps@20
+lineGetDevCapsA@20
+lineGetDevCapsW@20
+lineGetDevConfig@12
+lineGetDevConfigA@12
+lineGetDevConfigW@12
+lineGetGroupListA@8
+lineGetGroupListW@8
+lineGetID@24
+lineGetIDA@24
+lineGetIDW@24
+lineGetIcon@12
+lineGetIconA@12
+lineGetIconW@12
+lineGetLineDevStatus@8
+lineGetLineDevStatusA@8
+lineGetLineDevStatusW@8
+lineGetMessage@12
+lineGetNewCalls@16
+lineGetNumRings@12
+lineGetProviderList@8
+lineGetProviderListA@8
+lineGetProviderListW@8
+lineGetProxyStatus@16
+lineGetQueueInfo@12
+lineGetQueueListA@12
+lineGetQueueListW@12
+lineGetRequest@12
+lineGetRequestA@12
+lineGetRequestW@12
+lineGetStatusMessages@12
+lineGetTranslateCaps@12
+lineGetTranslateCapsA@12
+lineGetTranslateCapsW@12
+lineHandoff@12
+lineHandoffA@12
+lineHandoffW@12
+lineHold@4
+lineInitialize@20
+lineInitializeExA@28
+lineInitializeExW@28
+lineMakeCall@20
+lineMakeCallA@20
+lineMakeCallW@20
+lineMonitorDigits@8
+lineMonitorMedia@8
+lineMonitorTones@12
+lineNegotiateAPIVersion@24
+lineNegotiateExtVersion@24
+lineOpen@36
+lineOpenA@36
+lineOpenW@36
+linePark@16
+lineParkA@16
+lineParkW@16
+linePickup@20
+linePickupA@20
+linePickupW@20
+linePrepareAddToConference@12
+linePrepareAddToConferenceA@12
+linePrepareAddToConferenceW@12
+lineProxyMessage@24
+lineProxyResponse@12
+lineRedirect@12
+lineRedirectA@12
+lineRedirectW@12
+lineRegisterRequestRecipient@16
+lineReleaseUserUserInfo@4
+lineRemoveFromConference@4
+lineRemoveProvider@8
+lineSecureCall@4
+lineSendUserUserInfo@12
+lineSetAgentActivity@12
+lineSetAgentGroup@12
+lineSetAgentMeasurementPeriod@12
+lineSetAgentSessionState@16
+lineSetAgentState@16
+lineSetAgentStateEx@16
+lineSetAppPriority@24
+lineSetAppPriorityA@24
+lineSetAppPriorityW@24
+lineSetAppSpecific@8
+lineSetCallData@12
+lineSetCallParams@20
+lineSetCallPrivilege@8
+lineSetCallQualityOfService@20
+lineSetCallTreatment@8
+lineSetCurrentLocation@8
+lineSetDevConfig@16
+lineSetDevConfigA@16
+lineSetDevConfigW@16
+lineSetLineDevStatus@12
+lineSetMediaControl@48
+lineSetMediaMode@8
+lineSetNumRings@12
+lineSetQueueMeasurementPeriod@12
+lineSetStatusMessages@12
+lineSetTerminal@28
+lineSetTollList@16
+lineSetTollListA@16
+lineSetTollListW@16
+lineSetupConference@24
+lineSetupConferenceA@24
+lineSetupConferenceW@24
+lineSetupTransfer@12
+lineSetupTransferA@12
+lineSetupTransferW@12
+lineShutdown@4
+lineSwapHold@8
+lineTranslateAddress@28
+lineTranslateAddressA@28
+lineTranslateAddressW@28
+lineTranslateDialog@20
+lineTranslateDialogA@20
+lineTranslateDialogW@20
+lineUncompleteCall@8
+lineUnhold@4
+lineUnpark@16
+lineUnparkA@16
+lineUnparkW@16
+phoneClose@4
+phoneConfigDialog@12
+phoneConfigDialogA@12
+phoneConfigDialogW@12
+phoneDevSpecific@12
+phoneGetButtonInfo@12
+phoneGetButtonInfoA@12
+phoneGetButtonInfoW@12
+phoneGetData@16
+phoneGetDevCaps@20
+phoneGetDevCapsA@20
+phoneGetDevCapsW@20
+phoneGetDisplay@8
+phoneGetGain@12
+phoneGetHookSwitch@8
+phoneGetID@12
+phoneGetIDA@12
+phoneGetIDW@12
+phoneGetIcon@12
+phoneGetIconA@12
+phoneGetIconW@12
+phoneGetLamp@12
+phoneGetMessage@12
+phoneGetRing@12
+phoneGetStatus@8
+phoneGetStatusA@8
+phoneGetStatusMessages@16
+phoneGetStatusW@8
+phoneGetVolume@12
+phoneInitialize@20
+phoneInitializeExA@28
+phoneInitializeExW@28
+phoneNegotiateAPIVersion@24
+phoneNegotiateExtVersion@24
+phoneOpen@28
+phoneSetButtonInfo@12
+phoneSetButtonInfoA@12
+phoneSetButtonInfoW@12
+phoneSetData@16
+phoneSetDisplay@20
+phoneSetGain@12
+phoneSetHookSwitch@12
+phoneSetLamp@12
+phoneSetRing@12
+phoneSetStatusMessages@16
+phoneSetVolume@12
+phoneShutdown@4
+tapiGetLocationInfo@8
+tapiGetLocationInfoA@8
+tapiGetLocationInfoW@8
+tapiRequestDrop@8
+tapiRequestMakeCall@16
+tapiRequestMakeCallA@16
+tapiRequestMakeCallW@16
+tapiRequestMediaCall@40
+tapiRequestMediaCallA@40
+tapiRequestMediaCallW@40
diff --git a/lib/libc/mingw/lib32/tbs.def b/lib/libc/mingw/lib32/tbs.def
new file mode 100644
index 0000000000..13bdf3831f
--- /dev/null
+++ b/lib/libc/mingw/lib32/tbs.def
@@ -0,0 +1,13 @@
+;
+; Definition file of tbs.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "tbs.dll"
+EXPORTS
+Tbsi_Context_Create@8
+Tbsi_Get_TCG_Log@12
+Tbsi_Physical_Presence_Command@20
+Tbsip_Cancel_Commands@4
+Tbsip_Context_Close@4
+Tbsip_Submit_Command@28
diff --git a/lib/libc/mingw/lib32/tdh.def b/lib/libc/mingw/lib32/tdh.def
new file mode 100644
index 0000000000..3ed76dceb5
--- /dev/null
+++ b/lib/libc/mingw/lib32/tdh.def
@@ -0,0 +1,43 @@
+;
+; Definition file of tdh.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "tdh.dll"
+EXPORTS
+TdhAggregatePayloadFilters@16
+TdhApplyPayloadFilter@28
+TdhCleanupPayloadEventFilterDescriptor@4
+TdhCloseDecodingHandle@4
+TdhCreatePayloadFilter@24
+TdhDeletePayloadFilter@4
+TdhEnumerateManifestProviderEvents@12
+TdhEnumerateProviderFieldInformation@16
+TdhEnumerateProviderFilters@24
+TdhEnumerateProviders@8
+TdhEnumerateRemoteWBEMProviderFieldInformation@20
+TdhEnumerateRemoteWBEMProviders@12
+TdhFormatProperty@44
+TdhGetAllEventsInformation@24
+TdhGetDecodingParameter@8
+TdhGetEventInformation@20
+TdhGetEventMapInformation@16
+TdhGetManifestEventInformation@16
+TdhGetProperty@28
+TdhGetPropertyOffsetAndSize@24
+TdhGetPropertySize@24
+TdhGetWppMessage@16
+TdhGetWppProperty@20
+TdhLoadManifest@4
+TdhLoadManifestFromBinary@4
+TdhLoadManifestFromMemory@8
+TdhOpenDecodingHandle@4
+TdhQueryProviderFieldInformation@24
+TdhQueryRemoteWBEMProviderFieldInformation@28
+TdhSetDecodingParameter@8
+TdhUnloadManifest@4
+TdhUnloadManifestFromMemory@8
+TdhValidatePayloadFilter@12
+TdhpFindMatchClassFromWBEM@28
+TdhpGetBestTraceEventInfoWBEM@12
+TdhpGetEventMapInfoWBEM@16
diff --git a/lib/libc/mingw/lib32/txfw32.def b/lib/libc/mingw/lib32/txfw32.def
new file mode 100644
index 0000000000..0d109ce8d9
--- /dev/null
+++ b/lib/libc/mingw/lib32/txfw32.def
@@ -0,0 +1,16 @@
+;
+; Definition file of txfw32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "txfw32.dll"
+EXPORTS
+TxfGetThreadMiniVersionForCreate@4
+TxfLogCreateFileReadContext@28
+TxfLogCreateRangeReadContext@36
+TxfLogDestroyReadContext@4
+TxfLogReadRecords@20
+TxfLogRecordGetFileName@20
+TxfLogRecordGetGenericType@16
+TxfReadMetadataInfo@20
+TxfSetThreadMiniVersionForCreate@4
diff --git a/lib/libc/mingw/lib32/usp10.def b/lib/libc/mingw/lib32/usp10.def
new file mode 100644
index 0000000000..91c9a9022f
--- /dev/null
+++ b/lib/libc/mingw/lib32/usp10.def
@@ -0,0 +1,51 @@
+;
+; Definition file of USP10.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "USP10.dll"
+EXPORTS
+LpkPresent@0
+ScriptApplyDigitSubstitution@12
+ScriptApplyLogicalWidth@36
+ScriptBreak@16
+ScriptCPtoX@36
+ScriptCacheGetHeight@12
+ScriptFreeCache@4
+ScriptGetCMap@24
+ScriptGetFontAlternateGlyphs@40
+ScriptGetFontFeatureTags@32
+ScriptGetFontLanguageTags@28
+ScriptGetFontProperties@12
+ScriptGetFontScriptTags@24
+ScriptGetGlyphABCWidth@16
+ScriptGetLogicalWidths@28
+ScriptGetProperties@8
+ScriptIsComplex@12
+ScriptItemize@28
+ScriptItemizeOpenType@32
+ScriptJustify@24
+ScriptLayout@16
+ScriptPlace@36
+ScriptPlaceOpenType@72
+ScriptPositionSingleGlyph@52
+ScriptRecordDigitSubstitution@8
+ScriptShape@40
+ScriptShapeOpenType@64
+ScriptStringAnalyse@52
+ScriptStringCPtoX@16
+ScriptStringFree@4
+ScriptStringGetLogicalWidths@8
+ScriptStringGetOrder@8
+ScriptStringOut@32
+ScriptStringValidate@4
+ScriptStringXtoCP@16
+ScriptString_pLogAttr@4
+ScriptString_pSize@4
+ScriptString_pcOutChars@4
+ScriptSubstituteSingleGlyph@36
+ScriptTextOut@56
+ScriptXtoCP@36
+UspAllocCache@8
+UspAllocTemp@8
+UspFreeMem@4
diff --git a/lib/libc/mingw/lib32/uxtheme.def b/lib/libc/mingw/lib32/uxtheme.def
new file mode 100644
index 0000000000..250fc63dcb
--- /dev/null
+++ b/lib/libc/mingw/lib32/uxtheme.def
@@ -0,0 +1,81 @@
+;
+; Definition file of UxTheme.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "UxTheme.dll"
+EXPORTS
+BeginPanningFeedback@4
+EndPanningFeedback@8
+UpdatePanningFeedback@16
+BeginBufferedAnimation@32
+BeginBufferedPaint@20
+BufferedPaintClear@8
+BufferedPaintInit@0
+BufferedPaintRenderAnimation@8
+BufferedPaintSetAlpha@12
+DrawThemeBackgroundEx@24
+BufferedPaintStopAllAnimations@4
+BufferedPaintUnInit@0
+CloseThemeData@4
+DrawThemeBackground@24
+DrawThemeEdge@32
+DrawThemeIcon@28
+DrawThemeParentBackground@12
+DrawThemeParentBackgroundEx@16
+DrawThemeText@36
+OpenThemeDataEx@12
+DrawThemeTextEx@36
+EnableThemeDialogTexture@8
+EnableTheming@4
+EndBufferedAnimation@8
+EndBufferedPaint@8
+GetBufferedPaintBits@12
+GetBufferedPaintDC@4
+GetBufferedPaintTargetDC@4
+GetBufferedPaintTargetRect@8
+GetCurrentThemeName@24
+GetThemeAppProperties@0
+GetThemeBackgroundContentRect@24
+GetThemeBackgroundExtent@24
+GetThemeBackgroundRegion@24
+GetThemeBitmap@24
+GetThemeBool@20
+GetThemeColor@20
+GetThemeDocumentationProperty@16
+GetThemeEnumValue@20
+GetThemeFilename@24
+GetThemeFont@24
+GetThemeInt@20
+GetThemeIntList@20
+GetThemeMargins@28
+GetThemeMetric@24
+GetThemePartSize@28
+GetThemePosition@20
+GetThemePropertyOrigin@20
+GetThemeRect@20
+GetThemeStream@28
+GetThemeString@24
+GetThemeSysBool@8
+GetThemeSysColor@8
+GetThemeSysColorBrush@8
+GetThemeSysFont@12
+GetThemeSysInt@12
+GetThemeSysSize@8
+GetThemeSysString@16
+GetThemeTextExtent@36
+GetThemeTextMetrics@20
+GetThemeTransitionDuration@24
+GetWindowTheme@4
+HitTestThemeBackground@40
+IsAppThemed@0
+IsCompositionActive@0
+IsThemeActive@0
+IsThemeBackgroundPartiallyTransparent@12
+IsThemeDialogTextureEnabled@4
+IsThemePartDefined@12
+OpenThemeData@8
+SetThemeAppProperties@4
+SetWindowTheme@12
+SetWindowThemeAttribute@16
+ThemeInitApiHook@8
diff --git a/lib/libc/mingw/lib32/virtdisk.def b/lib/libc/mingw/lib32/virtdisk.def
new file mode 100644
index 0000000000..5ca62c9b8e
--- /dev/null
+++ b/lib/libc/mingw/lib32/virtdisk.def
@@ -0,0 +1,33 @@
+;
+; Definition file of VirtDisk.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "VirtDisk.dll"
+EXPORTS
+AddVirtualDiskParent@8
+ApplySnapshotVhdSet@12
+AttachVirtualDisk@24
+BreakMirrorVirtualDisk@4
+CompactVirtualDisk@16
+CreateVirtualDisk@36
+DeleteSnapshotVhdSet@12
+DeleteVirtualDiskMetadata@8
+DetachVirtualDisk@12
+EnumerateVirtualDiskMetadata@12
+ExpandVirtualDisk@16
+GetAllAttachedVirtualDiskPhysicalPaths@8
+GetStorageDependencyInformation@20
+GetVirtualDiskInformation@16
+GetVirtualDiskMetadata@16
+GetVirtualDiskOperationProgress@12
+GetVirtualDiskPhysicalPath@12
+MergeVirtualDisk@16
+MirrorVirtualDisk@16
+ModifyVhdSet@12
+OpenVirtualDisk@24
+QueryChangesVirtualDisk@40
+ResizeVirtualDisk@16
+SetVirtualDiskInformation@8
+SetVirtualDiskMetadata@16
+TakeSnapshotVhdSet@12
diff --git a/lib/libc/mingw/lib32/vssapi.def b/lib/libc/mingw/lib32/vssapi.def
new file mode 100644
index 0000000000..11e570956c
--- /dev/null
+++ b/lib/libc/mingw/lib32/vssapi.def
@@ -0,0 +1,160 @@
+;
+; Definition file of VSSAPI.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "VSSAPI.DLL"
+EXPORTS
+IsVolumeSnapshotted@12
+VssFreeSnapshotProperties@4
+ShouldBlockRevert@8
+; public: __thiscall CVssJetWriter::CVssJetWriter(void)
+??0CVssJetWriter@@QAE@XZ ; has WINAPI (@0)
+; public: __thiscall CVssWriter::CVssWriter(void)
+??0CVssWriter@@QAE@XZ ; has WINAPI (@0)
+; public: virtual __thiscall CVssJetWriter::~CVssJetWriter(void)
+??1CVssJetWriter@@UAE@XZ ; has WINAPI (@0)
+; public: virtual __thiscall CVssWriter::~CVssWriter(void)
+??1CVssWriter@@UAE@XZ ; has WINAPI (@0)
+; protected: bool __stdcall CVssJetWriter::AreComponentsSelected(void)const
+?AreComponentsSelected@CVssJetWriter@@IBG_NXZ ; has WINAPI (@4)
+; protected: bool __stdcall CVssWriter::AreComponentsSelected(void)const
+?AreComponentsSelected@CVssWriter@@IBG_NXZ ; has WINAPI (@4)
+; long __stdcall CreateVssBackupComponents(class IVssBackupComponents **)
+?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z ; has WINAPI (@4)
+; long __stdcall CreateVssExamineWriterMetadata(unsigned short *,class IVssExamineWriterMetadata **)
+?CreateVssExamineWriterMetadata@@YGJPAGPAPAVIVssExamineWriterMetadata@@@Z ; has WINAPI (@8)
+; long __stdcall CreateVssSnapshotSetDescription(struct _GUID,long,class IVssSnapshotSetDescription **)
+?CreateVssSnapshotSetDescription@@YGJU_GUID@@JPAPAVIVssSnapshotSetDescription@@@Z ; has WINAPI (@24)
+; protected: enum _VSS_BACKUP_TYPE __stdcall CVssJetWriter::GetBackupType(void)const
+?GetBackupType@CVssJetWriter@@IBG?AW4_VSS_BACKUP_TYPE@@XZ ; has WINAPI (@4)
+; protected: enum _VSS_BACKUP_TYPE __stdcall CVssWriter::GetBackupType(void)const
+?GetBackupType@CVssWriter@@IBG?AW4_VSS_BACKUP_TYPE@@XZ ; has WINAPI (@4)
+; protected: long __stdcall CVssJetWriter::GetContext(void)const
+?GetContext@CVssJetWriter@@IBGJXZ ; has WINAPI (@4)
+; protected: long __stdcall CVssWriter::GetContext(void)const
+?GetContext@CVssWriter@@IBGJXZ ; has WINAPI (@4)
+; protected: enum _VSS_APPLICATION_LEVEL __stdcall CVssJetWriter::GetCurrentLevel(void)const
+?GetCurrentLevel@CVssJetWriter@@IBG?AW4_VSS_APPLICATION_LEVEL@@XZ ; has WINAPI (@4)
+; protected: enum _VSS_APPLICATION_LEVEL __stdcall CVssWriter::GetCurrentLevel(void)const
+?GetCurrentLevel@CVssWriter@@IBG?AW4_VSS_APPLICATION_LEVEL@@XZ ; has WINAPI (@4)
+; protected: struct _GUID __stdcall CVssJetWriter::GetCurrentSnapshotSetId(void)const
+?GetCurrentSnapshotSetId@CVssJetWriter@@IBG?AU_GUID@@XZ ; has WINAPI (@8)
+; protected: struct _GUID __stdcall CVssWriter::GetCurrentSnapshotSetId(void)const
+?GetCurrentSnapshotSetId@CVssWriter@@IBG?AU_GUID@@XZ ; has WINAPI (@8)
+; protected: unsigned short const **__stdcall CVssJetWriter::GetCurrentVolumeArray(void)const
+?GetCurrentVolumeArray@CVssJetWriter@@IBGPAPBGXZ ; has WINAPI (@4)
+; protected: unsigned short const **__stdcall CVssWriter::GetCurrentVolumeArray(void)const
+?GetCurrentVolumeArray@CVssWriter@@IBGPAPBGXZ ; has WINAPI (@4)
+; protected: unsigned int __stdcall CVssJetWriter::GetCurrentVolumeCount(void)const
+?GetCurrentVolumeCount@CVssJetWriter@@IBGIXZ ; has WINAPI (@4)
+; protected: unsigned int __stdcall CVssWriter::GetCurrentVolumeCount(void)const
+?GetCurrentVolumeCount@CVssWriter@@IBGIXZ ; has WINAPI (@4)
+; protected: enum _VSS_RESTORE_TYPE __stdcall CVssJetWriter::GetRestoreType(void)const
+?GetRestoreType@CVssJetWriter@@IBG?AW4_VSS_RESTORE_TYPE@@XZ ; has WINAPI (@4)
+; protected: enum _VSS_RESTORE_TYPE __stdcall CVssWriter::GetRestoreType(void)const
+?GetRestoreType@CVssWriter@@IBG?AW4_VSS_RESTORE_TYPE@@XZ ; has WINAPI (@4)
+; protected: long __stdcall CVssJetWriter::GetSnapshotDeviceName(unsigned short const *,unsigned short const **)const
+?GetSnapshotDeviceName@CVssJetWriter@@IBGJPBGPAPBG@Z ; has WINAPI (@12)
+; protected: long __stdcall CVssWriter::GetSnapshotDeviceName(unsigned short const *,unsigned short const **)const
+?GetSnapshotDeviceName@CVssWriter@@IBGJPBGPAPBG@Z ; has WINAPI (@12)
+; public: long __stdcall CVssJetWriter::Initialize(struct _GUID,unsigned short const *,bool,bool,unsigned short const *,unsigned short const *,unsigned long)
+?Initialize@CVssJetWriter@@QAGJU_GUID@@PBG_N211K@Z ; has WINAPI (@44)
+; public: long __stdcall CVssWriter::Initialize(struct _GUID,unsigned short const *,enum VSS_USAGE_TYPE,enum VSS_SOURCE_TYPE,enum _VSS_APPLICATION_LEVEL,unsigned long,enum VSS_ALTERNATE_WRITER_STATE,bool,unsigned short const *)
+?Initialize@CVssWriter@@QAGJU_GUID@@PBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N1@Z ; has WINAPI (@52)
+; public: long __stdcall CVssWriter::InstallAlternateWriter(struct _GUID,struct _GUID)
+?InstallAlternateWriter@CVssWriter@@QAGJU_GUID@@0@Z ; has WINAPI (@36)
+; protected: bool __stdcall CVssJetWriter::IsBootableSystemStateBackedUp(void)const
+?IsBootableSystemStateBackedUp@CVssJetWriter@@IBG_NXZ ; has WINAPI (@4)
+; protected: bool __stdcall CVssWriter::IsBootableSystemStateBackedUp(void)const
+?IsBootableSystemStateBackedUp@CVssWriter@@IBG_NXZ ; has WINAPI (@4)
+; protected: bool __stdcall CVssJetWriter::IsPartialFileSupportEnabled(void)const
+?IsPartialFileSupportEnabled@CVssJetWriter@@IBG_NXZ ; has WINAPI (@4)
+; protected: bool __stdcall CVssWriter::IsPartialFileSupportEnabled(void)const
+?IsPartialFileSupportEnabled@CVssWriter@@IBG_NXZ ; has WINAPI (@4)
+; protected: bool __stdcall CVssJetWriter::IsPathAffected(unsigned short const *)const
+?IsPathAffected@CVssJetWriter@@IBG_NPBG@Z ; has WINAPI (@8)
+; protected: bool __stdcall CVssWriter::IsPathAffected(unsigned short const *)const
+?IsPathAffected@CVssWriter@@IBG_NPBG@Z ; has WINAPI (@8)
+; long __stdcall LoadVssSnapshotSetDescription(unsigned short const *,class IVssSnapshotSetDescription **,struct _GUID)
+?LoadVssSnapshotSetDescription@@YGJPBGPAPAVIVssSnapshotSetDescription@@U_GUID@@@Z ; has WINAPI (@24)
+; public: virtual void __stdcall CVssJetWriter::OnAbortBegin(void)
+?OnAbortBegin@CVssJetWriter@@UAGXXZ ; has WINAPI (@4)
+; public: virtual void __stdcall CVssJetWriter::OnAbortEnd(void)
+?OnAbortEnd@CVssJetWriter@@UAGXXZ ; has WINAPI (@4)
+; public: virtual bool __stdcall CVssWriter::OnBackOffIOOnVolume(unsigned short *,struct _GUID,struct _GUID)
+?OnBackOffIOOnVolume@CVssWriter@@UAG_NPAGU_GUID@@1@Z ; has WINAPI (@40)
+; public: virtual bool __stdcall CVssWriter::OnBackupComplete(class IVssWriterComponents *)
+?OnBackupComplete@CVssWriter@@UAG_NPAVIVssWriterComponents@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssJetWriter::OnBackupCompleteBegin(class IVssWriterComponents *)
+?OnBackupCompleteBegin@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssJetWriter::OnBackupCompleteEnd(class IVssWriterComponents *,bool)
+?OnBackupCompleteEnd@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@_N@Z ; has WINAPI (@12)
+; public: virtual bool __stdcall CVssWriter::OnBackupShutdown(struct _GUID)
+?OnBackupShutdown@CVssWriter@@UAG_NU_GUID@@@Z ; has WINAPI (@20)
+; public: virtual bool __stdcall CVssWriter::OnContinueIOOnVolume(unsigned short *,struct _GUID,struct _GUID)
+?OnContinueIOOnVolume@CVssWriter@@UAG_NPAGU_GUID@@1@Z ; has WINAPI (@40)
+; public: virtual bool __stdcall CVssJetWriter::OnFreezeBegin(void)
+?OnFreezeBegin@CVssJetWriter@@UAG_NXZ ; has WINAPI (@4)
+; public: virtual bool __stdcall CVssJetWriter::OnFreezeEnd(bool)
+?OnFreezeEnd@CVssJetWriter@@UAG_N_N@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssJetWriter::OnIdentify(class IVssCreateWriterMetadata *)
+?OnIdentify@CVssJetWriter@@UAG_NPAVIVssCreateWriterMetadata@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssWriter::OnIdentify(class IVssCreateWriterMetadata *)
+?OnIdentify@CVssWriter@@UAG_NPAVIVssCreateWriterMetadata@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssWriter::OnPostRestore(class IVssWriterComponents *)
+?OnPostRestore@CVssWriter@@UAG_NPAVIVssWriterComponents@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssJetWriter::OnPostRestoreBegin(class IVssWriterComponents *)
+?OnPostRestoreBegin@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssJetWriter::OnPostRestoreEnd(class IVssWriterComponents *,bool)
+?OnPostRestoreEnd@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@_N@Z ; has WINAPI (@12)
+; public: virtual bool __stdcall CVssJetWriter::OnPostSnapshot(class IVssWriterComponents *)
+?OnPostSnapshot@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssWriter::OnPostSnapshot(class IVssWriterComponents *)
+?OnPostSnapshot@CVssWriter@@UAG_NPAVIVssWriterComponents@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssWriter::OnPreRestore(class IVssWriterComponents *)
+?OnPreRestore@CVssWriter@@UAG_NPAVIVssWriterComponents@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssJetWriter::OnPreRestoreBegin(class IVssWriterComponents *)
+?OnPreRestoreBegin@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssJetWriter::OnPreRestoreEnd(class IVssWriterComponents *,bool)
+?OnPreRestoreEnd@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@_N@Z ; has WINAPI (@12)
+; public: virtual bool __stdcall CVssWriter::OnPrepareBackup(class IVssWriterComponents *)
+?OnPrepareBackup@CVssWriter@@UAG_NPAVIVssWriterComponents@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssJetWriter::OnPrepareBackupBegin(class IVssWriterComponents *)
+?OnPrepareBackupBegin@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssJetWriter::OnPrepareBackupEnd(class IVssWriterComponents *,bool)
+?OnPrepareBackupEnd@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@_N@Z ; has WINAPI (@12)
+; public: virtual bool __stdcall CVssJetWriter::OnPrepareSnapshotBegin(void)
+?OnPrepareSnapshotBegin@CVssJetWriter@@UAG_NXZ ; has WINAPI (@4)
+; public: virtual bool __stdcall CVssJetWriter::OnPrepareSnapshotEnd(bool)
+?OnPrepareSnapshotEnd@CVssJetWriter@@UAG_N_N@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssJetWriter::OnThawBegin(void)
+?OnThawBegin@CVssJetWriter@@UAG_NXZ ; has WINAPI (@4)
+; public: virtual bool __stdcall CVssJetWriter::OnThawEnd(bool)
+?OnThawEnd@CVssJetWriter@@UAG_N_N@Z ; has WINAPI (@8)
+; public: virtual bool __stdcall CVssWriter::OnVSSApplicationStartup(void)
+?OnVSSApplicationStartup@CVssWriter@@UAG_NXZ ; has WINAPI (@4)
+; public: virtual bool __stdcall CVssWriter::OnVSSShutdown(void)
+?OnVSSShutdown@CVssWriter@@UAG_NXZ ; has WINAPI (@4)
+; protected: long __stdcall CVssJetWriter::SetWriterFailure(long)
+?SetWriterFailure@CVssJetWriter@@IAGJJ@Z ; has WINAPI (@8)
+; protected: long __stdcall CVssWriter::SetWriterFailure(long)
+?SetWriterFailure@CVssWriter@@IAGJJ@Z ; has WINAPI (@8)
+; public: long __stdcall CVssWriter::Subscribe(unsigned long)
+?Subscribe@CVssWriter@@QAGJK@Z ; has WINAPI (@8)
+; public: void __stdcall CVssJetWriter::Uninitialize(void)
+?Uninitialize@CVssJetWriter@@QAGXXZ ; has WINAPI (@4)
+; public: long __stdcall CVssWriter::Unsubscribe(void)
+?Unsubscribe@CVssWriter@@QAGJXZ ; has WINAPI (@4)
+CreateVssBackupComponentsInternal@4
+CreateVssExamineWriterMetadataInternal@8
+CreateVssExpressWriterInternal@4
+CreateWriter@8
+CreateWriterEx@8
+;DllCanUnloadNow@0
+;DllGetClassObject@12
+GetProviderMgmtInterface@36
+GetProviderMgmtInterfaceInternal@36
+IsVolumeSnapshottedInternal@12
+ShouldBlockRevertInternal@8
+VssFreeSnapshotPropertiesInternal@4
diff --git a/lib/libc/mingw/lib32/wdsclientapi.def b/lib/libc/mingw/lib32/wdsclientapi.def
new file mode 100644
index 0000000000..0ce0201113
--- /dev/null
+++ b/lib/libc/mingw/lib32/wdsclientapi.def
@@ -0,0 +1,46 @@
+;
+; Definition file of WDSCLIENTAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "WDSCLIENTAPI.dll"
+EXPORTS
+WdsCliAuthorizeSession@8
+WdsCliCancelTransfer@4
+WdsCliClose@4
+WdsCliCreateSession@12
+WdsCliFindFirstImage@8
+WdsCliFindNextImage@4
+WdsCliFreeDomainJoinInformation@4
+WdsCliFreeStringArray@8
+WdsCliFreeUnattendVariables@8
+WdsCliGetClientUnattend@20
+WdsCliGetDomainJoinInformation@16
+WdsCliGetEnumerationFlags@8
+WdsCliGetImageArchitecture@8
+WdsCliGetImageDescription@8
+WdsCliGetImageFiles@12
+WdsCliGetImageGroup@8
+WdsCliGetImageHalName@8
+WdsCliGetImageHandleFromFindHandle@8
+WdsCliGetImageHandleFromTransferHandle@8
+WdsCliGetImageIndex@8
+WdsCliGetImageLanguage@8
+WdsCliGetImageLanguages@12
+WdsCliGetImageLastModifiedTime@8
+WdsCliGetImageName@8
+WdsCliGetImageNamespace@8
+WdsCliGetImageParameter@16
+WdsCliGetImagePath@8
+WdsCliGetImageSize@8
+WdsCliGetImageType@8
+WdsCliGetImageVersion@8
+WdsCliGetTransferSize@8
+WdsCliGetUnattendVariables@20
+WdsCliInitializeLog@16
+WdsCliLog
+WdsCliObtainDriverPackages@16
+WdsCliRegisterTrace@4
+WdsCliTransferFile@36
+WdsCliTransferImage@28
+WdsCliWaitForTransfer@4
diff --git a/lib/libc/mingw/lib32/wdstptc.def b/lib/libc/mingw/lib32/wdstptc.def
new file mode 100644
index 0000000000..44cfa06e93
--- /dev/null
+++ b/lib/libc/mingw/lib32/wdstptc.def
@@ -0,0 +1,22 @@
+;
+; Definition file of WDSTPTC.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "WDSTPTC.dll"
+EXPORTS
+;WdsTptcDownload@36
+WdsTransportClientRegisterTrace@4
+WdsTransportClientAddRefBuffer@4
+WdsTransportClientCancelSession@4
+WdsTransportClientCancelSessionEx@8
+WdsTransportClientCloseSession@4
+WdsTransportClientCompleteReceive@12
+WdsTransportClientInitialize@0
+WdsTransportClientInitializeSession@12
+WdsTransportClientQueryStatus@12
+WdsTransportClientRegisterCallback@12
+WdsTransportClientReleaseBuffer@4
+WdsTransportClientShutdown@0
+WdsTransportClientStartSession@4
+WdsTransportClientWaitForCompletion@8
diff --git a/lib/libc/mingw/lib32/websocket.def b/lib/libc/mingw/lib32/websocket.def
new file mode 100644
index 0000000000..612561a236
--- /dev/null
+++ b/lib/libc/mingw/lib32/websocket.def
@@ -0,0 +1,15 @@
+LIBRARY "websocket.dll"
+EXPORTS
+WebSocketAbortHandle@4
+WebSocketBeginClientHandshake@36
+WebSocketBeginServerHandshake@32
+WebSocketCompleteAction@12
+WebSocketCreateClientHandle@12
+WebSocketCreateServerHandle@12
+WebSocketDeleteHandle@4
+WebSocketEndClientHandshake@24
+WebSocketEndServerHandshake@4
+WebSocketGetAction@32
+WebSocketGetGlobalProperty@12
+WebSocketReceive@12
+WebSocketSend@16
diff --git a/lib/libc/mingw/lib32/wecapi.def b/lib/libc/mingw/lib32/wecapi.def
new file mode 100644
index 0000000000..058e2fa99d
--- /dev/null
+++ b/lib/libc/mingw/lib32/wecapi.def
@@ -0,0 +1,24 @@
+;
+; Definition file of WecApi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "WecApi.dll"
+EXPORTS
+EcIsConfigRequired@4
+EcQuickConfig@0
+EcClose@4
+EcDeleteSubscription@8
+EcEnumNextSubscription@16
+EcGetObjectArrayProperty@28
+EcGetObjectArraySize@8
+EcGetSubscriptionProperty@24
+EcGetSubscriptionRunTimeStatus@28
+EcInsertObjectArrayElement@8
+EcOpenSubscription@12
+EcOpenSubscriptionEnum@4
+EcRemoveObjectArrayElement@8
+EcRetrySubscription@12
+EcSaveSubscription@8
+EcSetObjectArrayProperty@20
+EcSetSubscriptionProperty@16
diff --git a/lib/libc/mingw/lib32/wer.def b/lib/libc/mingw/lib32/wer.def
new file mode 100644
index 0000000000..1fa1bcf529
--- /dev/null
+++ b/lib/libc/mingw/lib32/wer.def
@@ -0,0 +1,84 @@
+;
+; Definition file of wer.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "wer.dll"
+EXPORTS
+WerSysprepCleanup@0
+WerSysprepGeneralize@0
+WerSysprepSpecialize@0
+WerUnattendedSetup@0
+WerpAddAppCompatData@12
+WerpAddFile@24
+WerpAddMemoryBlock@12
+WerpAddRegisteredDataToReport@8
+WerpAddSecondaryParameter@12
+WerpAddTextToReport@12
+WerpArchiveReport@20
+WerpCancelResponseDownload@4
+WerpCancelUpload@4
+WerpCloseStore@4
+WerpCreateMachineStore@0
+WerpDeleteReport@8
+WerpDestroyWerString@4
+WerpDownloadResponse@28
+WerpDownloadResponseTemplate@12
+WerpEnumerateStoreNext@8
+WerpEnumerateStoreStart@4
+WerpExtractReportFiles@12
+WerpGetBucketId@8
+WerpGetDynamicParameter@16
+WerpGetEventType@8
+WerpGetFileByIndex@24
+WerpGetFilePathByIndex@12
+WerpGetNumFiles@8
+WerpGetNumSecParams@8
+WerpGetNumSigParams@8
+WerpGetReportFinalConsent@8
+WerpGetReportFlags@8
+WerpGetReportInformation@8
+WerpGetReportTime@8
+WerpGetReportType@8
+WerpGetResponseId@12
+WerpGetResponseUrl@8
+WerpGetSecParamByIndex@16
+WerpGetSigParamByIndex@16
+WerpGetStoreLocation@12
+WerpGetStoreType@8
+WerpGetTextFromReport@12
+WerpGetUIParamByIndex@12
+WerpGetUploadTime@8
+WerpGetWerStringData@4
+WerpIsTransportAvailable@0
+WerpLoadReport@16
+WerpOpenMachineArchive@8
+WerpOpenMachineQueue@8
+WerpOpenUserArchive@8
+WerpReportCancel@4
+WerpRestartApplication@20
+WerpSetDynamicParameter@16
+WerpSetEventName@8
+WerpSetReportFlags@8
+WerpSetReportInformation@8
+WerpSetReportTime@8
+WerpSetReportUploadContextToken@8
+WerpShowNXNotification@4
+WerpShowSecondLevelConsent@12
+WerpShowUpsellUI@8
+WerpSubmitReportFromStore@28
+WerpSvcReportFromMachineQueue@8
+WerAddExcludedApplication@8
+WerRemoveExcludedApplication@8
+WerReportAddDump@28
+WerReportAddFile@16
+WerReportCloseHandle@4
+WerReportCreate@16
+WerReportSetParameter@16
+WerReportSetUIOption@12
+WerReportSubmit@16
+WerpGetReportConsent@12
+WerpIsDisabled@8
+WerpOpenUserQueue@8
+WerpPromtUser@16
+WerpSetCallBack@12
diff --git a/lib/libc/mingw/lib32/wevtapi.def b/lib/libc/mingw/lib32/wevtapi.def
new file mode 100644
index 0000000000..5434a001c0
--- /dev/null
+++ b/lib/libc/mingw/lib32/wevtapi.def
@@ -0,0 +1,52 @@
+;
+; Definition file of wevtapi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "wevtapi.dll"
+EXPORTS
+EvtIntSysprepCleanup@0
+EvtSetObjectArrayProperty@20
+EvtArchiveExportedLog@16
+EvtCancel@4
+EvtClearLog@16
+EvtClose@4
+EvtCreateBookmark@4
+EvtCreateRenderContext@12
+EvtExportLog@20
+EvtFormatMessage@36
+EvtGetChannelConfigProperty@24
+EvtGetEventInfo@20
+EvtGetEventMetadataProperty@24
+EvtGetExtendedStatus@12
+EvtGetLogInfo@20
+EvtGetObjectArrayProperty@28
+EvtGetObjectArraySize@8
+EvtGetPublisherMetadataProperty@24
+EvtGetQueryInfo@20
+EvtIntAssertConfig@12
+EvtIntCreateLocalLogfile@8
+EvtIntGetClassicLogDisplayName@28
+EvtIntRenderResourceEventTemplate@0
+EvtIntReportAuthzEventAndSourceAsync@44
+EvtIntReportEventAndSourceAsync@44
+EvtIntRetractConfig@12
+EvtIntWriteXmlEventToLocalLogfile@12
+EvtNext@24
+EvtNextChannelPath@16
+EvtNextEventMetadata@8
+EvtNextPublisherId@16
+EvtOpenChannelConfig@12
+EvtOpenChannelEnum@8
+EvtOpenEventMetadataEnum@8
+EvtOpenLog@12
+EvtOpenPublisherEnum@8
+EvtOpenPublisherMetadata@20
+EvtOpenSession@16
+EvtQuery@16
+EvtRender@28
+EvtSaveChannelConfig@8
+EvtSeek@24
+EvtSetChannelConfigProperty@16
+EvtSubscribe@32
+EvtUpdateBookmark@8
diff --git a/lib/libc/mingw/lib32/windowscodecs.def b/lib/libc/mingw/lib32/windowscodecs.def
new file mode 100644
index 0000000000..9308831d78
--- /dev/null
+++ b/lib/libc/mingw/lib32/windowscodecs.def
@@ -0,0 +1,116 @@
+LIBRARY "windowscodecs.dll"
+EXPORTS
+IEnumString_Next_WIC_Proxy@16
+IEnumString_Reset_WIC_Proxy@4
+IPropertyBag2_Write_Proxy@16
+IWICBitmapClipper_Initialize_Proxy@12
+IWICBitmapCodecInfo_DoesSupportAnimation_Proxy@8
+IWICBitmapCodecInfo_DoesSupportLossless_Proxy@8
+IWICBitmapCodecInfo_DoesSupportMultiframe_Proxy@8
+IWICBitmapCodecInfo_GetContainerFormat_Proxy@8
+IWICBitmapCodecInfo_GetDeviceManufacturer_Proxy@16
+IWICBitmapCodecInfo_GetDeviceModels_Proxy@16
+IWICBitmapCodecInfo_GetFileExtensions_Proxy@16
+IWICBitmapCodecInfo_GetMimeTypes_Proxy@16
+IWICBitmapDecoder_CopyPalette_Proxy@8
+IWICBitmapDecoder_GetColorContexts_Proxy@16
+IWICBitmapDecoder_GetDecoderInfo_Proxy@8
+IWICBitmapDecoder_GetFrameCount_Proxy@8
+IWICBitmapDecoder_GetFrame_Proxy@12
+IWICBitmapDecoder_GetMetadataQueryReader_Proxy@8
+IWICBitmapDecoder_GetPreview_Proxy@8
+IWICBitmapDecoder_GetThumbnail_Proxy@8
+IWICBitmapEncoder_Commit_Proxy@4
+IWICBitmapEncoder_CreateNewFrame_Proxy@12
+IWICBitmapEncoder_GetEncoderInfo_Proxy@8
+IWICBitmapEncoder_GetMetadataQueryWriter_Proxy@8
+IWICBitmapEncoder_Initialize_Proxy@12
+IWICBitmapEncoder_SetPalette_Proxy@8
+IWICBitmapEncoder_SetThumbnail_Proxy@8
+IWICBitmapFlipRotator_Initialize_Proxy@12
+IWICBitmapFrameDecode_GetColorContexts_Proxy@16
+IWICBitmapFrameDecode_GetMetadataQueryReader_Proxy@8
+IWICBitmapFrameDecode_GetThumbnail_Proxy@8
+IWICBitmapFrameEncode_Commit_Proxy@4
+IWICBitmapFrameEncode_GetMetadataQueryWriter_Proxy@8
+IWICBitmapFrameEncode_Initialize_Proxy@8
+IWICBitmapFrameEncode_SetColorContexts_Proxy@12
+IWICBitmapFrameEncode_SetResolution_Proxy@20
+IWICBitmapFrameEncode_SetSize_Proxy@12
+IWICBitmapFrameEncode_SetThumbnail_Proxy@8
+IWICBitmapFrameEncode_WriteSource_Proxy@12
+IWICBitmapLock_GetDataPointer_STA_Proxy@12
+IWICBitmapLock_GetStride_Proxy@8
+IWICBitmapScaler_Initialize_Proxy@20
+IWICBitmapSource_CopyPalette_Proxy@8
+IWICBitmapSource_CopyPixels_Proxy@20
+IWICBitmapSource_GetPixelFormat_Proxy@8
+IWICBitmapSource_GetResolution_Proxy@12
+IWICBitmapSource_GetSize_Proxy@12
+IWICBitmap_Lock_Proxy@16
+IWICBitmap_SetPalette_Proxy@8
+IWICBitmap_SetResolution_Proxy@20
+IWICColorContext_InitializeFromMemory_Proxy@12
+IWICComponentFactory_CreateMetadataWriterFromReader_Proxy@16
+IWICComponentFactory_CreateQueryWriterFromBlockWriter_Proxy@12
+IWICComponentInfo_GetAuthor_Proxy@16
+IWICComponentInfo_GetCLSID_Proxy@8
+IWICComponentInfo_GetFriendlyName_Proxy@16
+IWICComponentInfo_GetSpecVersion_Proxy@16
+IWICComponentInfo_GetVersion_Proxy@16
+IWICFastMetadataEncoder_Commit_Proxy@4
+IWICFastMetadataEncoder_GetMetadataQueryWriter_Proxy@8
+IWICFormatConverter_Initialize_Proxy@32
+IWICImagingFactory_CreateBitmapClipper_Proxy@8
+IWICImagingFactory_CreateBitmapFlipRotator_Proxy@8
+IWICImagingFactory_CreateBitmapFromHBITMAP_Proxy@20
+IWICImagingFactory_CreateBitmapFromHICON_Proxy@12
+IWICImagingFactory_CreateBitmapFromMemory_Proxy@32
+IWICImagingFactory_CreateBitmapFromSource_Proxy@16
+IWICImagingFactory_CreateBitmapScaler_Proxy@8
+IWICImagingFactory_CreateBitmap_Proxy@24
+IWICImagingFactory_CreateComponentInfo_Proxy@12
+IWICImagingFactory_CreateDecoderFromFileHandle_Proxy@20
+IWICImagingFactory_CreateDecoderFromFilename_Proxy@24
+IWICImagingFactory_CreateDecoderFromStream_Proxy@20
+IWICImagingFactory_CreateEncoder_Proxy@16
+IWICImagingFactory_CreateFastMetadataEncoderFromDecoder_Proxy@12
+IWICImagingFactory_CreateFastMetadataEncoderFromFrameDecode_Proxy@12
+IWICImagingFactory_CreateFormatConverter_Proxy@8
+IWICImagingFactory_CreatePalette_Proxy@8
+IWICImagingFactory_CreateQueryWriterFromReader_Proxy@16
+IWICImagingFactory_CreateQueryWriter_Proxy@16
+IWICImagingFactory_CreateStream_Proxy@8
+IWICMetadataBlockReader_GetCount_Proxy@8
+IWICMetadataBlockReader_GetReaderByIndex_Proxy@12
+IWICMetadataQueryReader_GetContainerFormat_Proxy@8
+IWICMetadataQueryReader_GetEnumerator_Proxy@8
+IWICMetadataQueryReader_GetLocation_Proxy@16
+IWICMetadataQueryReader_GetMetadataByName_Proxy@12
+IWICMetadataQueryWriter_RemoveMetadataByName_Proxy@8
+IWICMetadataQueryWriter_SetMetadataByName_Proxy@12
+IWICPalette_GetColorCount_Proxy@8
+IWICPalette_GetColors_Proxy@16
+IWICPalette_GetType_Proxy@8
+IWICPalette_HasAlpha_Proxy@8
+IWICPalette_InitializeCustom_Proxy@12
+IWICPalette_InitializeFromBitmap_Proxy@16
+IWICPalette_InitializeFromPalette_Proxy@8
+IWICPalette_InitializePredefined_Proxy@12
+IWICPixelFormatInfo_GetBitsPerPixel_Proxy@8
+IWICPixelFormatInfo_GetChannelCount_Proxy@8
+IWICPixelFormatInfo_GetChannelMask_Proxy@20
+IWICStream_InitializeFromIStream_Proxy@8
+IWICStream_InitializeFromMemory_Proxy@12
+WICConvertBitmapSource@12
+WICCreateBitmapFromSection@28
+WICCreateBitmapFromSectionEx@32
+WICCreateColorContext_Proxy@8
+WICCreateImagingFactory_Proxy@8
+WICGetMetadataContentSize@12
+WICMapGuidToShortName@16
+WICMapSchemaToName@20
+WICMapShortNameToGuid@8
+WICMatchMetadataContent@16
+WICSerializeMetadataContent@16
+WICSetEncoderFormat_Proxy@16
diff --git a/lib/libc/mingw/lib32/winhttp.def b/lib/libc/mingw/lib32/winhttp.def
new file mode 100644
index 0000000000..720e4ba1a4
--- /dev/null
+++ b/lib/libc/mingw/lib32/winhttp.def
@@ -0,0 +1,76 @@
+;
+; Definition file of WINHTTP.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "WINHTTP.dll"
+EXPORTS
+WinHttpPacJsWorkerMain@8
+DllCanUnloadNow@0
+DllGetClassObject@12
+Private1@20
+SvchostPushServiceGlobals@4
+WinHttpAddRequestHeaders@16
+WinHttpAddRequestHeadersEx@32
+WinHttpAutoProxySvcMain@8
+WinHttpCheckPlatform@0
+WinHttpCloseHandle@4
+WinHttpConnect@16
+WinHttpConnectionDeletePolicyEntries@8
+WinHttpConnectionDeleteProxyInfo@8
+WinHttpConnectionFreeNameList@4
+WinHttpConnectionFreeProxyInfo@4
+WinHttpConnectionFreeProxyList@4
+WinHttpConnectionGetNameList@4
+WinHttpConnectionGetProxyInfo@12
+WinHttpConnectionGetProxyList@8
+WinHttpConnectionSetPolicyEntries@12
+WinHttpConnectionSetProxyInfo@12
+WinHttpConnectionUpdateIfIndexTable@8
+WinHttpCrackUrl@16
+WinHttpCreateProxyResolver@8
+WinHttpCreateUrl@16
+WinHttpDetectAutoProxyConfigUrl@8
+WinHttpFreeProxyResult@4
+WinHttpFreeProxyResultEx@4
+WinHttpFreeProxySettings@4
+WinHttpGetDefaultProxyConfiguration@4
+WinHttpGetIEProxyConfigForCurrentUser@4
+WinHttpGetProxyForUrl@16
+WinHttpGetProxyForUrlEx2@24
+WinHttpGetProxyForUrlEx@16
+WinHttpGetProxyForUrlHvsi@36
+WinHttpGetProxyResult@8
+WinHttpGetProxyResultEx@8
+WinHttpGetProxySettingsVersion@8
+WinHttpGetTunnelSocket@16
+WinHttpOpen@20
+WinHttpOpenRequest@28
+WinHttpProbeConnectivity@24
+WinHttpQueryAuthSchemes@16
+WinHttpQueryDataAvailable@8
+WinHttpQueryHeaders@24
+WinHttpQueryOption@16
+WinHttpReadData@16
+WinHttpReadProxySettings@28
+WinHttpReadProxySettingsHvsi@32
+WinHttpReceiveResponse@8
+WinHttpResetAutoProxy@8
+WinHttpSaveProxyCredentials@16
+WinHttpSendRequest@28
+WinHttpSetCredentials@24
+WinHttpSetDefaultProxyConfiguration@4
+WinHttpSetOption@16
+WinHttpSetProxySettingsPerUser@4
+WinHttpSetStatusCallback@16
+WinHttpSetTimeouts@20
+WinHttpTimeFromSystemTime@8
+WinHttpTimeToSystemTime@8
+WinHttpWebSocketClose@16
+WinHttpWebSocketCompleteUpgrade@8
+WinHttpWebSocketQueryCloseStatus@20
+WinHttpWebSocketReceive@20
+WinHttpWebSocketSend@16
+WinHttpWebSocketShutdown@16
+WinHttpWriteData@16
+WinHttpWriteProxySettings@12
diff --git a/lib/libc/mingw/lib32/wininet.def b/lib/libc/mingw/lib32/wininet.def
new file mode 100644
index 0000000000..291d785ac1
--- /dev/null
+++ b/lib/libc/mingw/lib32/wininet.def
@@ -0,0 +1,313 @@
+; Which header declares the functions not in wininet?
+LIBRARY WININET.DLL
+EXPORTS
+DispatchAPICall@16
+AppCacheCheckManifest@32
+AppCacheCloseHandle@4
+AppCacheCreateAndCommitFile@20
+AppCacheDeleteGroup@4
+AppCacheDeleteIEGroup@4
+AppCacheDuplicateHandle@8
+AppCacheFinalize@16
+AppCacheFreeDownloadList@4
+AppCacheFreeGroupList@4
+AppCacheFreeIESpace@8
+AppCacheFreeSpace@8
+AppCacheGetDownloadList@8
+AppCacheGetFallbackUrl@12
+AppCacheGetGroupList@4
+AppCacheGetIEGroupList@4
+AppCacheGetInfo@8
+AppCacheGetManifestUrl@8
+AppCacheLookup@12
+CommitUrlCacheEntryA@44
+CommitUrlCacheEntryBinaryBlob@32
+CommitUrlCacheEntryW@44
+CreateMD5SSOHash@16
+CreateUrlCacheContainerA@32
+CreateUrlCacheContainerW@32
+CreateUrlCacheEntryA@20
+CreateUrlCacheEntryExW@24
+CreateUrlCacheEntryW@20
+CreateUrlCacheGroup@8
+DeleteIE3Cache@16
+DeleteUrlCacheContainerA@8
+DeleteUrlCacheContainerW@8
+DeleteUrlCacheEntry@4
+DeleteUrlCacheEntryA@4
+DeleteUrlCacheEntryW@4
+DeleteUrlCacheGroup@16
+DeleteWpadCacheForNetworks@4
+DetectAutoProxyUrl@12
+DoConnectoidsExist@0
+ExportCookieFileA@8
+ExportCookieFileW@8
+FindCloseUrlCache@4
+FindFirstUrlCacheContainerA@16
+FindFirstUrlCacheContainerW@16
+FindFirstUrlCacheEntryA@12
+FindFirstUrlCacheEntryExA@40
+FindFirstUrlCacheEntryExW@40
+FindFirstUrlCacheEntryW@12
+FindFirstUrlCacheGroup@24
+FindNextUrlCacheContainerA@12
+FindNextUrlCacheContainerW@12
+FindNextUrlCacheEntryA@12
+FindNextUrlCacheEntryExA@24
+FindNextUrlCacheEntryExW@24
+FindNextUrlCacheEntryW@12
+FindNextUrlCacheGroup@12
+FindP3PPolicySymbol@4
+ForceNexusLookup@0
+ForceNexusLookupExW@20
+FreeP3PObject@4
+FreeUrlCacheSpaceA@12
+FreeUrlCacheSpaceW@12
+FtpCommandA@24
+FtpCommandW@24
+FtpCreateDirectoryA@8
+FtpCreateDirectoryW@8
+FtpDeleteFileA@8
+FtpDeleteFileW@8
+FtpFindFirstFileA@20
+FtpFindFirstFileW@20
+FtpGetCurrentDirectoryA@12
+FtpGetCurrentDirectoryW@12
+FtpGetFileA@28
+FtpGetFileEx@28
+FtpGetFileSize@8
+FtpGetFileW@28
+FtpOpenFileA@20
+FtpOpenFileW@20
+FtpPutFileA@20
+FtpPutFileEx@20
+FtpPutFileW@20
+FtpRemoveDirectoryA@8
+FtpRemoveDirectoryW@8
+FtpRenameFileA@12
+FtpRenameFileW@12
+FtpSetCurrentDirectoryA@8
+FtpSetCurrentDirectoryW@8
+GetDiskInfoA@16
+GetP3PPolicy@16
+GetP3PRequestStatus@4
+GetUrlCacheConfigInfoA@12
+GetUrlCacheConfigInfoW@12
+GetUrlCacheEntryBinaryBlob@28
+GetUrlCacheEntryInfoA@12
+GetUrlCacheEntryInfoExA@28
+GetUrlCacheEntryInfoExW@28
+GetUrlCacheEntryInfoW@12
+GetUrlCacheGroupAttributeA@28
+GetUrlCacheGroupAttributeW@28
+GetUrlCacheHeaderData@8
+GopherCreateLocatorA@28
+GopherCreateLocatorW@28
+GopherFindFirstFileA@24
+GopherFindFirstFileW@24
+GopherGetAttributeA@32
+GopherGetAttributeW@32
+GopherGetLocatorTypeA@8
+GopherGetLocatorTypeW@8
+GopherOpenFileA@20
+GopherOpenFileW@20
+HttpAddRequestHeadersA@16
+HttpAddRequestHeadersW@16
+HttpCheckDavCompliance@20
+HttpCheckDavComplianceA@20
+HttpCheckDavComplianceW@20
+HttpCloseDependencyHandle@4
+HttpDuplicateDependencyHandle@8
+HttpEndRequestA@16
+HttpEndRequestW@16
+HttpGetServerCredentials@12
+HttpGetTunnelSocket@16
+HttpIndicatePageLoadComplete@4
+HttpIsHostHstsEnabled@8
+HttpOpenDependencyHandle@12
+HttpOpenRequestA@32
+HttpOpenRequestW@32
+HttpPushClose@4
+HttpPushEnable@12
+HttpPushWait@12
+HttpQueryInfoA@20
+HttpQueryInfoW@20
+HttpSendRequestA@20
+HttpSendRequestExA@20
+HttpSendRequestExW@20
+HttpSendRequestW@20
+HttpWebSocketClose@16
+HttpWebSocketCompleteUpgrade@8
+HttpWebSocketQueryCloseStatus@20
+HttpWebSocketReceive@20
+HttpWebSocketSend@16
+HttpWebSocketShutdown@16
+ImportCookieFileA@4
+ImportCookieFileW@4
+IncrementUrlCacheHeaderData@8
+InternetAlgIdToStringA@16
+InternetAlgIdToStringW@16
+InternetAttemptConnect@4
+InternetAutodial@8
+InternetAutodialCallback@8
+InternetAutodialHangup@4
+InternetCanonicalizeUrlA@16
+InternetCanonicalizeUrlW@16
+InternetCheckConnectionA@12
+InternetCheckConnectionW@12
+InternetClearAllPerSiteCookieDecisions@0
+InternetCloseHandle@4
+InternetCombineUrlA@20
+InternetCombineUrlW@20
+InternetConfirmZoneCrossing@16
+InternetConfirmZoneCrossingA@16
+InternetConfirmZoneCrossingW@16
+InternetConnectA@32
+InternetConnectW@32
+InternetConvertUrlFromWireToWideChar@32
+InternetCrackUrlA@16
+InternetCrackUrlW@16
+InternetCreateUrlA@16
+InternetCreateUrlW@16
+;InternetDebugGetLocalTime@8
+InternetDial@20
+InternetDialA@20
+InternetDialW@20
+InternetEnumPerSiteCookieDecisionA@16
+InternetEnumPerSiteCookieDecisionW@16
+InternetErrorDlg@20
+InternetFindNextFileA@8
+InternetFindNextFileW@8
+InternetFortezzaCommand@12
+InternetFreeCookies@8
+InternetFreeProxyInfoList@4
+InternetGetCertByURL@12
+InternetGetCertByURLA@12
+InternetGetConnectedState@8
+InternetGetConnectedStateEx@16
+InternetGetConnectedStateExA@16
+InternetGetConnectedStateExW@16
+InternetGetCookieA@16
+InternetGetCookieEx2@20
+InternetGetCookieExA@24
+InternetGetCookieExW@24
+InternetGetCookieW@16
+InternetGetLastResponseInfoA@12
+InternetGetLastResponseInfoW@12
+InternetGetPerSiteCookieDecisionA@8
+InternetGetPerSiteCookieDecisionW@8
+InternetGetProxyForUrl@12
+InternetGetSecurityInfoByURL@12
+InternetGetSecurityInfoByURLA@12
+InternetGetSecurityInfoByURLW@12
+InternetGoOnline@12
+InternetGoOnlineA@12
+InternetGoOnlineW@12
+InternetHangUp@8
+InternetInitializeAutoProxyDll@4
+InternetLockRequestFile@8
+InternetOpenA@20
+InternetOpenUrlA@24
+InternetOpenUrlW@24
+InternetOpenW@20
+InternetQueryDataAvailable@16
+InternetQueryFortezzaStatus@8
+InternetQueryOptionA@16
+InternetQueryOptionW@16
+InternetReadFile@16
+InternetReadFileExA@16
+InternetReadFileExW@16
+InternetSecurityProtocolToStringA@16
+InternetSecurityProtocolToStringW@16
+InternetSetCookieA@12
+InternetSetCookieEx2@20
+InternetSetCookieExA@20
+InternetSetCookieExW@20
+InternetSetCookieW@12
+InternetSetDialState@12
+InternetSetDialStateA@12
+InternetSetDialStateW@12
+InternetSetFilePointer@20
+InternetSetOptionA@16
+InternetSetOptionExA@20
+InternetSetOptionExW@20
+InternetSetOptionW@16
+InternetSetPerSiteCookieDecisionA@8
+InternetSetPerSiteCookieDecisionW@8
+InternetSetStatusCallback@8
+InternetSetStatusCallbackA@8
+InternetSetStatusCallbackW@8
+InternetShowSecurityInfoByURL@8
+InternetShowSecurityInfoByURLA@8
+InternetShowSecurityInfoByURLW@8
+InternetTimeFromSystemTime@16
+InternetTimeFromSystemTimeA@16
+InternetTimeFromSystemTimeW@16
+InternetTimeToSystemTime@12
+InternetTimeToSystemTimeA@12
+InternetTimeToSystemTimeW@12
+InternetUnlockRequestFile@4
+InternetWriteFile@16
+InternetWriteFileExA@16
+InternetWriteFileExW@16
+IsDomainLegalCookieDomainA@8
+IsDomainLegalCookieDomainW@8
+IsHostInProxyBypassList@12
+IsProfilesEnabled@0
+IsUrlCacheEntryExpiredA@12
+IsUrlCacheEntryExpiredW@12
+LoadUrlCacheContent@0
+MapResourceToPolicy@16
+ParseX509EncodedCertificateForListBoxEntry@16
+PerformOperationOverUrlCacheA@40
+PrivacyGetZonePreferenceW@20
+PrivacySetZonePreferenceW@16
+ReadUrlCacheEntryStream@20
+ReadUrlCacheEntryStreamEx@20
+RegisterUrlCacheNotification@24
+ResumeSuspendedDownload@8
+RetrieveUrlCacheEntryFileA@16
+RetrieveUrlCacheEntryFileW@16
+RetrieveUrlCacheEntryStreamA@20
+RetrieveUrlCacheEntryStreamW@20
+RunOnceUrlCache@16
+SetUrlCacheConfigInfoA@8
+SetUrlCacheConfigInfoW@8
+SetUrlCacheEntryGroup@28
+SetUrlCacheEntryGroupA@28
+SetUrlCacheEntryGroupW@28
+SetUrlCacheEntryInfoA@12
+SetUrlCacheEntryInfoW@12
+SetUrlCacheGroupAttributeA@24
+SetUrlCacheGroupAttributeW@24
+SetUrlCacheHeaderData@8
+ShowCertificate@8
+ShowClientAuthCerts@4
+ShowSecurityInfo@8
+ShowX509EncodedCertificate@12
+UnlockUrlCacheEntryFile@8
+UnlockUrlCacheEntryFileA@8
+UnlockUrlCacheEntryFileW@8
+UnlockUrlCacheEntryStream@8
+UpdateUrlCacheContentPath@4
+UrlCacheCheckEntriesExist@12
+UrlCacheCloseEntryHandle@4
+UrlCacheContainerSetEntryMaximumAge@8
+UrlCacheCreateContainer@24
+UrlCacheFindFirstEntry@28
+UrlCacheFindNextEntry@8
+UrlCacheFreeEntryInfo@4
+UrlCacheFreeGlobalSpace@12
+UrlCacheGetContentPaths@8
+UrlCacheGetEntryInfo@12
+UrlCacheGetGlobalCacheSize@12
+UrlCacheGetGlobalLimit@8
+UrlCacheReadEntryStream@24
+UrlCacheReloadSettings@0
+UrlCacheRetrieveEntryFile@16
+UrlCacheRetrieveEntryStream@20
+UrlCacheServer@0
+UrlCacheSetGlobalLimit@12
+UrlCacheUpdateEntryExtraData@16
+UrlZonesDetach@0
+_GetFileExtensionFromUrl@16
diff --git a/lib/libc/mingw/lib32/winusb.def b/lib/libc/mingw/lib32/winusb.def
new file mode 100644
index 0000000000..a76c49c443
--- /dev/null
+++ b/lib/libc/mingw/lib32/winusb.def
@@ -0,0 +1,41 @@
+;
+; Definition file of WINUSB.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "WINUSB.DLL"
+EXPORTS
+WinUsb_AbortPipe@8
+WinUsb_AbortPipeAsync@12
+WinUsb_ControlTransfer@28
+WinUsb_FlushPipe@8
+WinUsb_Free@4
+WinUsb_GetAdjustedFrameNumber@12
+WinUsb_GetAssociatedInterface@12
+WinUsb_GetCurrentAlternateSetting@8
+WinUsb_GetCurrentFrameNumber@12
+WinUsb_GetDescriptor@28
+WinUsb_GetOverlappedResult@16
+WinUsb_GetPipePolicy@20
+WinUsb_GetPowerPolicy@16
+WinUsb_Initialize@8
+WinUsb_ParseConfigurationDescriptor@28
+WinUsb_ParseDescriptors@16
+WinUsb_QueryDeviceInformation@16
+WinUsb_QueryInterfaceSettings@12
+WinUsb_QueryPipe@16
+WinUsb_QueryPipeEx@16
+WinUsb_ReadIsochPipe@28
+WinUsb_ReadIsochPipeAsap@28
+WinUsb_ReadPipe@24
+WinUsb_RegisterIsochBuffer@20
+WinUsb_ResetPipe@8
+WinUsb_ResetPipeAsync@12
+WinUsb_SetCurrentAlternateSetting@8
+WinUsb_SetCurrentAlternateSettingAsync@12
+WinUsb_SetPipePolicy@20
+WinUsb_SetPowerPolicy@16
+WinUsb_UnregisterIsochBuffer@4
+WinUsb_WriteIsochPipe@20
+WinUsb_WriteIsochPipeAsap@20
+WinUsb_WritePipe@24
diff --git a/lib/libc/mingw/lib32/wkscli.def b/lib/libc/mingw/lib32/wkscli.def
new file mode 100644
index 0000000000..aa8c30ac9b
--- /dev/null
+++ b/lib/libc/mingw/lib32/wkscli.def
@@ -0,0 +1,30 @@
+;
+; Definition file of wkscli.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "wkscli.dll"
+EXPORTS
+NetAddAlternateComputerName@20
+NetEnumerateComputerNames@20
+NetGetJoinInformation@12
+NetGetJoinableOUs@24
+NetJoinDomain@24
+NetRemoveAlternateComputerName@20
+NetRenameMachineInDomain@20
+NetSetPrimaryComputerName@20
+NetUnjoinDomain@16
+NetUseAdd@16
+NetUseDel@12
+NetUseEnum@28
+NetUseGetInfo@16
+NetValidateName@20
+NetWkstaGetInfo@12
+NetWkstaSetInfo@16
+NetWkstaStatisticsGet@16
+NetWkstaTransportAdd@16
+NetWkstaTransportDel@12
+NetWkstaTransportEnum@28
+NetWkstaUserEnum@28
+NetWkstaUserGetInfo@12
+NetWkstaUserSetInfo@16
diff --git a/lib/libc/mingw/lib32/wlanapi.def b/lib/libc/mingw/lib32/wlanapi.def
new file mode 100644
index 0000000000..59cf01bcd3
--- /dev/null
+++ b/lib/libc/mingw/lib32/wlanapi.def
@@ -0,0 +1,43 @@
+;
+; Definition file of Wlanapi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "Wlanapi.dll"
+EXPORTS
+WlanAllocateMemory@4
+WlanCloseHandle@8
+WlanConnect@16
+WlanDeleteProfile@16
+WlanDisconnect@12
+WlanEnumInterfaces@12
+WlanExtractPsdIEDataList@24
+WlanFreeMemory@4
+WlanGetAvailableNetworkList@20
+WlanGetFilterList@16
+WlanGetInterfaceCapability@16
+WlanGetNetworkBssList@28
+WlanGetProfile@28
+WlanGetProfileCustomUserData@24
+WlanGetProfileList@16
+WlanGetSecuritySettings@20
+WlanIhvControl@32
+WlanOpenHandle@16
+WlanQueryAutoConfigParameter@24
+WlanQueryInterface@28
+WlanReasonCodeToString@16
+WlanRegisterNotification@28
+WlanRenameProfile@20
+WlanSaveTemporaryProfile@28
+WlanScan@20
+WlanSetAutoConfigParameter@20
+WlanSetFilterList@16
+WlanSetInterface@24
+WlanSetProfile@32
+WlanSetProfileCustomUserData@24
+WlanSetProfileEapUserData@44
+WlanSetProfileEapXmlUserData@24
+WlanSetProfileList@20
+WlanSetProfilePosition@20
+WlanSetPsdIEDataList@16
+WlanSetSecuritySettings@12
diff --git a/lib/libc/mingw/lib32/wsdapi.def b/lib/libc/mingw/lib32/wsdapi.def
new file mode 100644
index 0000000000..d8ab9aeb66
--- /dev/null
+++ b/lib/libc/mingw/lib32/wsdapi.def
@@ -0,0 +1,41 @@
+;
+; Definition file of wsdapi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "wsdapi.dll"
+EXPORTS
+WSDCancelAddrChangeNotify@4
+WSDCreateHttpAddressAdvanced@8
+WSDNotifyAddrChange@12
+WSDAllocateLinkedMemory@8
+WSDAttachLinkedMemory@8
+WSDCreateDeviceHost@12
+WSDCreateDeviceHostAdvanced@20
+WSDCreateDeviceProxy@16
+WSDCreateDeviceProxyAdvanced@20
+WSDCreateDiscoveryProvider@8
+WSDCreateDiscoveryPublisher@8
+WSDCreateHttpAddress@4
+WSDCreateHttpMessageParameters@4
+WSDCreateHttpTransport@8
+WSDCreateMetadataAgent@12
+WSDCreateOutboundAttachment@4
+WSDCreateUdpAddress@4
+WSDCreateUdpMessageParameters@4
+WSDCreateUdpTransport@4
+WSDDetachLinkedMemory@4
+WSDFreeLinkedMemory@4
+WSDGenerateFault@24
+WSDGenerateFaultEx@20
+WSDGenerateRandomDelay@8
+WSDGetConfigurationOption@12
+WSDProcessFault@12
+WSDSetConfigurationOption@12
+WSDXMLAddChild@8
+WSDXMLAddSibling@8
+WSDXMLBuildAnyForSingleElement@12
+WSDXMLCleanupElement@4
+WSDXMLCreateContext@4
+WSDXMLGetNameFromBuiltinNamespace@12
+WSDXMLGetValueFromAny@16
diff --git a/lib/libc/mingw/lib32/wsnmp32.def b/lib/libc/mingw/lib32/wsnmp32.def
new file mode 100644
index 0000000000..d209d89459
--- /dev/null
+++ b/lib/libc/mingw/lib32/wsnmp32.def
@@ -0,0 +1,48 @@
+LIBRARY wsnmp32.dll
+EXPORTS
+SnmpCancelMsg@8
+SnmpCleanup@0
+SnmpClose@4
+SnmpContextToStr@8
+SnmpCountVbl@4
+SnmpCreatePdu@24
+SnmpCreateSession@16
+SnmpCreateVbl@12
+SnmpDecodeMsg@24
+SnmpDeleteVb@8
+SnmpDuplicatePdu@8
+SnmpDuplicateVbl@8
+SnmpEncodeMsg@24
+SnmpEntityToStr@12
+SnmpFreeContext@4
+SnmpFreeDescriptor@8
+SnmpFreeEntity@4
+SnmpFreePdu@4
+SnmpFreeVbl@4
+SnmpGetLastError@4
+SnmpGetPduData@24
+SnmpGetRetransmitMode@4
+SnmpGetRetry@12
+SnmpGetTimeout@12
+SnmpGetTranslateMode@4
+SnmpGetVb@16
+SnmpGetVendorInfo@4
+SnmpListen@8
+SnmpOidCompare@16
+SnmpOidCopy@8
+SnmpOidToStr@12
+SnmpOpen@8
+SnmpRecvMsg@20
+SnmpRegister@24
+SnmpSendMsg@20
+SnmpSetPduData@24
+SnmpSetPort@8
+SnmpSetRetransmitMode@4
+SnmpSetRetry@8
+SnmpSetTimeout@8
+SnmpSetTranslateMode@4
+SnmpSetVb@16
+SnmpStartup@20
+SnmpStrToContext@8
+SnmpStrToEntity@8
+SnmpStrToOid@8
diff --git a/lib/libc/mingw/lib32/wtsapi32.def b/lib/libc/mingw/lib32/wtsapi32.def
new file mode 100644
index 0000000000..dff87ab3b0
--- /dev/null
+++ b/lib/libc/mingw/lib32/wtsapi32.def
@@ -0,0 +1,50 @@
+;
+; Definition file of WTSAPI32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "WTSAPI32.dll"
+EXPORTS
+WTSCloseServer@4
+WTSConnectSessionA@16
+WTSConnectSessionW@16
+WTSDisconnectSession@12
+WTSEnumerateProcessesA@20
+WTSEnumerateProcessesW@20
+WTSEnumerateServersA@20
+WTSEnumerateServersW@20
+WTSEnumerateSessionsA@20
+WTSEnumerateSessionsW@20
+WTSFreeMemory@4
+WTSLogoffSession@12
+WTSOpenServerA@4
+WTSOpenServerW@4
+WTSQuerySessionInformationA@20
+WTSQuerySessionInformationW@20
+WTSQueryUserConfigA@20
+WTSQueryUserConfigW@20
+WTSQueryUserToken@8
+WTSRegisterSessionNotification@8
+WTSRegisterSessionNotificationEx@12
+WTSSendMessageA@40
+WTSSendMessageW@40
+WTSSetSessionInformationA@20
+WTSSetSessionInformationW@20
+WTSSetUserConfigA@20
+WTSSetUserConfigW@20
+WTSShutdownSystem@8
+WTSStartRemoteControlSessionA@16
+WTSStartRemoteControlSessionW@16
+WTSStopRemoteControlSession@4
+WTSTerminateProcess@12
+WTSUnRegisterSessionNotification@4
+WTSUnRegisterSessionNotificationEx@8
+WTSVirtualChannelClose@4
+WTSVirtualChannelOpen@12
+WTSVirtualChannelOpenEx@12
+WTSVirtualChannelPurgeInput@4
+WTSVirtualChannelPurgeOutput@4
+WTSVirtualChannelQuery@16
+WTSVirtualChannelRead@20
+WTSVirtualChannelWrite@16
+WTSWaitSystemEvent@12
diff --git a/lib/libc/mingw/lib64/aclui.def b/lib/libc/mingw/lib64/aclui.def
new file mode 100644
index 0000000000..ac91b17d0c
--- /dev/null
+++ b/lib/libc/mingw/lib64/aclui.def
@@ -0,0 +1,11 @@
+;
+; Exports of file ACLUI.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY ACLUI.dll
+EXPORTS
+CreateSecurityPage
+EditSecurity
+IID_ISecurityInformation DATA
diff --git a/lib/libc/mingw/lib64/apphelp.def b/lib/libc/mingw/lib64/apphelp.def
new file mode 100644
index 0000000000..8bf71adff7
--- /dev/null
+++ b/lib/libc/mingw/lib64/apphelp.def
@@ -0,0 +1,166 @@
+;
+; Exports of file apphelp.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY apphelp.dll
+EXPORTS
+AllowPermLayer
+ApphelpCheckExe
+ApphelpCheckIME
+ApphelpCheckInstallShieldPackage
+ApphelpCheckMsiPackage
+ApphelpCheckRunApp
+ApphelpCheckShellObject
+ApphelpFixMsiPackage
+ApphelpFixMsiPackageExe
+ApphelpFreeFileAttributes
+ApphelpGetFileAttributes
+ApphelpGetNTVDMInfo
+ApphelpGetShimDebugLevel
+ApphelpQueryModuleData
+ApphelpReleaseExe
+ApphelpShowDialog
+ApphelpShowUI
+ApphelpUpdateCacheEntry
+GetPermLayers
+SdbBeginWriteListTag
+SdbBuildCompatEnvVariables
+SdbCloseApphelpInformation
+SdbCloseDatabase
+SdbCloseDatabaseWrite
+SdbCloseLocalDatabase
+SdbCommitIndexes
+SdbCreateDatabase
+SdbCreateHelpCenterURL
+SdbCreateMsiTransformFile
+SdbDeclareIndex
+SdbDeletePermLayerKeys
+SdbEndWriteListTag
+SdbEnumMsiTransforms
+SdbEscapeApphelpURL
+SdbFindCustomActionForPackage
+SdbFindFirstDWORDIndexedTag
+SdbFindFirstGUIDIndexedTag
+SdbFindFirstMsiPackage
+SdbFindFirstMsiPackage_Str
+SdbFindFirstNamedTag
+SdbFindFirstStringIndexedTag
+SdbFindFirstTag
+SdbFindFirstTagRef
+SdbFindMsiPackageByID
+SdbFindNextDWORDIndexedTag
+SdbFindNextGUIDIndexedTag
+SdbFindNextMsiPackage
+SdbFindNextStringIndexedTag
+SdbFindNextTag
+SdbFindNextTagRef
+SdbFormatAttribute
+SdbFreeDatabaseInformation
+SdbFreeFileAttributes
+SdbFreeFileInfo
+SdbFreeFlagInfo
+SdbGUIDFromString
+SdbGUIDToString
+SdbGetAppCompatDataSize
+SdbGetAppPatchDir
+SdbGetBinaryTagData
+SdbGetDatabaseGUID
+SdbGetDatabaseID
+SdbGetDatabaseInformation
+SdbGetDatabaseInformationByName
+SdbGetDatabaseMatch
+SdbGetDatabaseVersion
+SdbGetDllPath
+SdbGetEntryFlags
+SdbGetFileAttributes
+SdbGetFileInfo
+SdbGetFirstChild
+SdbGetImageType
+SdbGetIndex
+SdbGetItemFromItemRef
+SdbGetLayerName
+SdbGetLayerTagRef
+SdbGetLocalPDB
+SdbGetMatchingExe
+SdbGetMsiPackageInformation
+SdbGetNamedLayer
+SdbGetNextChild
+SdbGetNthUserSdb
+SdbGetPDBFromGUID
+SdbGetPermLayerKeys
+SdbGetShowDebugInfoOption
+SdbGetShowDebugInfoOptionValue
+SdbGetStandardDatabaseGUID
+SdbGetStringTagPtr
+SdbGetTagDataSize
+SdbGetTagFromTagID
+SdbGrabMatchingInfo
+SdbGrabMatchingInfoEx
+SdbInitDatabase
+SdbInitDatabaseEx
+SdbIsNullGUID
+SdbIsTagrefFromLocalDB
+SdbIsTagrefFromMainDB
+SdbMakeIndexKeyFromString
+SdbOpenApphelpDetailsDatabase
+SdbOpenApphelpDetailsDatabaseSP
+SdbOpenApphelpInformation
+SdbOpenApphelpInformationByID
+SdbOpenDatabase
+SdbOpenLocalDatabase
+SdbPackAppCompatData
+SdbQueryApphelpInformation
+SdbQueryData
+SdbQueryDataEx
+SdbQueryDataExTagID
+SdbQueryFlagInfo
+SdbQueryFlagMask
+SdbReadApphelpData
+SdbReadApphelpDetailsData
+SdbReadBYTETag
+SdbReadBYTETagRef
+SdbReadBinaryTag
+SdbReadDWORDTag
+SdbReadDWORDTagRef
+SdbReadEntryInformation
+SdbReadMsiTransformInfo
+SdbReadPatchBits
+SdbReadQWORDTag
+SdbReadQWORDTagRef
+SdbReadStringTag
+SdbReadStringTagRef
+SdbReadWORDTag
+SdbReadWORDTagRef
+SdbRegisterDatabase
+SdbRegisterDatabaseEx
+SdbReleaseDatabase
+SdbReleaseMatchingExe
+SdbResolveDatabase
+SdbSetApphelpDebugParameters
+SdbSetEntryFlags
+SdbSetImageType
+SdbSetPermLayerKeys
+SdbShowApphelpDialog
+SdbStartIndexing
+SdbStopIndexing
+SdbTagIDToTagRef
+SdbTagRefToTagID
+SdbTagToString
+SdbUnpackAppCompatData
+SdbUnregisterDatabase
+SdbWriteBYTETag
+SdbWriteBinaryTag
+SdbWriteBinaryTagFromFile
+SdbWriteDWORDTag
+SdbWriteNULLTag
+SdbWriteQWORDTag
+SdbWriteStringRefTag
+SdbWriteStringTag
+SdbWriteStringTagDirect
+SdbWriteWORDTag
+SetPermLayers
+ShimDbgPrint
+ShimDumpCache
+ShimFlushCache
diff --git a/lib/libc/mingw/lib64/avicap32.def b/lib/libc/mingw/lib64/avicap32.def
new file mode 100644
index 0000000000..2cc01bb12c
--- /dev/null
+++ b/lib/libc/mingw/lib64/avicap32.def
@@ -0,0 +1,14 @@
+;
+; Exports of file AVICAP32.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY AVICAP32.dll
+EXPORTS
+AppCleanup
+capCreateCaptureWindowA
+capCreateCaptureWindowW
+capGetDriverDescriptionA
+capGetDriverDescriptionW
+videoThunk32
diff --git a/lib/libc/mingw/lib64/avifil32.def b/lib/libc/mingw/lib64/avifil32.def
new file mode 100644
index 0000000000..aa7591afdc
--- /dev/null
+++ b/lib/libc/mingw/lib64/avifil32.def
@@ -0,0 +1,84 @@
+;
+; Exports of file AVIFIL32.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY AVIFIL32.dll
+EXPORTS
+AVIBuildFilter
+AVIBuildFilterA
+AVIBuildFilterW
+AVIClearClipboard
+AVIFileAddRef
+AVIFileCreateStream
+AVIFileCreateStreamA
+AVIFileCreateStreamW
+AVIFileEndRecord
+AVIFileExit
+AVIFileGetStream
+AVIFileInfo
+AVIFileInfoA
+AVIFileInfoW
+AVIFileInit
+AVIFileOpen
+AVIFileOpenA
+AVIFileOpenW
+AVIFileReadData
+AVIFileRelease
+AVIFileWriteData
+AVIGetFromClipboard
+AVIMakeCompressedStream
+AVIMakeFileFromStreams
+AVIMakeStreamFromClipboard
+AVIPutFileOnClipboard
+AVISave
+AVISaveA
+AVISaveOptions
+AVISaveOptionsFree
+AVISaveV
+AVISaveVA
+AVISaveVW
+AVISaveW
+AVIStreamAddRef
+AVIStreamBeginStreaming
+AVIStreamCreate
+AVIStreamEndStreaming
+AVIStreamFindSample
+AVIStreamGetFrame
+AVIStreamGetFrameClose
+AVIStreamGetFrameOpen
+AVIStreamInfo
+AVIStreamInfoA
+AVIStreamInfoW
+AVIStreamLength
+AVIStreamOpenFromFile
+AVIStreamOpenFromFileA
+AVIStreamOpenFromFileW
+AVIStreamRead
+AVIStreamReadData
+AVIStreamReadFormat
+AVIStreamRelease
+AVIStreamSampleToTime
+AVIStreamSetFormat
+AVIStreamStart
+AVIStreamTimeToSample
+AVIStreamWrite
+AVIStreamWriteData
+CreateEditableStream
+DllCanUnloadNow
+DllGetClassObject
+EditStreamClone
+EditStreamCopy
+EditStreamCut
+EditStreamPaste
+EditStreamSetInfo
+EditStreamSetInfoA
+EditStreamSetInfoW
+EditStreamSetName
+EditStreamSetNameA
+EditStreamSetNameW
+IID_IAVIEditStream
+IID_IAVIFile
+IID_IAVIStream
+IID_IGetFrame
diff --git a/lib/libc/mingw/lib64/bthprops.def b/lib/libc/mingw/lib64/bthprops.def
new file mode 100644
index 0000000000..e72ff87fca
--- /dev/null
+++ b/lib/libc/mingw/lib64/bthprops.def
@@ -0,0 +1,70 @@
+;
+; Definition file of bthprops.cpl
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "bthprops.cpl"
+EXPORTS
+ord_103 @103
+BluetoothAddressToString
+BluetoothAuthenticateDevice
+BluetoothAuthenticateDeviceEx
+BluetoothAuthenticateMultipleDevices
+BluetoothAuthenticationAgent
+BluetoothDisconnectDevice
+BluetoothDisplayDeviceProperties
+BluetoothEnableDiscovery
+BluetoothEnableIncomingConnections
+BluetoothEnumerateInstalledServices
+BluetoothFindBrowseGroupClose
+BluetoothFindClassIdClose
+BluetoothFindDeviceClose
+BluetoothFindFirstBrowseGroup
+BluetoothFindFirstClassId
+BluetoothFindFirstDevice
+BluetoothFindFirstProfileDescriptor
+BluetoothFindFirstProtocolDescriptorStack
+BluetoothFindFirstProtocolEntry
+BluetoothFindFirstRadio
+BluetoothFindFirstService
+BluetoothFindFirstServiceEx
+BluetoothFindNextBrowseGroup
+BluetoothFindNextClassId
+BluetoothFindNextDevice
+BluetoothFindNextProfileDescriptor
+BluetoothFindNextProtocolDescriptorStack
+BluetoothFindNextProtocolEntry
+BluetoothFindNextRadio
+BluetoothFindNextService
+BluetoothFindProfileDescriptorClose
+BluetoothFindProtocolDescriptorStackClose
+BluetoothFindProtocolEntryClose
+BluetoothFindRadioClose
+BluetoothFindServiceClose
+BluetoothGetDeviceInfo
+BluetoothGetRadioInfo
+BluetoothIsConnectable
+BluetoothIsDiscoverable
+BluetoothIsVersionAvailable
+BluetoothMapClassOfDeviceToImageIndex
+BluetoothMapClassOfDeviceToString
+BluetoothRegisterForAuthentication
+BluetoothRegisterForAuthenticationEx
+BluetoothRemoveDevice
+BluetoothSdpEnumAttributes
+BluetoothSdpGetAttributeValue
+BluetoothSdpGetContainerElementData
+BluetoothSdpGetElementData
+BluetoothSdpGetString
+BluetoothSelectDevices
+BluetoothSelectDevicesFree
+BluetoothSendAuthenticationResponse
+BluetoothSendAuthenticationResponseEx
+BluetoothSetLocalServiceInfo
+BluetoothSetServiceState
+BluetoothUnregisterAuthentication
+BluetoothUpdateDeviceRecord
+BthpEnableAllServices
+BthpFindPnpInfo
+BthpMapStatusToErr
+CPlApplet
diff --git a/lib/libc/mingw/lib64/clfsw32.def b/lib/libc/mingw/lib64/clfsw32.def
new file mode 100644
index 0000000000..aafcf280eb
--- /dev/null
+++ b/lib/libc/mingw/lib64/clfsw32.def
@@ -0,0 +1,69 @@
+;
+; Definition file of clfsw32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "clfsw32.dll"
+EXPORTS
+LsnDecrement
+AddLogContainer
+AddLogContainerSet
+AdvanceLogBase
+AlignReservedLog
+AllocReservedLog
+CLFS_LSN_INVALID DATA
+CLFS_LSN_NULL DATA
+CloseAndResetLogFile
+CreateLogContainerScanContext
+CreateLogFile
+CreateLogMarshallingArea
+DeleteLogByHandle
+DeleteLogFile
+DeleteLogMarshallingArea
+DeregisterManageableLogClient
+DumpLogRecords
+FlushLogBuffers
+FlushLogToLsn
+FreeReservedLog
+GetLogContainerName
+GetLogFileInformation
+GetLogIoStatistics
+GetNextLogArchiveExtent
+HandleLogFull
+InstallLogPolicy
+LogTailAdvanceFailure
+LsnBlockOffset
+LsnContainer
+LsnCreate
+LsnEqual
+LsnGreater
+LsnIncrement
+LsnInvalid
+LsnLess
+LsnNull
+LsnRecordSequence
+PrepareLogArchive
+QueryLogPolicy
+ReadLogArchiveMetadata
+ReadLogNotification
+ReadLogRecord
+ReadLogRestartArea
+ReadNextLogRecord
+ReadPreviousLogRestartArea
+RegisterForLogWriteNotification
+RegisterManageableLogClient
+RemoveLogContainer
+RemoveLogContainerSet
+RemoveLogPolicy
+ReserveAndAppendLog
+ReserveAndAppendLogAligned
+ScanLogContainers
+SetEndOfLog
+SetLogArchiveMode
+SetLogArchiveTail
+SetLogFileSizeWithPolicy
+TerminateLogArchive
+TerminateReadLog
+TruncateLog
+ValidateLog
+WriteLogRestartArea
diff --git a/lib/libc/mingw/lib64/comsvcs.def b/lib/libc/mingw/lib64/comsvcs.def
new file mode 100644
index 0000000000..0aff8de180
--- /dev/null
+++ b/lib/libc/mingw/lib64/comsvcs.def
@@ -0,0 +1,29 @@
+;
+; Exports of file comsvcs.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY comsvcs.dll
+EXPORTS
+CosGetCallContext
+GetMTAThreadPoolMetrics
+CoCreateActivity
+CoEnterServiceDomain
+CoLeaveServiceDomain
+CoLoadServices
+ComSvcsExceptionFilter
+ComSvcsLogError
+DispManGetContext
+DllCanUnloadNow
+DllGetClassObject
+DllRegisterServer
+DllUnregisterServer
+GetManagedExtensions
+GetObjectContext
+GetTrkSvrObject
+MTSCreateActivity
+MiniDumpW
+RecycleSurrogate
+RegisterComEvents
+SafeRef
diff --git a/lib/libc/mingw/lib64/dciman32.def b/lib/libc/mingw/lib64/dciman32.def
new file mode 100644
index 0000000000..97f19fbcb2
--- /dev/null
+++ b/lib/libc/mingw/lib64/dciman32.def
@@ -0,0 +1,28 @@
+;
+; Exports of file DCIMAN32.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY DCIMAN32.dll
+EXPORTS
+DCIBeginAccess
+DCICloseProvider
+DCICreateOffscreen
+DCICreateOverlay
+DCICreatePrimary
+DCIDestroy
+DCIDraw
+DCIEndAccess
+DCIEnum
+DCIOpenProvider
+DCISetClipList
+DCISetDestination
+DCISetSrcDestClip
+GetDCRegionData
+GetWindowRegionData
+WinWatchClose
+WinWatchDidStatusChange
+WinWatchGetClipList
+WinWatchNotify
+WinWatchOpen
diff --git a/lib/libc/mingw/lib64/dhcpcsvc6.def b/lib/libc/mingw/lib64/dhcpcsvc6.def
new file mode 100644
index 0000000000..edc7208bff
--- /dev/null
+++ b/lib/libc/mingw/lib64/dhcpcsvc6.def
@@ -0,0 +1,17 @@
+;
+; Definition file of dhcpcsvc6.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "dhcpcsvc6.DLL"
+EXPORTS
+Dhcpv6AcquireParameters
+Dhcpv6FreeLeaseInfo
+Dhcpv6IsEnabled
+Dhcpv6Main
+Dhcpv6QueryLeaseInfo
+Dhcpv6ReleaseParameters
+Dhcpv6ReleasePrefix
+Dhcpv6RenewPrefix
+Dhcpv6RequestParams
+Dhcpv6RequestPrefix
diff --git a/lib/libc/mingw/lib64/esent.def b/lib/libc/mingw/lib64/esent.def
new file mode 100644
index 0000000000..b8d54d2b01
--- /dev/null
+++ b/lib/libc/mingw/lib64/esent.def
@@ -0,0 +1,318 @@
+;
+; Definition file of ESENT.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "ESENT.dll"
+EXPORTS
+JetAddColumn
+JetAddColumnA
+JetAddColumnW
+JetAttachDatabase
+JetAttachDatabase2
+JetAttachDatabase2A
+JetAttachDatabase2W
+JetAttachDatabaseA
+JetAttachDatabaseW
+JetAttachDatabaseWithStreaming
+JetAttachDatabaseWithStreamingA
+JetAttachDatabaseWithStreamingW
+JetBackup
+JetBackupA
+JetBackupInstance
+JetBackupInstanceA
+JetBackupInstanceW
+JetBackupW
+JetBeginExternalBackup
+JetBeginExternalBackupInstance
+JetBeginSession
+JetBeginSessionA
+JetBeginSessionW
+JetBeginTransaction
+JetBeginTransaction2
+JetCloseDatabase
+JetCloseFile
+JetCloseFileInstance
+JetCloseTable
+JetCommitTransaction
+JetCompact
+JetCompactA
+JetCompactW
+JetComputeStats
+JetConvertDDL
+JetConvertDDLA
+JetConvertDDLW
+JetCreateDatabase
+JetCreateDatabase2
+JetCreateDatabase2A
+JetCreateDatabase2W
+JetCreateDatabaseA
+JetCreateDatabaseW
+JetCreateDatabaseWithStreaming
+JetCreateDatabaseWithStreamingA
+JetCreateDatabaseWithStreamingW
+JetCreateIndex
+JetCreateIndex2
+JetCreateIndex2A
+JetCreateIndex2W
+JetCreateIndexA
+JetCreateIndexW
+JetCreateInstance
+JetCreateInstance2
+JetCreateInstance2A
+JetCreateInstance2W
+JetCreateInstanceA
+JetCreateInstanceW
+JetCreateTable
+JetCreateTableA
+JetCreateTableColumnIndex
+JetCreateTableColumnIndex2
+JetCreateTableColumnIndex2A
+JetCreateTableColumnIndex2W
+JetCreateTableColumnIndexA
+JetCreateTableColumnIndexW
+JetCreateTableW
+JetDBUtilities
+JetDBUtilitiesA
+JetDBUtilitiesW
+JetDefragment
+JetDefragment2
+JetDefragment2A
+JetDefragment2W
+JetDefragment3
+JetDefragment3A
+JetDefragment3W
+JetDefragmentA
+JetDefragmentW
+JetDelete
+JetDeleteColumn
+JetDeleteColumn2
+JetDeleteColumn2A
+JetDeleteColumn2W
+JetDeleteColumnA
+JetDeleteColumnW
+JetDeleteIndex
+JetDeleteIndexA
+JetDeleteIndexW
+JetDeleteTable
+JetDeleteTableA
+JetDeleteTableW
+JetDetachDatabase
+JetDetachDatabase2
+JetDetachDatabase2A
+JetDetachDatabase2W
+JetDetachDatabaseA
+JetDetachDatabaseW
+JetDupCursor
+JetDupSession
+JetEnableMultiInstance
+JetEnableMultiInstanceA
+JetEnableMultiInstanceW
+JetEndExternalBackup
+JetEndExternalBackupInstance
+JetEndExternalBackupInstance2
+JetEndSession
+JetEnumerateColumns
+JetEscrowUpdate
+JetExternalRestore
+JetExternalRestore2
+JetExternalRestore2A
+JetExternalRestore2W
+JetExternalRestoreA
+JetExternalRestoreW
+JetFreeBuffer
+JetGetAttachInfo
+JetGetAttachInfoA
+JetGetAttachInfoInstance
+JetGetAttachInfoInstanceA
+JetGetAttachInfoInstanceW
+JetGetAttachInfoW
+JetGetBookmark
+JetGetColumnInfo
+JetGetColumnInfoA
+JetGetColumnInfoW
+JetGetCounter
+JetGetCurrentIndex
+JetGetCurrentIndexA
+JetGetCurrentIndexW
+JetGetCursorInfo
+JetGetDatabaseFileInfo
+JetGetDatabaseFileInfoA
+JetGetDatabaseFileInfoW
+JetGetDatabaseInfo
+JetGetDatabaseInfoA
+JetGetDatabaseInfoW
+JetGetDatabasePages
+JetGetIndexInfo
+JetGetIndexInfoA
+JetGetIndexInfoW
+JetGetInstanceInfo
+JetGetInstanceInfoA
+JetGetInstanceInfoW
+JetGetInstanceMiscInfo
+JetGetLS
+JetGetLock
+JetGetLogFileInfo
+JetGetLogFileInfoA
+JetGetLogFileInfoW
+JetGetLogInfo
+JetGetLogInfoA
+JetGetLogInfoInstance
+JetGetLogInfoInstance2
+JetGetLogInfoInstance2A
+JetGetLogInfoInstance2W
+JetGetLogInfoInstanceA
+JetGetLogInfoInstanceW
+JetGetLogInfoW
+JetGetMaxDatabaseSize
+JetGetObjectInfo
+JetGetObjectInfoA
+JetGetObjectInfoW
+JetGetPageInfo
+JetGetRecordPosition
+JetGetRecordSize
+JetGetResourceParam
+JetGetSecondaryIndexBookmark
+JetGetSessionInfo
+JetGetSystemParameter
+JetGetSystemParameterA
+JetGetSystemParameterW
+JetGetTableColumnInfo
+JetGetTableColumnInfoA
+JetGetTableColumnInfoW
+JetGetTableIndexInfo
+JetGetTableIndexInfoA
+JetGetTableIndexInfoW
+JetGetTableInfo
+JetGetTableInfoA
+JetGetTableInfoW
+JetGetThreadStats
+JetGetTruncateLogInfoInstance
+JetGetTruncateLogInfoInstanceA
+JetGetTruncateLogInfoInstanceW
+JetGetVersion
+JetGotoBookmark
+JetGotoPosition
+JetGotoSecondaryIndexBookmark
+JetGrowDatabase
+JetIdle
+JetIndexRecordCount
+JetInit
+JetInit2
+JetInit3
+JetInit3A
+JetInit3W
+JetIntersectIndexes
+JetMakeKey
+JetMove
+JetOSSnapshotAbort
+JetOSSnapshotEnd
+JetOSSnapshotFreeze
+JetOSSnapshotFreezeA
+JetOSSnapshotFreezeW
+JetOSSnapshotGetFreezeInfo
+JetOSSnapshotGetFreezeInfoA
+JetOSSnapshotGetFreezeInfoW
+JetOSSnapshotPrepare
+JetOSSnapshotPrepareInstance
+JetOSSnapshotThaw
+JetOSSnapshotTruncateLog
+JetOSSnapshotTruncateLogInstance
+JetOpenDatabase
+JetOpenDatabaseA
+JetOpenDatabaseW
+JetOpenFile
+JetOpenFileA
+JetOpenFileInstance
+JetOpenFileInstanceA
+JetOpenFileInstanceW
+JetOpenFileSectionInstance
+JetOpenFileSectionInstanceA
+JetOpenFileSectionInstanceW
+JetOpenFileW
+JetOpenTable
+JetOpenTableA
+JetOpenTableW
+JetOpenTempTable
+JetOpenTempTable2
+JetOpenTempTable3
+JetOpenTemporaryTable
+JetPrepareToCommitTransaction
+JetPrepareUpdate
+JetReadFile
+JetReadFileInstance
+JetRegisterCallback
+JetRenameColumn
+JetRenameColumnA
+JetRenameColumnW
+JetRenameTable
+JetRenameTableA
+JetRenameTableW
+JetResetCounter
+JetResetSessionContext
+JetResetTableSequential
+JetRestore
+JetRestore2
+JetRestore2A
+JetRestore2W
+JetRestoreA
+JetRestoreInstance
+JetRestoreInstanceA
+JetRestoreInstanceW
+JetRestoreW
+JetRetrieveColumn
+JetRetrieveColumns
+JetRetrieveKey
+JetRetrieveTaggedColumnList
+JetRollback
+JetSeek
+JetSetColumn
+JetSetColumnDefaultValue
+JetSetColumnDefaultValueA
+JetSetColumnDefaultValueW
+JetSetColumns
+JetSetCurrentIndex
+JetSetCurrentIndex2
+JetSetCurrentIndex2A
+JetSetCurrentIndex2W
+JetSetCurrentIndex3
+JetSetCurrentIndex3A
+JetSetCurrentIndex3W
+JetSetCurrentIndex4
+JetSetCurrentIndex4A
+JetSetCurrentIndex4W
+JetSetCurrentIndexA
+JetSetCurrentIndexW
+JetSetDatabaseSize
+JetSetDatabaseSizeA
+JetSetDatabaseSizeW
+JetSetIndexRange
+JetSetLS
+JetSetMaxDatabaseSize
+JetSetResourceParam
+JetSetSessionContext
+JetSetSystemParameter
+JetSetSystemParameterA
+JetSetSystemParameterW
+JetSetTableSequential
+JetSnapshotStart
+JetSnapshotStartA
+JetSnapshotStartW
+JetSnapshotStop
+JetStopBackup
+JetStopBackupInstance
+JetStopService
+JetStopServiceInstance
+JetTerm
+JetTerm2
+JetTracing
+JetTruncateLog
+JetTruncateLogInstance
+JetUnregisterCallback
+JetUpdate
+JetUpdate2
+JetUpgradeDatabase
+JetUpgradeDatabaseA
+JetUpgradeDatabaseW
+ese
+esent
diff --git a/lib/libc/mingw/lib64/faultrep.def b/lib/libc/mingw/lib64/faultrep.def
new file mode 100644
index 0000000000..dd0e6eb9b3
--- /dev/null
+++ b/lib/libc/mingw/lib64/faultrep.def
@@ -0,0 +1,19 @@
+;
+; Exports of file faultrep.DLL
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY faultrep.DLL
+EXPORTS
+AddERExcludedApplicationA
+AddERExcludedApplicationW
+CreateMinidumpW
+ReportEREvent
+ReportEREventDW
+ReportFault
+ReportFaultDWM
+ReportFaultFromQueue
+ReportFaultToQueue
+ReportHang
+ReportKernelFaultDWW
diff --git a/lib/libc/mingw/lib64/fwpuclnt.def b/lib/libc/mingw/lib64/fwpuclnt.def
new file mode 100644
index 0000000000..c23e0929fe
--- /dev/null
+++ b/lib/libc/mingw/lib64/fwpuclnt.def
@@ -0,0 +1,146 @@
+;
+; Definition file of fwpuclnt.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "fwpuclnt.dll"
+EXPORTS
+FwpmCalloutAdd0
+FwpmCalloutCreateEnumHandle0
+FwpmCalloutDeleteById0
+FwpmCalloutDeleteByKey0
+FwpmCalloutDestroyEnumHandle0
+FwpmCalloutEnum0
+FwpmCalloutGetById0
+FwpmCalloutGetByKey0
+FwpmCalloutGetSecurityInfoByKey0
+FwpmCalloutSetSecurityInfoByKey0
+FwpmCalloutSubscribeChanges0
+FwpmCalloutSubscriptionsGet0
+FwpmCalloutUnsubscribeChanges0
+FwpmDiagnoseNetFailure0
+FwpmEngineClose0
+FwpmEngineGetOption0
+FwpmEngineGetSecurityInfo0
+FwpmEngineOpen0
+FwpmEngineSetOption0
+FwpmEngineSetSecurityInfo0
+FwpmEventProviderCreate0
+FwpmEventProviderDestroy0
+FwpmEventProviderFireNetEvent0
+FwpmEventProviderIsNetEventTypeEnabled0
+FwpmFilterAdd0
+FwpmFilterCreateEnumHandle0
+FwpmFilterDeleteById0
+FwpmFilterDeleteByKey0
+FwpmFilterDestroyEnumHandle0
+FwpmFilterEnum0
+FwpmFilterGetById0
+FwpmFilterGetByKey0
+FwpmFilterGetSecurityInfoByKey0
+FwpmFilterSetSecurityInfoByKey0
+FwpmFilterSubscribeChanges0
+FwpmFilterSubscriptionsGet0
+FwpmFilterUnsubscribeChanges0
+FwpmFreeMemory0
+FwpmGetAppIdFromFileName0
+FwpmIPsecTunnelAdd0
+FwpmIPsecTunnelDeleteByKey0
+FwpmLayerCreateEnumHandle0
+FwpmLayerDestroyEnumHandle0
+FwpmLayerEnum0
+FwpmLayerGetById0
+FwpmLayerGetByKey0
+FwpmLayerGetSecurityInfoByKey0
+FwpmLayerSetSecurityInfoByKey0
+FwpmNetEventCreateEnumHandle0
+FwpmNetEventDestroyEnumHandle0
+FwpmNetEventEnum0
+FwpmNetEventsGetSecurityInfo0
+FwpmNetEventsSetSecurityInfo0
+FwpmProviderAdd0
+FwpmProviderContextAdd0
+FwpmProviderContextCreateEnumHandle0
+FwpmProviderContextDeleteById0
+FwpmProviderContextDeleteByKey0
+FwpmProviderContextDestroyEnumHandle0
+FwpmProviderContextEnum0
+FwpmProviderContextGetById0
+FwpmProviderContextGetByKey0
+FwpmProviderContextGetSecurityInfoByKey0
+FwpmProviderContextSetSecurityInfoByKey0
+FwpmProviderContextSubscribeChanges0
+FwpmProviderContextSubscriptionsGet0
+FwpmProviderContextUnsubscribeChanges0
+FwpmProviderCreateEnumHandle0
+FwpmProviderDeleteByKey0
+FwpmProviderDestroyEnumHandle0
+FwpmProviderEnum0
+FwpmProviderGetByKey0
+FwpmProviderGetSecurityInfoByKey0
+FwpmProviderSetSecurityInfoByKey0
+FwpmProviderSubscribeChanges0
+FwpmProviderSubscriptionsGet0
+FwpmProviderUnsubscribeChanges0
+FwpmSessionCreateEnumHandle0
+FwpmSessionDestroyEnumHandle0
+FwpmSessionEnum0
+FwpmSubLayerAdd0
+FwpmSubLayerCreateEnumHandle0
+FwpmSubLayerDeleteByKey0
+FwpmSubLayerDestroyEnumHandle0
+FwpmSubLayerEnum0
+FwpmSubLayerGetByKey0
+FwpmSubLayerGetSecurityInfoByKey0
+FwpmSubLayerSetSecurityInfoByKey0
+FwpmSubLayerSubscribeChanges0
+FwpmSubLayerSubscriptionsGet0
+FwpmSubLayerUnsubscribeChanges0
+FwpmTraceRestoreDefaults0
+FwpmTransactionAbort0
+FwpmTransactionBegin0
+FwpmTransactionCommit0
+FwpsAleExplicitCredentialsQuery0
+FwpsClassifyUser0
+FwpsFreeMemory0
+FwpsGetInProcReplicaOffset0
+FwpsLayerCreateInProcReplica0
+FwpsLayerReleaseInProcReplica0
+FwpsOpenToken0
+IPsecGetStatistics0
+IPsecKeyModuleAdd0
+IPsecKeyModuleCompleteAcquire0
+IPsecKeyModuleDelete0
+IPsecSaContextAddInbound0
+IPsecSaContextAddOutbound0
+IPsecSaContextCreate0
+IPsecSaContextCreateEnumHandle0
+IPsecSaContextDeleteById0
+IPsecSaContextDestroyEnumHandle0
+IPsecSaContextEnum0
+IPsecSaContextExpire0
+IPsecSaContextGetById0
+IPsecSaContextGetSpi0
+IPsecSaCreateEnumHandle0
+IPsecSaDbGetSecurityInfo0
+IPsecSaDbSetSecurityInfo0
+IPsecSaDestroyEnumHandle0
+IPsecSaEnum0
+IPsecSaInitiateAsync0
+IkeextGetConfigParameters0
+IkeextGetStatistics0
+IkeextSaCreateEnumHandle0
+IkeextSaDbGetSecurityInfo0
+IkeextSaDbSetSecurityInfo0
+IkeextSaDeleteById0
+IkeextSaDestroyEnumHandle0
+IkeextSaEnum0
+IkeextSaGetById0
+IkeextSetConfigParameters0
+WSADeleteSocketPeerTargetName
+WSAImpersonateSocketPeer
+WSAQuerySocketSecurity
+WSARevertImpersonation
+WSASetSocketPeerTargetName
+WSASetSocketSecurity
+wfpdiagW
diff --git a/lib/libc/mingw/lib64/httpapi.def b/lib/libc/mingw/lib64/httpapi.def
new file mode 100644
index 0000000000..fe1c25ad44
--- /dev/null
+++ b/lib/libc/mingw/lib64/httpapi.def
@@ -0,0 +1,73 @@
+;
+; Definition file of HTTPAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "HTTPAPI.dll"
+EXPORTS
+HttpAddFragmentToCache
+HttpAddUrl
+HttpAddUrlToConfigGroup
+HttpCreateAppPool
+HttpCreateConfigGroup
+HttpCreateFilter
+HttpAddUrlToUrlGroup
+HttpCancelHttpRequest
+HttpCloseRequestQueue
+HttpCloseServerSession
+HttpCloseUrlGroup
+HttpControlService
+HttpCreateHttpHandle
+HttpCreateRequestQueue
+HttpCreateServerSession
+HttpCreateUrlGroup
+HttpDeleteConfigGroup
+HttpDeleteServiceConfiguration
+HttpFilterAccept
+HttpFilterAppRead
+HttpFilterAppWrite
+HttpFilterAppWriteAndRawRead
+HttpFilterClose
+HttpFilterRawRead
+HttpFilterRawWrite
+HttpFilterRawWriteAndAppRead
+HttpFlushResponseCache
+HttpGetCounters
+HttpInitialize
+HttpOpenAppPool
+HttpOpenControlChannel
+HttpOpenFilter
+HttpQueryAppPoolInformation
+HttpQueryConfigGroupInformation
+HttpQueryControlChannelInformation
+HttpQueryRequestQueueProperty
+HttpQueryServerSessionProperty
+HttpQueryServiceConfiguration
+HttpQueryUrlGroupProperty
+HttpReadFragmentFromCache
+HttpReceiveClientCertificate
+HttpReceiveHttpRequest
+HttpReceiveRequestEntityBody
+HttpRemoveAllUrlsFromConfigGroup
+HttpRemoveUrl
+HttpRemoveUrlFromConfigGroup
+HttpRemoveUrlFromUrlGroup
+HttpSendHttpResponse
+HttpSendResponseEntityBody
+HttpSetAppPoolInformation
+HttpSetConfigGroupInformation
+HttpSetControlChannelInformation
+HttpSetAppPoolInformation
+HttpSetConfigGroupInformation
+HttpSetControlChannelInformation
+HttpSetRequestQueueProperty
+HttpSetServerSessionProperty
+HttpSetServiceConfiguration
+HttpShutdownAppPool
+HttpShutdownFilter
+HttpSetUrlGroupProperty
+HttpShutdownRequestQueue
+HttpTerminate
+HttpWaitForDemandStart
+HttpWaitForDisconnect
+HttpWaitForDisconnectEx
diff --git a/lib/libc/mingw/lib64/iscsidsc.def b/lib/libc/mingw/lib64/iscsidsc.def
new file mode 100644
index 0000000000..7928765353
--- /dev/null
+++ b/lib/libc/mingw/lib64/iscsidsc.def
@@ -0,0 +1,79 @@
+;
+; Definition file of ISCSIDSC.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "ISCSIDSC.dll"
+EXPORTS
+AddISNSServerA
+AddISNSServerW
+AddIScsiConnectionA
+AddIScsiConnectionW
+AddIScsiSendTargetPortalA
+AddIScsiSendTargetPortalW
+AddIScsiStaticTargetA
+AddIScsiStaticTargetW
+AddPersistentIScsiDeviceA
+AddPersistentIScsiDeviceW
+ClearPersistentIScsiDevices
+;DllMain
+GetDevicesForIScsiSessionA
+GetDevicesForIScsiSessionW
+GetIScsiIKEInfoA
+GetIScsiIKEInfoW
+GetIScsiInitiatorNodeNameA
+GetIScsiInitiatorNodeNameW
+GetIScsiSessionListA
+GetIScsiSessionListW
+GetIScsiTargetInformationA
+GetIScsiTargetInformationW
+GetIScsiVersionInformation
+LoginIScsiTargetA
+LoginIScsiTargetW
+LogoutIScsiTarget
+RefreshISNSServerA
+RefreshISNSServerW
+RefreshIScsiSendTargetPortalA
+RefreshIScsiSendTargetPortalW
+RemoveISNSServerA
+RemoveISNSServerW
+RemoveIScsiConnection
+RemoveIScsiPersistentTargetA
+RemoveIScsiPersistentTargetW
+RemoveIScsiSendTargetPortalA
+RemoveIScsiSendTargetPortalW
+RemoveIScsiStaticTargetA
+RemoveIScsiStaticTargetW
+RemovePersistentIScsiDeviceA
+RemovePersistentIScsiDeviceW
+ReportActiveIScsiTargetMappingsA
+ReportActiveIScsiTargetMappingsW
+ReportISNSServerListA
+ReportISNSServerListW
+ReportIScsiInitiatorListA
+ReportIScsiInitiatorListW
+ReportIScsiPersistentLoginsA
+ReportIScsiPersistentLoginsW
+ReportIScsiSendTargetPortalsA
+ReportIScsiSendTargetPortalsExA
+ReportIScsiSendTargetPortalsExW
+ReportIScsiSendTargetPortalsW
+ReportIScsiTargetPortalsA
+ReportIScsiTargetPortalsW
+ReportIScsiTargetsA
+ReportIScsiTargetsW
+ReportPersistentIScsiDevicesA
+ReportPersistentIScsiDevicesW
+SendScsiInquiry
+SendScsiReadCapacity
+SendScsiReportLuns
+SetIScsiGroupPresharedKey
+SetIScsiIKEInfoA
+SetIScsiIKEInfoW
+SetIScsiInitiatorCHAPSharedSecret
+SetIScsiInitiatorNodeNameA
+SetIScsiInitiatorNodeNameW
+SetIScsiTunnelModeOuterAddressA
+SetIScsiTunnelModeOuterAddressW
+SetupPersistentIScsiDevices
+SetupPersistentIScsiVolumes
diff --git a/lib/libc/mingw/lib64/mprapi.def b/lib/libc/mingw/lib64/mprapi.def
new file mode 100644
index 0000000000..9423b7d432
--- /dev/null
+++ b/lib/libc/mingw/lib64/mprapi.def
@@ -0,0 +1,140 @@
+;
+; Definition file of MPRAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "MPRAPI.dll"
+EXPORTS
+CompressPhoneNumber
+MprAdminBufferFree
+MprAdminConnectionClearStats
+MprAdminConnectionEnum
+MprAdminConnectionGetInfo
+MprAdminConnectionRemoveQuarantine
+MprAdminDeregisterConnectionNotification
+MprAdminDeviceEnum
+MprAdminEstablishDomainRasServer
+MprAdminGetErrorString
+MprAdminGetPDCServer
+MprAdminInterfaceConnect
+MprAdminInterfaceCreate
+MprAdminInterfaceDelete
+MprAdminInterfaceDeviceGetInfo
+MprAdminInterfaceDeviceSetInfo
+MprAdminInterfaceDisconnect
+MprAdminInterfaceEnum
+MprAdminInterfaceGetCredentials
+MprAdminInterfaceGetCredentialsEx
+MprAdminInterfaceGetHandle
+MprAdminInterfaceGetInfo
+MprAdminInterfaceQueryUpdateResult
+MprAdminInterfaceSetCredentials
+MprAdminInterfaceSetCredentialsEx
+MprAdminInterfaceSetInfo
+MprAdminInterfaceTransportAdd
+MprAdminInterfaceTransportGetInfo
+MprAdminInterfaceTransportRemove
+MprAdminInterfaceTransportSetInfo
+MprAdminInterfaceUpdatePhonebookInfo
+MprAdminInterfaceUpdateRoutes
+MprAdminIsDomainRasServer
+MprAdminIsServiceRunning
+MprAdminMIBBufferFree
+MprAdminMIBEntryCreate
+MprAdminMIBEntryDelete
+MprAdminMIBEntryGet
+MprAdminMIBEntryGetFirst
+MprAdminMIBEntryGetNext
+MprAdminMIBEntrySet
+MprAdminMIBServerConnect
+MprAdminMIBServerDisconnect
+MprAdminPortClearStats
+MprAdminPortDisconnect
+MprAdminPortEnum
+MprAdminPortGetInfo
+MprAdminPortReset
+MprAdminRegisterConnectionNotification
+MprAdminSendUserMessage
+MprAdminServerConnect
+MprAdminServerDisconnect
+MprAdminServerGetCredentials
+MprAdminServerGetInfo
+MprAdminServerSetCredentials
+MprAdminServerSetInfo
+MprAdminTransportCreate
+MprAdminTransportGetInfo
+MprAdminTransportSetInfo
+MprAdminUpgradeUsers
+MprAdminUserClose
+MprAdminUserGetInfo
+MprAdminUserOpen
+MprAdminUserRead
+MprAdminUserReadProfFlags
+MprAdminUserServerConnect
+MprAdminUserServerDisconnect
+MprAdminUserSetInfo
+MprAdminUserWrite
+MprAdminUserWriteProfFlags
+MprConfigBufferFree
+MprConfigFilterGetInfo
+MprConfigFilterSetInfo
+MprConfigGetFriendlyName
+MprConfigGetGuidName
+MprConfigInterfaceCreate
+MprConfigInterfaceDelete
+MprConfigInterfaceEnum
+MprConfigInterfaceGetHandle
+MprConfigInterfaceGetInfo
+MprConfigInterfaceSetInfo
+MprConfigInterfaceTransportAdd
+MprConfigInterfaceTransportEnum
+MprConfigInterfaceTransportGetHandle
+MprConfigInterfaceTransportGetInfo
+MprConfigInterfaceTransportRemove
+MprConfigInterfaceTransportSetInfo
+MprConfigServerBackup
+MprConfigServerConnect
+MprConfigServerDisconnect
+MprConfigServerGetInfo
+MprConfigServerInstall
+MprConfigServerRefresh
+MprConfigServerRestore
+MprConfigServerSetInfo
+MprConfigTransportCreate
+MprConfigTransportDelete
+MprConfigTransportEnum
+MprConfigTransportGetHandle
+MprConfigTransportGetInfo
+MprConfigTransportSetInfo
+MprDomainQueryAccess
+MprDomainQueryRasServer
+MprDomainRegisterRasServer
+MprDomainSetAccess
+MprGetUsrParams
+MprInfoBlockAdd
+MprInfoBlockFind
+MprInfoBlockQuerySize
+MprInfoBlockRemove
+MprInfoBlockSet
+MprInfoCreate
+MprInfoDelete
+MprInfoDuplicate
+MprInfoRemoveAll
+MprPortSetUsage
+RasAdminBufferFree
+RasAdminConnectionClearStats
+RasAdminConnectionEnum
+RasAdminConnectionGetInfo
+RasAdminGetErrorString
+RasAdminGetPDCServer
+RasAdminIsServiceRunning
+RasAdminPortClearStats
+RasAdminPortDisconnect
+RasAdminPortEnum
+RasAdminPortGetInfo
+RasAdminPortReset
+RasAdminServerConnect
+RasAdminServerDisconnect
+RasAdminUserGetInfo
+RasAdminUserSetInfo
+RasPrivilegeAndCallBackNumber
diff --git a/lib/libc/mingw/lib64/mscms.def b/lib/libc/mingw/lib64/mscms.def
new file mode 100644
index 0000000000..946d3f4010
--- /dev/null
+++ b/lib/libc/mingw/lib64/mscms.def
@@ -0,0 +1,100 @@
+;
+; Definition file of mscms.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "mscms.dll"
+EXPORTS
+AssociateColorProfileWithDeviceA
+AssociateColorProfileWithDeviceW
+CheckBitmapBits
+CheckColors
+CloseColorProfile
+ColorCplGetDefaultProfileScope
+ColorCplGetDefaultRenderingIntentScope
+ColorCplGetProfileProperties
+ColorCplHasSystemWideAssociationListChanged
+ColorCplInitialize
+ColorCplLoadAssociationList
+ColorCplMergeAssociationLists
+ColorCplOverwritePerUserAssociationList
+ColorCplReleaseProfileProperties
+ColorCplResetSystemWideAssociationListChangedWarning
+ColorCplSaveAssociationList
+ColorCplSetUsePerUserProfiles
+ColorCplUninitialize
+ConvertColorNameToIndex
+ConvertIndexToColorName
+CreateColorTransformA
+CreateColorTransformW
+CreateDeviceLinkProfile
+CreateMultiProfileTransform
+CreateProfileFromLogColorSpaceA
+CreateProfileFromLogColorSpaceW
+DeleteColorTransform
+DeviceRenameEvent
+DisassociateColorProfileFromDeviceA
+DisassociateColorProfileFromDeviceW
+EnumColorProfilesA
+EnumColorProfilesW
+GenerateCopyFilePaths
+GetCMMInfo
+GetColorDirectoryA
+GetColorDirectoryW
+GetColorProfileElement
+GetColorProfileElementTag
+GetColorProfileFromHandle
+GetColorProfileHeader
+GetCountColorProfileElements
+GetNamedProfileInfo
+GetPS2ColorRenderingDictionary
+GetPS2ColorRenderingIntent
+GetPS2ColorSpaceArray
+GetStandardColorSpaceProfileA
+GetStandardColorSpaceProfileW
+InstallColorProfileA
+InstallColorProfileW
+InternalGetDeviceConfig
+InternalGetPS2CSAFromLCS
+InternalGetPS2ColorRenderingDictionary
+InternalGetPS2ColorSpaceArray
+InternalGetPS2PreviewCRD
+InternalSetDeviceConfig
+IsColorProfileTagPresent
+IsColorProfileValid
+OpenColorProfileA
+OpenColorProfileW
+RegisterCMMA
+RegisterCMMW
+SelectCMM
+SetColorProfileElement
+SetColorProfileElementReference
+SetColorProfileElementSize
+SetColorProfileHeader
+SetStandardColorSpaceProfileA
+SetStandardColorSpaceProfileW
+SpoolerCopyFileEvent
+TranslateBitmapBits
+TranslateColors
+UninstallColorProfileA
+UninstallColorProfileW
+UnregisterCMMA
+UnregisterCMMW
+WcsAssociateColorProfileWithDevice
+WcsCheckColors
+WcsCreateIccProfile
+WcsDisassociateColorProfileFromDevice
+WcsEnumColorProfiles
+WcsEnumColorProfilesSize
+WcsGetDefaultColorProfile
+WcsGetDefaultColorProfileSize
+WcsGetDefaultRenderingIntent
+WcsGetUsePerUserProfiles
+WcsGpCanInstallOrUninstallProfiles
+WcsGpCanModifyDeviceAssociationList
+WcsOpenColorProfileA
+WcsOpenColorProfileW
+WcsSetDefaultColorProfile
+WcsSetDefaultRenderingIntent
+WcsSetUsePerUserProfiles
+WcsTranslateColors
diff --git a/lib/libc/mingw/lib64/msctfmonitor.def b/lib/libc/mingw/lib64/msctfmonitor.def
new file mode 100644
index 0000000000..56b562e6d9
--- /dev/null
+++ b/lib/libc/mingw/lib64/msctfmonitor.def
@@ -0,0 +1,89 @@
+;
+; Definition file of MSCTF.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "MSCTF.dll"
+EXPORTS
+TF_GetLangDescriptionFromHKL
+TF_GetLangIcon
+TF_GetLangIconFromHKL
+TF_RunInputCPL
+CtfImeAssociateFocus
+CtfImeConfigure
+CtfImeConversionList
+CtfImeCreateInputContext
+CtfImeCreateThreadMgr
+CtfImeDestroy
+CtfImeDestroyInputContext
+CtfImeDestroyThreadMgr
+CtfImeDispatchDefImeMessage
+CtfImeEnumRegisterWord
+CtfImeEscape
+CtfImeEscapeEx
+CtfImeGetGuidAtom
+CtfImeGetRegisterWordStyle
+CtfImeInquire
+CtfImeInquireExW
+CtfImeIsGuidMapEnable
+CtfImeIsIME
+CtfImeProcessCicHotkey
+CtfImeProcessKey
+CtfImeRegisterWord
+CtfImeSelect
+CtfImeSelectEx
+CtfImeSetActiveContext
+CtfImeSetCompositionString
+CtfImeSetFocus
+CtfImeToAsciiEx
+CtfImeUnregisterWord
+CtfNotifyIME
+DllCanUnloadNow
+DllGetClassObject
+DllRegisterServer
+DllUnregisterServer
+SetInputScope
+SetInputScopeXML
+SetInputScopes
+SetInputScopes2
+TF_AttachThreadInput
+TF_CUASAppFix
+TF_CanUninitialize
+TF_CheckThreadInputIdle
+TF_CleanUpPrivateMessages
+TF_ClearLangBarAddIns
+TF_CreateCategoryMgr
+TF_CreateCicLoadMutex
+TF_CreateCicLoadWinStaMutex
+TF_CreateDisplayAttributeMgr
+TF_CreateInputProcessorProfiles
+TF_CreateLangBarItemMgr
+TF_CreateLangBarMgr
+TF_CreateThreadMgr
+TF_DllDetachInOther
+TF_GetAppCompatFlags
+TF_GetCompatibleKeyboardLayout
+TF_GetGlobalCompartment
+TF_GetInitSystemFlags
+TF_GetInputScope
+TF_GetShowFloatingStatus
+TF_GetThreadFlags
+TF_GetThreadMgr
+TF_InitSystem
+TF_InvalidAssemblyListCache
+TF_InvalidAssemblyListCacheIfExist
+TF_IsCtfmonRunning
+TF_IsFullScreenWindowActivated
+TF_IsThreadWithFlags
+TF_MapCompatibleHKL
+TF_MapCompatibleKeyboardTip
+TF_Notify
+TF_PostAllThreadMsg
+TF_RegisterLangBarAddIn
+TF_SendLangBandMsg
+TF_SetDefaultRemoteKeyboardLayout
+TF_SetShowFloatingStatus
+TF_SetThreadFlags
+TF_UninitSystem
+TF_UnregisterLangBarAddIn
+TF_WaitForInitialized
diff --git a/lib/libc/mingw/lib64/msvfw32.def b/lib/libc/mingw/lib64/msvfw32.def
new file mode 100644
index 0000000000..b105192bed
--- /dev/null
+++ b/lib/libc/mingw/lib64/msvfw32.def
@@ -0,0 +1,55 @@
+;
+; Exports of file MSVFW32.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY MSVFW32.dll
+EXPORTS
+VideoForWindowsVersion
+DrawDibBegin
+DrawDibChangePalette
+DrawDibClose
+DrawDibDraw
+DrawDibEnd
+DrawDibGetBuffer
+DrawDibGetPalette
+DrawDibOpen
+DrawDibProfileDisplay
+DrawDibRealize
+DrawDibSetPalette
+DrawDibStart
+DrawDibStop
+DrawDibTime
+GetOpenFileNamePreview
+GetOpenFileNamePreviewA
+GetOpenFileNamePreviewW
+GetSaveFileNamePreviewA
+GetSaveFileNamePreviewW
+ICClose
+ICCompress
+ICCompressorChoose
+ICCompressorFree
+ICDecompress
+ICDraw
+ICDrawBegin
+ICGetDisplayFormat
+ICGetInfo
+ICImageCompress
+ICImageDecompress
+ICInfo
+ICInstall
+ICLocate
+ICMThunk32
+ICOpen
+ICOpenFunction
+ICRemove
+ICSendMessage
+ICSeqCompressFrame
+ICSeqCompressFrameEnd
+ICSeqCompressFrameStart
+MCIWndCreate
+MCIWndCreateA
+MCIWndCreateW
+MCIWndRegisterClass
+StretchDIB
diff --git a/lib/libc/mingw/lib64/newdev.def b/lib/libc/mingw/lib64/newdev.def
new file mode 100644
index 0000000000..157d61efd5
--- /dev/null
+++ b/lib/libc/mingw/lib64/newdev.def
@@ -0,0 +1,20 @@
+;
+; Exports of file newdev.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY newdev.dll
+EXPORTS
+ClientSideInstallW
+DevInstallW
+InstallDevInst
+InstallDevInstEx
+InstallNewDevice
+InstallSelectedDevice
+InstallSelectedDriver
+InstallWindowsUpdateDriver
+RollbackDriver
+UpdateDriverForPlugAndPlayDevicesA
+UpdateDriverForPlugAndPlayDevicesW
+WindowsUpdateDriverSearchingPolicyUi
diff --git a/lib/libc/mingw/lib64/ntlanman.def b/lib/libc/mingw/lib64/ntlanman.def
new file mode 100644
index 0000000000..ce5d11e992
--- /dev/null
+++ b/lib/libc/mingw/lib64/ntlanman.def
@@ -0,0 +1,39 @@
+;
+; Exports of file NTLANMAN.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY NTLANMAN.dll
+EXPORTS
+NPGetConnection
+NPGetCaps
+DllMain
+I_SystemFocusDialog
+NPGetUser
+NPAddConnection
+NPCancelConnection
+IsDfsPathEx
+NPAddConnection3ForCSCAgent
+NPCancelConnectionForCSCAgent
+ServerBrowseDialogA0
+ShareAsDialogA0
+ShareCreate
+ShareManage
+ShareStop
+StopShareDialogA0
+NPPropertyDialog
+NPGetDirectoryType
+NPDirectoryNotify
+NPGetPropertyText
+NPOpenEnum
+NPEnumResource
+NPCloseEnum
+NPFormatNetworkName
+NPAddConnection3
+NPGetUniversalName
+NPGetResourceParent
+NPGetConnectionPerformance
+NPGetResourceInformation
+NPGetReconnectFlags
+NPGetConnection3
diff --git a/lib/libc/mingw/lib64/pdh.def b/lib/libc/mingw/lib64/pdh.def
new file mode 100644
index 0000000000..0c81e5590a
--- /dev/null
+++ b/lib/libc/mingw/lib64/pdh.def
@@ -0,0 +1,173 @@
+;
+; Definition file of pdh.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "pdh.dll"
+EXPORTS
+PdhPlaGetLogFileNameA
+DllInstall
+PdhAdd009CounterA
+PdhAdd009CounterW
+PdhAddCounterA
+PdhAddCounterW
+PdhAddEnglishCounterA
+PdhAddEnglishCounterW
+PdhBindInputDataSourceA
+PdhBindInputDataSourceW
+PdhBrowseCountersA
+PdhBrowseCountersHA
+PdhBrowseCountersHW
+PdhBrowseCountersW
+PdhCalculateCounterFromRawValue
+PdhCloseLog
+PdhCloseQuery
+PdhCollectQueryData
+PdhCollectQueryDataEx
+PdhCollectQueryDataWithTime
+PdhComputeCounterStatistics
+PdhConnectMachineA
+PdhConnectMachineW
+PdhCreateSQLTablesA
+PdhCreateSQLTablesW
+PdhEnumLogSetNamesA
+PdhEnumLogSetNamesW
+PdhEnumMachinesA
+PdhEnumMachinesHA
+PdhEnumMachinesHW
+PdhEnumMachinesW
+PdhEnumObjectItemsA
+PdhEnumObjectItemsHA
+PdhEnumObjectItemsHW
+PdhEnumObjectItemsW
+PdhEnumObjectsA
+PdhEnumObjectsHA
+PdhEnumObjectsHW
+PdhEnumObjectsW
+PdhExpandCounterPathA
+PdhExpandCounterPathW
+PdhExpandWildCardPathA
+PdhExpandWildCardPathHA
+PdhExpandWildCardPathHW
+PdhExpandWildCardPathW
+PdhFormatFromRawValue
+PdhGetCounterInfoA
+PdhGetCounterInfoW
+PdhGetCounterTimeBase
+PdhGetDataSourceTimeRangeA
+PdhGetDataSourceTimeRangeH
+PdhGetDataSourceTimeRangeW
+PdhGetDefaultPerfCounterA
+PdhGetDefaultPerfCounterHA
+PdhGetDefaultPerfCounterHW
+PdhGetDefaultPerfCounterW
+PdhGetDefaultPerfObjectA
+PdhGetDefaultPerfObjectHA
+PdhGetDefaultPerfObjectHW
+PdhGetDefaultPerfObjectW
+PdhGetDllVersion
+PdhGetExplainText
+PdhGetFormattedCounterArrayA
+PdhGetFormattedCounterArrayW
+PdhGetFormattedCounterValue
+PdhGetLogFileSize
+PdhGetLogFileTypeA
+PdhGetLogFileTypeW
+PdhGetLogSetGUID
+PdhGetRawCounterArrayA
+PdhGetRawCounterArrayW
+PdhGetRawCounterValue
+PdhIsRealTimeQuery
+PdhListLogFileHeaderA
+PdhListLogFileHeaderW
+PdhLookupPerfIndexByNameA
+PdhLookupPerfIndexByNameW
+PdhLookupPerfNameByIndexA
+PdhLookupPerfNameByIndexW
+PdhMakeCounterPathA
+PdhMakeCounterPathW
+PdhOpenLogA
+PdhOpenLogW
+PdhOpenQuery
+PdhOpenQueryA
+PdhOpenQueryH
+PdhOpenQueryW
+PdhParseCounterPathA
+PdhParseCounterPathW
+PdhParseInstanceNameA
+PdhParseInstanceNameW
+PdhPlaAddItemA
+PdhPlaAddItemW
+PdhPlaCreateA
+PdhPlaCreateW
+PdhPlaDeleteA
+PdhPlaDeleteW
+PdhPlaDowngradeW
+PdhPlaEnumCollectionsA
+PdhPlaEnumCollectionsW
+PdhPlaGetInfoA
+PdhPlaGetInfoW
+PdhPlaGetLogFileNameW
+PdhPlaGetScheduleA
+PdhPlaGetScheduleW
+PdhPlaRemoveAllItemsA
+PdhPlaRemoveAllItemsW
+PdhPlaScheduleA
+PdhPlaScheduleW
+PdhPlaSetInfoA
+PdhPlaSetInfoW
+PdhPlaSetItemListA
+PdhPlaSetItemListW
+PdhPlaSetRunAsA
+PdhPlaSetRunAsW
+PdhPlaStartA
+PdhPlaStartW
+PdhPlaStopA
+PdhPlaStopW
+PdhPlaUpgradeW
+PdhPlaValidateInfoA
+PdhPlaValidateInfoW
+PdhReadRawLogRecord
+PdhRelogA
+PdhRelogW
+PdhRemoveCounter
+PdhSelectDataSourceA
+PdhSelectDataSourceW
+PdhSetCounterScaleFactor
+PdhSetDefaultRealTimeDataSource
+PdhSetLogSetRunID
+PdhSetQueryTimeRange
+PdhTranslate009CounterA
+PdhTranslate009CounterW
+PdhTranslateLocaleCounterA
+PdhTranslateLocaleCounterW
+PdhUpdateLogA
+PdhUpdateLogFileCatalog
+PdhUpdateLogW
+PdhValidatePathA
+PdhValidatePathExA
+PdhValidatePathExW
+PdhValidatePathW
+PdhVbAddCounter
+PdhVbCreateCounterPathList
+PdhVbGetCounterPathElements
+PdhVbGetCounterPathFromList
+PdhVbGetDoubleCounterValue
+PdhVbGetLogFileSize
+PdhVbGetOneCounterPath
+PdhVbIsGoodStatus
+PdhVbOpenLog
+PdhVbOpenQuery
+PdhVbUpdateLog
+PdhVerifySQLDBA
+PdhVerifySQLDBW
+PdhiPla2003SP1Installed
+PdhiPlaDowngrade
+PdhiPlaFormatBlanksA
+PdhiPlaFormatBlanksW
+PdhiPlaGetVersion
+PdhiPlaRunAs
+PdhiPlaSetRunAs
+PdhiPlaUpgrade
+PlaTimeInfoToMilliSeconds
+PdhpGetLoggerName
diff --git a/lib/libc/mingw/lib64/quartz.def b/lib/libc/mingw/lib64/quartz.def
new file mode 100644
index 0000000000..795e90fa5d
--- /dev/null
+++ b/lib/libc/mingw/lib64/quartz.def
@@ -0,0 +1,17 @@
+;
+; Exports of file QUARTZ.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY QUARTZ.dll
+EXPORTS
+AMGetErrorTextA
+AMGetErrorTextW
+AmpFactorToDB
+DBToAmpFactor
+DllCanUnloadNow
+DllGetClassObject
+DllRegisterServer
+DllUnregisterServer
+GetProxyDllInfo
diff --git a/lib/libc/mingw/lib64/query.def b/lib/libc/mingw/lib64/query.def
new file mode 100644
index 0000000000..86ac59ced7
--- /dev/null
+++ b/lib/libc/mingw/lib64/query.def
@@ -0,0 +1,1447 @@
+;
+; Exports of file query.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY query.dll
+EXPORTS
+; class CCoTaskAllocator CoTaskAllocator
+?CoTaskAllocator@@3VCCoTaskAllocator@@A DATA
+; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(struct tagPROPVARIANT & __ptr64,class PMemoryAllocator & __ptr64) __ptr64
+??0CAllocStorageVariant@@QEAA@AEAUtagPROPVARIANT@@AEAVPMemoryAllocator@@@Z
+; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(class PDeSerStream & __ptr64,class PMemoryAllocator & __ptr64) __ptr64
+??0CAllocStorageVariant@@QEAA@AEAVPDeSerStream@@AEAVPMemoryAllocator@@@Z
+; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(char const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
+??0CAllocStorageVariant@@QEAA@PEBDAEAVPMemoryAllocator@@@Z
+; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(unsigned short const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
+??0CAllocStorageVariant@@QEAA@PEBGAEAVPMemoryAllocator@@@Z
+; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(struct _GUID const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
+??0CAllocStorageVariant@@QEAA@PEBU_GUID@@AEAVPMemoryAllocator@@@Z
+; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(enum VARENUM,unsigned long,class PMemoryAllocator & __ptr64) __ptr64
+??0CAllocStorageVariant@@QEAA@W4VARENUM@@KAEAVPMemoryAllocator@@@Z
+; public: __cdecl CCatState::CCatState(void) __ptr64
+??0CCatState@@QEAA@XZ
+; public: __cdecl CCategorizationSet::CCategorizationSet(class CCategorizationSet const & __ptr64) __ptr64
+??0CCategorizationSet@@QEAA@AEBV0@@Z
+; public: __cdecl CCategorizationSet::CCategorizationSet(unsigned int) __ptr64
+??0CCategorizationSet@@QEAA@I@Z
+; public: __cdecl CCiAdminParams::CCiAdminParams(class CLangList * __ptr64) __ptr64
+??0CCiAdminParams@@QEAA@PEAVCLangList@@@Z
+; public: __cdecl CCiRegParams::CCiRegParams(unsigned short const * __ptr64) __ptr64
+??0CCiRegParams@@QEAA@PEBG@Z
+; public: __cdecl CColumnSet::CColumnSet(unsigned int) __ptr64
+??0CColumnSet@@QEAA@I@Z
+; public: __cdecl CColumns::CColumns(class CColumns const & __ptr64) __ptr64
+??0CColumns@@QEAA@AEBV0@@Z
+; public: __cdecl CColumns::CColumns(unsigned int) __ptr64
+??0CColumns@@QEAA@I@Z
+; public: __cdecl CContentRestriction::CContentRestriction(unsigned short const * __ptr64,class CFullPropSpec const & __ptr64,unsigned long,unsigned long) __ptr64
+??0CContentRestriction@@QEAA@PEBGAEBVCFullPropSpec@@KK@Z
+; public: __cdecl CDFA::CDFA(unsigned short const * __ptr64,class CTimeLimit & __ptr64,unsigned char) __ptr64
+??0CDFA@@QEAA@PEBGAEAVCTimeLimit@@E@Z
+; public: __cdecl CDbColId::CDbColId(struct _GUID const & __ptr64,unsigned short const * __ptr64) __ptr64
+??0CDbColId@@QEAA@AEBU_GUID@@PEBG@Z
+; public: __cdecl CDbColId::CDbColId(struct tagDBID const & __ptr64) __ptr64
+??0CDbColId@@QEAA@AEBUtagDBID@@@Z
+; public: __cdecl CDbColId::CDbColId(class CDbColId const & __ptr64) __ptr64
+??0CDbColId@@QEAA@AEBV0@@Z
+; public: __cdecl CDbColId::CDbColId(void) __ptr64
+??0CDbColId@@QEAA@XZ
+; public: __cdecl CDbColumns::CDbColumns(unsigned int) __ptr64
+??0CDbColumns@@QEAA@I@Z
+; public: __cdecl CDbContentRestriction::CDbContentRestriction(unsigned short const * __ptr64,struct tagDBID const & __ptr64,unsigned long,unsigned long) __ptr64
+??0CDbContentRestriction@@QEAA@PEBGAEBUtagDBID@@KK@Z
+; public: __cdecl CDbContentRestriction::CDbContentRestriction(unsigned short const * __ptr64,class CDbColumnNode const & __ptr64,unsigned long,unsigned long) __ptr64
+??0CDbContentRestriction@@QEAA@PEBGAEBVCDbColumnNode@@KK@Z
+; public: __cdecl CDbNatLangRestriction::CDbNatLangRestriction(unsigned short const * __ptr64,struct tagDBID const & __ptr64,unsigned long) __ptr64
+??0CDbNatLangRestriction@@QEAA@PEBGAEBUtagDBID@@K@Z
+; public: __cdecl CDbNatLangRestriction::CDbNatLangRestriction(unsigned short const * __ptr64,class CDbColumnNode const & __ptr64,unsigned long) __ptr64
+??0CDbNatLangRestriction@@QEAA@PEBGAEBVCDbColumnNode@@K@Z
+; public: __cdecl CDbQueryResults::CDbQueryResults(void) __ptr64
+??0CDbQueryResults@@QEAA@XZ
+; public: __cdecl CDbSelectNode::CDbSelectNode(void) __ptr64
+??0CDbSelectNode@@QEAA@XZ
+; public: __cdecl CDbSortSet::CDbSortSet(unsigned int) __ptr64
+??0CDbSortSet@@QEAA@I@Z
+; public: __cdecl CDefColumnRegEntry::CDefColumnRegEntry(void) __ptr64
+??0CDefColumnRegEntry@@QEAA@XZ
+; public: __cdecl CDriveInfo::CDriveInfo(unsigned short const * __ptr64,unsigned long) __ptr64
+??0CDriveInfo@@QEAA@PEBGK@Z
+; public: __cdecl CDynStream::CDynStream(class PMmStream * __ptr64) __ptr64
+??0CDynStream@@QEAA@PEAVPMmStream@@@Z
+; public: __cdecl CEventItem::CEventItem(unsigned short,unsigned short,unsigned long,unsigned short,unsigned long,void const * __ptr64) __ptr64
+??0CEventItem@@QEAA@GGKGKPEBX@Z
+; public: __cdecl CEventLog::CEventLog(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
+??0CEventLog@@QEAA@PEBG0@Z
+; public: __cdecl CException::CException(long) __ptr64
+??0CException@@QEAA@J@Z
+; public: __cdecl CException::CException(void) __ptr64
+??0CException@@QEAA@XZ
+; public: __cdecl CFileBuffer::CFileBuffer(class CFileMapView & __ptr64,unsigned int) __ptr64
+??0CFileBuffer@@QEAA@AEAVCFileMapView@@I@Z
+; public: __cdecl CFileMapView::CFileMapView(unsigned short const * __ptr64) __ptr64
+??0CFileMapView@@QEAA@PEBG@Z
+; public: __cdecl CFilterDaemon::CFilterDaemon(class CiProxy & __ptr64,class CCiFrameworkParams & __ptr64,class CLangList & __ptr64,unsigned char * __ptr64,unsigned long,struct ICiCFilterClient * __ptr64) __ptr64
+??0CFilterDaemon@@QEAA@AEAVCiProxy@@AEAVCCiFrameworkParams@@AEAVCLangList@@PEAEKPEAUICiCFilterClient@@@Z
+; public: __cdecl CFullPath::CFullPath(unsigned short const * __ptr64) __ptr64
+??0CFullPath@@QEAA@PEBG@Z
+; public: __cdecl CFullPath::CFullPath(unsigned short const * __ptr64,unsigned int) __ptr64
+??0CFullPath@@QEAA@PEBGI@Z
+; public: __cdecl CFullPropSpec::CFullPropSpec(class PDeSerStream & __ptr64) __ptr64
+??0CFullPropSpec@@QEAA@AEAVPDeSerStream@@@Z
+; public: __cdecl CFullPropSpec::CFullPropSpec(class CFullPropSpec const & __ptr64) __ptr64
+??0CFullPropSpec@@QEAA@AEBV0@@Z
+; public: __cdecl CFullPropSpec::CFullPropSpec(void) __ptr64
+??0CFullPropSpec@@QEAA@XZ
+; public: __cdecl CFwAsyncWorkItem::CFwAsyncWorkItem(class CWorkManager & __ptr64,class CWorkQueue & __ptr64) __ptr64
+??0CFwAsyncWorkItem@@QEAA@AEAVCWorkManager@@AEAVCWorkQueue@@@Z
+; public: __cdecl CFwEventItem::CFwEventItem(unsigned short,unsigned long,unsigned short,unsigned long,void * __ptr64) __ptr64
+??0CFwEventItem@@QEAA@GKGKPEAX@Z
+; public: __cdecl CGenericCiProxy::CGenericCiProxy(class CSharedNameGen & __ptr64,unsigned long,unsigned long) __ptr64
+??0CGenericCiProxy@@QEAA@AEAVCSharedNameGen@@KK@Z
+; public: __cdecl CGetDbProps::CGetDbProps(void) __ptr64
+??0CGetDbProps@@QEAA@XZ
+; public: __cdecl CImpersonateRemoteAccess::CImpersonateRemoteAccess(class CImpersonationTokenCache * __ptr64) __ptr64
+??0CImpersonateRemoteAccess@@QEAA@PEAVCImpersonationTokenCache@@@Z
+; public: __cdecl CImpersonationTokenCache::CImpersonationTokenCache(unsigned short const * __ptr64) __ptr64
+??0CImpersonationTokenCache@@QEAA@PEBG@Z
+; public: __cdecl CIndexTable::CIndexTable(class CiStorage & __ptr64,class CTransaction & __ptr64) __ptr64
+??0CIndexTable@@QEAA@AEAVCiStorage@@AEAVCTransaction@@@Z
+; public: __cdecl CInternalPropertyRestriction::CInternalPropertyRestriction(unsigned long,unsigned long,class CStorageVariant const & __ptr64,class CRestriction * __ptr64) __ptr64
+??0CInternalPropertyRestriction@@QEAA@KKAEBVCStorageVariant@@PEAVCRestriction@@@Z
+; public: __cdecl CKeyArray::CKeyArray(int,int) __ptr64
+??0CKeyArray@@QEAA@HH@Z
+; public: __cdecl CLangList::CLangList(struct ICiCLangRes * __ptr64,unsigned long) __ptr64
+??0CLangList@@QEAA@PEAUICiCLangRes@@K@Z
+; public: __cdecl CLocalGlobalPropertyList::CLocalGlobalPropertyList(unsigned long) __ptr64
+??0CLocalGlobalPropertyList@@QEAA@K@Z
+; public: __cdecl CLocalGlobalPropertyList::CLocalGlobalPropertyList(class CEmptyPropertyList * __ptr64,int,unsigned short const * __ptr64,unsigned long) __ptr64
+??0CLocalGlobalPropertyList@@QEAA@PEAVCEmptyPropertyList@@HPEBGK@Z
+; public: __cdecl CMachineAdmin::CMachineAdmin(unsigned short const * __ptr64,int) __ptr64
+??0CMachineAdmin@@QEAA@PEBGH@Z
+; public: __cdecl CMemSerStream::CMemSerStream(unsigned int) __ptr64
+??0CMemSerStream@@QEAA@I@Z
+; public: __cdecl CMemSerStream::CMemSerStream(unsigned char * __ptr64,unsigned long) __ptr64
+??0CMemSerStream@@QEAA@PEAEK@Z
+; public: __cdecl CMetaDataMgr::CMetaDataMgr(int,enum CiVRootTypeEnum,unsigned long,unsigned short const * __ptr64) __ptr64
+??0CMetaDataMgr@@QEAA@HW4CiVRootTypeEnum@@KPEBG@Z
+; public: __cdecl CMmStream::CMmStream(unsigned long,int) __ptr64
+??0CMmStream@@QEAA@KH@Z
+; public: __cdecl CMmStreamConsecBuf::CMmStreamConsecBuf(void) __ptr64
+??0CMmStreamConsecBuf@@QEAA@XZ
+; public: __cdecl CNatLanguageRestriction::CNatLanguageRestriction(unsigned short const * __ptr64,class CFullPropSpec const & __ptr64,unsigned long) __ptr64
+??0CNatLanguageRestriction@@QEAA@PEBGAEBVCFullPropSpec@@K@Z
+; public: __cdecl CNodeRestriction::CNodeRestriction(unsigned long,unsigned int) __ptr64
+??0CNodeRestriction@@QEAA@KI@Z
+; public: __cdecl CNormalizer::CNormalizer(class PNoiseList & __ptr64) __ptr64
+??0CNormalizer@@QEAA@AEAVPNoiseList@@@Z
+; public: __cdecl CPathParser::CPathParser(unsigned short const * __ptr64,unsigned long) __ptr64
+??0CPathParser@@QEAA@PEBGK@Z
+; public: __cdecl CPerfMon::CPerfMon(unsigned short const * __ptr64) __ptr64
+??0CPerfMon@@QEAA@PEBG@Z
+; public: __cdecl CPersDeComp::CPersDeComp(class PDirectory & __ptr64,unsigned long,class CPhysIndex & __ptr64,unsigned long,int,int) __ptr64
+??0CPersDeComp@@QEAA@AEAVPDirectory@@KAEAVCPhysIndex@@KHH@Z
+; protected: __cdecl CPhysStorage::CPhysStorage(class PStorage & __ptr64,class PStorageObject & __ptr64,unsigned long,unsigned int,class PMmStream * __ptr64,int,unsigned int,int) __ptr64
+??0CPhysStorage@@IEAA@AEAVPStorage@@AEAVPStorageObject@@KIPEAVPMmStream@@HIH@Z
+; protected: __cdecl CPhysStorage::CPhysStorage(class PStorage & __ptr64,class PStorageObject & __ptr64,unsigned long,class PMmStream * __ptr64,enum CPhysStorage::EOpenMode,int,unsigned int,int) __ptr64
+??0CPhysStorage@@IEAA@AEAVPStorage@@AEAVPStorageObject@@KPEAVPMmStream@@W4EOpenMode@1@HIH@Z
+; public: __cdecl CPidLookupTable::CPidLookupTable(void) __ptr64
+??0CPidLookupTable@@QEAA@XZ
+; public: __cdecl CPidRemapper::CPidRemapper(class XInterface & __ptr64) __ptr64
+??0CPidRemapper@@QEAA@AEAV?$XInterface@UIPropertyMapper@@@@@Z
+; public: __cdecl CPidRemapper::CPidRemapper(class CPidMapper const & __ptr64,class XInterface & __ptr64,class CRestriction * __ptr64,class CColumnSet * __ptr64,class CSortSet * __ptr64) __ptr64
+??0CPidRemapper@@QEAA@AEBVCPidMapper@@AEAV?$XInterface@UIPropertyMapper@@@@PEAVCRestriction@@PEAVCColumnSet@@PEAVCSortSet@@@Z
+; public: __cdecl CPropListFile::CPropListFile(class CEmptyPropertyList * __ptr64,int,unsigned short const * __ptr64,unsigned long) __ptr64
+??0CPropListFile@@QEAA@PEAVCEmptyPropertyList@@HPEBGK@Z
+; public: __cdecl CPropNameArray::CPropNameArray(class PDeSerStream & __ptr64) __ptr64
+??0CPropNameArray@@QEAA@AEAVPDeSerStream@@@Z
+; public: __cdecl CPropNameArray::CPropNameArray(unsigned int) __ptr64
+??0CPropNameArray@@QEAA@I@Z
+; public: __cdecl CPropStoreManager::CPropStoreManager(unsigned long) __ptr64
+??0CPropStoreManager@@QEAA@K@Z
+; public: __cdecl CPropertyRestriction::CPropertyRestriction(unsigned long,class CFullPropSpec const & __ptr64,class CStorageVariant const & __ptr64) __ptr64
+??0CPropertyRestriction@@QEAA@KAEBVCFullPropSpec@@AEBVCStorageVariant@@@Z
+; public: __cdecl CPropertyRestriction::CPropertyRestriction(void) __ptr64
+??0CPropertyRestriction@@QEAA@XZ
+; public: __cdecl CPropertyStoreWids::CPropertyStoreWids(class CPropStoreManager & __ptr64) __ptr64
+??0CPropertyStoreWids@@QEAA@AEAVCPropStoreManager@@@Z
+; public: __cdecl CPropertyValueParser::CPropertyValueParser(class CQueryScanner & __ptr64,unsigned short,unsigned long) __ptr64
+??0CPropertyValueParser@@QEAA@AEAVCQueryScanner@@GK@Z
+; public: __cdecl CQueryScanner::CQueryScanner(unsigned short const * __ptr64,int,unsigned long,int) __ptr64
+??0CQueryScanner@@QEAA@PEBGHKH@Z
+; public: __cdecl CRangeKeyRepository::CRangeKeyRepository(void) __ptr64
+??0CRangeKeyRepository@@QEAA@XZ
+; public: __cdecl CRcovStrmAppendTrans::CRcovStrmAppendTrans(class PRcovStorageObj & __ptr64) __ptr64
+??0CRcovStrmAppendTrans@@QEAA@AEAVPRcovStorageObj@@@Z
+; public: __cdecl CRcovStrmMDTrans::CRcovStrmMDTrans(class PRcovStorageObj & __ptr64,enum CRcovStrmMDTrans::MDOp,unsigned long) __ptr64
+??0CRcovStrmMDTrans@@QEAA@AEAVPRcovStorageObj@@W4MDOp@0@K@Z
+; protected: __cdecl CRcovStrmTrans::CRcovStrmTrans(class PRcovStorageObj & __ptr64,enum RcovOpType) __ptr64
+??0CRcovStrmTrans@@IEAA@AEAVPRcovStorageObj@@W4RcovOpType@@@Z
+; public: __cdecl CRegAccess::CRegAccess(unsigned long,unsigned short const * __ptr64) __ptr64
+??0CRegAccess@@QEAA@KPEBG@Z
+; public: __cdecl CRegChangeEvent::CRegChangeEvent(unsigned short const * __ptr64,int) __ptr64
+??0CRegChangeEvent@@QEAA@PEBGH@Z
+; public: __cdecl CRegNotify::CRegNotify(unsigned short const * __ptr64) __ptr64
+??0CRegNotify@@QEAA@PEBG@Z
+; public: __cdecl CRequestClient::CRequestClient(unsigned short const * __ptr64,struct IDBProperties * __ptr64) __ptr64
+??0CRequestClient@@QEAA@PEBGPEAUIDBProperties@@@Z
+; public: __cdecl CRequestQueue::CRequestQueue(unsigned int,unsigned int,unsigned int,int,unsigned int,unsigned int,struct _GUID const & __ptr64) __ptr64
+??0CRequestQueue@@QEAA@IIIHIIAEBU_GUID@@@Z
+; public: __cdecl CScopeRestriction::CScopeRestriction(unsigned short const * __ptr64,int,int) __ptr64
+??0CScopeRestriction@@QEAA@PEBGHH@Z
+; public: __cdecl CSdidLookupTable::CSdidLookupTable(void) __ptr64
+??0CSdidLookupTable@@QEAA@XZ
+; public: __cdecl CSizeSerStream::CSizeSerStream(void) __ptr64
+??0CSizeSerStream@@QEAA@XZ
+; public: __cdecl CSort::CSort(unsigned int) __ptr64
+??0CSort@@QEAA@I@Z
+; public: __cdecl CSortSet::CSortSet(unsigned int) __ptr64
+??0CSortSet@@QEAA@I@Z
+; public: __cdecl CStandardPropMapper::CStandardPropMapper(void) __ptr64
+??0CStandardPropMapper@@QEAA@XZ
+; public: __cdecl CSvcQuery::CSvcQuery(unsigned short const * __ptr64,struct IDBProperties * __ptr64) __ptr64
+??0CSvcQuery@@QEAA@PEBGPEAUIDBProperties@@@Z
+; public: __cdecl CSynRestriction::CSynRestriction(class CKey const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
+??0CSynRestriction@@QEAA@AEBVCKey@@KKKH@Z
+; public: __cdecl CTimeLimit::CTimeLimit(unsigned long,unsigned long) __ptr64
+??0CTimeLimit@@QEAA@KK@Z
+; public: __cdecl CTransaction::CTransaction(void) __ptr64
+??0CTransaction@@QEAA@XZ
+; public: __cdecl CUnfilteredRestriction::CUnfilteredRestriction(void) __ptr64
+??0CUnfilteredRestriction@@QEAA@XZ
+; public: __cdecl CValueNormalizer::CValueNormalizer(class PKeyRepository & __ptr64) __ptr64
+??0CValueNormalizer@@QEAA@AEAVPKeyRepository@@@Z
+; public: __cdecl CVirtualString::CVirtualString(unsigned int) __ptr64
+??0CVirtualString@@QEAA@I@Z
+; public: __cdecl CWin32RegAccess::CWin32RegAccess(struct HKEY__ * __ptr64,unsigned short const * __ptr64) __ptr64
+??0CWin32RegAccess@@QEAA@PEAUHKEY__@@PEBG@Z
+; public: __cdecl CWordRestriction::CWordRestriction(class CKeyBuf const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
+??0CWordRestriction@@QEAA@AEBVCKeyBuf@@KKKH@Z
+; public: __cdecl CWorkQueue::CWorkQueue(unsigned int,enum CWorkQueue::WorkQueueType) __ptr64
+??0CWorkQueue@@QEAA@IW4WorkQueueType@0@@Z
+; public: __cdecl CiStorage::CiStorage(unsigned short const * __ptr64,struct ICiCAdviseStatus & __ptr64,unsigned long,unsigned long,int) __ptr64
+??0CiStorage@@QEAA@PEBGAEAUICiCAdviseStatus@@KKH@Z
+; public: __cdecl SStorageObject::SStorageObject(class PStorageObject * __ptr64) __ptr64
+??0SStorageObject@@QEAA@PEAVPStorageObject@@@Z
+; protected: __cdecl CAllocStorageVariant::~CAllocStorageVariant(void) __ptr64
+??1CAllocStorageVariant@@IEAA@XZ
+; public: __cdecl CCatState::~CCatState(void) __ptr64
+??1CCatState@@QEAA@XZ
+; public: __cdecl CCatalogAdmin::~CCatalogAdmin(void) __ptr64
+??1CCatalogAdmin@@QEAA@XZ
+; public: __cdecl CCatalogEnum::~CCatalogEnum(void) __ptr64
+??1CCatalogEnum@@QEAA@XZ
+; public: __cdecl CColumns::~CColumns(void) __ptr64
+??1CColumns@@QEAA@XZ
+; public: __cdecl CContentRestriction::~CContentRestriction(void) __ptr64
+??1CContentRestriction@@QEAA@XZ
+; public: __cdecl CDFA::~CDFA(void) __ptr64
+??1CDFA@@QEAA@XZ
+; public: __cdecl CDbCmdTreeNode::~CDbCmdTreeNode(void) __ptr64
+??1CDbCmdTreeNode@@QEAA@XZ
+; public: __cdecl CDbColumns::~CDbColumns(void) __ptr64
+??1CDbColumns@@QEAA@XZ
+; public: __cdecl CDbPropSet::~CDbPropSet(void) __ptr64
+??1CDbPropSet@@QEAA@XZ
+; public: __cdecl CDbQueryResults::~CDbQueryResults(void) __ptr64
+??1CDbQueryResults@@QEAA@XZ
+; public: __cdecl CDbSortSet::~CDbSortSet(void) __ptr64
+??1CDbSortSet@@QEAA@XZ
+; public: __cdecl CDynStream::~CDynStream(void) __ptr64
+??1CDynStream@@QEAA@XZ
+; public: __cdecl CEventItem::~CEventItem(void) __ptr64
+??1CEventItem@@QEAA@XZ
+; public: __cdecl CEventLog::~CEventLog(void) __ptr64
+??1CEventLog@@QEAA@XZ
+; public: __cdecl CFileMapView::~CFileMapView(void) __ptr64
+??1CFileMapView@@QEAA@XZ
+; public: __cdecl CFilterDaemon::~CFilterDaemon(void) __ptr64
+??1CFilterDaemon@@QEAA@XZ
+; public: virtual __cdecl CFwAsyncWorkItem::~CFwAsyncWorkItem(void) __ptr64
+??1CFwAsyncWorkItem@@UEAA@XZ
+; public: __cdecl CFwEventItem::~CFwEventItem(void) __ptr64
+??1CFwEventItem@@QEAA@XZ
+; public: virtual __cdecl CGenericCiProxy::~CGenericCiProxy(void) __ptr64
+??1CGenericCiProxy@@UEAA@XZ
+; public: __cdecl CImpersonateClient::~CImpersonateClient(void) __ptr64
+??1CImpersonateClient@@QEAA@XZ
+; public: __cdecl CImpersonateSystem::~CImpersonateSystem(void) __ptr64
+??1CImpersonateSystem@@QEAA@XZ
+; public: __cdecl CImpersonationTokenCache::~CImpersonationTokenCache(void) __ptr64
+??1CImpersonationTokenCache@@QEAA@XZ
+; public: __cdecl CInternalPropertyRestriction::~CInternalPropertyRestriction(void) __ptr64
+??1CInternalPropertyRestriction@@QEAA@XZ
+; public: __cdecl CKeyArray::~CKeyArray(void) __ptr64
+??1CKeyArray@@QEAA@XZ
+; public: __cdecl CLangList::~CLangList(void) __ptr64
+??1CLangList@@QEAA@XZ
+; public: __cdecl CMachineAdmin::~CMachineAdmin(void) __ptr64
+??1CMachineAdmin@@QEAA@XZ
+; public: virtual __cdecl CMemSerStream::~CMemSerStream(void) __ptr64
+??1CMemSerStream@@UEAA@XZ
+; public: __cdecl CMetaDataMgr::~CMetaDataMgr(void) __ptr64
+??1CMetaDataMgr@@QEAA@XZ
+; public: virtual __cdecl CMmStream::~CMmStream(void) __ptr64
+??1CMmStream@@UEAA@XZ
+; public: __cdecl CMmStreamConsecBuf::~CMmStreamConsecBuf(void) __ptr64
+??1CMmStreamConsecBuf@@QEAA@XZ
+; public: __cdecl CNatLanguageRestriction::~CNatLanguageRestriction(void) __ptr64
+??1CNatLanguageRestriction@@QEAA@XZ
+; public: __cdecl CNodeRestriction::~CNodeRestriction(void) __ptr64
+??1CNodeRestriction@@QEAA@XZ
+; public: __cdecl CNotRestriction::~CNotRestriction(void) __ptr64
+??1CNotRestriction@@QEAA@XZ
+; public: __cdecl COccRestriction::~COccRestriction(void) __ptr64
+??1COccRestriction@@QEAA@XZ
+; public: __cdecl CParseCommandTree::~CParseCommandTree(void) __ptr64
+??1CParseCommandTree@@QEAA@XZ
+; public: __cdecl CPerfMon::~CPerfMon(void) __ptr64
+??1CPerfMon@@QEAA@XZ
+; public: __cdecl CPhraseRestriction::~CPhraseRestriction(void) __ptr64
+??1CPhraseRestriction@@QEAA@XZ
+; public: virtual __cdecl CPhysStorage::~CPhysStorage(void) __ptr64
+??1CPhysStorage@@UEAA@XZ
+; public: __cdecl CPidLookupTable::~CPidLookupTable(void) __ptr64
+??1CPidLookupTable@@QEAA@XZ
+; public: __cdecl CPidRemapper::~CPidRemapper(void) __ptr64
+??1CPidRemapper@@QEAA@XZ
+; public: __cdecl CProcess::~CProcess(void) __ptr64
+??1CProcess@@QEAA@XZ
+; public: __cdecl CPropStoreManager::~CPropStoreManager(void) __ptr64
+??1CPropStoreManager@@QEAA@XZ
+; public: virtual __cdecl CPropertyList::~CPropertyList(void) __ptr64
+??1CPropertyList@@UEAA@XZ
+; public: __cdecl CPropertyRestriction::~CPropertyRestriction(void) __ptr64
+??1CPropertyRestriction@@QEAA@XZ
+; public: __cdecl CPropertyStore::~CPropertyStore(void) __ptr64
+??1CPropertyStore@@QEAA@XZ
+; public: __cdecl CPropertyStoreWids::~CPropertyStoreWids(void) __ptr64
+??1CPropertyStoreWids@@QEAA@XZ
+; public: __cdecl CQueryUnknown::~CQueryUnknown(void) __ptr64
+??1CQueryUnknown@@QEAA@XZ
+; public: virtual __cdecl CRangeKeyRepository::~CRangeKeyRepository(void) __ptr64
+??1CRangeKeyRepository@@UEAA@XZ
+; public: __cdecl CRegChangeEvent::~CRegChangeEvent(void) __ptr64
+??1CRegChangeEvent@@QEAA@XZ
+; protected: virtual __cdecl CRegNotify::~CRegNotify(void) __ptr64
+??1CRegNotify@@MEAA@XZ
+; public: __cdecl CRestriction::~CRestriction(void) __ptr64
+??1CRestriction@@QEAA@XZ
+; public: __cdecl CScopeAdmin::~CScopeAdmin(void) __ptr64
+??1CScopeAdmin@@QEAA@XZ
+; public: __cdecl CScopeEnum::~CScopeEnum(void) __ptr64
+??1CScopeEnum@@QEAA@XZ
+; public: __cdecl CScopeRestriction::~CScopeRestriction(void) __ptr64
+??1CScopeRestriction@@QEAA@XZ
+; public: __cdecl CSdidLookupTable::~CSdidLookupTable(void) __ptr64
+??1CSdidLookupTable@@QEAA@XZ
+; public: virtual __cdecl CSizeSerStream::~CSizeSerStream(void) __ptr64
+??1CSizeSerStream@@UEAA@XZ
+; public: __cdecl CSort::~CSort(void) __ptr64
+??1CSort@@QEAA@XZ
+; public: __cdecl CSynRestriction::~CSynRestriction(void) __ptr64
+??1CSynRestriction@@QEAA@XZ
+; public: __cdecl CVirtualString::~CVirtualString(void) __ptr64
+??1CVirtualString@@QEAA@XZ
+; public: __cdecl CWin32RegAccess::~CWin32RegAccess(void) __ptr64
+??1CWin32RegAccess@@QEAA@XZ
+; public: __cdecl CWordRestriction::~CWordRestriction(void) __ptr64
+??1CWordRestriction@@QEAA@XZ
+; public: __cdecl CWorkManager::~CWorkManager(void) __ptr64
+??1CWorkManager@@QEAA@XZ
+; public: __cdecl CWorkQueue::~CWorkQueue(void) __ptr64
+??1CWorkQueue@@QEAA@XZ
+; public: __cdecl SStorageObject::~SStorageObject(void) __ptr64
+??1SStorageObject@@QEAA@XZ
+; public: class CDbColId & __ptr64 __cdecl CDbColId::operator=(class CDbColId const & __ptr64) __ptr64
+??4CDbColId@@QEAAAEAV0@AEBV0@@Z
+; public: int __cdecl CDbColId::operator==(class CDbColId const & __ptr64)const __ptr64
+??8CDbColId@@QEBAHAEBV0@@Z
+; public: void __cdecl CWorkManager::AbortWorkItems(void) __ptr64
+?AbortWorkItems@CWorkManager@@QEAAXXZ
+; public: void __cdecl CQueryScanner::Accept(void) __ptr64
+?Accept@CQueryScanner@@QEAAXXZ
+; public: void __cdecl CQueryScanner::AcceptCommand(void) __ptr64
+?AcceptCommand@CQueryScanner@@QEAAXXZ
+; public: void __cdecl CQueryScanner::AcceptWord(void) __ptr64
+?AcceptWord@CQueryScanner@@QEAAXXZ
+; public: int __cdecl CSdidLookupTable::AccessCheck(unsigned long,void * __ptr64,unsigned long,int & __ptr64) __ptr64
+?AccessCheck@CSdidLookupTable@@QEAAHKPEAXKAEAH@Z
+; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqLine(int) __ptr64
+?AcqLine@CQueryScanner@@QEAAPEAGH@Z
+; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqPath(void) __ptr64
+?AcqPath@CQueryScanner@@QEAAPEAGXZ
+; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqPhrase(void) __ptr64
+?AcqPhrase@CQueryScanner@@QEAAPEAGXZ
+; public: class CRangeRestriction * __ptr64 __cdecl CRangeKeyRepository::AcqRst(void) __ptr64
+?AcqRst@CRangeKeyRepository@@QEAAPEAVCRangeRestriction@@XZ
+; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqWord(void) __ptr64
+?AcqWord@CQueryScanner@@QEAAPEAGXZ
+; private: void __cdecl CPropertyStore::AcquireRead(class CReadWriteLockRecord & __ptr64) __ptr64
+?AcquireRead@CPropertyStore@@AEAAXAEAVCReadWriteLockRecord@@@Z
+; public: int __cdecl CDbColumns::Add(class CDbColId const & __ptr64,unsigned int) __ptr64
+?Add@CDbColumns@@QEAAHAEBVCDbColId@@I@Z
+; public: void __cdecl CDbQueryResults::Add(unsigned short * __ptr64,unsigned long) __ptr64
+?Add@CDbQueryResults@@QEAAXPEAGK@Z
+; public: int __cdecl CDbSortSet::Add(class CDbColId const & __ptr64,unsigned long,unsigned int) __ptr64
+?Add@CDbSortSet@@QEAAHAEBVCDbColId@@KI@Z
+; public: int __cdecl CDbSortSet::Add(class CDbSortKey const & __ptr64,unsigned int) __ptr64
+?Add@CDbSortSet@@QEAAHAEBVCDbSortKey@@I@Z
+; public: int __cdecl CKeyArray::Add(int,class CKey const & __ptr64) __ptr64
+?Add@CKeyArray@@QEAAHHAEBVCKey@@@Z
+; public: int __cdecl CKeyArray::Add(int,class CKeyBuf const & __ptr64) __ptr64
+?Add@CKeyArray@@QEAAHHAEBVCKeyBuf@@@Z
+; public: void __cdecl CWorkQueue::Add(class PWorkItem * __ptr64) __ptr64
+?Add@CWorkQueue@@QEAAXPEAVPWorkItem@@@Z
+; public: void __cdecl CEventItem::AddArg(unsigned long) __ptr64
+?AddArg@CEventItem@@QEAAXK@Z
+; public: void __cdecl CEventItem::AddArg(unsigned short const * __ptr64) __ptr64
+?AddArg@CEventItem@@QEAAXPEBG@Z
+; public: void __cdecl CFwEventItem::AddArg(unsigned long) __ptr64
+?AddArg@CFwEventItem@@QEAAXK@Z
+; public: void __cdecl CFwEventItem::AddArg(unsigned short const * __ptr64) __ptr64
+?AddArg@CFwEventItem@@QEAAXPEBG@Z
+; public: void __cdecl CCatalogAdmin::AddCachedProperty(class CFullPropSpec const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
+?AddCachedProperty@CCatalogAdmin@@QEAAXAEBVCFullPropSpec@@KKKH@Z
+; public: void __cdecl CCatState::AddCatalog(class XPtrST & __ptr64) __ptr64
+?AddCatalog@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
+; public: void __cdecl CMachineAdmin::AddCatalog(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
+?AddCatalog@CMachineAdmin@@QEAAXPEBG0@Z
+; public: void __cdecl CNodeRestriction::AddChild(class CRestriction * __ptr64,unsigned int & __ptr64) __ptr64
+?AddChild@CNodeRestriction@@QEAAXPEAVCRestriction@@AEAI@Z
+; public: void __cdecl CCatState::AddDir(class XPtrST & __ptr64) __ptr64
+?AddDir@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
+; public: virtual void __cdecl CPropertyList::AddEntry(class CPropEntry * __ptr64,int) __ptr64
+?AddEntry@CPropertyList@@UEAAXPEAVCPropEntry@@H@Z
+; public: void __cdecl CEventItem::AddError(unsigned long) __ptr64
+?AddError@CEventItem@@QEAAXK@Z
+; public: void __cdecl CSynRestriction::AddKey(class CKeyBuf const & __ptr64) __ptr64
+?AddKey@CSynRestriction@@QEAAXAEBVCKeyBuf@@@Z
+; public: void __cdecl CCatState::AddMachine(class XPtrST & __ptr64) __ptr64
+?AddMachine@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
+; public: virtual unsigned long __cdecl CDbProperties::AddRef(void) __ptr64
+?AddRef@CDbProperties@@UEAAKXZ
+; public: virtual unsigned long __cdecl CEmptyPropertyList::AddRef(void) __ptr64
+?AddRef@CEmptyPropertyList@@UEAAKXZ
+; public: virtual unsigned long __cdecl CEnumString::AddRef(void) __ptr64
+?AddRef@CEnumString@@UEAAKXZ
+; public: virtual unsigned long __cdecl CEnumWorkid::AddRef(void) __ptr64
+?AddRef@CEnumWorkid@@UEAAKXZ
+; public: virtual unsigned long __cdecl CFwPropertyMapper::AddRef(void) __ptr64
+?AddRef@CFwPropertyMapper@@UEAAKXZ
+; public: virtual unsigned long __cdecl CQueryUnknown::AddRef(void) __ptr64
+?AddRef@CQueryUnknown@@UEAAKXZ
+; public: void __cdecl CWorkQueue::AddRefWorkThreads(void) __ptr64
+?AddRefWorkThreads@CWorkQueue@@QEAAXXZ
+; public: void __cdecl CCatalogAdmin::AddScope(unsigned short const * __ptr64,unsigned short const * __ptr64,int,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
+?AddScope@CCatalogAdmin@@QEAAXPEBG0H00@Z
+; public: int __cdecl CDbSortNode::AddSortColumn(struct tagDBID const & __ptr64,int,unsigned long) __ptr64
+?AddSortColumn@CDbSortNode@@QEAAHAEBUtagDBID@@HK@Z
+; public: int __cdecl CDbNestingNode::AddTable(class CDbCmdTreeNode * __ptr64) __ptr64
+?AddTable@CDbNestingNode@@QEAAHPEAVCDbCmdTreeNode@@@Z
+; public: void __cdecl CWorkManager::AddToWorkList(class CFwAsyncWorkItem * __ptr64) __ptr64
+?AddToWorkList@CWorkManager@@QEAAXPEAVCFwAsyncWorkItem@@@Z
+; public: void __cdecl CFwAsyncWorkItem::AddToWorkQueue(void) __ptr64
+?AddToWorkQueue@CFwAsyncWorkItem@@QEAAXXZ
+; public: static unsigned short * __ptr64 __cdecl CDbCmdTreeNode::AllocAndCopyWString(unsigned short const * __ptr64)
+?AllocAndCopyWString@CDbCmdTreeNode@@SAPEAGPEBG@Z
+; unsigned short * __ptr64 __cdecl AllocHeapAndCopy(unsigned short const * __ptr64,unsigned long & __ptr64)
+?AllocHeapAndCopy@@YAPEAGPEBGAEAK@Z
+; unsigned short * __ptr64 __cdecl AllocHeapAndGetWString(class PDeSerStream & __ptr64)
+?AllocHeapAndGetWString@@YAPEAGAEAVPDeSerStream@@@Z
+; public: void __cdecl CEnumString::Append(unsigned short const * __ptr64) __ptr64
+?Append@CEnumString@@QEAAXPEBG@Z
+; public: void __cdecl CEnumWorkid::Append(unsigned long) __ptr64
+?Append@CEnumWorkid@@QEAAXK@Z
+; protected: void __cdecl CDbCmdTreeNode::AppendChild(class CDbCmdTreeNode * __ptr64) __ptr64
+?AppendChild@CDbCmdTreeNode@@IEAAXPEAV1@@Z
+; protected: int __cdecl CDbListAnchor::AppendListElement(unsigned short,struct tagDBID const & __ptr64) __ptr64
+?AppendListElement@CDbListAnchor@@IEAAHGAEBUtagDBID@@@Z
+; protected: int __cdecl CDbListAnchor::AppendListElement(class CDbCmdTreeNode * __ptr64) __ptr64
+?AppendListElement@CDbListAnchor@@IEAAHPEAVCDbCmdTreeNode@@@Z
+; public: int __cdecl CDbProjectListAnchor::AppendListElement(struct tagDBID const & __ptr64,unsigned short * __ptr64) __ptr64
+?AppendListElement@CDbProjectListAnchor@@QEAAHAEBUtagDBID@@PEAG@Z
+; public: unsigned __int64 __cdecl CPropStoreManager::BeginTransaction(void) __ptr64
+?BeginTransaction@CPropStoreManager@@QEAA_KXZ
+; public: static long __cdecl CCiOle::BindIFilter(unsigned short const * __ptr64,struct IUnknown * __ptr64,struct _GUID const & __ptr64,struct IFilter * __ptr64 * __ptr64,int)
+?BindIFilter@CCiOle@@SAJPEBGPEAUIUnknown@@AEBU_GUID@@PEAPEAUIFilter@@H@Z
+; public: static long __cdecl CCiOle::BindIFilter(unsigned short const * __ptr64,struct IUnknown * __ptr64,struct IFilter * __ptr64 * __ptr64,int)
+?BindIFilter@CCiOle@@SAJPEBGPEAUIUnknown@@PEAPEAUIFilter@@H@Z
+; public: unsigned long * __ptr64 __cdecl CPhysStorage::BorrowBuffer(unsigned long,int,int) __ptr64
+?BorrowBuffer@CPhysStorage@@QEAAPEAKKHH@Z
+; public: unsigned long * __ptr64 __cdecl CPhysStorage::BorrowNewBuffer(unsigned long) __ptr64
+?BorrowNewBuffer@CPhysStorage@@QEAAPEAKK@Z
+; void __cdecl BuildRegistryPropertiesKey(class XArray & __ptr64,unsigned short const * __ptr64)
+?BuildRegistryPropertiesKey@@YAXAEAV?$XArray@G@@PEBG@Z
+; void __cdecl BuildRegistryScopesKey(class XArray & __ptr64,unsigned short const * __ptr64)
+?BuildRegistryScopesKey@@YAXAEAV?$XArray@G@@PEBG@Z
+; void __cdecl CIShutdown(void)
+?CIShutdown@@YAXXZ
+; public: void __cdecl CCatState::ChangeCurrentCatalog(unsigned short const * __ptr64) __ptr64
+?ChangeCurrentCatalog@CCatState@@QEAAXPEBG@Z
+; public: void __cdecl CCatState::ChangeCurrentDepth(int) __ptr64
+?ChangeCurrentDepth@CCatState@@QEAAXH@Z
+; public: void __cdecl CCatState::ChangeCurrentMachine(unsigned short const * __ptr64) __ptr64
+?ChangeCurrentMachine@CCatState@@QEAAXPEBG@Z
+; public: void __cdecl CCatState::ChangeCurrentScope(unsigned short const * __ptr64) __ptr64
+?ChangeCurrentScope@CCatState@@QEAAXPEBG@Z
+; private: void __cdecl CPropStoreInfo::ChangeDirty(int) __ptr64
+?ChangeDirty@CPropStoreInfo@@AEAAXH@Z
+; public: long __cdecl CLocalGlobalPropertyList::CheckError(unsigned long & __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
+?CheckError@CLocalGlobalPropertyList@@QEAAJAEAKPEAPEAG@Z
+; public: long __cdecl CPropListFile::CheckError(unsigned long & __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
+?CheckError@CPropListFile@@QEAAJAEAKPEAPEAG@Z
+; public: static int __cdecl CiStorage::CheckHasIndexTable(unsigned short const * __ptr64)
+?CheckHasIndexTable@CiStorage@@SAHPEBG@Z
+CiCreateSecurityDescriptor
+; int __cdecl CiGetPassword(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short * __ptr64)
+?CiGetPassword@@YAHPEBG0PEAG@Z
+; void * __ptr64 __cdecl CiNtOpen(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long)
+?CiNtOpen@@YAPEAXPEBGKKK@Z
+; long __cdecl CiNtOpenNoThrow(void * __ptr64 & __ptr64,unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long)
+?CiNtOpenNoThrow@@YAJAEAPEAXPEBGKKK@Z
+; public: void __cdecl CDbColId::Cleanup(void) __ptr64
+?Cleanup@CDbColId@@QEAAXXZ
+; protected: void __cdecl CDbCmdTreeNode::CleanupDataValue(void) __ptr64
+?CleanupDataValue@CDbCmdTreeNode@@IEAAXXZ
+; public: void __cdecl CCombinedPropertyList::ClearList(void) __ptr64
+?ClearList@CCombinedPropertyList@@QEAAXXZ
+; public: void __cdecl CPropertyList::ClearList(void) __ptr64
+?ClearList@CPropertyList@@QEAAXXZ
+; public: class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::Clone(int)const __ptr64
+?Clone@CDbCmdTreeNode@@QEBAPEAV1@H@Z
+; public: virtual long __cdecl CEnumString::Clone(struct IEnumString * __ptr64 * __ptr64) __ptr64
+?Clone@CEnumString@@UEAAJPEAPEAUIEnumString@@@Z
+; public: class CNodeRestriction * __ptr64 __cdecl CNodeRestriction::Clone(void)const __ptr64
+?Clone@CNodeRestriction@@QEBAPEAV1@XZ
+; public: class COccRestriction * __ptr64 __cdecl COccRestriction::Clone(void)const __ptr64
+?Clone@COccRestriction@@QEBAPEAV1@XZ
+; public: class CRestriction * __ptr64 __cdecl CRestriction::Clone(void)const __ptr64
+?Clone@CRestriction@@QEBAPEAV1@XZ
+; public: void __cdecl CPhysStorage::Close(void) __ptr64
+?Close@CPhysStorage@@QEAAXXZ
+; protected: void __cdecl CPipeClient::Close(void) __ptr64
+?Close@CPipeClient@@IEAAXXZ
+; public: void __cdecl COLEPropManager::CPropSetMap::Close(void) __ptr64
+?Close@CPropSetMap@COLEPropManager@@QEAAXXZ
+; public: void __cdecl CPropStoreManager::CloseRecord(class CCompositePropRecord * __ptr64) __ptr64
+?CloseRecord@CPropStoreManager@@QEAAXPEAVCCompositePropRecord@@@Z
+; public: void __cdecl CPropStoreManager::CloseRecord(class CCompositePropRecordForWrites * __ptr64) __ptr64
+?CloseRecord@CPropStoreManager@@QEAAXPEAVCCompositePropRecordForWrites@@@Z
+; public: void __cdecl CRcovStrmAppendTrans::Commit(void) __ptr64
+?Commit@CRcovStrmAppendTrans@@QEAAXXZ
+; public: void __cdecl CRcovStrmMDTrans::Commit(void) __ptr64
+?Commit@CRcovStrmMDTrans@@QEAAXXZ
+; public: void __cdecl CRcovStrmWriteTrans::Commit(void) __ptr64
+?Commit@CRcovStrmWriteTrans@@QEAAXXZ
+; public: static int __cdecl CDriveInfo::ContainsDrive(unsigned short const * __ptr64)
+?ContainsDrive@CDriveInfo@@SAHPEBG@Z
+; public: void __cdecl CMachineAdmin::CreateSubdirs(unsigned short const * __ptr64) __ptr64
+?CreateSubdirs@CMachineAdmin@@QEAAXPEBG@Z
+; public: void __cdecl CRequestClient::DataWriteRead(void * __ptr64,unsigned long,void * __ptr64,unsigned long,unsigned long & __ptr64) __ptr64
+?DataWriteRead@CRequestClient@@QEAAXPEAXK0KAEAK@Z
+; void __cdecl DecodeEscapes(unsigned short * __ptr64,unsigned long & __ptr64,unsigned short * __ptr64)
+?DecodeEscapes@@YAXPEAGAEAK0@Z
+; void __cdecl DecodeHtmlNumeric(unsigned short * __ptr64)
+?DecodeHtmlNumeric@@YAXPEAG@Z
+; void __cdecl DecodeURLEscapes(unsigned char * __ptr64,unsigned long & __ptr64,unsigned short * __ptr64,unsigned long)
+?DecodeURLEscapes@@YAXPEAEAEAKPEAGK@Z
+; public: void __cdecl CPropStoreManager::DeleteRecord(unsigned long) __ptr64
+?DeleteRecord@CPropStoreManager@@QEAAXK@Z
+; public: void __cdecl CCatalogAdmin::DeleteRegistryParamNoThrow(unsigned short const * __ptr64) __ptr64
+?DeleteRegistryParamNoThrow@CCatalogAdmin@@QEAAXPEBG@Z
+; public: static unsigned int __cdecl CiStorage::DetermineDriveType(unsigned short const * __ptr64)
+?DetermineDriveType@CiStorage@@SAIPEBG@Z
+; public: int __cdecl CMachineAdmin::DisableCI(void) __ptr64
+?DisableCI@CMachineAdmin@@QEAAHXZ
+; public: void __cdecl CRegNotify::DisableNotification(void) __ptr64
+?DisableNotification@CRegNotify@@QEAAXXZ
+; public: void __cdecl CMetaDataMgr::DisableVPathNotify(void) __ptr64
+?DisableVPathNotify@CMetaDataMgr@@QEAAXXZ
+; public: void __cdecl CRequestClient::Disconnect(void) __ptr64
+?Disconnect@CRequestClient@@QEAAXXZ
+; public: long __cdecl CCopyRcovObject::DoIt(void) __ptr64
+?DoIt@CCopyRcovObject@@QEAAJXZ
+; public: long __cdecl CFilterDaemon::DoUpdates(void) __ptr64
+?DoUpdates@CFilterDaemon@@QEAAJXZ
+; public: void __cdecl CFwAsyncWorkItem::Done(void) __ptr64
+?Done@CFwAsyncWorkItem@@QEAAXXZ
+; long __cdecl DumpWorkId(unsigned short const * __ptr64,unsigned long,unsigned char * __ptr64,unsigned long & __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long)
+?DumpWorkId@@YAJPEBGKPEAEAEAK00K@Z
+; public: void __cdecl CPidLookupTable::Empty(void) __ptr64
+?Empty@CPidLookupTable@@QEAAXXZ
+; public: void __cdecl CPropStoreManager::Empty(void) __ptr64
+?Empty@CPropStoreManager@@QEAAXXZ
+; public: void __cdecl CRcovStrmWriteTrans::Empty(void) __ptr64
+?Empty@CRcovStrmWriteTrans@@QEAAXXZ
+; public: void __cdecl CSdidLookupTable::Empty(void) __ptr64
+?Empty@CSdidLookupTable@@QEAAXXZ
+; public: int __cdecl CMachineAdmin::EnableCI(void) __ptr64
+?EnableCI@CMachineAdmin@@QEAAHXZ
+; public: void __cdecl CMetaDataMgr::EnableVPathNotify(class CMetaDataVPathChangeCallBack * __ptr64) __ptr64
+?EnableVPathNotify@CMetaDataMgr@@QEAAXPEAVCMetaDataVPathChangeCallBack@@@Z
+; public: void __cdecl CPropStoreManager::EndTransaction(unsigned __int64,int,unsigned long,unsigned long) __ptr64
+?EndTransaction@CPropStoreManager@@QEAAX_KHKK@Z
+; public: int __cdecl CWin32RegAccess::Enum(unsigned short * __ptr64,unsigned long) __ptr64
+?Enum@CWin32RegAccess@@QEAAHPEAGK@Z
+; public: virtual long __cdecl CEmptyPropertyList::EnumPropInfo(unsigned long,unsigned short const * __ptr64 * __ptr64,struct tagDBID * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
+?EnumPropInfo@CEmptyPropertyList@@UEAAJKPEAPEBGPEAPEAUtagDBID@@PEAGPEAI@Z
+; public: void __cdecl CMetaDataMgr::EnumVPaths(class CMetaDataCallBack & __ptr64) __ptr64
+?EnumVPaths@CMetaDataMgr@@QEAAXAEAVCMetaDataCallBack@@@Z
+; public: void __cdecl CMetaDataMgr::EnumVServers(class CMetaDataVirtualServerCallBack & __ptr64) __ptr64
+?EnumVServers@CMetaDataMgr@@QEAAXAEAVCMetaDataVirtualServerCallBack@@@Z
+; public: static void __cdecl CiStorage::EnumerateFilesInDir(unsigned short const * __ptr64,class CEnumString & __ptr64)
+?EnumerateFilesInDir@CiStorage@@SAXPEBGAEAVCEnumString@@@Z
+; public: int __cdecl CPidLookupTable::EnumerateProperty(class CFullPropSpec & __ptr64,unsigned int & __ptr64) __ptr64
+?EnumerateProperty@CPidLookupTable@@QEAAHAEAVCFullPropSpec@@AEAI@Z
+; public: void __cdecl CRegAccess::EnumerateValues(unsigned short * __ptr64,class CRegCallBack & __ptr64) __ptr64
+?EnumerateValues@CRegAccess@@QEAAXPEAGAEAVCRegCallBack@@@Z
+; public: int __cdecl CMmStreamConsecBuf::Eof(void) __ptr64
+?Eof@CMmStreamConsecBuf@@QEAAHXZ
+; public: int __cdecl CMetaDataMgr::ExtensionHasScriptMap(unsigned short const * __ptr64) __ptr64
+?ExtensionHasScriptMap@CMetaDataMgr@@QEAAHPEBG@Z
+; public: virtual long __cdecl CPidConverter::FPSToPROPID(class CFullPropSpec const & __ptr64,unsigned long & __ptr64) __ptr64
+?FPSToPROPID@CPidConverter@@UEAAJAEBVCFullPropSpec@@AEAK@Z
+; public: void __cdecl CPropStoreManager::FastInit(class CiStorage * __ptr64) __ptr64
+?FastInit@CPropStoreManager@@QEAAXPEAVCiStorage@@@Z
+; public: void __cdecl COLEPropManager::FetchProperty(struct _GUID const & __ptr64,struct tagPROPSPEC const & __ptr64,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
+?FetchProperty@COLEPropManager@@QEAAXAEBU_GUID@@AEBUtagPROPSPEC@@PEAUtagPROPVARIANT@@PEAI@Z
+; public: int __cdecl CKeyArray::FillMax(int) __ptr64
+?FillMax@CKeyArray@@QEAAHH@Z
+; public: class CPropEntry const * __ptr64 __cdecl CEmptyPropertyList::Find(class CDbColId const & __ptr64) __ptr64
+?Find@CEmptyPropertyList@@QEAAPEBVCPropEntry@@AEBVCDbColId@@@Z
+; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Find(class CDbColId const & __ptr64) __ptr64
+?Find@CPropertyList@@UEAAPEBVCPropEntry@@AEBVCDbColId@@@Z
+; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Find(unsigned short const * __ptr64) __ptr64
+?Find@CPropertyList@@UEAAPEBVCPropEntry@@PEBG@Z
+; public: int __cdecl CPidLookupTable::FindPropid(class CFullPropSpec const & __ptr64,unsigned long & __ptr64,int) __ptr64
+?FindPropid@CPidLookupTable@@QEAAHAEBVCFullPropSpec@@AEAKH@Z
+; public: void __cdecl CDynStream::Flush(void) __ptr64
+?Flush@CDynStream@@QEAAXXZ
+; public: void __cdecl CPhysStorage::Flush(int) __ptr64
+?Flush@CPhysStorage@@QEAAXH@Z
+; public: void __cdecl CPropStoreManager::Flush(void) __ptr64
+?Flush@CPropStoreManager@@QEAAXXZ
+; public: static void __cdecl CCiOle::FlushIdle(void)
+?FlushIdle@CCiOle@@SAXXZ
+; public: struct tagDBCOMMANDTREE * __ptr64 __cdecl CTextToTree::FormFullTree(void) __ptr64
+?FormFullTree@CTextToTree@@QEAAPEAUtagDBCOMMANDTREE@@XZ
+; class CDbCmdTreeNode * __ptr64 __cdecl FormQueryTree(class CDbCmdTreeNode & __ptr64,class CCatState & __ptr64,struct IColumnMapper * __ptr64,int,int)
+?FormQueryTree@@YAPEAVCDbCmdTreeNode@@AEAV1@AEAVCCatState@@PEAUIColumnMapper@@HH@Z
+FsCiShutdown
+; public: unsigned long __cdecl CRegAccess::Get(unsigned short const * __ptr64) __ptr64
+?Get@CRegAccess@@QEAAKPEBG@Z
+; public: void __cdecl CRegAccess::Get(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned int) __ptr64
+?Get@CRegAccess@@QEAAXPEBGPEAGI@Z
+; public: int __cdecl CWin32RegAccess::Get(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
+?Get@CWin32RegAccess@@QEAAHPEBGAEAK@Z
+; public: int __cdecl CWin32RegAccess::Get(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned int,int) __ptr64
+?Get@CWin32RegAccess@@QEAAHPEBGPEAGIH@Z
+; public: virtual long __cdecl CPropertyList::GetAllEntries(class CPropEntry * __ptr64 * __ptr64,unsigned long) __ptr64
+?GetAllEntries@CPropertyList@@UEAAJPEAPEAVCPropEntry@@K@Z
+; public: short __cdecl CAllocStorageVariant::GetBOOL(unsigned int)const __ptr64
+?GetBOOL@CAllocStorageVariant@@QEBAFI@Z
+; public: unsigned long __cdecl CPropStoreManager::GetBackupSize(unsigned long) __ptr64
+?GetBackupSize@CPropStoreManager@@QEAAKK@Z
+; public: virtual void __cdecl CMemDeSerStream::GetBlob(unsigned char * __ptr64,unsigned long) __ptr64
+?GetBlob@CMemDeSerStream@@UEAAXPEAEK@Z
+; unsigned long __cdecl GetBrowserCodepage(class CWebServer & __ptr64,unsigned long)
+?GetBrowserCodepage@@YAKAEAVCWebServer@@K@Z
+; public: virtual unsigned char __cdecl CMemDeSerStream::GetByte(void) __ptr64
+?GetByte@CMemDeSerStream@@UEAAEXZ
+; public: unsigned short const * __ptr64 __cdecl CCatState::GetCD(void) __ptr64
+?GetCD@CCatState@@QEAAPEBGXZ
+; public: int __cdecl CWebServer::GetCGIVariable(char const * __ptr64,class XArray & __ptr64,unsigned long & __ptr64) __ptr64
+?GetCGIVariable@CWebServer@@QEAAHPEBDAEAV?$XArray@G@@AEAK@Z
+; public: int __cdecl CWebServer::GetCGIVariableW(unsigned short const * __ptr64,class XArray & __ptr64,unsigned long & __ptr64) __ptr64
+?GetCGIVariableW@CWebServer@@QEAAHPEBGAEAV?$XArray@G@@AEAK@Z
+; public: struct _GUID __cdecl CAllocStorageVariant::GetCLSID(unsigned int)const __ptr64
+?GetCLSID@CAllocStorageVariant@@QEBA?AU_GUID@@I@Z
+; public: union tagCY __cdecl CAllocStorageVariant::GetCY(unsigned int)const __ptr64
+?GetCY@CAllocStorageVariant@@QEBA?ATtagCY@@I@Z
+; public: unsigned short const * __ptr64 __cdecl CCatState::GetCategory(unsigned int)const __ptr64
+?GetCategory@CCatState@@QEBAPEBGI@Z
+; public: virtual void __cdecl CMemDeSerStream::GetChar(char * __ptr64,unsigned long) __ptr64
+?GetChar@CMemDeSerStream@@UEAAXPEADK@Z
+; public: unsigned short const * __ptr64 __cdecl CCatState::GetColumn(unsigned int)const __ptr64
+?GetColumn@CCatState@@QEBAPEBGI@Z
+; public: unsigned short __cdecl CQueryScanner::GetCommandChar(void) __ptr64
+?GetCommandChar@CQueryScanner@@QEAAGXZ
+; public: double __cdecl CAllocStorageVariant::GetDATE(unsigned int)const __ptr64
+?GetDATE@CAllocStorageVariant@@QEBANI@Z
+; public: int __cdecl CCatalogAdmin::GetDWORDParam(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
+?GetDWORDParam@CCatalogAdmin@@QEAAHPEBGAEAK@Z
+; public: int __cdecl CMachineAdmin::GetDWORDParam(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
+?GetDWORDParam@CMachineAdmin@@QEAAHPEBGAEAK@Z
+; public: void __cdecl CDriveInfo::GetDiskSpace(__int64 & __ptr64,__int64 & __ptr64) __ptr64
+?GetDiskSpace@CDriveInfo@@QEAAXAEA_J0@Z
+; public: virtual double __cdecl CMemDeSerStream::GetDouble(void) __ptr64
+?GetDouble@CMemDeSerStream@@UEAANXZ
+; public: static void __cdecl CDriveInfo::GetDrive(unsigned short const * __ptr64,unsigned short * __ptr64)
+?GetDrive@CDriveInfo@@SAXPEBGPEAG@Z
+; public: unsigned char * __ptr64 __cdecl CGenericCiProxy::GetEntryBuffer(unsigned long & __ptr64) __ptr64
+?GetEntryBuffer@CGenericCiProxy@@QEAAPEAEAEAK@Z
+; public: struct _FILETIME __cdecl CAllocStorageVariant::GetFILETIME(unsigned int)const __ptr64
+?GetFILETIME@CAllocStorageVariant@@QEBA?AU_FILETIME@@I@Z
+; public: int __cdecl CPathParser::GetFileName(unsigned short * __ptr64,unsigned long & __ptr64)const __ptr64
+?GetFileName@CPathParser@@QEBAHPEAGAEAK@Z
+; public: enum CDriveInfo::eFileSystem __cdecl CDriveInfo::GetFileSystem(int) __ptr64
+?GetFileSystem@CDriveInfo@@QEAA?AW4eFileSystem@1@H@Z
+; public: virtual float __cdecl CMemDeSerStream::GetFloat(void) __ptr64
+?GetFloat@CMemDeSerStream@@UEAAMXZ
+; public: virtual void __cdecl CMemDeSerStream::GetGUID(struct _GUID & __ptr64) __ptr64
+?GetGUID@CMemDeSerStream@@UEAAXAEAU_GUID@@@Z
+; class CPropListFile * __ptr64 __cdecl GetGlobalPropListFile(void)
+?GetGlobalPropListFile@@YAPEAVCPropListFile@@XZ
+; class CStaticPropertyList * __ptr64 __cdecl GetGlobalStaticPropertyList(void)
+?GetGlobalStaticPropertyList@@YAPEAVCStaticPropertyList@@XZ
+; public: short __cdecl CAllocStorageVariant::GetI2(unsigned int)const __ptr64
+?GetI2@CAllocStorageVariant@@QEBAFI@Z
+; public: long __cdecl CAllocStorageVariant::GetI4(unsigned int)const __ptr64
+?GetI4@CAllocStorageVariant@@QEBAJI@Z
+; public: union _LARGE_INTEGER __cdecl CAllocStorageVariant::GetI8(unsigned int)const __ptr64
+?GetI8@CAllocStorageVariant@@QEBA?AT_LARGE_INTEGER@@I@Z
+; unsigned long __cdecl GetLCIDFromString(unsigned short * __ptr64)
+?GetLCIDFromString@@YAKPEAG@Z
+; public: char * __ptr64 __cdecl CAllocStorageVariant::GetLPSTR(unsigned int)const __ptr64
+?GetLPSTR@CAllocStorageVariant@@QEBAPEADI@Z
+; public: unsigned short * __ptr64 __cdecl CAllocStorageVariant::GetLPWSTR(unsigned int)const __ptr64
+?GetLPWSTR@CAllocStorageVariant@@QEBAPEAGI@Z
+; public: unsigned short const * __ptr64 __cdecl CCatalogAdmin::GetLocation(void) __ptr64
+?GetLocation@CCatalogAdmin@@QEAAPEBGXZ
+; public: virtual long __cdecl CMemDeSerStream::GetLong(void) __ptr64
+?GetLong@CMemDeSerStream@@UEAAJXZ
+; public: int __cdecl CQueryScanner::GetNumber(unsigned long & __ptr64,int & __ptr64) __ptr64
+?GetNumber@CQueryScanner@@QEAAHAEAKAEAH@Z
+; public: int __cdecl CQueryScanner::GetNumber(double & __ptr64) __ptr64
+?GetNumber@CQueryScanner@@QEAAHAEAN@Z
+; public: int __cdecl CQueryScanner::GetNumber(__int64 & __ptr64,int & __ptr64) __ptr64
+?GetNumber@CQueryScanner@@QEAAHAEA_JAEAH@Z
+; public: int __cdecl CQueryScanner::GetNumber(unsigned __int64 & __ptr64,int & __ptr64) __ptr64
+?GetNumber@CQueryScanner@@QEAAHAEA_KAEAH@Z
+; public: void __cdecl CKeyDeComp::GetOffset(struct BitOffset & __ptr64) __ptr64
+?GetOffset@CKeyDeComp@@QEAAXAEAUBitOffset@@@Z
+; long __cdecl GetOleDBErrorInfo(struct IUnknown * __ptr64,struct _GUID const & __ptr64,unsigned long,unsigned int,struct tagERRORINFO * __ptr64,struct IErrorInfo * __ptr64 * __ptr64)
+?GetOleDBErrorInfo@@YAJPEAUIUnknown@@AEBU_GUID@@KIPEAUtagERRORINFO@@PEAPEAUIErrorInfo@@@Z
+; long __cdecl GetOleError(class CException & __ptr64)
+?GetOleError@@YAJAEAVCException@@@Z
+; public: unsigned long __cdecl CWebServer::GetPhysicalPath(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned long,unsigned long) __ptr64
+?GetPhysicalPath@CWebServer@@QEAAKPEBGPEAGKK@Z
+; public: int __cdecl CEmptyPropertyList::GetPropInfo(class CDbColId const & __ptr64,unsigned short const * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
+?GetPropInfo@CEmptyPropertyList@@QEAAHAEBVCDbColId@@PEAPEBGPEAGPEAI@Z
+; public: int __cdecl CEmptyPropertyList::GetPropInfo(unsigned short const * __ptr64,class CDbColId * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
+?GetPropInfo@CEmptyPropertyList@@QEAAHPEBGPEAPEAVCDbColId@@PEAGPEAI@Z
+; public: virtual long __cdecl CEmptyPropertyList::GetPropInfoFromId(struct tagDBID const * __ptr64,unsigned short * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
+?GetPropInfoFromId@CEmptyPropertyList@@UEAAJPEBUtagDBID@@PEAPEAGPEAGPEAI@Z
+; public: virtual long __cdecl CEmptyPropertyList::GetPropInfoFromName(unsigned short const * __ptr64,struct tagDBID * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
+?GetPropInfoFromName@CEmptyPropertyList@@UEAAJPEBGPEAPEAUtagDBID@@PEAGPEAI@Z
+; public: static unsigned short __cdecl CEmptyPropertyList::GetPropType(unsigned int)
+?GetPropType@CEmptyPropertyList@@SAGI@Z
+; public: static unsigned int __cdecl CEmptyPropertyList::GetPropTypeCount(void)
+?GetPropTypeCount@CEmptyPropertyList@@SAIXZ
+; public: static unsigned short const * __ptr64 __cdecl CEmptyPropertyList::GetPropTypeName(unsigned int)
+?GetPropTypeName@CEmptyPropertyList@@SAPEBGI@Z
+; public: virtual long __cdecl CDbProperties::GetProperties(unsigned long,struct tagDBPROPIDSET const * __ptr64 const,unsigned long * __ptr64,struct tagDBPROPSET * __ptr64 * __ptr64) __ptr64
+?GetProperties@CDbProperties@@UEAAJKQEBUtagDBPROPIDSET@@PEAKPEAPEAUtagDBPROPSET@@@Z
+; public: void __cdecl CGetDbProps::GetProperties(struct IDBProperties * __ptr64,unsigned long) __ptr64
+?GetProperties@CGetDbProps@@QEAAXPEAUIDBProperties@@K@Z
+; public: virtual long __cdecl CDbProperties::GetPropertyInfo(unsigned long,struct tagDBPROPIDSET const * __ptr64 const,unsigned long * __ptr64,struct tagDBPROPINFOSET * __ptr64 * __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
+?GetPropertyInfo@CDbProperties@@UEAAJKQEBUtagDBPROPIDSET@@PEAKPEAPEAUtagDBPROPINFOSET@@PEAPEAG@Z
+; public: float __cdecl CAllocStorageVariant::GetR4(unsigned int)const __ptr64
+?GetR4@CAllocStorageVariant@@QEBAMI@Z
+; public: double __cdecl CAllocStorageVariant::GetR8(unsigned int)const __ptr64
+?GetR8@CAllocStorageVariant@@QEBANI@Z
+; public: int __cdecl CMachineAdmin::GetSZParam(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned long) __ptr64
+?GetSZParam@CMachineAdmin@@QEAAHPEBGPEAGK@Z
+; long __cdecl GetScodeError(class CException & __ptr64)
+?GetScodeError@@YAJAEAVCException@@@Z
+; int __cdecl GetSecret(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,unsigned long * __ptr64)
+?GetSecret@@YAHPEBG0PEAPEAGPEAK@Z
+; public: unsigned long __cdecl CDriveInfo::GetSectorSize(void) __ptr64
+?GetSectorSize@CDriveInfo@@QEAAKXZ
+; public: void __cdecl CCatState::GetSortProp(unsigned int,unsigned short const * __ptr64 * __ptr64,enum SORTDIR * __ptr64)const __ptr64
+?GetSortProp@CCatState@@QEBAXIPEAPEBGPEAW4SORTDIR@@@Z
+; void __cdecl GetStackTrace(char * __ptr64,unsigned long)
+?GetStackTrace@@YAXPEADK@Z
+; public: unsigned char const * __ptr64 __cdecl CGenericCiProxy::GetStartupData(struct _GUID & __ptr64,unsigned long & __ptr64) __ptr64
+?GetStartupData@CGenericCiProxy@@QEAAPEBEAEAU_GUID@@AEAK@Z
+; public: class PStorage & __ptr64 __cdecl CPropStoreManager::GetStorage(unsigned long) __ptr64
+?GetStorage@CPropStoreManager@@QEAAAEAVPStorage@@K@Z
+; public: unsigned short * __ptr64 __cdecl CKey::GetStr(void)const __ptr64
+?GetStr@CKey@@QEBAPEAGXZ
+; public: unsigned short * __ptr64 __cdecl CKeyBuf::GetStr(void)const __ptr64
+?GetStr@CKeyBuf@@QEBAPEAGXZ
+; public: virtual char * __ptr64 __cdecl CMemDeSerStream::GetString(void) __ptr64
+?GetString@CMemDeSerStream@@UEAAPEADXZ
+; class CDbRestriction * __ptr64 __cdecl GetStringDbRestriction(unsigned short const * __ptr64,unsigned long,struct IColumnMapper * __ptr64,unsigned long)
+?GetStringDbRestriction@@YAPEAVCDbRestriction@@PEBGKPEAUIColumnMapper@@K@Z
+; void __cdecl GetStringFromLCID(unsigned long,unsigned short * __ptr64)
+?GetStringFromLCID@@YAXKPEAG@Z
+; public: unsigned long __cdecl CPropStoreManager::GetTotalSizeInKB(void) __ptr64
+?GetTotalSizeInKB@CPropStoreManager@@QEAAKXZ
+; public: unsigned long __cdecl CPropertyStore::GetTotalSizeInKB(void) __ptr64
+?GetTotalSizeInKB@CPropertyStore@@QEAAKXZ
+; public: virtual unsigned long __cdecl CMemDeSerStream::GetULong(void) __ptr64
+?GetULong@CMemDeSerStream@@UEAAKXZ
+; public: virtual unsigned short __cdecl CMemDeSerStream::GetUShort(void) __ptr64
+?GetUShort@CMemDeSerStream@@UEAAGXZ
+; public: void __cdecl CIndexTable::GetUserHdrInfo(unsigned int & __ptr64,int & __ptr64) __ptr64
+?GetUserHdrInfo@CIndexTable@@QEAAXAEAIAEAH@Z
+; public: unsigned long __cdecl CMetaDataMgr::GetVPathAccess(unsigned short const * __ptr64) __ptr64
+?GetVPathAccess@CMetaDataMgr@@QEAAKPEBG@Z
+; public: unsigned long __cdecl CMetaDataMgr::GetVPathAuthorization(unsigned short const * __ptr64) __ptr64
+?GetVPathAuthorization@CMetaDataMgr@@QEAAKPEBG@Z
+; public: unsigned long __cdecl CMetaDataMgr::GetVPathSSLAccess(unsigned short const * __ptr64) __ptr64
+?GetVPathSSLAccess@CMetaDataMgr@@QEAAKPEBG@Z
+; public: unsigned short const * __ptr64 __cdecl CDriveInfo::GetVolumeName(int) __ptr64
+?GetVolumeName@CDriveInfo@@QEAAPEBGH@Z
+; public: virtual void __cdecl CMemDeSerStream::GetWChar(unsigned short * __ptr64,unsigned long) __ptr64
+?GetWChar@CMemDeSerStream@@UEAAXPEAGK@Z
+; public: virtual unsigned short * __ptr64 __cdecl CMemDeSerStream::GetWString(void) __ptr64
+?GetWString@CMemDeSerStream@@UEAAPEAGXZ
+; public: long __cdecl CDbCmdTreeNode::GetWeight(void)const __ptr64
+?GetWeight@CDbCmdTreeNode@@QEBAJXZ
+; public: void __cdecl CDynStream::Grow(class PStorage & __ptr64,unsigned long) __ptr64
+?Grow@CDynStream@@QEAAXAEAVPStorage@@K@Z
+; private: void __cdecl CVirtualString::GrowBuffer(unsigned long) __ptr64
+?GrowBuffer@CVirtualString@@AEAAXK@Z
+; void __cdecl HTMLEscapeW(unsigned short const * __ptr64,class CVirtualString & __ptr64,unsigned long)
+?HTMLEscapeW@@YAXPEBGAEAVCVirtualString@@K@Z
+; private: void __cdecl CImpersonateClient::Impersonate(void) __ptr64
+?Impersonate@CImpersonateClient@@AEAAXXZ
+; public: void __cdecl CFileMapView::Init(void) __ptr64
+?Init@CFileMapView@@QEAAXXZ
+; public: void __cdecl CMmStreamConsecBuf::Init(class PMmStream * __ptr64) __ptr64
+?Init@CMmStreamConsecBuf@@QEAAXPEAVPMmStream@@@Z
+; public: int __cdecl CPidLookupTable::Init(class PRcovStorageObj * __ptr64) __ptr64
+?Init@CPidLookupTable@@QEAAHPEAVPRcovStorageObj@@@Z
+; public: void __cdecl CRcovStorageHdr::Init(unsigned long) __ptr64
+?Init@CRcovStorageHdr@@QEAAXK@Z
+; public: void __cdecl CRegChangeEvent::Init(void) __ptr64
+?Init@CRegChangeEvent@@QEAAXXZ
+; public: int __cdecl CSdidLookupTable::Init(class CiStorage * __ptr64) __ptr64
+?Init@CSdidLookupTable@@QEAAHPEAVCiStorage@@@Z
+; public: virtual void __cdecl CPropertyList::InitIterator(void) __ptr64
+?InitIterator@CPropertyList@@UEAAXXZ
+; public: void __cdecl CImpersonationTokenCache::Initialize(unsigned short const * __ptr64,int,int,int,unsigned long,unsigned long,unsigned long) __ptr64
+?Initialize@CImpersonationTokenCache@@QEAAXPEBGHHHKKK@Z
+; public: void __cdecl CDynStream::InitializeForRead(void) __ptr64
+?InitializeForRead@CDynStream@@QEAAXXZ
+; public: void __cdecl CDynStream::InitializeForWrite(unsigned long) __ptr64
+?InitializeForWrite@CDynStream@@QEAAXK@Z
+; protected: void __cdecl CDbCmdTreeNode::InsertChild(class CDbCmdTreeNode * __ptr64) __ptr64
+?InsertChild@CDbCmdTreeNode@@IEAAXPEAV1@@Z
+; public: int __cdecl CMachineAdmin::IsCIEnabled(void) __ptr64
+?IsCIEnabled@CMachineAdmin@@QEAAHXZ
+; public: int __cdecl CMachineAdmin::IsCIPaused(void) __ptr64
+?IsCIPaused@CMachineAdmin@@QEAAHXZ
+; public: int __cdecl CMachineAdmin::IsCIStarted(void) __ptr64
+?IsCIStarted@CMachineAdmin@@QEAAHXZ
+; public: int __cdecl CMachineAdmin::IsCIStopped(void) __ptr64
+?IsCIStopped@CMachineAdmin@@QEAAHXZ
+; public: int __cdecl CCatalogAdmin::IsCatalogInactive(void) __ptr64
+?IsCatalogInactive@CCatalogAdmin@@QEAAHXZ
+; int __cdecl IsDirectoryWritable(unsigned short const * __ptr64)
+?IsDirectoryWritable@@YAHPEBG@Z
+; public: static int __cdecl CMetaDataMgr::IsIISAdminUp(int & __ptr64)
+?IsIISAdminUp@CMetaDataMgr@@SAHAEAH@Z
+; public: static int __cdecl CImpersonateSystem::IsImpersonated(void)
+?IsImpersonated@CImpersonateSystem@@SAHXZ
+; public: int __cdecl CRestriction::IsLeaf(void)const __ptr64
+?IsLeaf@CRestriction@@QEBAHXZ
+; int __cdecl IsNullPointerVariant(struct tagPROPVARIANT * __ptr64)
+?IsNullPointerVariant@@YAHPEAUtagPROPVARIANT@@@Z
+; public: int __cdecl CCatalogAdmin::IsPaused(void) __ptr64
+?IsPaused@CCatalogAdmin@@QEAAHXZ
+; public: static int __cdecl CImpersonateSystem::IsRunningAsSystem(void)
+?IsRunningAsSystem@CImpersonateSystem@@SAHXZ
+; public: int __cdecl CDriveInfo::IsSameDrive(unsigned short const * __ptr64) __ptr64
+?IsSameDrive@CDriveInfo@@QEAAHPEBG@Z
+; long __cdecl IsScopeValid(unsigned short const * __ptr64,unsigned int,int)
+?IsScopeValid@@YAJPEBGIH@Z
+; public: int __cdecl CCatalogAdmin::IsStarted(void) __ptr64
+?IsStarted@CCatalogAdmin@@QEAAHXZ
+; public: int __cdecl CCatalogAdmin::IsStopped(void) __ptr64
+?IsStopped@CCatalogAdmin@@QEAAHXZ
+; public: int __cdecl CAllocStorageVariant::IsValid(void)const __ptr64
+?IsValid@CAllocStorageVariant@@QEBAHXZ
+; public: int __cdecl CNodeRestriction::IsValid(void)const __ptr64
+?IsValid@CNodeRestriction@@QEBAHXZ
+; public: int __cdecl COccRestriction::IsValid(void)const __ptr64
+?IsValid@COccRestriction@@QEBAHXZ
+; public: int __cdecl CRestriction::IsValid(void)const __ptr64
+?IsValid@CRestriction@@QEBAHXZ
+; public: int __cdecl CFilterDaemon::IsWaitingForDocument(void) __ptr64
+?IsWaitingForDocument@CFilterDaemon@@QEAAHXZ
+; public: int __cdecl CDriveInfo::IsWriteProtected(void) __ptr64
+?IsWriteProtected@CDriveInfo@@QEAAHXZ
+; public: void __cdecl CLocalGlobalPropertyList::Load(unsigned short const * __ptr64 const) __ptr64
+?Load@CLocalGlobalPropertyList@@QEAAXQEBG@Z
+; unsigned long __cdecl LocaleToCodepage(unsigned long)
+?LocaleToCodepage@@YAKK@Z
+; private: unsigned long __cdecl CPropertyStore::LokNewWorkId(unsigned long,int,int) __ptr64
+?LokNewWorkId@CPropertyStore@@AEAAKKHH@Z
+; public: int __cdecl CCatStateInfo::LokUpdate(void) __ptr64
+?LokUpdate@CCatStateInfo@@QEAAHXZ
+; public: void __cdecl CPropStoreManager::LongInit(int & __ptr64,unsigned long & __ptr64,void (__cdecl*)(unsigned long,int,void const * __ptr64),void const * __ptr64) __ptr64
+?LongInit@CPropStoreManager@@QEAAXAEAHAEAKP6AXKHPEBX@Z2@Z
+; private: unsigned int __cdecl CPropStoreInfo::Lookup(unsigned long) __ptr64
+?Lookup@CPropStoreInfo@@AEAAIK@Z
+; public: unsigned long __cdecl CSdidLookupTable::LookupSDID(void * __ptr64,unsigned long) __ptr64
+?LookupSDID@CSdidLookupTable@@QEAAKPEAXK@Z
+; public: void __cdecl CPhysStorage::MakeBackupCopy(class CPhysStorage & __ptr64,class PSaveProgressTracker & __ptr64) __ptr64
+?MakeBackupCopy@CPhysStorage@@QEAAXAEAV1@AEAVPSaveProgressTracker@@@Z
+; public: void __cdecl CPidLookupTable::MakeBackupCopy(class PRcovStorageObj & __ptr64,class PSaveProgressTracker & __ptr64) __ptr64
+?MakeBackupCopy@CPidLookupTable@@QEAAXAEAVPRcovStorageObj@@AEAVPSaveProgressTracker@@@Z
+; public: void __cdecl CPropStoreManager::MakeBackupCopy(struct IProgressNotify * __ptr64,int & __ptr64,class CiStorage & __ptr64,struct ICiEnumWorkids * __ptr64,struct IEnumString * __ptr64 * __ptr64) __ptr64
+?MakeBackupCopy@CPropStoreManager@@QEAAXPEAUIProgressNotify@@AEAHAEAVCiStorage@@PEAUICiEnumWorkids@@PEAPEAUIEnumString@@@Z
+; long __cdecl MakeICommand(struct IUnknown * __ptr64 * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,struct IUnknown * __ptr64)
+?MakeICommand@@YAJPEAPEAUIUnknown@@PEBG1PEAU1@@Z
+; long __cdecl MakeISearch(struct ISearchQueryHits * __ptr64 * __ptr64,class CDbRestriction * __ptr64,unsigned short const * __ptr64)
+?MakeISearch@@YAJPEAPEAUISearchQueryHits@@PEAVCDbRestriction@@PEBG@Z
+; long __cdecl MakeLocalICommand(struct IUnknown * __ptr64 * __ptr64,struct ICiCDocStore * __ptr64,struct IUnknown * __ptr64)
+?MakeLocalICommand@@YAJPEAPEAUIUnknown@@PEAUICiCDocStore@@PEAU1@@Z
+; long __cdecl MakeMetadataICommand(struct IUnknown * __ptr64 * __ptr64,enum CiMetaData,unsigned short const * __ptr64,unsigned short const * __ptr64,struct IUnknown * __ptr64)
+?MakeMetadataICommand@@YAJPEAPEAUIUnknown@@W4CiMetaData@@PEBG2PEAU1@@Z
+; public: void __cdecl CFullPath::MakePath(unsigned short const * __ptr64) __ptr64
+?MakePath@CFullPath@@QEAAXPEBG@Z
+; public: void __cdecl CFullPath::MakePath(unsigned short const * __ptr64,unsigned int) __ptr64
+?MakePath@CFullPath@@QEAAXPEBGI@Z
+; private: void __cdecl CImpersonateSystem::MakePrivileged(void) __ptr64
+?MakePrivileged@CImpersonateSystem@@AEAAXXZ
+; public: void __cdecl CMmStreamConsecBuf::Map(unsigned long) __ptr64
+?Map@CMmStreamConsecBuf@@QEAAXK@Z
+; public: int __cdecl CDynStream::MarkDirty(void) __ptr64
+?MarkDirty@CDynStream@@QEAAHXZ
+; public: void __cdecl CBaseStorageVariant::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CBaseStorageVariant@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CContentRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CContentRestriction@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CDbCmdTreeNode::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CDbCmdTreeNode@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CFullPropSpec::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CFullPropSpec@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CNatLanguageRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CNatLanguageRestriction@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CNodeRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CNodeRestriction@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CNotRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CNotRestriction@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CPropNameArray::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CPropNameArray@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CPropertyRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CPropertyRestriction@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CRestriction@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CVectorRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
+?Marshall@CVectorRestriction@@QEBAXAEAVPSerStream@@@Z
+; public: int __cdecl CBufferCache::MinPageInUse(unsigned long & __ptr64) __ptr64
+?MinPageInUse@CBufferCache@@QEAAHAEAK@Z
+; public: int __cdecl CPhysStorage::MinPageInUse(unsigned long & __ptr64) __ptr64
+?MinPageInUse@CPhysStorage@@QEAAHAEAK@Z
+; unsigned long __cdecl MultiByteToXArrayWideChar(unsigned char const * __ptr64,unsigned long,unsigned int,class XArray & __ptr64)
+?MultiByteToXArrayWideChar@@YAKPEBEKIAEAV?$XArray@G@@@Z
+; unsigned __int64 __cdecl My_wcstoui64(unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,int)
+?My_wcstoui64@@YA_KPEBGPEAPEAGH@Z
+; public: unsigned long __cdecl CPidRemapper::NameToReal(class CFullPropSpec const * __ptr64) __ptr64
+?NameToReal@CPidRemapper@@QEAAKPEBVCFullPropSpec@@@Z
+; public: static struct IStemmer * __ptr64 __cdecl CCiOle::NewStemmer(struct _GUID const & __ptr64)
+?NewStemmer@CCiOle@@SAPEAUIStemmer@@AEBU_GUID@@@Z
+; public: static struct IWordBreaker * __ptr64 __cdecl CCiOle::NewWordBreaker(struct _GUID const & __ptr64)
+?NewWordBreaker@CCiOle@@SAPEAUIWordBreaker@@AEBU_GUID@@@Z
+; public: int __cdecl CCatalogEnum::Next(void) __ptr64
+?Next@CCatalogEnum@@QEAAHXZ
+; public: virtual long __cdecl CEnumString::Next(unsigned long,unsigned short * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
+?Next@CEnumString@@UEAAJKPEAPEAGPEAK@Z
+; public: virtual long __cdecl CEnumWorkid::Next(unsigned long,unsigned long * __ptr64,unsigned long * __ptr64) __ptr64
+?Next@CEnumWorkid@@UEAAJKPEAK0@Z
+; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Next(void) __ptr64
+?Next@CPropertyList@@UEAAPEBVCPropEntry@@XZ
+; public: int __cdecl CScopeEnum::Next(void) __ptr64
+?Next@CScopeEnum@@QEAAHXZ
+; public: unsigned long __cdecl CPropertyStoreWids::NextWorkId(void) __ptr64
+?NextWorkId@CPropertyStoreWids@@QEAAKXZ
+; public: unsigned int __cdecl CCatState::NumberOfColumns(void)const __ptr64
+?NumberOfColumns@CCatState@@QEBAIXZ
+; public: unsigned int __cdecl CCatState::NumberOfSortProps(void)const __ptr64
+?NumberOfSortProps@CCatState@@QEBAIXZ
+; public: void __cdecl CMmStream::Open(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long,unsigned long,int) __ptr64
+?Open@CMmStream@@QEAAXPEBGKKKKH@Z
+; public: int __cdecl COLEPropManager::Open(class CFunnyPath const & __ptr64) __ptr64
+?Open@COLEPropManager@@QEAAHAEBVCFunnyPath@@@Z
+; public: void __cdecl CMmStream::OpenExclusive(unsigned short * __ptr64,int) __ptr64
+?OpenExclusive@CMmStream@@QEAAXPEAGH@Z
+; struct _iobuf * __ptr64 __cdecl OpenFileFromPath(unsigned short const * __ptr64)
+?OpenFileFromPath@@YAPEAU_iobuf@@PEBG@Z
+; public: class CCompositePropRecord * __ptr64 __cdecl CPropStoreManager::OpenRecord(unsigned long,unsigned char * __ptr64) __ptr64
+?OpenRecord@CPropStoreManager@@QEAAPEAVCCompositePropRecord@@KPEAE@Z
+; public: class CCompositePropRecordForWrites * __ptr64 __cdecl CPropStoreManager::OpenRecordForWrites(unsigned long,unsigned char * __ptr64) __ptr64
+?OpenRecordForWrites@CPropStoreManager@@QEAAPEAVCCompositePropRecordForWrites@@KPEAE@Z
+; long __cdecl ParseCatalogURL(unsigned short const * __ptr64,class XPtrST & __ptr64,class XPtrST & __ptr64)
+?ParseCatalogURL@@YAJPEBGAEAV?$XPtrST@G@@1@Z
+; public: class CRestriction * __ptr64 __cdecl CParseCommandTree::ParseExpression(class CDbCmdTreeNode * __ptr64) __ptr64
+?ParseExpression@CParseCommandTree@@QEAAPEAVCRestriction@@PEAVCDbCmdTreeNode@@@Z
+; public: static void __cdecl CPropertyList::ParseOneLine(class CQueryScanner & __ptr64,int,class XPtr & __ptr64)
+?ParseOneLine@CPropertyList@@SAXAEAVCQueryScanner@@HAEAV?$XPtr@VCPropEntry@@@@@Z
+; public: class CDbRestriction * __ptr64 __cdecl CQueryParser::ParseQueryPhrase(void) __ptr64
+?ParseQueryPhrase@CQueryParser@@QEAAPEAVCDbRestriction@@XZ
+; class CDbColumns * __ptr64 __cdecl ParseStringColumns(unsigned short const * __ptr64,struct IColumnMapper * __ptr64,unsigned long,class PVariableSet * __ptr64,class CDynArray * __ptr64)
+?ParseStringColumns@@YAPEAVCDbColumns@@PEBGPEAUIColumnMapper@@KPEAVPVariableSet@@PEAV?$CDynArray@G@@@Z
+; public: int __cdecl CCatalogAdmin::Pause(void) __ptr64
+?Pause@CCatalogAdmin@@QEAAHXZ
+; public: int __cdecl CMachineAdmin::PauseCI(void) __ptr64
+?PauseCI@CMachineAdmin@@QEAAHXZ
+; public: virtual unsigned long __cdecl CMemDeSerStream::PeekULong(void) __ptr64
+?PeekULong@CMemDeSerStream@@UEAAKXZ
+; public: unsigned long __cdecl CPidMapper::PidToRealPid(unsigned long) __ptr64
+?PidToRealPid@CPidMapper@@QEAAKK@Z
+; public: unsigned long __cdecl CStandardPropMapper::PropertyToPropId(class CFullPropSpec const & __ptr64,int) __ptr64
+?PropertyToPropId@CStandardPropMapper@@QEAAKAEBVCFullPropSpec@@H@Z
+; public: virtual long __cdecl CFwPropertyMapper::PropertyToPropid(struct tagFULLPROPSPEC const * __ptr64,int,unsigned long * __ptr64) __ptr64
+?PropertyToPropid@CFwPropertyMapper@@UEAAJPEBUtagFULLPROPSPEC@@HPEAK@Z
+; public: void __cdecl CValueNormalizer::PutMaxValue(unsigned long,unsigned long & __ptr64,enum VARENUM) __ptr64
+?PutMaxValue@CValueNormalizer@@QEAAXKAEAKW4VARENUM@@@Z
+; public: void __cdecl CValueNormalizer::PutMinValue(unsigned long,unsigned long & __ptr64,enum VARENUM) __ptr64
+?PutMinValue@CValueNormalizer@@QEAAXKAEAKW4VARENUM@@@Z
+; public: void __cdecl CValueNormalizer::PutValue(unsigned long,unsigned long & __ptr64,class CStorageVariant const & __ptr64) __ptr64
+?PutValue@CValueNormalizer@@QEAAXKAEAKAEBVCStorageVariant@@@Z
+; void __cdecl PutWString(class PSerStream & __ptr64,unsigned short const * __ptr64)
+?PutWString@@YAXAEAVPSerStream@@PEBG@Z
+; private: class CDbRestriction * __ptr64 __cdecl CQueryParser::Query(class CDbNodeRestriction * __ptr64) __ptr64
+?Query@CQueryParser@@AEAAPEAVCDbRestriction@@PEAVCDbNodeRestriction@@@Z
+; public: class CCatalogAdmin * __ptr64 __cdecl CCatalogEnum::QueryCatalogAdmin(void) __ptr64
+?QueryCatalogAdmin@CCatalogEnum@@QEAAPEAVCCatalogAdmin@@XZ
+; public: class CCatalogAdmin * __ptr64 __cdecl CMachineAdmin::QueryCatalogAdmin(unsigned short const * __ptr64) __ptr64
+?QueryCatalogAdmin@CMachineAdmin@@QEAAPEAVCCatalogAdmin@@PEBG@Z
+; public: class CCatalogEnum * __ptr64 __cdecl CMachineAdmin::QueryCatalogEnum(void) __ptr64
+?QueryCatalogEnum@CMachineAdmin@@QEAAPEAVCCatalogEnum@@XZ
+; public: virtual long __cdecl CDbProperties::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
+?QueryInterface@CDbProperties@@UEAAJAEBU_GUID@@PEAPEAX@Z
+; public: virtual long __cdecl CEmptyPropertyList::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
+?QueryInterface@CEmptyPropertyList@@UEAAJAEBU_GUID@@PEAPEAX@Z
+; public: virtual long __cdecl CEnumString::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
+?QueryInterface@CEnumString@@UEAAJAEBU_GUID@@PEAPEAX@Z
+; public: virtual long __cdecl CEnumWorkid::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
+?QueryInterface@CEnumWorkid@@UEAAJAEBU_GUID@@PEAPEAX@Z
+; public: virtual long __cdecl CFwPropertyMapper::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
+?QueryInterface@CFwPropertyMapper@@UEAAJAEBU_GUID@@PEAPEAX@Z
+; public: virtual long __cdecl CQueryUnknown::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
+?QueryInterface@CQueryUnknown@@UEAAJAEBU_GUID@@PEAPEAX@Z
+; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryPidLookupTable(unsigned long) __ptr64
+?QueryPidLookupTable@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
+; public: class CScopeAdmin * __ptr64 __cdecl CCatalogAdmin::QueryScopeAdmin(unsigned short const * __ptr64) __ptr64
+?QueryScopeAdmin@CCatalogAdmin@@QEAAPEAVCScopeAdmin@@PEBG@Z
+; public: class CScopeAdmin * __ptr64 __cdecl CScopeEnum::QueryScopeAdmin(void) __ptr64
+?QueryScopeAdmin@CScopeEnum@@QEAAPEAVCScopeAdmin@@XZ
+; public: class CScopeEnum * __ptr64 __cdecl CCatalogAdmin::QueryScopeEnum(void) __ptr64
+?QueryScopeEnum@CCatalogAdmin@@QEAAPEAVCScopeEnum@@XZ
+; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryScopeList(unsigned long) __ptr64
+?QueryScopeList@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
+; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QuerySdidLookupTable(unsigned long) __ptr64
+?QuerySdidLookupTable@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
+; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryVirtualScopeList(unsigned long) __ptr64
+?QueryVirtualScopeList@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
+; public: void __cdecl CPidRemapper::ReBuild(class CPidMapper const & __ptr64) __ptr64
+?ReBuild@CPidRemapper@@QEAAXAEBVCPidMapper@@@Z
+; public: void __cdecl CQueryUnknown::ReInit(unsigned long,class CRowset * __ptr64 * __ptr64) __ptr64
+?ReInit@CQueryUnknown@@QEAAXKPEAPEAVCRowset@@@Z
+; public: void __cdecl CImpersonationTokenCache::ReInitializeIISScopes(void) __ptr64
+?ReInitializeIISScopes@CImpersonationTokenCache@@QEAAXXZ
+; private: virtual void __cdecl CPhysIndex::ReOpenStream(void) __ptr64
+?ReOpenStream@CPhysIndex@@EEAAXXZ
+; public: unsigned long __cdecl CDynStream::Read(void * __ptr64,unsigned long) __ptr64
+?Read@CDynStream@@QEAAKPEAXK@Z
+; public: unsigned long __cdecl CRcovStrmTrans::Read(void * __ptr64,unsigned long) __ptr64
+?Read@CRcovStrmTrans@@QEAAKPEAXK@Z
+; public: unsigned long __cdecl CRegAccess::Read(unsigned short const * __ptr64,unsigned long) __ptr64
+?Read@CRegAccess@@QEAAKPEBGK@Z
+; public: unsigned short * __ptr64 __cdecl CRegAccess::Read(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
+?Read@CRegAccess@@QEAAPEAGPEBG0@Z
+; public: int __cdecl CPropStoreManager::ReadPrimaryProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
+?ReadPrimaryProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@@Z
+; public: int __cdecl COLEPropManager::ReadProperty(class CFullPropSpec const & __ptr64,struct tagPROPVARIANT & __ptr64) __ptr64
+?ReadProperty@COLEPropManager@@QEAAHAEBVCFullPropSpec@@AEAUtagPROPVARIANT@@@Z
+; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
+?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KAEAUtagPROPVARIANT@@@Z
+; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT & __ptr64,unsigned char * __ptr64,unsigned int * __ptr64) __ptr64
+?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KAEAUtagPROPVARIANT@@PEAEPEAI@Z
+; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
+?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KPEAUtagPROPVARIANT@@PEAI@Z
+; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
+?ReadProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@@Z
+; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64,unsigned char * __ptr64,unsigned int * __ptr64) __ptr64
+?ReadProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@PEAEPEAI@Z
+; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
+?ReadProperty@CPropStoreManager@@QEAAHKKPEAUtagPROPVARIANT@@PEAI@Z
+; public: int __cdecl CPropertyStore::ReadProperty(class CPropRecordNoLock & __ptr64,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
+?ReadProperty@CPropertyStore@@QEAAHAEAVCPropRecordNoLock@@KPEAUtagPROPVARIANT@@PEAI@Z
+; public: int __cdecl CPropertyStore::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
+?ReadProperty@CPropertyStore@@QEAAHKKAEAUtagPROPVARIANT@@@Z
+; public: unsigned char __cdecl CDFA::Recognize(unsigned short const * __ptr64) __ptr64
+?Recognize@CDFA@@QEAAEPEBG@Z
+; public: void __cdecl CCiRegParams::Refresh(struct ICiAdminParams * __ptr64,int) __ptr64
+?Refresh@CCiRegParams@@QEAAXPEAUICiAdminParams@@H@Z
+; public: void __cdecl CDefColumnRegEntry::Refresh(int) __ptr64
+?Refresh@CDefColumnRegEntry@@QEAAXH@Z
+; public: void __cdecl CWorkQueue::RefreshParams(unsigned long,unsigned long) __ptr64
+?RefreshParams@CWorkQueue@@QEAAXKK@Z
+; public: virtual unsigned long __cdecl CDbProperties::Release(void) __ptr64
+?Release@CDbProperties@@UEAAKXZ
+; public: virtual unsigned long __cdecl CEmptyPropertyList::Release(void) __ptr64
+?Release@CEmptyPropertyList@@UEAAKXZ
+; public: virtual unsigned long __cdecl CEnumString::Release(void) __ptr64
+?Release@CEnumString@@UEAAKXZ
+; public: virtual unsigned long __cdecl CEnumWorkid::Release(void) __ptr64
+?Release@CEnumWorkid@@UEAAKXZ
+; public: virtual unsigned long __cdecl CFwPropertyMapper::Release(void) __ptr64
+?Release@CFwPropertyMapper@@UEAAKXZ
+; public: void __cdecl CImpersonateRemoteAccess::Release(void) __ptr64
+?Release@CImpersonateRemoteAccess@@QEAAXXZ
+; public: virtual unsigned long __cdecl CQueryUnknown::Release(void) __ptr64
+?Release@CQueryUnknown@@UEAAKXZ
+; public: void __cdecl CWorkQueue::Release(class CWorkThread * __ptr64) __ptr64
+?Release@CWorkQueue@@QEAAXPEAVCWorkThread@@@Z
+; private: void __cdecl CPropertyStore::ReleaseRead(class CReadWriteLockRecord & __ptr64) __ptr64
+?ReleaseRead@CPropertyStore@@AEAAXAEAVCReadWriteLockRecord@@@Z
+; public: void __cdecl CWorkQueue::ReleaseWorkThreads(void) __ptr64
+?ReleaseWorkThreads@CWorkQueue@@QEAAXXZ
+; public: void __cdecl CColumns::Remove(unsigned int) __ptr64
+?Remove@CColumns@@QEAAXI@Z
+; public: void __cdecl CDbSortSet::Remove(unsigned int) __ptr64
+?Remove@CDbSortSet@@QEAAXI@Z
+; public: void __cdecl CSort::Remove(unsigned int) __ptr64
+?Remove@CSort@@QEAAXI@Z
+; private: void __cdecl CWorkQueue::Remove(class CWorkThread & __ptr64) __ptr64
+?Remove@CWorkQueue@@AEAAXAEAVCWorkThread@@@Z
+; public: void __cdecl CWorkQueue::Remove(class PWorkItem * __ptr64) __ptr64
+?Remove@CWorkQueue@@QEAAXPEAVPWorkItem@@@Z
+; public: void __cdecl CMachineAdmin::RemoveCatalog(unsigned short const * __ptr64,int) __ptr64
+?RemoveCatalog@CMachineAdmin@@QEAAXPEBGH@Z
+; public: void __cdecl CMachineAdmin::RemoveCatalogFiles(unsigned short const * __ptr64) __ptr64
+?RemoveCatalogFiles@CMachineAdmin@@QEAAXPEBG@Z
+; public: class CRestriction * __ptr64 __cdecl CNodeRestriction::RemoveChild(unsigned int) __ptr64
+?RemoveChild@CNodeRestriction@@QEAAPEAVCRestriction@@I@Z
+; protected: class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::RemoveFirstChild(void) __ptr64
+?RemoveFirstChild@CDbCmdTreeNode@@IEAAPEAV1@XZ
+; public: void __cdecl CCatalogAdmin::RemoveScope(unsigned short const * __ptr64) __ptr64
+?RemoveScope@CCatalogAdmin@@QEAAXPEBG@Z
+; public: void __cdecl CPhysStorage::Reopen(int) __ptr64
+?Reopen@CPhysStorage@@QEAAXH@Z
+; public: void __cdecl CEventLog::ReportEventW(class CEventItem & __ptr64) __ptr64
+?ReportEventW@CEventLog@@QEAAXAEAVCEventItem@@@Z
+; public: void __cdecl CFwEventItem::ReportEventW(struct ICiCAdviseStatus & __ptr64) __ptr64
+?ReportEventW@CFwEventItem@@QEAAXAEAUICiCAdviseStatus@@@Z
+; public: int __cdecl CPhysStorage::RequiresFlush(unsigned long) __ptr64
+?RequiresFlush@CPhysStorage@@QEAAHK@Z
+; public: void __cdecl CRegChangeEvent::Reset(void) __ptr64
+?Reset@CRegChangeEvent@@QEAAXXZ
+; public: void __cdecl CQueryScanner::ResetBuffer(unsigned short const * __ptr64) __ptr64
+?ResetBuffer@CQueryScanner@@QEAAXPEBG@Z
+; protected: void __cdecl CAllocStorageVariant::ResetType(class PMemoryAllocator & __ptr64) __ptr64
+?ResetType@CAllocStorageVariant@@IEAAXAEAVPMemoryAllocator@@@Z
+; public: void __cdecl CProcess::Resume(void) __ptr64
+?Resume@CProcess@@QEAAXXZ
+; public: void __cdecl CPhysStorage::ReturnBuffer(unsigned long,int,int) __ptr64
+?ReturnBuffer@CPhysStorage@@QEAAXKHH@Z
+; public: void __cdecl CMmStreamConsecBuf::Rewind(void) __ptr64
+?Rewind@CMmStreamConsecBuf@@QEAAXXZ
+; unsigned long __cdecl SaComputeSize(unsigned short,struct tagSAFEARRAY & __ptr64)
+?SaComputeSize@@YAKGAEAUtagSAFEARRAY@@@Z
+; int __cdecl SaCreateAndCopy(class PMemoryAllocator & __ptr64,struct tagSAFEARRAY * __ptr64,struct tagSAFEARRAY * __ptr64 * __ptr64)
+?SaCreateAndCopy@@YAHAEAVPMemoryAllocator@@PEAUtagSAFEARRAY@@PEAPEAU2@@Z
+; int __cdecl SaCreateData(class PVarAllocator & __ptr64,unsigned short,struct tagSAFEARRAY & __ptr64,struct tagSAFEARRAY & __ptr64,int)
+?SaCreateData@@YAHAEAVPVarAllocator@@GAEAUtagSAFEARRAY@@1H@Z
+; public: int __cdecl CRcovStrmTrans::Seek(unsigned long) __ptr64
+?Seek@CRcovStrmTrans@@QEAAHK@Z
+; public: void __cdecl CDbQueryResults::Serialize(class PSerStream & __ptr64)const __ptr64
+?Serialize@CDbQueryResults@@QEBAXAEAVPSerStream@@@Z
+; public: void __cdecl CPidRemapper::Set(class XArray & __ptr64) __ptr64
+?Set@CPidRemapper@@QEAAXAEAV?$XArray@K@@@Z
+; public: void __cdecl CScopeAdmin::SetAlias(unsigned short const * __ptr64) __ptr64
+?SetAlias@CScopeAdmin@@QEAAXPEBG@Z
+; public: void __cdecl CStorageVariant::SetBOOL(short,unsigned int) __ptr64
+?SetBOOL@CStorageVariant@@QEAAXFI@Z
+; public: void __cdecl CAllocStorageVariant::SetBSTR(unsigned short * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
+?SetBSTR@CAllocStorageVariant@@QEAAXPEAGAEAVPMemoryAllocator@@@Z
+; public: void __cdecl CStorageVariant::SetBSTR(unsigned short * __ptr64,unsigned int) __ptr64
+?SetBSTR@CStorageVariant@@QEAAXPEAGI@Z
+; public: void __cdecl CPropStoreManager::SetBackupSize(unsigned long,unsigned long) __ptr64
+?SetBackupSize@CPropStoreManager@@QEAAXKK@Z
+; public: void __cdecl CCatState::SetCD(unsigned short const * __ptr64) __ptr64
+?SetCD@CCatState@@QEAAXPEBG@Z
+; public: void __cdecl CStorageVariant::SetCLSID(struct _GUID const * __ptr64) __ptr64
+?SetCLSID@CStorageVariant@@QEAAXPEBU_GUID@@@Z
+; public: void __cdecl CStorageVariant::SetCLSID(struct _GUID,unsigned int) __ptr64
+?SetCLSID@CStorageVariant@@QEAAXU_GUID@@I@Z
+; public: void __cdecl CStorageVariant::SetCY(union tagCY,unsigned int) __ptr64
+?SetCY@CStorageVariant@@QEAAXTtagCY@@I@Z
+; public: void __cdecl CCatState::SetCatalog(unsigned short const * __ptr64) __ptr64
+?SetCatalog@CCatState@@QEAAXPEBG@Z
+; public: void __cdecl CCatState::SetColumn(unsigned short const * __ptr64,unsigned int) __ptr64
+?SetColumn@CCatState@@QEAAXPEBGI@Z
+; private: void __cdecl CQueryParser::SetCurrentProperty(unsigned short const * __ptr64,enum PropertyType) __ptr64
+?SetCurrentProperty@CQueryParser@@AEAAXPEBGW4PropertyType@@@Z
+; public: void __cdecl CStorageVariant::SetDATE(double,unsigned int) __ptr64
+?SetDATE@CStorageVariant@@QEAAXNI@Z
+; public: void __cdecl CCatalogAdmin::SetDWORDParam(unsigned short const * __ptr64,unsigned long) __ptr64
+?SetDWORDParam@CCatalogAdmin@@QEAAXPEBGK@Z
+; public: void __cdecl CMachineAdmin::SetDWORDParam(unsigned short const * __ptr64,unsigned long) __ptr64
+?SetDWORDParam@CMachineAdmin@@QEAAXPEBGK@Z
+; public: void __cdecl CCatState::SetDefaultProperty(unsigned short const * __ptr64) __ptr64
+?SetDefaultProperty@CCatState@@QEAAXPEBG@Z
+; public: void __cdecl CScopeAdmin::SetExclude(int) __ptr64
+?SetExclude@CScopeAdmin@@QEAAXH@Z
+; public: void __cdecl CStorageVariant::SetFILETIME(struct _FILETIME,unsigned int) __ptr64
+?SetFILETIME@CStorageVariant@@QEAAXU_FILETIME@@I@Z
+; public: void __cdecl CStorageVariant::SetI2(short,unsigned int) __ptr64
+?SetI2@CStorageVariant@@QEAAXFI@Z
+; public: void __cdecl CStorageVariant::SetI4(long,unsigned int) __ptr64
+?SetI4@CStorageVariant@@QEAAXJI@Z
+; public: void __cdecl CStorageVariant::SetI8(union _LARGE_INTEGER,unsigned int) __ptr64
+?SetI8@CStorageVariant@@QEAAXT_LARGE_INTEGER@@I@Z
+; public: void __cdecl CStorageVariant::SetLPSTR(char const * __ptr64,unsigned int) __ptr64
+?SetLPSTR@CStorageVariant@@QEAAXPEBDI@Z
+; public: void __cdecl CStorageVariant::SetLPWSTR(unsigned short const * __ptr64,unsigned int) __ptr64
+?SetLPWSTR@CStorageVariant@@QEAAXPEBGI@Z
+; public: void __cdecl CCatState::SetLocale(unsigned short const * __ptr64) __ptr64
+?SetLocale@CCatState@@QEAAXPEBG@Z
+; public: void __cdecl CScopeAdmin::SetLogonInfo(unsigned short const * __ptr64,unsigned short const * __ptr64,class CCatalogAdmin & __ptr64) __ptr64
+?SetLogonInfo@CScopeAdmin@@QEAAXPEBG0AEAVCCatalogAdmin@@@Z
+; public: void __cdecl CPropStoreManager::SetMappedCacheSize(unsigned long,unsigned long) __ptr64
+?SetMappedCacheSize@CPropStoreManager@@QEAAXKK@Z
+; public: void __cdecl CCatState::SetNumberOfColumns(unsigned int) __ptr64
+?SetNumberOfColumns@CCatState@@QEAAXI@Z
+; public: void __cdecl CCatState::SetNumberOfSortProps(unsigned int) __ptr64
+?SetNumberOfSortProps@CCatState@@QEAAXI@Z
+; public: void __cdecl CScopeAdmin::SetPath(unsigned short const * __ptr64) __ptr64
+?SetPath@CScopeAdmin@@QEAAXPEBG@Z
+; public: void __cdecl CContentRestriction::SetPhrase(unsigned short const * __ptr64) __ptr64
+?SetPhrase@CContentRestriction@@QEAAXPEBG@Z
+; public: void __cdecl CNatLanguageRestriction::SetPhrase(unsigned short const * __ptr64) __ptr64
+?SetPhrase@CNatLanguageRestriction@@QEAAXPEBG@Z
+; public: void __cdecl CGenericCiProxy::SetPriority(unsigned long,unsigned long) __ptr64
+?SetPriority@CGenericCiProxy@@QEAAXKK@Z
+; public: virtual long __cdecl CDbProperties::SetProperties(unsigned long,struct tagDBPROPSET * __ptr64 const) __ptr64
+?SetProperties@CDbProperties@@UEAAJKQEAUtagDBPROPSET@@@Z
+; public: int __cdecl CDbColId::SetProperty(unsigned short const * __ptr64) __ptr64
+?SetProperty@CDbColId@@QEAAHPEBG@Z
+; public: int __cdecl CDbPropBaseRestriction::SetProperty(struct tagDBID const & __ptr64) __ptr64
+?SetProperty@CDbPropBaseRestriction@@QEAAHAEBUtagDBID@@@Z
+; public: int __cdecl CDbPropBaseRestriction::SetProperty(class CDbColumnNode const & __ptr64) __ptr64
+?SetProperty@CDbPropBaseRestriction@@QEAAHAEBVCDbColumnNode@@@Z
+; public: int __cdecl CFullPropSpec::SetProperty(unsigned short const * __ptr64) __ptr64
+?SetProperty@CFullPropSpec@@QEAAHPEBG@Z
+; public: void __cdecl CFullPropSpec::SetProperty(unsigned long) __ptr64
+?SetProperty@CFullPropSpec@@QEAAXK@Z
+; public: void __cdecl CStorageVariant::SetR4(float,unsigned int) __ptr64
+?SetR4@CStorageVariant@@QEAAXMI@Z
+; public: void __cdecl CStorageVariant::SetR8(double,unsigned int) __ptr64
+?SetR8@CStorageVariant@@QEAAXNI@Z
+; public: int __cdecl CDbSelectNode::SetRestriction(class CDbCmdTreeNode * __ptr64) __ptr64
+?SetRestriction@CDbSelectNode@@QEAAHPEAVCDbCmdTreeNode@@@Z
+; public: static void __cdecl CImpersonateSystem::SetRunningAsSystem(void)
+?SetRunningAsSystem@CImpersonateSystem@@SAXXZ
+; public: void __cdecl CMachineAdmin::SetSZParam(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
+?SetSZParam@CMachineAdmin@@QEAAXPEBG0K@Z
+; void __cdecl SetScopeProperties(struct ICommand * __ptr64,unsigned int,unsigned short const * __ptr64 const * __ptr64,unsigned long const * __ptr64,unsigned short const * __ptr64 const * __ptr64,unsigned short const * __ptr64 const * __ptr64)
+?SetScopeProperties@@YAXPEAUICommand@@IPEBQEBGPEBK11@Z
+; long __cdecl SetScopePropertiesNoThrow(struct ICommand * __ptr64,unsigned int,unsigned short const * __ptr64 const * __ptr64,unsigned long const * __ptr64,unsigned short const * __ptr64 const * __ptr64,unsigned short const * __ptr64 const * __ptr64)
+?SetScopePropertiesNoThrow@@YAJPEAUICommand@@IPEBQEBGPEBK11@Z
+; void __cdecl SetSecret(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long)
+?SetSecret@@YAXPEBG00K@Z
+; public: void __cdecl CCatState::SetSortProp(unsigned short const * __ptr64,enum SORTDIR,unsigned int) __ptr64
+?SetSortProp@CCatState@@QEAAXPEBGW4SORTDIR@@I@Z
+; public: void __cdecl CStorageVariant::SetUI1(unsigned char,unsigned int) __ptr64
+?SetUI1@CStorageVariant@@QEAAXEI@Z
+; public: void __cdecl CStorageVariant::SetUI2(unsigned short,unsigned int) __ptr64
+?SetUI2@CStorageVariant@@QEAAXGI@Z
+; public: void __cdecl CStorageVariant::SetUI4(unsigned long,unsigned int) __ptr64
+?SetUI4@CStorageVariant@@QEAAXKI@Z
+; public: void __cdecl CStorageVariant::SetUI8(union _ULARGE_INTEGER,unsigned int) __ptr64
+?SetUI8@CStorageVariant@@QEAAXT_ULARGE_INTEGER@@I@Z
+; public: void __cdecl CPropertyRestriction::SetValue(struct tagBLOB & __ptr64) __ptr64
+?SetValue@CPropertyRestriction@@QEAAXAEAUtagBLOB@@@Z
+; public: void __cdecl CPropertyRestriction::SetValue(unsigned short * __ptr64) __ptr64
+?SetValue@CPropertyRestriction@@QEAAXPEAG@Z
+; public: void __cdecl CPropertyRestriction::SetValue(struct _GUID * __ptr64) __ptr64
+?SetValue@CPropertyRestriction@@QEAAXPEAU_GUID@@@Z
+; public: void __cdecl CDbCmdTreeNode::SetWeight(long) __ptr64
+?SetWeight@CDbCmdTreeNode@@QEAAXJ@Z
+; public: void __cdecl CPropStoreManager::Setup(unsigned long,unsigned long,unsigned long,unsigned __int64,int,unsigned long) __ptr64
+?Setup@CPropStoreManager@@QEAAXKKK_KHK@Z
+; public: void __cdecl CDynStream::Shrink(class PStorage & __ptr64,unsigned long) __ptr64
+?Shrink@CDynStream@@QEAAXAEAVPStorage@@K@Z
+; public: unsigned long __cdecl CPhysStorage::ShrinkFromFront(unsigned long,unsigned long) __ptr64
+?ShrinkFromFront@CPhysStorage@@QEAAKKK@Z
+; public: void __cdecl CPhysStorage::ShrinkToFit(void) __ptr64
+?ShrinkToFit@CPhysStorage@@QEAAXXZ
+; public: static void __cdecl CCiOle::Shutdown(void)
+?Shutdown@CCiOle@@SAXXZ
+; public: void __cdecl CPropStoreManager::Shutdown(void) __ptr64
+?Shutdown@CPropStoreManager@@QEAAXXZ
+; public: void __cdecl CWorkQueue::Shutdown(void) __ptr64
+?Shutdown@CWorkQueue@@QEAAXXZ
+; public: unsigned long __cdecl CDbQueryResults::Size(void) __ptr64
+?Size@CDbQueryResults@@QEAAKXZ
+; public: virtual long __cdecl CEnumString::Skip(unsigned long) __ptr64
+?Skip@CEnumString@@UEAAJK@Z
+; public: virtual long __cdecl CEnumWorkid::Skip(unsigned long) __ptr64
+?Skip@CEnumWorkid@@UEAAJK@Z
+; public: virtual void __cdecl CMemDeSerStream::SkipBlob(unsigned long) __ptr64
+?SkipBlob@CMemDeSerStream@@UEAAXK@Z
+; public: virtual void __cdecl CMemDeSerStream::SkipByte(void) __ptr64
+?SkipByte@CMemDeSerStream@@UEAAXXZ
+; public: virtual void __cdecl CMemDeSerStream::SkipChar(unsigned long) __ptr64
+?SkipChar@CMemDeSerStream@@UEAAXK@Z
+; public: virtual void __cdecl CMemDeSerStream::SkipDouble(void) __ptr64
+?SkipDouble@CMemDeSerStream@@UEAAXXZ
+; public: virtual void __cdecl CMemDeSerStream::SkipFloat(void) __ptr64
+?SkipFloat@CMemDeSerStream@@UEAAXXZ
+; public: virtual void __cdecl CMemDeSerStream::SkipGUID(void) __ptr64
+?SkipGUID@CMemDeSerStream@@UEAAXXZ
+; public: virtual void __cdecl CMemDeSerStream::SkipLong(void) __ptr64
+?SkipLong@CMemDeSerStream@@UEAAXXZ
+; public: virtual void __cdecl CMemDeSerStream::SkipULong(void) __ptr64
+?SkipULong@CMemDeSerStream@@UEAAXXZ
+; public: virtual void __cdecl CMemDeSerStream::SkipUShort(void) __ptr64
+?SkipUShort@CMemDeSerStream@@UEAAXXZ
+; public: virtual void __cdecl CMemDeSerStream::SkipWChar(unsigned long) __ptr64
+?SkipWChar@CMemDeSerStream@@UEAAXK@Z
+; public: int __cdecl CCatalogAdmin::Start(void) __ptr64
+?Start@CCatalogAdmin@@QEAAHXZ
+; public: int __cdecl CMachineAdmin::StartCI(void) __ptr64
+?StartCI@CMachineAdmin@@QEAAHXZ
+; public: int __cdecl CCatalogAdmin::Stop(void) __ptr64
+?Stop@CCatalogAdmin@@QEAAHXZ
+; public: int __cdecl CMachineAdmin::StopCI(void) __ptr64
+?StopCI@CMachineAdmin@@QEAAHXZ
+; public: void __cdecl CFilterDaemon::StopFiltering(void) __ptr64
+?StopFiltering@CFilterDaemon@@QEAAXXZ
+; public: unsigned int __cdecl CKey::StrLen(void)const __ptr64
+?StrLen@CKey@@QEBAIXZ
+; public: unsigned int __cdecl CKeyBuf::StrLen(void)const __ptr64
+?StrLen@CKeyBuf@@QEBAIXZ
+; void __cdecl SystemExceptionTranslator(unsigned int,struct _EXCEPTION_POINTERS * __ptr64)
+?SystemExceptionTranslator@@YAXIPEAU_EXCEPTION_POINTERS@@@Z
+; public: unsigned long __cdecl CRestriction::TreeCount(void)const __ptr64
+?TreeCount@CRestriction@@QEBAKXZ
+; public: void __cdecl CMachineAdmin::TunePerformance(int,unsigned short,unsigned short) __ptr64
+?TunePerformance@CMachineAdmin@@QEAAXHGG@Z
+; void __cdecl URLEscapeW(unsigned short const * __ptr64,class CVirtualString & __ptr64,unsigned long,int)
+?URLEscapeW@@YAXPEBGAEAVCVirtualString@@KH@Z
+; public: int __cdecl CDbProperties::UnMarshall(class PDeSerStream & __ptr64) __ptr64
+?UnMarshall@CDbProperties@@QEAAHAEAVPDeSerStream@@@Z
+; public: static class CRestriction * __ptr64 __cdecl CRestriction::UnMarshall(class PDeSerStream & __ptr64)
+?UnMarshall@CRestriction@@SAPEAV1@AEAVPDeSerStream@@@Z
+; public: static class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::UnMarshallTree(class PDeSerStream & __ptr64)
+?UnMarshallTree@CDbCmdTreeNode@@SAPEAV1@AEAVPDeSerStream@@@Z
+; void __cdecl UnPickle(int,class XPtr & __ptr64,class XPtr & __ptr64,class XPtr & __ptr64,class XPtr & __ptr64,class CRowsetProperties & __ptr64,class XPtr & __ptr64,unsigned char * __ptr64,unsigned long)
+?UnPickle@@YAXHAEAV?$XPtr@VCColumnSet@@@@AEAV?$XPtr@VCRestriction@@@@AEAV?$XPtr@VCSortSet@@@@AEAV?$XPtr@VCCategorizationSet@@@@AEAVCRowsetProperties@@AEAV?$XPtr@VCPidMapper@@@@PEAEK@Z
+; protected: void __cdecl CRcovStrmTrans::Unmap(enum CRcovStorageHdr::DataCopyNum) __ptr64
+?Unmap@CRcovStrmTrans@@IEAAXW4DataCopyNum@CRcovStorageHdr@@@Z
+; unsigned long __cdecl UpdateContentIndex(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,int)
+?UpdateContentIndex@@YAKPEBG00H@Z
+; public: void __cdecl CDiskFreeStatus::UpdateDiskLowInfo(void) __ptr64
+?UpdateDiskLowInfo@CDiskFreeStatus@@QEAAXXZ
+; int __cdecl VT_VARIANT_EQ(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
+?VT_VARIANT_EQ@@YAHAEBUtagPROPVARIANT@@0@Z
+; int __cdecl VT_VARIANT_GE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
+?VT_VARIANT_GE@@YAHAEBUtagPROPVARIANT@@0@Z
+; int __cdecl VT_VARIANT_GT(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
+?VT_VARIANT_GT@@YAHAEBUtagPROPVARIANT@@0@Z
+; int __cdecl VT_VARIANT_LE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
+?VT_VARIANT_LE@@YAHAEBUtagPROPVARIANT@@0@Z
+; int __cdecl VT_VARIANT_LT(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
+?VT_VARIANT_LT@@YAHAEBUtagPROPVARIANT@@0@Z
+; int __cdecl VT_VARIANT_NE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
+?VT_VARIANT_NE@@YAHAEBUtagPROPVARIANT@@0@Z
+; int __cdecl ValidateScopeRestriction(class CRestriction * __ptr64)
+?ValidateScopeRestriction@@YAHPEAVCRestriction@@@Z
+; public: void __cdecl PRcovStorageObj::VerifyConsistency(void) __ptr64
+?VerifyConsistency@PRcovStorageObj@@QEAAXXZ
+; void __cdecl VerifyThreadHasAdminPrivilege(void)
+?VerifyThreadHasAdminPrivilege@@YAXXZ
+; unsigned long __cdecl WideCharToXArrayMultiByte(unsigned short const * __ptr64,unsigned long,unsigned int,class XArray & __ptr64)
+?WideCharToXArrayMultiByte@@YAKPEBGKIAEAV?$XArray@E@@@Z
+; public: void __cdecl CDynStream::Write(void * __ptr64,unsigned long) __ptr64
+?Write@CDynStream@@QEAAXPEAXK@Z
+; protected: void __cdecl CRcovStrmTrans::Write(void const * __ptr64,unsigned long) __ptr64
+?Write@CRcovStrmTrans@@IEAAXPEBXK@Z
+; public: long __cdecl CPropStoreManager::WritePrimaryProperty(class CCompositePropRecordForWrites & __ptr64,unsigned long,class CStorageVariant const & __ptr64) __ptr64
+?WritePrimaryProperty@CPropStoreManager@@QEAAJAEAVCCompositePropRecordForWrites@@KAEBVCStorageVariant@@@Z
+; public: long __cdecl CPropStoreManager::WritePrimaryProperty(unsigned long,unsigned long,class CStorageVariant const & __ptr64) __ptr64
+?WritePrimaryProperty@CPropStoreManager@@QEAAJKKAEBVCStorageVariant@@@Z
+; public: long __cdecl CPropStoreManager::WriteProperty(class CCompositePropRecordForWrites & __ptr64,unsigned long,class CStorageVariant const & __ptr64) __ptr64
+?WriteProperty@CPropStoreManager@@QEAAJAEAVCCompositePropRecordForWrites@@KAEBVCStorageVariant@@@Z
+; public: long __cdecl CPropStoreManager::WriteProperty(unsigned long,unsigned long,class CStorageVariant const & __ptr64) __ptr64
+?WriteProperty@CPropStoreManager@@QEAAJKKAEBVCStorageVariant@@@Z
+; public: unsigned long __cdecl CPropStoreManager::WritePropertyInNewRecord(unsigned long,class CStorageVariant const & __ptr64) __ptr64
+?WritePropertyInNewRecord@CPropStoreManager@@QEAAKKAEBVCStorageVariant@@@Z
+; private: class CDbProjectListAnchor * __ptr64 __cdecl CDbNestingNode::_FindGroupListAnchor(void) __ptr64
+?_FindGroupListAnchor@CDbNestingNode@@AEAAPEAVCDbProjectListAnchor@@XZ
+; private: class CDbProjectListAnchor * __ptr64 __cdecl CDbProjectNode::_FindOrAddAnchor(void) __ptr64
+?_FindOrAddAnchor@CDbProjectNode@@AEAAPEAVCDbProjectListAnchor@@XZ
+; private: class CDbSortListAnchor * __ptr64 __cdecl CDbSortNode::_FindOrAddAnchor(void) __ptr64
+?_FindOrAddAnchor@CDbSortNode@@AEAAPEAVCDbSortListAnchor@@XZ
+; private: class CDbScalarValue * __ptr64 __cdecl CDbPropertyRestriction::_FindOrAddValueNode(void) __ptr64
+?_FindOrAddValueNode@CDbPropertyRestriction@@AEAAPEAVCDbScalarValue@@XZ
+; private: int __cdecl CImpersonateRemoteAccess::_ImpersonateIf(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
+?_ImpersonateIf@CImpersonateRemoteAccess@@AEAAHPEBG0K@Z
+; unsigned __int64 __cdecl _wcstoui64(unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,int)
+?_wcstoui64@@YA_KPEBGPEAPEAGH@Z
+; void __cdecl ciDelete(void * __ptr64)
+?ciDelete@@YAXPEAX@Z
+; int __cdecl ciIsValidPointer(void const * __ptr64)
+?ciIsValidPointer@@YAHPEBX@Z
+; void * __ptr64 __cdecl ciNew(unsigned __int64)
+?ciNew@@YAPEAX_K@Z
+; public: unsigned long __cdecl CFileBuffer::fgetsw(class XGrowable & __ptr64) __ptr64
+?fgetsw@CFileBuffer@@QEAAKAEAV?$XGrowable@G$0BAE@@@@Z
+; unsigned short * __ptr64 __cdecl wcsipattern(unsigned short * __ptr64,unsigned short const * __ptr64)
+?wcsipattern@@YAPEAGPEAGPEBG@Z
+AbortMerges
+BeginCacheTransaction
+BindIFilterFromStorage
+BindIFilterFromStream
+CIBuildQueryNode
+CIBuildQueryTree
+CICreateCommand
+CIGetGlobalPropertyList
+CIMakeICommand
+CIRestrictionToFullTree
+CIState
+CITextToFullTree
+CITextToFullTreeEx
+CITextToSelectTree
+CITextToSelectTreeEx
+CiSvcMain
+CollectCIISAPIPerformanceData
+CollectCIPerformanceData
+CollectFILTERPerformanceData
+DllCanUnloadNow
+DllGetClassObject
+DllRegisterServer
+DllUnregisterServer
+DoneCIISAPIPerformanceData
+DoneCIPerformanceData
+DoneFILTERPerformanceData
+EndCacheTransaction
+ForceMasterMerge
+InitializeCIISAPIPerformanceData
+InitializeCIPerformanceData
+InitializeFILTERPerformanceData
+LoadBHIFilter
+LoadBinaryFilter
+LoadIFilter
+LoadIFilterEx
+LoadTextFilter
+LocateCatalogs
+LocateCatalogsA
+LocateCatalogsW
+SetCatalogState
+SetupCache
+SetupCacheEx
+StartFWCiSvcWork
+StopFWCiSvcWork
+SvcEntry_CiSvc
diff --git a/lib/libc/mingw/lib64/rasapi32.def b/lib/libc/mingw/lib64/rasapi32.def
new file mode 100644
index 0000000000..effabee0f2
--- /dev/null
+++ b/lib/libc/mingw/lib64/rasapi32.def
@@ -0,0 +1,150 @@
+;
+; Exports of file RASAPI32.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY RASAPI32.dll
+EXPORTS
+DDMFreePhonebookContext
+DDMGetPhonebookInfo
+DwCloneEntry
+DwDeleteSubEntry
+DwEnumEntriesForAllUsers
+DwEnumEntryDetails
+DwRasUninitialize
+RasAutoDialSharedConnection
+RasAutodialAddressToNetwork
+RasAutodialEntryToNetwork
+RasClearConnectionStatistics
+RasClearLinkStatistics
+RasConnectionNotificationA
+RasConnectionNotificationW
+RasCreatePhonebookEntryA
+RasCreatePhonebookEntryW
+RasDeleteEntryA
+RasDeleteEntryW
+RasDeleteSubEntryA
+RasDeleteSubEntryW
+RasDialA
+RasDialW
+RasDialWow
+RasEditPhonebookEntryA
+RasEditPhonebookEntryW
+RasEnumAutodialAddressesA
+RasEnumAutodialAddressesW
+RasEnumConnectionsA
+RasEnumConnectionsW
+RasEnumConnectionsWow
+RasEnumDevicesA
+RasEnumDevicesW
+RasEnumEntriesA
+RasEnumEntriesW
+RasEnumEntriesWow
+RasFreeEapUserIdentityA
+RasFreeEapUserIdentityW
+RasGetAutodialAddressA
+RasGetAutodialAddressW
+RasGetAutodialEnableA
+RasGetAutodialEnableW
+RasGetAutodialParamA
+RasGetAutodialParamW
+RasGetConnectResponse
+RasGetConnectStatusA
+RasGetConnectStatusW
+RasGetConnectStatusWow
+RasGetConnectionStatistics
+RasGetCountryInfoA
+RasGetCountryInfoW
+RasGetCredentialsA
+RasGetCredentialsW
+RasGetCustomAuthDataA
+RasGetCustomAuthDataW
+RasGetEapUserDataA
+RasGetEapUserDataW
+RasGetEapUserIdentityA
+RasGetEapUserIdentityW
+RasGetEntryDialParamsA
+RasGetEntryDialParamsW
+RasGetEntryHrasconnA
+RasGetEntryHrasconnW
+RasGetEntryPropertiesA
+RasGetEntryPropertiesW
+RasGetErrorStringA
+RasGetErrorStringW
+RasGetErrorStringWow
+RasGetHport
+RasGetLinkStatistics
+RasGetProjectionInfoA
+RasGetProjectionInfoW
+RasGetSubEntryHandleA
+RasGetSubEntryHandleW
+RasGetSubEntryPropertiesA
+RasGetSubEntryPropertiesW
+RasHangUpA
+RasHangUpW
+RasHangUpWow
+RasInvokeEapUI
+RasIsRouterConnection
+RasIsSharedConnection
+RasQueryRedialOnLinkFailure
+RasQuerySharedAutoDial
+RasQuerySharedConnection
+RasRenameEntryA
+RasRenameEntryW
+RasScriptExecute
+RasScriptGetEventCode
+RasScriptGetIpAddress
+RasScriptInit
+RasScriptReceive
+RasScriptSend
+RasScriptTerm
+RasSetAutodialAddressA
+RasSetAutodialAddressW
+RasSetAutodialEnableA
+RasSetAutodialEnableW
+RasSetAutodialParamA
+RasSetAutodialParamW
+RasSetCredentialsA
+RasSetCredentialsW
+RasSetCustomAuthDataA
+RasSetCustomAuthDataW
+RasSetEapUserDataA
+RasSetEapUserDataW
+RasSetEntryDialParamsA
+RasSetEntryDialParamsW
+RasSetEntryPropertiesA
+RasSetEntryPropertiesW
+RasSetOldPassword
+RasSetSharedAutoDial
+RasSetSubEntryPropertiesA
+RasSetSubEntryPropertiesW
+RasValidateEntryNameA
+RasValidateEntryNameW
+RasfileClose
+RasfileDeleteLine
+RasfileFindFirstLine
+RasfileFindLastLine
+RasfileFindMarkedLine
+RasfileFindNextKeyLine
+RasfileFindNextLine
+RasfileFindPrevLine
+RasfileFindSectionLine
+RasfileGetKeyValueFields
+RasfileGetLine
+RasfileGetLineMark
+RasfileGetLineText
+RasfileGetLineType
+RasfileGetSectionName
+RasfileInsertLine
+RasfileLoad
+RasfileLoadEx
+RasfileLoadInfo
+RasfilePutKeyValueFields
+RasfilePutLineMark
+RasfilePutLineText
+RasfilePutSectionName
+RasfileWrite
+SharedAccessResponseListToString
+SharedAccessResponseStringToList
+UnInitializeRAS
diff --git a/lib/libc/mingw/lib64/rasdlg.def b/lib/libc/mingw/lib64/rasdlg.def
new file mode 100644
index 0000000000..b5a82d2227
--- /dev/null
+++ b/lib/libc/mingw/lib64/rasdlg.def
@@ -0,0 +1,45 @@
+;
+; Exports of file RASDLG.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY RASDLG.dll
+EXPORTS
+DwTerminalDlg
+GetRasDialOutProtocols
+RasAutodialDisableDlgA
+RasAutodialDisableDlgW
+RasAutodialQueryDlgA
+RasAutodialQueryDlgW
+RasDialDlgA
+RasDialDlgW
+RasEntryDlgA
+RasEntryDlgW
+RasMonitorDlgA
+RasMonitorDlgW
+RasPhonebookDlgA
+RasPhonebookDlgW
+RasSrvAddPropPages
+RasSrvAddWizPages
+RasSrvAllowConnectionsConfig
+RasSrvCleanupService
+RasSrvEnumConnections
+RasSrvHangupConnection
+RasSrvInitializeService
+RasSrvIsConnectionConnected
+RasSrvIsICConfigured
+RasSrvIsServiceRunning
+RasSrvQueryShowIcon
+RasUserEnableManualDial
+RasUserGetManualDial
+RasUserPrefsDlg
+RasWizCreateNewEntry
+RasWizGetNCCFlags
+RasWizGetSuggestedEntryName
+RasWizGetUserInputConnectionName
+RasWizIsEntryRenamable
+RasWizQueryMaxPageCount
+RasWizSetEntryName
+RouterEntryDlgA
+RouterEntryDlgW
diff --git a/lib/libc/mingw/lib64/rtm.def b/lib/libc/mingw/lib64/rtm.def
new file mode 100644
index 0000000000..bbf9357e1e
--- /dev/null
+++ b/lib/libc/mingw/lib64/rtm.def
@@ -0,0 +1,120 @@
+;
+; Exports of file rtm.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY rtm.dll
+EXPORTS
+BestMatchInTable
+CheckTable
+CreateTable
+DeleteFromTable
+DestroyTable
+DumpTable
+EnumOverTable
+InsertIntoTable
+MgmAddGroupMembershipEntry
+MgmDeInitialize
+MgmDeRegisterMProtocol
+MgmDeleteGroupMembershipEntry
+MgmGetFirstMfe
+MgmGetFirstMfeStats
+MgmGetMfe
+MgmGetMfeStats
+MgmGetNextMfe
+MgmGetNextMfeStats
+MgmGetProtocolOnInterface
+MgmGroupEnumerationEnd
+MgmGroupEnumerationGetNext
+MgmGroupEnumerationStart
+MgmInitialize
+MgmRegisterMProtocol
+MgmReleaseInterfaceOwnership
+MgmTakeInterfaceOwnership
+NextMatchInTable
+RtmAddNextHop
+RtmAddRoute
+RtmAddRouteToDest
+RtmBlockConvertRoutesToStatic
+RtmBlockDeleteRoutes
+RtmBlockMethods
+RtmBlockSetRouteEnable
+RtmCloseEnumerationHandle
+RtmCreateDestEnum
+RtmCreateEnumerationHandle
+RtmCreateNextHopEnum
+RtmCreateRouteEnum
+RtmCreateRouteList
+RtmCreateRouteListEnum
+RtmCreateRouteTable
+RtmDeleteEnumHandle
+RtmDeleteNextHop
+RtmDeleteRoute
+RtmDeleteRouteList
+RtmDeleteRouteTable
+RtmDeleteRouteToDest
+RtmDequeueRouteChangeMessage
+RtmDereferenceHandles
+RtmDeregisterClient
+RtmDeregisterEntity
+RtmDeregisterFromChangeNotification
+RtmEnumerateGetNextRoute
+RtmFindNextHop
+RtmGetAddressFamilyInfo
+RtmGetChangeStatus
+RtmGetChangedDests
+RtmGetDestInfo
+RtmGetEntityInfo
+RtmGetEntityMethods
+RtmGetEnumDests
+RtmGetEnumNextHops
+RtmGetEnumRoutes
+RtmGetExactMatchDestination
+RtmGetExactMatchRoute
+RtmGetFirstRoute
+RtmGetInstanceInfo
+RtmGetInstances
+RtmGetLessSpecificDestination
+RtmGetListEnumRoutes
+RtmGetMostSpecificDestination
+RtmGetNetworkCount
+RtmGetNextHopInfo
+RtmGetNextHopPointer
+RtmGetNextRoute
+RtmGetOpaqueInformationPointer
+RtmGetRegisteredEntities
+RtmGetRouteAge
+RtmGetRouteInfo
+RtmGetRoutePointer
+RtmHoldDestination
+RtmIgnoreChangedDests
+RtmInsertInRouteList
+RtmInvokeMethod
+RtmIsBestRoute
+RtmIsMarkedForChangeNotification
+RtmIsRoute
+RtmLockDestination
+RtmLockNextHop
+RtmLockRoute
+RtmLookupIPDestination
+RtmMarkDestForChangeNotification
+RtmReadAddressFamilyConfig
+RtmReadInstanceConfig
+RtmReferenceHandles
+RtmRegisterClient
+RtmRegisterEntity
+RtmRegisterForChangeNotification
+RtmReleaseChangedDests
+RtmReleaseDestInfo
+RtmReleaseDests
+RtmReleaseEntities
+RtmReleaseEntityInfo
+RtmReleaseNextHopInfo
+RtmReleaseNextHops
+RtmReleaseRouteInfo
+RtmReleaseRoutes
+RtmUpdateAndUnlockRoute
+RtmWriteAddressFamilyConfig
+RtmWriteInstanceConfig
+SearchInTable
diff --git a/lib/libc/mingw/lib64/sfc.def b/lib/libc/mingw/lib64/sfc.def
new file mode 100644
index 0000000000..f528a33964
--- /dev/null
+++ b/lib/libc/mingw/lib64/sfc.def
@@ -0,0 +1,16 @@
+;
+; Exports of file sfc.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY sfc.dll
+EXPORTS
+SRSetRestorePoint
+SRSetRestorePointA
+SRSetRestorePointW
+SfcGetNextProtectedFile
+SfcIsFileProtected
+SfcWLEventLogoff
+SfcWLEventLogon
+SfpVerifyFile
diff --git a/lib/libc/mingw/lib64/shdocvw.def b/lib/libc/mingw/lib64/shdocvw.def
new file mode 100644
index 0000000000..5adb045fc0
--- /dev/null
+++ b/lib/libc/mingw/lib64/shdocvw.def
@@ -0,0 +1,36 @@
+;
+; Exports of file SHDOCVW.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY SHDOCVW.dll
+EXPORTS
+AddUrlToFavorites
+DllCanUnloadNow
+DllGetClassObject
+DllGetVersion
+DllInstall
+DllRegisterServer
+DllRegisterWindowClasses
+DllUnregisterServer
+DoAddToFavDlg
+DoAddToFavDlgW
+DoFileDownload
+DoFileDownloadEx
+DoOrganizeFavDlg
+DoOrganizeFavDlgW
+DoPrivacyDlg
+HlinkFindFrame
+HlinkFrameNavigate
+HlinkFrameNavigateNHL
+IEWriteErrorLog
+ImportPrivacySettings
+SHAddSubscribeFavorite
+OpenURL
+SHGetIDispatchForFolder
+SetQueryNetSessionCount
+SetShellOfflineState
+SoftwareUpdateMessageBox
+URLQualifyA
+URLQualifyW
diff --git a/lib/libc/mingw/lib64/slc.def b/lib/libc/mingw/lib64/slc.def
new file mode 100644
index 0000000000..09e0dbd62d
--- /dev/null
+++ b/lib/libc/mingw/lib64/slc.def
@@ -0,0 +1,55 @@
+;
+; Definition file of slc.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "slc.dll"
+EXPORTS
+SLpAuthenticateGenuineTicketResponse
+SLpBeginGenuineTicketTransaction
+SLpCheckProductKey
+SLpDepositTokenActivationResponse
+SLpGenerateTokenActivationChallenge
+SLpGetGenuineBlob
+SLpGetGenuineLocal
+SLpGetLicenseAcquisitionInfo
+SLpGetMachineUGUID
+SLpGetTokenActivationGrantInfo
+SLpVLActivateProduct
+SLClose
+SLConsumeRight
+SLConsumeWindowsRight
+SLDepositOfflineConfirmationId
+SLFireEvent
+SLGenerateOfflineInstallationId
+SLGetGenuineInformation
+SLGetInstalledProductKeyIds
+SLGetInstalledSAMLicenseApplications
+SLGetLicense
+SLGetLicenseFileId
+SLGetLicenseInformation
+SLGetLicensingStatusInformation
+SLGetPKeyId
+SLGetPKeyInformation
+SLGetPolicyInformation
+SLGetPolicyInformationDWORD
+SLGetProductSkuInformation
+SLGetSAMLicense
+SLGetSLIDList
+SLGetServiceInformation
+SLGetWindowsInformation
+SLGetWindowsInformationDWORD
+SLInstallLicense
+SLInstallProofOfPurchase
+SLInstallSAMLicense
+SLOpen
+SLReArmWindows
+SLRegisterEvent
+SLRegisterWindowsEvent
+SLSetCurrentProductKey
+SLSetGenuineInformation
+SLUninstallLicense
+SLUninstallProofOfPurchase
+SLUninstallSAMLicense
+SLUnregisterEvent
+SLUnregisterWindowsEvent
diff --git a/lib/libc/mingw/lib64/spoolss.def b/lib/libc/mingw/lib64/spoolss.def
new file mode 100644
index 0000000000..d4d4e56520
--- /dev/null
+++ b/lib/libc/mingw/lib64/spoolss.def
@@ -0,0 +1,223 @@
+;
+; Definition file of SPOOLSS.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "SPOOLSS.DLL"
+EXPORTS
+OpenPrinterExW
+RouterCorePrinterDriverInstalled
+RouterCreatePrintAsyncNotificationChannel
+RouterDeletePrinterDriverPackage
+RouterGetCorePrinterDrivers
+RouterGetPrintClassObject
+RouterGetPrinterDriverPackagePath
+RouterInstallPrinterDriverFromPackage
+RouterRegisterForPrintAsyncNotifications
+RouterUnregisterForPrintAsyncNotifications
+RouterUploadPrinterDriverPackage
+AbortPrinter
+AddDriverCatalog
+AddFormW
+AddJobW
+AddMonitorW
+AddPerMachineConnectionW
+AddPortExW
+AddPortW
+AddPrintProcessorW
+AddPrintProvidorW
+AddPrinterConnectionW
+AddPrinterDriverExW
+AddPrinterDriverW
+AddPrinterExW
+AddPrinterW
+AdjustPointers
+AdjustPointersInStructuresArray
+AlignKMPtr
+AlignRpcPtr
+AllocSplStr
+AllowRemoteCalls
+AppendPrinterNotifyInfoData
+BuildOtherNamesFromMachineName
+CacheAddName
+CacheCreateAndAddNode
+CacheCreateAndAddNodeWithIPAddresses
+CacheDeleteNode
+CacheIsNameCluster
+CacheIsNameInNodeList
+CallDrvDevModeConversion
+CallRouterFindFirstPrinterChangeNotification
+CheckLocalCall
+ClosePrinter
+ClusterSplClose
+ClusterSplIsAlive
+ClusterSplOpen
+ConfigurePortW
+CreatePrinterIC
+DbgGetPointers
+DeleteFormW
+DeleteMonitorW
+DeletePerMachineConnectionW
+DeletePortW
+DeletePrintProcessorW
+DeletePrintProvidorW
+DeletePrinter
+DeletePrinterConnectionW
+DeletePrinterDataExW
+DeletePrinterDataW
+DeletePrinterDriverExW
+DeletePrinterDriverW
+DeletePrinterIC
+DeletePrinterKeyW
+DllAllocSplMem
+DllAllocSplStr
+DllCanUnloadNow
+DllFreeSplMem
+DllFreeSplStr
+DllGetClassObject
+DllMain
+DllReallocSplMem
+DllReallocSplStr
+DllRegisterServer
+DllUnregisterServer
+EndDocPrinter
+EndPagePrinter
+EnumFormsW
+EnumJobsW
+EnumMonitorsW
+EnumPerMachineConnectionsW
+EnumPortsW
+EnumPrintProcessorDatatypesW
+EnumPrintProcessorsW
+EnumPrinterDataExW
+EnumPrinterDataW
+EnumPrinterDriversW
+EnumPrinterKeyW
+EnumPrintersW
+FindClosePrinterChangeNotification
+FlushPrinter
+FormatPrinterForRegistryKey
+FormatRegistryKeyForPrinter
+FreeOtherNames
+GetClientUserHandle
+GetBindingHandleIndex
+GetFormW
+GetJobAttributes
+GetJobAttributesEx
+GetJobW
+GetNetworkId
+GetPrintProcessorDirectoryW
+GetPrinterDataExW
+GetPrinterDataW
+GetPrinterDriverDirectoryW
+GetPrinterDriverExW
+GetPrinterDriverW
+GetPrinterW
+GetServerPolicy
+GetShrinkedSize
+ImpersonatePrinterClient
+InitializeRouter
+IsNameTheLocalMachineOrAClusterSpooler
+IsNamedPipeRpcCall
+LoadDriver
+LoadDriverFiletoConvertDevmode
+LoadDriverWithVersion
+LogWmiTraceEvent
+MIDL_user_allocate1
+MIDL_user_free1
+MarshallDownStructure
+MarshallDownStructuresArray
+MarshallUpStructure
+MarshallUpStructuresArray
+OldGetPrinterDriverW
+OpenPrinterExW
+OpenPrinterPortW
+OpenPrinter2W
+OpenPrinterPort2W
+OpenPrinterW
+PackStrings
+PartialReplyPrinterChangeNotification
+PlayGdiScriptOnPrinterIC
+PrinterHandleRundown
+PrinterMessageBoxW
+ProvidorFindClosePrinterChangeNotification
+ProvidorFindFirstPrinterChangeNotification
+ReadPrinter
+ReallocSplMem
+ReallocSplStr
+RemoteFindFirstPrinterChangeNotification
+ReplyClosePrinter
+ReplyOpenPrinter
+ReplyPrinterChangeNotification
+ReplyPrinterChangeNotificationEx
+ReportJobProcessingProgress
+ResetPrinterW
+RevertToPrinterSelf
+RouterAddPrinterConnection2
+RouterAllocBidiMem
+RouterAllocBidiResponseContainer
+RouterAllocPrinterNotifyInfo
+RouterBroadcastMessage
+RouterFindCompatibleDriver
+RouterFindFirstPrinterChangeNotification
+RouterFindNextPrinterChangeNotification
+RouterFreeBidiMem
+RouterFreeBidiResponseContainer
+RouterFreePrinterNotifyInfo
+RouterInternalGetPrinterDriver
+RouterRefreshPrinterChangeNotification
+RouterReplyPrinter
+RouterSpoolerSetPolicy
+ScheduleJob
+SeekPrinter
+SendRecvBidiData
+SetAllocFailCount
+SetFormW
+SetJobW
+SetPortW
+SetPrinterDataExW
+SetPrinterDataW
+SetPrinterW
+SplCloseSpoolFileHandle
+SplCommitSpoolData
+SplDriverUnloadComplete
+SplGetClientUserHandle
+SplGetSpoolFileInfo
+SplGetUserSidStringFromToken
+SplInitializeWinSpoolDrv
+SplIsSessionZero
+SplIsUpgrade
+SplPowerEvent
+SplProcessPnPEvent
+SplProcessSessionEvent
+SplPromptUIInUsersSession
+SplQueryUserInfo
+SplReadPrinter
+SplRegisterForDeviceEvents
+SplRegisterForSessionEvents
+SplShutDownRouter
+SplUnregisterForDeviceEvents
+SplUnregisterForSessionEvents
+SplWerNotifyLogger
+SpoolerFindClosePrinterChangeNotification
+SpoolerFindFirstPrinterChangeNotification
+SpoolerFindNextPrinterChangeNotification
+SpoolerFreePrinterNotifyInfo
+SpoolerHasInitialized
+SpoolerInit
+SpoolerRefreshPrinterChangeNotification
+StartDocPrinterW
+StartPagePrinter
+UndoAlignKMPtr
+UndoAlignRpcPtr
+UnloadDriver
+UnloadDriverFile
+UpdateBufferSize
+UpdatePrinterRegAll
+UpdatePrinterRegUser
+WaitForPrinterChange
+WaitForSpoolerInitialization
+WritePrinter
+XcvDataW
+bGetDevModePerUser
+bSetDevModePerUser
diff --git a/lib/libc/mingw/lib64/vssapi.def b/lib/libc/mingw/lib64/vssapi.def
new file mode 100644
index 0000000000..bb784bf030
--- /dev/null
+++ b/lib/libc/mingw/lib64/vssapi.def
@@ -0,0 +1,160 @@
+;
+; Definition file of VSSAPI.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "VSSAPI.DLL"
+EXPORTS
+IsVolumeSnapshotted
+VssFreeSnapshotProperties
+ShouldBlockRevert
+; public: __cdecl CVssJetWriter::CVssJetWriter(void)__ptr64
+??0CVssJetWriter@@QEAA@XZ
+; public: __cdecl CVssWriter::CVssWriter(void)__ptr64
+??0CVssWriter@@QEAA@XZ
+; public: virtual __cdecl CVssJetWriter::~CVssJetWriter(void)__ptr64
+??1CVssJetWriter@@UEAA@XZ
+; public: virtual __cdecl CVssWriter::~CVssWriter(void)__ptr64
+??1CVssWriter@@UEAA@XZ
+; protected: bool __cdecl CVssJetWriter::AreComponentsSelected(void)const __ptr64
+?AreComponentsSelected@CVssJetWriter@@IEBA_NXZ
+; protected: bool __cdecl CVssWriter::AreComponentsSelected(void)const __ptr64
+?AreComponentsSelected@CVssWriter@@IEBA_NXZ
+; long __cdecl CreateVssBackupComponents(class IVssBackupComponents *__ptr64 *__ptr64)
+?CreateVssBackupComponents@@YAJPEAPEAVIVssBackupComponents@@@Z
+; long __cdecl CreateVssExamineWriterMetadata(unsigned short *__ptr64,class IVssExamineWriterMetadata *__ptr64 *__ptr64)
+?CreateVssExamineWriterMetadata@@YAJPEAGPEAPEAVIVssExamineWriterMetadata@@@Z
+; long __cdecl CreateVssSnapshotSetDescription(struct _GUID,long,class IVssSnapshotSetDescription *__ptr64 *__ptr64)
+?CreateVssSnapshotSetDescription@@YAJU_GUID@@JPEAPEAVIVssSnapshotSetDescription@@@Z
+; protected: enum _VSS_BACKUP_TYPE __cdecl CVssJetWriter::GetBackupType(void)const __ptr64
+?GetBackupType@CVssJetWriter@@IEBA?AW4_VSS_BACKUP_TYPE@@XZ
+; protected: enum _VSS_BACKUP_TYPE __cdecl CVssWriter::GetBackupType(void)const __ptr64
+?GetBackupType@CVssWriter@@IEBA?AW4_VSS_BACKUP_TYPE@@XZ
+; protected: long __cdecl CVssJetWriter::GetContext(void)const __ptr64
+?GetContext@CVssJetWriter@@IEBAJXZ
+; protected: long __cdecl CVssWriter::GetContext(void)const __ptr64
+?GetContext@CVssWriter@@IEBAJXZ
+; protected: enum _VSS_APPLICATION_LEVEL __cdecl CVssJetWriter::GetCurrentLevel(void)const __ptr64
+?GetCurrentLevel@CVssJetWriter@@IEBA?AW4_VSS_APPLICATION_LEVEL@@XZ
+; protected: enum _VSS_APPLICATION_LEVEL __cdecl CVssWriter::GetCurrentLevel(void)const __ptr64
+?GetCurrentLevel@CVssWriter@@IEBA?AW4_VSS_APPLICATION_LEVEL@@XZ
+; protected: struct _GUID __cdecl CVssJetWriter::GetCurrentSnapshotSetId(void)const __ptr64
+?GetCurrentSnapshotSetId@CVssJetWriter@@IEBA?AU_GUID@@XZ
+; protected: struct _GUID __cdecl CVssWriter::GetCurrentSnapshotSetId(void)const __ptr64
+?GetCurrentSnapshotSetId@CVssWriter@@IEBA?AU_GUID@@XZ
+; protected: unsigned short const *__ptr64 *__ptr64 __cdecl CVssJetWriter::GetCurrentVolumeArray(void)const __ptr64
+?GetCurrentVolumeArray@CVssJetWriter@@IEBAPEAPEBGXZ
+; protected: unsigned short const *__ptr64 *__ptr64 __cdecl CVssWriter::GetCurrentVolumeArray(void)const __ptr64
+?GetCurrentVolumeArray@CVssWriter@@IEBAPEAPEBGXZ
+; protected: unsigned int __cdecl CVssJetWriter::GetCurrentVolumeCount(void)const __ptr64
+?GetCurrentVolumeCount@CVssJetWriter@@IEBAIXZ
+; protected: unsigned int __cdecl CVssWriter::GetCurrentVolumeCount(void)const __ptr64
+?GetCurrentVolumeCount@CVssWriter@@IEBAIXZ
+; protected: enum _VSS_RESTORE_TYPE __cdecl CVssJetWriter::GetRestoreType(void)const __ptr64
+?GetRestoreType@CVssJetWriter@@IEBA?AW4_VSS_RESTORE_TYPE@@XZ
+; protected: enum _VSS_RESTORE_TYPE __cdecl CVssWriter::GetRestoreType(void)const __ptr64
+?GetRestoreType@CVssWriter@@IEBA?AW4_VSS_RESTORE_TYPE@@XZ
+; protected: long __cdecl CVssJetWriter::GetSnapshotDeviceName(unsigned short const *__ptr64,unsigned short const *__ptr64 *__ptr64)const __ptr64
+?GetSnapshotDeviceName@CVssJetWriter@@IEBAJPEBGPEAPEBG@Z
+; protected: long __cdecl CVssWriter::GetSnapshotDeviceName(unsigned short const *__ptr64,unsigned short const *__ptr64 *__ptr64)const __ptr64
+?GetSnapshotDeviceName@CVssWriter@@IEBAJPEBGPEAPEBG@Z
+; public: long __cdecl CVssJetWriter::Initialize(struct _GUID,unsigned short const *__ptr64,bool,bool,unsigned short const *__ptr64,unsigned short const *__ptr64,unsigned long)__ptr64
+?Initialize@CVssJetWriter@@QEAAJU_GUID@@PEBG_N211K@Z
+; public: long __cdecl CVssWriter::Initialize(struct _GUID,unsigned short const *__ptr64,enum VSS_USAGE_TYPE,enum VSS_SOURCE_TYPE,enum _VSS_APPLICATION_LEVEL,unsigned long,enum VSS_ALTERNATE_WRITER_STATE,bool,unsigned short const *__ptr64)__ptr64
+?Initialize@CVssWriter@@QEAAJU_GUID@@PEBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N1@Z
+; public: long __cdecl CVssWriter::InstallAlternateWriter(struct _GUID,struct _GUID)__ptr64
+?InstallAlternateWriter@CVssWriter@@QEAAJU_GUID@@0@Z
+; protected: bool __cdecl CVssJetWriter::IsBootableSystemStateBackedUp(void)const __ptr64
+?IsBootableSystemStateBackedUp@CVssJetWriter@@IEBA_NXZ
+; protected: bool __cdecl CVssWriter::IsBootableSystemStateBackedUp(void)const __ptr64
+?IsBootableSystemStateBackedUp@CVssWriter@@IEBA_NXZ
+; protected: bool __cdecl CVssJetWriter::IsPartialFileSupportEnabled(void)const __ptr64
+?IsPartialFileSupportEnabled@CVssJetWriter@@IEBA_NXZ
+; protected: bool __cdecl CVssWriter::IsPartialFileSupportEnabled(void)const __ptr64
+?IsPartialFileSupportEnabled@CVssWriter@@IEBA_NXZ
+; protected: bool __cdecl CVssJetWriter::IsPathAffected(unsigned short const *__ptr64)const __ptr64
+?IsPathAffected@CVssJetWriter@@IEBA_NPEBG@Z
+; protected: bool __cdecl CVssWriter::IsPathAffected(unsigned short const *__ptr64)const __ptr64
+?IsPathAffected@CVssWriter@@IEBA_NPEBG@Z
+; long __cdecl LoadVssSnapshotSetDescription(unsigned short const *__ptr64,class IVssSnapshotSetDescription *__ptr64 *__ptr64,struct _GUID)
+?LoadVssSnapshotSetDescription@@YAJPEBGPEAPEAVIVssSnapshotSetDescription@@U_GUID@@@Z
+; public: virtual void __cdecl CVssJetWriter::OnAbortBegin(void)__ptr64
+?OnAbortBegin@CVssJetWriter@@UEAAXXZ
+; public: virtual void __cdecl CVssJetWriter::OnAbortEnd(void)__ptr64
+?OnAbortEnd@CVssJetWriter@@UEAAXXZ
+; public: virtual bool __cdecl CVssWriter::OnBackOffIOOnVolume(unsigned short *__ptr64,struct _GUID,struct _GUID)__ptr64
+?OnBackOffIOOnVolume@CVssWriter@@UEAA_NPEAGU_GUID@@1@Z
+; public: virtual bool __cdecl CVssWriter::OnBackupComplete(class IVssWriterComponents *__ptr64)__ptr64
+?OnBackupComplete@CVssWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
+; public: virtual bool __cdecl CVssJetWriter::OnBackupCompleteBegin(class IVssWriterComponents *__ptr64)__ptr64
+?OnBackupCompleteBegin@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
+; public: virtual bool __cdecl CVssJetWriter::OnBackupCompleteEnd(class IVssWriterComponents *__ptr64,bool)__ptr64
+?OnBackupCompleteEnd@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@_N@Z
+; public: virtual bool __cdecl CVssWriter::OnBackupShutdown(struct _GUID)__ptr64
+?OnBackupShutdown@CVssWriter@@UEAA_NU_GUID@@@Z
+; public: virtual bool __cdecl CVssWriter::OnContinueIOOnVolume(unsigned short *__ptr64,struct _GUID,struct _GUID)__ptr64
+?OnContinueIOOnVolume@CVssWriter@@UEAA_NPEAGU_GUID@@1@Z
+; public: virtual bool __cdecl CVssJetWriter::OnFreezeBegin(void)__ptr64
+?OnFreezeBegin@CVssJetWriter@@UEAA_NXZ
+; public: virtual bool __cdecl CVssJetWriter::OnFreezeEnd(bool)__ptr64
+?OnFreezeEnd@CVssJetWriter@@UEAA_N_N@Z
+; public: virtual bool __cdecl CVssJetWriter::OnIdentify(class IVssCreateWriterMetadata *__ptr64)__ptr64
+?OnIdentify@CVssJetWriter@@UEAA_NPEAVIVssCreateWriterMetadata@@@Z
+; public: virtual bool __cdecl CVssWriter::OnIdentify(class IVssCreateWriterMetadata *__ptr64)__ptr64
+?OnIdentify@CVssWriter@@UEAA_NPEAVIVssCreateWriterMetadata@@@Z
+; public: virtual bool __cdecl CVssWriter::OnPostRestore(class IVssWriterComponents *__ptr64)__ptr64
+?OnPostRestore@CVssWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
+; public: virtual bool __cdecl CVssJetWriter::OnPostRestoreBegin(class IVssWriterComponents *__ptr64)__ptr64
+?OnPostRestoreBegin@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
+; public: virtual bool __cdecl CVssJetWriter::OnPostRestoreEnd(class IVssWriterComponents *__ptr64,bool)__ptr64
+?OnPostRestoreEnd@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@_N@Z
+; public: virtual bool __cdecl CVssJetWriter::OnPostSnapshot(class IVssWriterComponents *__ptr64)__ptr64
+?OnPostSnapshot@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
+; public: virtual bool __cdecl CVssWriter::OnPostSnapshot(class IVssWriterComponents *__ptr64)__ptr64
+?OnPostSnapshot@CVssWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
+; public: virtual bool __cdecl CVssWriter::OnPreRestore(class IVssWriterComponents *__ptr64)__ptr64
+?OnPreRestore@CVssWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
+; public: virtual bool __cdecl CVssJetWriter::OnPreRestoreBegin(class IVssWriterComponents *__ptr64)__ptr64
+?OnPreRestoreBegin@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
+; public: virtual bool __cdecl CVssJetWriter::OnPreRestoreEnd(class IVssWriterComponents *__ptr64,bool)__ptr64
+?OnPreRestoreEnd@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@_N@Z
+; public: virtual bool __cdecl CVssWriter::OnPrepareBackup(class IVssWriterComponents *__ptr64)__ptr64
+?OnPrepareBackup@CVssWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
+; public: virtual bool __cdecl CVssJetWriter::OnPrepareBackupBegin(class IVssWriterComponents *__ptr64)__ptr64
+?OnPrepareBackupBegin@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
+; public: virtual bool __cdecl CVssJetWriter::OnPrepareBackupEnd(class IVssWriterComponents *__ptr64,bool)__ptr64
+?OnPrepareBackupEnd@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@_N@Z
+; public: virtual bool __cdecl CVssJetWriter::OnPrepareSnapshotBegin(void)__ptr64
+?OnPrepareSnapshotBegin@CVssJetWriter@@UEAA_NXZ
+; public: virtual bool __cdecl CVssJetWriter::OnPrepareSnapshotEnd(bool)__ptr64
+?OnPrepareSnapshotEnd@CVssJetWriter@@UEAA_N_N@Z
+; public: virtual bool __cdecl CVssJetWriter::OnThawBegin(void)__ptr64
+?OnThawBegin@CVssJetWriter@@UEAA_NXZ
+; public: virtual bool __cdecl CVssJetWriter::OnThawEnd(bool)__ptr64
+?OnThawEnd@CVssJetWriter@@UEAA_N_N@Z
+; public: virtual bool __cdecl CVssWriter::OnVSSApplicationStartup(void)__ptr64
+?OnVSSApplicationStartup@CVssWriter@@UEAA_NXZ
+; public: virtual bool __cdecl CVssWriter::OnVSSShutdown(void)__ptr64
+?OnVSSShutdown@CVssWriter@@UEAA_NXZ
+; protected: long __cdecl CVssJetWriter::SetWriterFailure(long)__ptr64
+?SetWriterFailure@CVssJetWriter@@IEAAJJ@Z
+; protected: long __cdecl CVssWriter::SetWriterFailure(long)__ptr64
+?SetWriterFailure@CVssWriter@@IEAAJJ@Z
+; public: long __cdecl CVssWriter::Subscribe(unsigned long)__ptr64
+?Subscribe@CVssWriter@@QEAAJK@Z
+; public: void __cdecl CVssJetWriter::Uninitialize(void)__ptr64
+?Uninitialize@CVssJetWriter@@QEAAXXZ
+; public: long __cdecl CVssWriter::Unsubscribe(void)__ptr64
+?Unsubscribe@CVssWriter@@QEAAJXZ
+CreateVssBackupComponentsInternal
+CreateVssExamineWriterMetadataInternal
+CreateVssExpressWriterInternal
+CreateWriter
+CreateWriterEx
+;DllCanUnloadNow
+;DllGetClassObject
+GetProviderMgmtInterface
+GetProviderMgmtInterfaceInternal
+IsVolumeSnapshottedInternal
+ShouldBlockRevertInternal
+VssFreeSnapshotPropertiesInternal
diff --git a/lib/libc/mingw/lib64/wdsclientapi.def b/lib/libc/mingw/lib64/wdsclientapi.def
new file mode 100644
index 0000000000..78a236520d
--- /dev/null
+++ b/lib/libc/mingw/lib64/wdsclientapi.def
@@ -0,0 +1,46 @@
+;
+; Definition file of WDSCLIENTAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "WDSCLIENTAPI.dll"
+EXPORTS
+WdsCliAuthorizeSession
+WdsCliCancelTransfer
+WdsCliClose
+WdsCliCreateSession
+WdsCliFindFirstImage
+WdsCliFindNextImage
+WdsCliFreeDomainJoinInformation
+WdsCliFreeStringArray
+WdsCliFreeUnattendVariables
+WdsCliGetClientUnattend
+WdsCliGetDomainJoinInformation
+WdsCliGetEnumerationFlags
+WdsCliGetImageArchitecture
+WdsCliGetImageDescription
+WdsCliGetImageFiles
+WdsCliGetImageGroup
+WdsCliGetImageHalName
+WdsCliGetImageHandleFromFindHandle
+WdsCliGetImageHandleFromTransferHandle
+WdsCliGetImageIndex
+WdsCliGetImageLanguage
+WdsCliGetImageLanguages
+WdsCliGetImageLastModifiedTime
+WdsCliGetImageName
+WdsCliGetImageNamespace
+WdsCliGetImageParameter
+WdsCliGetImagePath
+WdsCliGetImageSize
+WdsCliGetImageType
+WdsCliGetImageVersion
+WdsCliGetTransferSize
+WdsCliGetUnattendVariables
+WdsCliInitializeLog
+WdsCliLog
+WdsCliObtainDriverPackages
+WdsCliRegisterTrace
+WdsCliTransferFile
+WdsCliTransferImage
+WdsCliWaitForTransfer
diff --git a/lib/libc/mingw/lib64/wdstptc.def b/lib/libc/mingw/lib64/wdstptc.def
new file mode 100644
index 0000000000..75c1765c7a
--- /dev/null
+++ b/lib/libc/mingw/lib64/wdstptc.def
@@ -0,0 +1,22 @@
+;
+; Definition file of WDSTPTC.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "WDSTPTC.dll"
+EXPORTS
+WdsTptcDownload
+WdsTransportClientRegisterTrace
+WdsTransportClientAddRefBuffer
+WdsTransportClientCancelSession
+WdsTransportClientCancelSessionEx
+WdsTransportClientCloseSession
+WdsTransportClientCompleteReceive
+WdsTransportClientInitialize
+WdsTransportClientInitializeSession
+WdsTransportClientQueryStatus
+WdsTransportClientRegisterCallback
+WdsTransportClientReleaseBuffer
+WdsTransportClientShutdown
+WdsTransportClientStartSession
+WdsTransportClientWaitForCompletion
diff --git a/lib/libc/mingw/lib64/wer.def b/lib/libc/mingw/lib64/wer.def
new file mode 100644
index 0000000000..3f81b5b589
--- /dev/null
+++ b/lib/libc/mingw/lib64/wer.def
@@ -0,0 +1,84 @@
+;
+; Definition file of wer.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "wer.dll"
+EXPORTS
+WerSysprepCleanup
+WerSysprepGeneralize
+WerSysprepSpecialize
+WerUnattendedSetup
+WerpAddAppCompatData
+WerpAddFile
+WerpAddMemoryBlock
+WerpAddRegisteredDataToReport
+WerpAddSecondaryParameter
+WerpAddTextToReport
+WerpArchiveReport
+WerpCancelResponseDownload
+WerpCancelUpload
+WerpCloseStore
+WerpCreateMachineStore
+WerpDeleteReport
+WerpDestroyWerString
+WerpDownloadResponse
+WerpDownloadResponseTemplate
+WerpEnumerateStoreNext
+WerpEnumerateStoreStart
+WerpExtractReportFiles
+WerpGetBucketId
+WerpGetDynamicParameter
+WerpGetEventType
+WerpGetFileByIndex
+WerpGetFilePathByIndex
+WerpGetNumFiles
+WerpGetNumSecParams
+WerpGetNumSigParams
+WerpGetReportFinalConsent
+WerpGetReportFlags
+WerpGetReportInformation
+WerpGetReportTime
+WerpGetReportType
+WerpGetResponseId
+WerpGetResponseUrl
+WerpGetSecParamByIndex
+WerpGetSigParamByIndex
+WerpGetStoreLocation
+WerpGetStoreType
+WerpGetTextFromReport
+WerpGetUIParamByIndex
+WerpGetUploadTime
+WerpGetWerStringData
+WerpIsTransportAvailable
+WerpLoadReport
+WerpOpenMachineArchive
+WerpOpenMachineQueue
+WerpOpenUserArchive
+WerpReportCancel
+WerpRestartApplication
+WerpSetDynamicParameter
+WerpSetEventName
+WerpSetReportFlags
+WerpSetReportInformation
+WerpSetReportTime
+WerpSetReportUploadContextToken
+WerpShowNXNotification
+WerpShowSecondLevelConsent
+WerpShowUpsellUI
+WerpSubmitReportFromStore
+WerpSvcReportFromMachineQueue
+WerAddExcludedApplication
+WerRemoveExcludedApplication
+WerReportAddDump
+WerReportAddFile
+WerReportCloseHandle
+WerReportCreate
+WerReportSetParameter
+WerReportSetUIOption
+WerReportSubmit
+WerpGetReportConsent
+WerpIsDisabled
+WerpOpenUserQueue
+WerpPromtUser
+WerpSetCallBack
diff --git a/lib/libc/mingw/lib64/winfax.def b/lib/libc/mingw/lib64/winfax.def
new file mode 100644
index 0000000000..6f30ee050a
--- /dev/null
+++ b/lib/libc/mingw/lib64/winfax.def
@@ -0,0 +1,64 @@
+;
+; Exports of file WINFAX.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY WINFAX.dll
+EXPORTS
+FaxAbort
+FaxAccessCheck
+FaxClose
+FaxCompleteJobParamsA
+FaxCompleteJobParamsW
+FaxConnectFaxServerA
+FaxConnectFaxServerW
+FaxEnableRoutingMethodA
+FaxEnableRoutingMethodW
+FaxEnumGlobalRoutingInfoA
+FaxEnumGlobalRoutingInfoW
+FaxEnumJobsA
+FaxEnumJobsW
+FaxEnumPortsA
+FaxEnumPortsW
+FaxEnumRoutingMethodsA
+FaxEnumRoutingMethodsW
+FaxFreeBuffer
+FaxGetConfigurationA
+FaxGetConfigurationW
+FaxGetDeviceStatusA
+FaxGetDeviceStatusW
+FaxGetJobA
+FaxGetJobW
+FaxGetLoggingCategoriesA
+FaxGetLoggingCategoriesW
+FaxGetPageData
+FaxGetPortA
+FaxGetPortW
+FaxGetRoutingInfoA
+FaxGetRoutingInfoW
+FaxInitializeEventQueue
+FaxOpenPort
+FaxPrintCoverPageA
+FaxPrintCoverPageW
+FaxRegisterRoutingExtensionW
+FaxRegisterServiceProviderW
+FaxSendDocumentA
+FaxSendDocumentForBroadcastA
+FaxSendDocumentForBroadcastW
+FaxSendDocumentW
+FaxSetConfigurationA
+FaxSetConfigurationW
+FaxSetGlobalRoutingInfoA
+FaxSetGlobalRoutingInfoW
+FaxSetJobA
+FaxSetJobW
+FaxSetLoggingCategoriesA
+FaxSetLoggingCategoriesW
+FaxSetPortA
+FaxSetPortW
+FaxSetRoutingInfoA
+FaxSetRoutingInfoW
+FaxStartPrintJobA
+FaxStartPrintJobW
+FaxUnregisterServiceProviderW
diff --git a/lib/libc/mingw/lib64/winsta.def b/lib/libc/mingw/lib64/winsta.def
new file mode 100644
index 0000000000..f07e3b541b
--- /dev/null
+++ b/lib/libc/mingw/lib64/winsta.def
@@ -0,0 +1,111 @@
+;
+; Exports of file WINSTA.dll
+;
+; Autogenerated by gen_exportdef
+; Written by Kai Tietz, 2007
+;
+LIBRARY WINSTA.dll
+EXPORTS
+LogonIdFromWinStationNameA
+LogonIdFromWinStationNameW
+RemoteAssistancePrepareSystemRestore
+ServerGetInternetConnectorStatus
+ServerLicensingClose
+ServerLicensingDeactivateCurrentPolicy
+ServerLicensingFreePolicyInformation
+ServerLicensingGetAvailablePolicyIds
+ServerLicensingGetPolicy
+ServerLicensingGetPolicyInformationA
+ServerLicensingGetPolicyInformationW
+ServerLicensingLoadPolicy
+ServerLicensingOpenA
+ServerLicensingOpenW
+ServerLicensingSetPolicy
+ServerLicensingUnloadPolicy
+ServerQueryInetConnectorInformationA
+ServerQueryInetConnectorInformationW
+ServerSetInternetConnectorStatus
+WinStationActivateLicense
+WinStationAutoReconnect
+WinStationBroadcastSystemMessage
+WinStationCanLogonProceed
+WinStationCheckAccess
+WinStationCheckLoopBack
+WinStationCloseServer
+WinStationConnectA
+WinStationConnectCallback
+WinStationConnectW
+WinStationDisconnect
+WinStationEnumerateA
+WinStationEnumerateLicenses
+WinStationEnumerateProcesses
+WinStationEnumerateW
+WinStationEnumerate_IndexedA
+WinStationEnumerate_IndexedW
+WinStationFreeGAPMemory
+WinStationFreeMemory
+WinStationGenerateLicense
+WinStationGetAllProcesses
+WinStationGetLanAdapterNameA
+WinStationGetLanAdapterNameW
+WinStationGetMachinePolicy
+WinStationGetProcessSid
+WinStationGetTermSrvCountersValue
+WinStationInstallLicense
+WinStationIsHelpAssistantSession
+WinStationNameFromLogonIdA
+WinStationNameFromLogonIdW
+WinStationNtsdDebug
+WinStationOpenServerA
+WinStationOpenServerW
+WinStationQueryInformationA
+WinStationQueryInformationW
+WinStationQueryLicense
+WinStationQueryLogonCredentialsW
+WinStationQueryUpdateRequired
+WinStationRedirectErrorMessage
+WinStationRegisterConsoleNotification
+WinStationRegisterConsoleNotificationEx
+WinStationRegisterNotificationEvent
+WinStationRemoveLicense
+WinStationRenameA
+WinStationRenameW
+WinStationReset
+WinStationSendMessageA
+WinStationSendMessageW
+WinStationSendWindowMessage
+WinStationServerPing
+WinStationSetInformationA
+WinStationSetInformationW
+WinStationSetPoolCount
+WinStationShadow
+WinStationShadowStop
+WinStationShutdownSystem
+WinStationTerminateProcess
+WinStationUnRegisterConsoleNotification
+WinStationUnRegisterNotificationEvent
+WinStationVirtualOpen
+WinStationWaitSystemEvent
+_NWLogonQueryAdmin
+_NWLogonSetAdmin
+_WinStationAnnoyancePopup
+_WinStationBeepOpen
+_WinStationBreakPoint
+_WinStationCallback
+_WinStationCheckForApplicationName
+_WinStationFUSCanRemoteUserDisconnect
+_WinStationGetApplicationInfo
+_WinStationNotifyDisconnectPipe
+_WinStationNotifyLogoff
+_WinStationNotifyLogon
+_WinStationNotifyNewSession
+_WinStationOpenSessionDirectory
+_WinStationReInitializeSecurity
+_WinStationReadRegistry
+_WinStationSessionInitialized
+_WinStationShadowTarget
+_WinStationShadowTargetSetup
+_WinStationUpdateClientCachedCredentials
+_WinStationUpdateSettings
+_WinStationUpdateUserConfig
+_WinStationWaitForConnect
diff --git a/lib/libc/mingw/lib64/wsdapi.def b/lib/libc/mingw/lib64/wsdapi.def
new file mode 100644
index 0000000000..a10b4cdc1c
--- /dev/null
+++ b/lib/libc/mingw/lib64/wsdapi.def
@@ -0,0 +1,41 @@
+;
+; Definition file of wsdapi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "wsdapi.dll"
+EXPORTS
+WSDCancelAddrChangeNotify
+WSDCreateHttpAddressAdvanced
+WSDNotifyAddrChange
+WSDAllocateLinkedMemory
+WSDAttachLinkedMemory
+WSDCreateDeviceHost
+WSDCreateDeviceHostAdvanced
+WSDCreateDeviceProxy
+WSDCreateDeviceProxyAdvanced
+WSDCreateDiscoveryProvider
+WSDCreateDiscoveryPublisher
+WSDCreateHttpAddress
+WSDCreateHttpMessageParameters
+WSDCreateHttpTransport
+WSDCreateMetadataAgent
+WSDCreateOutboundAttachment
+WSDCreateUdpAddress
+WSDCreateUdpMessageParameters
+WSDCreateUdpTransport
+WSDDetachLinkedMemory
+WSDFreeLinkedMemory
+WSDGenerateFault
+WSDGenerateFaultEx
+WSDGenerateRandomDelay
+WSDGetConfigurationOption
+WSDProcessFault
+WSDSetConfigurationOption
+WSDXMLAddChild
+WSDXMLAddSibling
+WSDXMLBuildAnyForSingleElement
+WSDXMLCleanupElement
+WSDXMLCreateContext
+WSDXMLGetNameFromBuiltinNamespace
+WSDXMLGetValueFromAny
diff --git a/lib/libc/mingw/libarm32/aclui.def b/lib/libc/mingw/libarm32/aclui.def
new file mode 100644
index 0000000000..7a7961dfe8
--- /dev/null
+++ b/lib/libc/mingw/libarm32/aclui.def
@@ -0,0 +1,15 @@
+;
+; Definition file of ACLUI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "ACLUI.dll"
+EXPORTS
+CreateSecurityPage
+EditSecurity
+EditSecurityAdvanced
+EditResourceCondition
+EditConditionalAceClaims
+GetLocalizedStringForCondition
+GetTlsIndexForClaimDictionary
+IID_ISecurityInformation
diff --git a/lib/libc/mingw/libarm32/apphelp.def b/lib/libc/mingw/libarm32/apphelp.def
new file mode 100644
index 0000000000..fc732ce675
--- /dev/null
+++ b/lib/libc/mingw/libarm32/apphelp.def
@@ -0,0 +1,260 @@
+;
+; Definition file of apphelp.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "apphelp.dll"
+EXPORTS
+ord_1 @1
+ord_2 @2
+ord_3 @3
+ord_4 @4
+ord_5 @5
+ord_6 @6
+ord_7 @7
+ord_8 @8
+ord_9 @9
+ord_10 @10
+ord_11 @11
+ord_12 @12
+ord_13 @13
+ord_14 @14
+AllowPermLayer
+ApphelpCheckExe
+ord_17 @17
+ord_18 @18
+ord_19 @19
+ord_20 @20
+ord_21 @21
+ord_22 @22
+ord_23 @23
+ord_24 @24
+ord_25 @25
+ord_26 @26
+ord_27 @27
+ord_28 @28
+ord_29 @29
+ord_30 @30
+ord_31 @31
+ord_32 @32
+ord_33 @33
+ApphelpCheckIME
+ApphelpCheckInstallShieldPackage
+ApphelpCheckModule
+ApphelpCheckMsiPackage
+ApphelpCheckRunApp
+ApphelpCheckRunAppEx
+ApphelpCheckShellObject
+ApphelpCreateAppcompatData
+ApphelpDebugPrintf
+ApphelpFixMsiPackage
+ApphelpFixMsiPackageExe
+ApphelpFreeFileAttributes
+ApphelpGetFileAttributes
+ApphelpGetMsiProperties
+ApphelpGetNTVDMInfo
+ApphelpGetShimDebugLevel
+ApphelpIsPortMonAllowed
+ApphelpParseModuleData
+ApphelpQueryModuleData
+ApphelpQueryModuleDataEx
+ApphelpShowDialog
+ApphelpUpdateCacheEntry
+DlEnumChannels
+DlGetStateEx
+DlSetFlagsEx
+DlSetLevelEx
+DlSetStateEx
+DlSnapshot
+GetPermLayers
+SE_AddHookset
+SE_CALLBACK_AddHook
+SE_CALLBACK_Lookup
+SE_COM_AddHook
+SE_COM_AddServer
+SE_COM_HookInterface
+SE_COM_HookObject
+SE_COM_Lookup
+SE_DllLoaded
+SE_DllUnloaded
+SE_DynamicShim
+SE_GetHookAPIs
+SE_GetMaxShimCount
+SE_GetProcAddressForCaller
+SE_GetProcAddressIgnoreIncExc
+SE_GetProcAddressLoad
+SE_GetShimCount
+SE_GetShimId
+SE_InitializeEngine
+SE_InstallAfterInit
+SE_InstallBeforeInit
+SE_IsShimDll
+SE_LdrEntryRemoved
+SE_LdrResolveDllName
+SE_LookupAddress
+SE_LookupCaller
+SE_ProcessDying
+SE_ShimDPF
+SE_ShimDllLoaded
+SE_WINRT_AddHook
+SE_WINRT_HookObject
+SdbAddLayerTagRefToQuery
+SdbApphelpNotify
+SdbApphelpNotifyEx
+SdbApphelpNotifyEx2
+SdbBeginWriteListTag
+SdbBuildCompatEnvVariables
+SdbCloseApphelpInformation
+SdbCloseDatabase
+SdbCloseDatabaseWrite
+SdbCloseLocalDatabase
+SdbCommitIndexes
+SdbCreateDatabase
+SdbCreateHelpCenterURL
+SdbCreateMsiTransformFile
+SdbDeclareIndex
+SdbDeletePermLayerKeys
+SdbDumpSearchPathPartCaches
+SdbEndWriteListTag
+SdbEnumMsiTransforms
+SdbEscapeApphelpURL
+SdbFindCustomActionForPackage
+SdbFindFirstDWORDIndexedTag
+SdbFindFirstGUIDIndexedTag
+SdbFindFirstMsiPackage
+SdbFindFirstMsiPackage_Str
+SdbFindFirstNamedTag
+SdbFindFirstStringIndexedTag
+SdbFindFirstTag
+SdbFindFirstTagRef
+SdbFindMsiPackageByID
+SdbFindNextDWORDIndexedTag
+SdbFindNextGUIDIndexedTag
+SdbFindNextMsiPackage
+SdbFindNextStringIndexedTag
+SdbFindNextTag
+SdbFindNextTagRef
+SdbFormatAttribute
+SdbFreeDatabaseInformation
+SdbFreeFileAttributes
+SdbFreeFileInfo
+SdbFreeFlagInfo
+SdbGUIDFromString
+SdbGUIDToString
+SdbGetAppCompatDataSize
+SdbGetAppPatchDir
+SdbGetBinaryTagData
+SdbGetDatabaseGUID
+SdbGetDatabaseID
+SdbGetDatabaseInformation
+SdbGetDatabaseInformationByName
+SdbGetDatabaseMatch
+SdbGetDatabaseVersion
+SdbGetDllPath
+SdbGetEntryFlags
+SdbGetFileAttributes
+SdbGetFileImageType
+SdbGetFileImageTypeEx
+SdbGetFileInfo
+SdbGetFirstChild
+SdbGetImageType
+SdbGetIndex
+SdbGetItemFromItemRef
+SdbGetLayerName
+SdbGetLayerTagRef
+SdbGetLocalPDB
+SdbGetMatchingExe
+SdbGetMsiPackageInformation
+SdbGetNamedLayer
+SdbGetNextChild
+SdbGetNthUserSdb
+SdbGetPDBFromGUID
+SdbGetPermLayerKeys
+SdbGetShowDebugInfoOption
+SdbGetShowDebugInfoOptionValue
+SdbGetStandardDatabaseGUID
+SdbGetStringTagPtr
+SdbGetTagDataSize
+SdbGetTagFromTagID
+SdbGrabMatchingInfo
+SdbGrabMatchingInfoEx
+SdbInitDatabase
+SdbInitDatabaseEx
+SdbIsNullGUID
+SdbIsStandardDatabase
+SdbIsTagrefFromLocalDB
+SdbIsTagrefFromMainDB
+SdbLoadString
+SdbMakeIndexKeyFromString
+SdbOpenApphelpDetailsDatabase
+SdbOpenApphelpDetailsDatabaseSP
+SdbOpenApphelpInformation
+SdbOpenApphelpInformationByID
+SdbOpenApphelpResourceFile
+SdbOpenDatabase
+SdbOpenDbFromGuid
+SdbOpenLocalDatabase
+SdbPackAppCompatData
+SdbQueryApphelpInformation
+SdbQueryBlockUpgrade
+SdbQueryContext
+SdbQueryData
+SdbQueryDataEx
+SdbQueryDataExTagID
+SdbQueryFlagInfo
+SdbQueryFlagMask
+SdbQueryName
+SdbQueryReinstallUpgrade
+SdbReadApphelpData
+SdbReadApphelpDetailsData
+SdbReadBYTETag
+SdbReadBYTETagRef
+SdbReadBinaryTag
+SdbReadDWORDTag
+SdbReadDWORDTagRef
+SdbReadEntryInformation
+SdbReadMsiTransformInfo
+SdbReadPatchBits
+SdbReadQWORDTag
+SdbReadQWORDTagRef
+SdbReadStringTag
+SdbReadStringTagRef
+SdbReadWORDTag
+SdbReadWORDTagRef
+SdbRegisterDatabase
+SdbRegisterDatabaseEx
+SdbReleaseDatabase
+SdbReleaseMatchingExe
+SdbResolveDatabase
+SdbSetApphelpDebugParameters
+SdbSetEntryFlags
+SdbSetImageType
+SdbSetPermLayerKeys
+SdbShowApphelpDialog
+SdbShowApphelpFromQuery
+SdbStartIndexing
+SdbStopIndexing
+SdbStringDuplicate
+SdbStringReplace
+SdbStringReplaceArray
+SdbTagIDToTagRef
+SdbTagRefToTagID
+SdbTagToString
+SdbUnpackAppCompatData
+SdbUnregisterDatabase
+SdbWriteBYTETag
+SdbWriteBinaryTag
+SdbWriteBinaryTagFromFile
+SdbWriteDWORDTag
+SdbWriteNULLTag
+SdbWriteQWORDTag
+SdbWriteStringRefTag
+SdbWriteStringTag
+SdbWriteStringTagDirect
+SdbWriteWORDTag
+SetPermLayerState
+SetPermLayerStateEx
+SetPermLayers
+ShimDbgPrint
+ShimDumpCache
+ShimFlushCache
diff --git a/lib/libc/mingw/libarm32/certpoleng.def b/lib/libc/mingw/libarm32/certpoleng.def
new file mode 100644
index 0000000000..d3b22ef33d
--- /dev/null
+++ b/lib/libc/mingw/libarm32/certpoleng.def
@@ -0,0 +1,15 @@
+;
+; Definition file of certpoleng.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "certpoleng.dll"
+EXPORTS
+PstAcquirePrivateKey
+PstGetCertificateChain
+PstGetCertificates
+PstGetTrustAnchors
+PstGetTrustAnchorsEx
+PstGetUserNameForCertificate
+PstMapCertificate
+PstValidate
diff --git a/lib/libc/mingw/libarm32/clfsw32.def b/lib/libc/mingw/libarm32/clfsw32.def
new file mode 100644
index 0000000000..dcec605438
--- /dev/null
+++ b/lib/libc/mingw/libarm32/clfsw32.def
@@ -0,0 +1,70 @@
+;
+; Definition file of clfsw32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "clfsw32.dll"
+EXPORTS
+LsnDecrement
+AddLogContainer
+AddLogContainerSet
+AdvanceLogBase
+AlignReservedLog
+AllocReservedLog
+CLFS_LSN_INVALID
+CLFS_LSN_NULL
+CloseAndResetLogFile
+CreateLogContainerScanContext
+CreateLogFile
+CreateLogMarshallingArea
+DeleteLogByHandle
+DeleteLogFile
+DeleteLogMarshallingArea
+DeregisterManageableLogClient
+DumpLogRecords
+FlushLogBuffers
+FlushLogToLsn
+FreeReservedLog
+GetLogContainerName
+GetLogFileInformation
+GetLogIoStatistics
+GetLogReservationInfo
+GetNextLogArchiveExtent
+HandleLogFull
+InstallLogPolicy
+LogTailAdvanceFailure
+LsnBlockOffset
+LsnContainer
+LsnCreate
+LsnEqual
+LsnGreater
+LsnIncrement
+LsnInvalid
+LsnLess
+LsnNull
+LsnRecordSequence
+PrepareLogArchive
+QueryLogPolicy
+ReadLogArchiveMetadata
+ReadLogNotification
+ReadLogRecord
+ReadLogRestartArea
+ReadNextLogRecord
+ReadPreviousLogRestartArea
+RegisterForLogWriteNotification
+RegisterManageableLogClient
+RemoveLogContainer
+RemoveLogContainerSet
+RemoveLogPolicy
+ReserveAndAppendLog
+ReserveAndAppendLogAligned
+ScanLogContainers
+SetEndOfLog
+SetLogArchiveMode
+SetLogArchiveTail
+SetLogFileSizeWithPolicy
+TerminateLogArchive
+TerminateReadLog
+TruncateLog
+ValidateLog
+WriteLogRestartArea
diff --git a/lib/libc/mingw/libarm32/comsvcs.def b/lib/libc/mingw/libarm32/comsvcs.def
new file mode 100644
index 0000000000..efb1ff3fbe
--- /dev/null
+++ b/lib/libc/mingw/libarm32/comsvcs.def
@@ -0,0 +1,25 @@
+;
+; Definition file of comsvcs.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "comsvcs.dll"
+EXPORTS
+CosGetCallContext
+ord_6 @6
+ord_7 @7
+CoCreateActivity
+CoEnterServiceDomain
+CoLeaveServiceDomain
+CoLoadServices
+ComSvcsExceptionFilter
+ComSvcsLogError
+DispManGetContext
+GetMTAThreadPoolMetrics
+GetManagedExtensions
+GetObjectContext
+GetTrkSvrObject
+MTSCreateActivity
+MiniDumpW
+RecycleSurrogate
+SafeRef
diff --git a/lib/libc/mingw/libarm32/d3d10_1.def b/lib/libc/mingw/libarm32/d3d10_1.def
new file mode 100644
index 0000000000..98582a78fa
--- /dev/null
+++ b/lib/libc/mingw/libarm32/d3d10_1.def
@@ -0,0 +1,37 @@
+;
+; Definition file of d3d10_1.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "d3d10_1.dll"
+EXPORTS
+RevertToOldImplementation
+D3D10CompileEffectFromMemory
+D3D10CompileShader
+D3D10CreateBlob
+D3D10CreateDevice1
+D3D10CreateDeviceAndSwapChain1
+D3D10CreateEffectFromMemory
+D3D10CreateEffectPoolFromMemory
+D3D10CreateStateBlock
+D3D10DisassembleEffect
+D3D10DisassembleShader
+D3D10GetGeometryShaderProfile
+D3D10GetInputAndOutputSignatureBlob
+D3D10GetInputSignatureBlob
+D3D10GetOutputSignatureBlob
+D3D10GetPixelShaderProfile
+D3D10GetShaderDebugInfo
+D3D10GetVersion
+D3D10GetVertexShaderProfile
+D3D10PreprocessShader
+D3D10ReflectShader
+D3D10RegisterLayers
+D3D10StateBlockMaskDifference
+D3D10StateBlockMaskDisableAll
+D3D10StateBlockMaskDisableCapture
+D3D10StateBlockMaskEnableAll
+D3D10StateBlockMaskEnableCapture
+D3D10StateBlockMaskGetSetting
+D3D10StateBlockMaskIntersect
+D3D10StateBlockMaskUnion
diff --git a/lib/libc/mingw/libarm32/deviceaccess.def b/lib/libc/mingw/libarm32/deviceaccess.def
new file mode 100644
index 0000000000..33570bb08c
--- /dev/null
+++ b/lib/libc/mingw/libarm32/deviceaccess.def
@@ -0,0 +1,8 @@
+;
+; Definition file of deviceaccess.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "deviceaccess.dll"
+EXPORTS
+CreateDeviceAccessInstance
diff --git a/lib/libc/mingw/libarm32/dhcpcsvc6.def b/lib/libc/mingw/libarm32/dhcpcsvc6.def
new file mode 100644
index 0000000000..3f80fbf6a9
--- /dev/null
+++ b/lib/libc/mingw/libarm32/dhcpcsvc6.def
@@ -0,0 +1,29 @@
+;
+; Definition file of dhcpcsvc6.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "dhcpcsvc6.DLL"
+EXPORTS
+Dhcpv6AcquireParameters
+Dhcpv6CApiCleanup
+Dhcpv6CApiInitialize
+Dhcpv6CancelOperation
+Dhcpv6EnableDhcp
+Dhcpv6EnableTracing
+Dhcpv6FreeLeaseInfo
+Dhcpv6FreeLeaseInfoArray
+Dhcpv6GetTraceArray
+Dhcpv6GetUserClasses
+Dhcpv6IsEnabled
+Dhcpv6QueryLeaseInfo
+Dhcpv6QueryLeaseInfoArray
+Dhcpv6ReleaseParameters
+Dhcpv6ReleasePrefix
+Dhcpv6ReleasePrefixEx
+Dhcpv6RenewPrefix
+Dhcpv6RenewPrefixEx
+Dhcpv6RequestParams
+Dhcpv6RequestPrefix
+Dhcpv6RequestPrefixEx
+Dhcpv6SetUserClass
diff --git a/lib/libc/mingw/libarm32/drt.def b/lib/libc/mingw/libarm32/drt.def
new file mode 100644
index 0000000000..ccfcecc4e4
--- /dev/null
+++ b/lib/libc/mingw/libarm32/drt.def
@@ -0,0 +1,28 @@
+;
+; Definition file of drt.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "drt.dll"
+EXPORTS
+DrtFlushCache
+DrtGetCacheStatsEx
+DrtHandlePowerEvent
+DrtPingPeer
+DrtStartPartitionDetection
+DrtClose
+DrtContinueSearch
+DrtEndSearch
+DrtGetEventData
+DrtGetEventDataSize
+DrtGetInstanceName
+DrtGetInstanceNameSize
+DrtGetSearchPath
+DrtGetSearchPathSize
+DrtGetSearchResult
+DrtGetSearchResultSize
+DrtOpen
+DrtRegisterKey
+DrtStartSearch
+DrtUnregisterKey
+DrtUpdateKey
diff --git a/lib/libc/mingw/libarm32/drtprov.def b/lib/libc/mingw/libarm32/drtprov.def
new file mode 100644
index 0000000000..f884ba7294
--- /dev/null
+++ b/lib/libc/mingw/libarm32/drtprov.def
@@ -0,0 +1,16 @@
+;
+; Definition file of drtprov.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "drtprov.dll"
+EXPORTS
+DrtCreateDerivedKey
+DrtCreateDerivedKeySecurityProvider
+DrtCreateDnsBootstrapResolver
+DrtCreateNullSecurityProvider
+DrtCreatePnrpBootstrapResolver
+DrtDeleteDerivedKeySecurityProvider
+DrtDeleteDnsBootstrapResolver
+DrtDeleteNullSecurityProvider
+DrtDeletePnrpBootstrapResolver
diff --git a/lib/libc/mingw/libarm32/drttransport.def b/lib/libc/mingw/libarm32/drttransport.def
new file mode 100644
index 0000000000..fec0329fea
--- /dev/null
+++ b/lib/libc/mingw/libarm32/drttransport.def
@@ -0,0 +1,9 @@
+;
+; Definition file of drttransport.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "drttransport.dll"
+EXPORTS
+DrtCreateIpv6UdpTransport
+DrtDeleteIpv6UdpTransport
diff --git a/lib/libc/mingw/libarm32/dsparse.def b/lib/libc/mingw/libarm32/dsparse.def
new file mode 100644
index 0000000000..2642004bad
--- /dev/null
+++ b/lib/libc/mingw/libarm32/dsparse.def
@@ -0,0 +1,26 @@
+;
+; Definition file of DSPARSE.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "DSPARSE.dll"
+EXPORTS
+DsCrackSpn2A
+DsCrackSpn2W
+DsCrackSpn3W
+DsCrackSpn4W
+DsCrackSpnA
+DsCrackSpnW
+DsCrackUnquotedMangledRdnA
+DsCrackUnquotedMangledRdnW
+DsGetRdnW
+DsIsMangledDnA
+DsIsMangledDnW
+DsIsMangledRdnValueA
+DsIsMangledRdnValueW
+DsMakeSpnA
+DsMakeSpnW
+DsQuoteRdnValueA
+DsQuoteRdnValueW
+DsUnquoteRdnValueA
+DsUnquoteRdnValueW
diff --git a/lib/libc/mingw/libarm32/efswrt.def b/lib/libc/mingw/libarm32/efswrt.def
new file mode 100644
index 0000000000..e149d878ee
--- /dev/null
+++ b/lib/libc/mingw/libarm32/efswrt.def
@@ -0,0 +1,11 @@
+;
+; Definition file of efswrt.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "efswrt.dll"
+EXPORTS
+EnterpriseDataCopyProtection
+EnterpriseDataGetStatus
+EnterpriseDataProtect
+EnterpriseDataRevoke
diff --git a/lib/libc/mingw/libarm32/esent.def b/lib/libc/mingw/libarm32/esent.def
new file mode 100644
index 0000000000..140c22f8a3
--- /dev/null
+++ b/lib/libc/mingw/libarm32/esent.def
@@ -0,0 +1,363 @@
+;
+; Definition file of ESENT.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "ESENT.dll"
+EXPORTS
+DebugExtensionInitialize
+DebugExtensionNotify
+DebugExtensionUninitialize
+JetAddColumn
+JetAddColumnA
+JetAddColumnW
+JetAttachDatabase
+JetAttachDatabase2
+JetAttachDatabase2A
+JetAttachDatabase2W
+JetAttachDatabaseA
+JetAttachDatabaseW
+JetAttachDatabaseWithStreaming
+JetAttachDatabaseWithStreamingA
+JetAttachDatabaseWithStreamingW
+JetBackup
+JetBackupA
+JetBackupInstance
+JetBackupInstanceA
+JetBackupInstanceW
+JetBackupW
+JetBeginDatabaseIncrementalReseed
+JetBeginDatabaseIncrementalReseedA
+JetBeginDatabaseIncrementalReseedW
+JetBeginExternalBackup
+JetBeginExternalBackupInstance
+JetBeginSession
+JetBeginSessionA
+JetBeginSessionW
+JetBeginSurrogateBackup
+JetBeginTransaction
+JetBeginTransaction2
+JetBeginTransaction3
+JetCloseDatabase
+JetCloseFile
+JetCloseFileInstance
+JetCloseTable
+JetCommitTransaction
+JetCommitTransaction2
+JetCompact
+JetCompactA
+JetCompactW
+JetComputeStats
+JetConfigureProcessForCrashDump
+JetConsumeLogData
+JetConvertDDL
+JetConvertDDLA
+JetConvertDDLW
+JetCreateDatabase
+JetCreateDatabase2
+JetCreateDatabase2A
+JetCreateDatabase2W
+JetCreateDatabaseA
+JetCreateDatabaseW
+JetCreateDatabaseWithStreaming
+JetCreateDatabaseWithStreamingA
+JetCreateDatabaseWithStreamingW
+JetCreateIndex
+JetCreateIndex2
+JetCreateIndex2A
+JetCreateIndex2W
+JetCreateIndex3A
+JetCreateIndex3W
+JetCreateIndex4A
+JetCreateIndex4W
+JetCreateIndexA
+JetCreateIndexW
+JetCreateInstance
+JetCreateInstance2
+JetCreateInstance2A
+JetCreateInstance2W
+JetCreateInstanceA
+JetCreateInstanceW
+JetCreateTable
+JetCreateTableA
+JetCreateTableColumnIndex
+JetCreateTableColumnIndex2
+JetCreateTableColumnIndex2A
+JetCreateTableColumnIndex2W
+JetCreateTableColumnIndex3A
+JetCreateTableColumnIndex3W
+JetCreateTableColumnIndex4A
+JetCreateTableColumnIndex4W
+JetCreateTableColumnIndexA
+JetCreateTableColumnIndexW
+JetCreateTableW
+JetDBUtilities
+JetDBUtilitiesA
+JetDBUtilitiesW
+JetDatabaseScan
+JetDefragment
+JetDefragment2
+JetDefragment2A
+JetDefragment2W
+JetDefragment3
+JetDefragment3A
+JetDefragment3W
+JetDefragmentA
+JetDefragmentW
+JetDelete
+JetDeleteColumn
+JetDeleteColumn2
+JetDeleteColumn2A
+JetDeleteColumn2W
+JetDeleteColumnA
+JetDeleteColumnW
+JetDeleteIndex
+JetDeleteIndexA
+JetDeleteIndexW
+JetDeleteTable
+JetDeleteTableA
+JetDeleteTableW
+JetDetachDatabase
+JetDetachDatabase2
+JetDetachDatabase2A
+JetDetachDatabase2W
+JetDetachDatabaseA
+JetDetachDatabaseW
+JetDupCursor
+JetDupSession
+JetEnableMultiInstance
+JetEnableMultiInstanceA
+JetEnableMultiInstanceW
+JetEndDatabaseIncrementalReseed
+JetEndDatabaseIncrementalReseedA
+JetEndDatabaseIncrementalReseedW
+JetEndExternalBackup
+JetEndExternalBackupInstance
+JetEndExternalBackupInstance2
+JetEndSession
+JetEndSurrogateBackup
+JetEnumerateColumns
+JetEscrowUpdate
+JetExternalRestore
+JetExternalRestore2
+JetExternalRestore2A
+JetExternalRestore2W
+JetExternalRestoreA
+JetExternalRestoreW
+JetFreeBuffer
+JetGetAttachInfo
+JetGetAttachInfoA
+JetGetAttachInfoInstance
+JetGetAttachInfoInstanceA
+JetGetAttachInfoInstanceW
+JetGetAttachInfoW
+JetGetBookmark
+JetGetColumnInfo
+JetGetColumnInfoA
+JetGetColumnInfoW
+JetGetCounter
+JetGetCurrentIndex
+JetGetCurrentIndexA
+JetGetCurrentIndexW
+JetGetCursorInfo
+JetGetDatabaseFileInfo
+JetGetDatabaseFileInfoA
+JetGetDatabaseFileInfoW
+JetGetDatabaseInfo
+JetGetDatabaseInfoA
+JetGetDatabaseInfoW
+JetGetDatabasePages
+JetGetErrorInfoW
+JetGetIndexInfo
+JetGetIndexInfoA
+JetGetIndexInfoW
+JetGetInstanceInfo
+JetGetInstanceInfoA
+JetGetInstanceInfoW
+JetGetInstanceMiscInfo
+JetGetLS
+JetGetLock
+JetGetLogFileInfo
+JetGetLogFileInfoA
+JetGetLogFileInfoW
+JetGetLogInfo
+JetGetLogInfoA
+JetGetLogInfoInstance
+JetGetLogInfoInstance2
+JetGetLogInfoInstance2A
+JetGetLogInfoInstance2W
+JetGetLogInfoInstanceA
+JetGetLogInfoInstanceW
+JetGetLogInfoW
+JetGetMaxDatabaseSize
+JetGetObjectInfo
+JetGetObjectInfoA
+JetGetObjectInfoW
+JetGetPageInfo
+JetGetPageInfo2
+JetGetRecordPosition
+JetGetRecordSize
+JetGetRecordSize2
+JetGetResourceParam
+JetGetSecondaryIndexBookmark
+JetGetSessionInfo
+JetGetSessionParameter
+JetGetSystemParameter
+JetGetSystemParameterA
+JetGetSystemParameterW
+JetGetTableColumnInfo
+JetGetTableColumnInfoA
+JetGetTableColumnInfoW
+JetGetTableIndexInfo
+JetGetTableIndexInfoA
+JetGetTableIndexInfoW
+JetGetTableInfo
+JetGetTableInfoA
+JetGetTableInfoW
+JetGetThreadStats
+JetGetTruncateLogInfoInstance
+JetGetTruncateLogInfoInstanceA
+JetGetTruncateLogInfoInstanceW
+JetGetVersion
+JetGotoBookmark
+JetGotoPosition
+JetGotoSecondaryIndexBookmark
+JetGrowDatabase
+JetIdle
+JetIndexRecordCount
+JetInit
+JetInit2
+JetInit3
+JetInit3A
+JetInit3W
+JetInit4
+JetInit4A
+JetInit4W
+JetIntersectIndexes
+JetMakeKey
+JetMove
+JetOSSnapshotAbort
+JetOSSnapshotEnd
+JetOSSnapshotFreeze
+JetOSSnapshotFreezeA
+JetOSSnapshotFreezeW
+JetOSSnapshotGetFreezeInfo
+JetOSSnapshotGetFreezeInfoA
+JetOSSnapshotGetFreezeInfoW
+JetOSSnapshotPrepare
+JetOSSnapshotPrepareInstance
+JetOSSnapshotThaw
+JetOSSnapshotTruncateLog
+JetOSSnapshotTruncateLogInstance
+JetOnlinePatchDatabasePage
+JetOpenDatabase
+JetOpenDatabaseA
+JetOpenDatabaseW
+JetOpenFile
+JetOpenFileA
+JetOpenFileInstance
+JetOpenFileInstanceA
+JetOpenFileInstanceW
+JetOpenFileSectionInstance
+JetOpenFileSectionInstanceA
+JetOpenFileSectionInstanceW
+JetOpenFileW
+JetOpenTable
+JetOpenTableA
+JetOpenTableW
+JetOpenTempTable
+JetOpenTempTable2
+JetOpenTempTable3
+JetOpenTemporaryTable
+JetOpenTemporaryTable2
+JetPatchDatabasePages
+JetPatchDatabasePagesA
+JetPatchDatabasePagesW
+JetPrepareToCommitTransaction
+JetPrepareUpdate
+JetPrereadIndexRanges
+JetPrereadKeys
+JetPrereadTablesW
+JetReadFile
+JetReadFileInstance
+JetRegisterCallback
+JetRemoveLogfileA
+JetRemoveLogfileW
+JetRenameColumn
+JetRenameColumnA
+JetRenameColumnW
+JetRenameTable
+JetRenameTableA
+JetRenameTableW
+JetResetCounter
+JetResetSessionContext
+JetResetTableSequential
+JetResizeDatabase
+JetRestore
+JetRestore2
+JetRestore2A
+JetRestore2W
+JetRestoreA
+JetRestoreInstance
+JetRestoreInstanceA
+JetRestoreInstanceW
+JetRestoreW
+JetRetrieveColumn
+JetRetrieveColumns
+JetRetrieveKey
+JetRetrieveTaggedColumnList
+JetRollback
+JetSeek
+JetSetColumn
+JetSetColumnDefaultValue
+JetSetColumnDefaultValueA
+JetSetColumnDefaultValueW
+JetSetColumns
+JetSetCurrentIndex
+JetSetCurrentIndex2
+JetSetCurrentIndex2A
+JetSetCurrentIndex2W
+JetSetCurrentIndex3
+JetSetCurrentIndex3A
+JetSetCurrentIndex3W
+JetSetCurrentIndex4
+JetSetCurrentIndex4A
+JetSetCurrentIndex4W
+JetSetCurrentIndexA
+JetSetCurrentIndexW
+JetSetCursorFilter
+JetSetDatabaseSize
+JetSetDatabaseSizeA
+JetSetDatabaseSizeW
+JetSetIndexRange
+JetSetLS
+JetSetMaxDatabaseSize
+JetSetResourceParam
+JetSetSessionContext
+JetSetSessionParameter
+JetSetSystemParameter
+JetSetSystemParameterA
+JetSetSystemParameterW
+JetSetTableSequential
+JetSnapshotStart
+JetSnapshotStartA
+JetSnapshotStartW
+JetSnapshotStop
+JetStopBackup
+JetStopBackupInstance
+JetStopService
+JetStopServiceInstance
+JetStopServiceInstance2
+JetTerm
+JetTerm2
+JetTestHook
+JetTracing
+JetTruncateLog
+JetTruncateLogInstance
+JetUnregisterCallback
+JetUpdate
+JetUpdate2
+JetUpgradeDatabase
+JetUpgradeDatabaseA
+JetUpgradeDatabaseW
+ese
diff --git a/lib/libc/mingw/libarm32/faultrep.def b/lib/libc/mingw/libarm32/faultrep.def
new file mode 100644
index 0000000000..bf6d970a22
--- /dev/null
+++ b/lib/libc/mingw/libarm32/faultrep.def
@@ -0,0 +1,17 @@
+;
+; Definition file of faultrep.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "faultrep.dll"
+EXPORTS
+ord_1 @1
+CheckPerUserCrossProcessThrottle
+UpdatePerUserLastCrossProcessCollectionTime
+AddERExcludedApplicationA
+AddERExcludedApplicationW
+CancelHangReporting
+ReportFault
+ReportHang
+WerReportHang
+WerpInitiateCrashReporting
diff --git a/lib/libc/mingw/libarm32/fhsvcctl.def b/lib/libc/mingw/libarm32/fhsvcctl.def
new file mode 100644
index 0000000000..f6480a1b75
--- /dev/null
+++ b/lib/libc/mingw/libarm32/fhsvcctl.def
@@ -0,0 +1,20 @@
+;
+; Definition file of fhsvcctl.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "fhsvcctl.dll"
+EXPORTS
+FhQueryConfiguredUsersCount
+FhServiceBlockBackup
+FhServiceClearProtectionState
+FhServiceClosePipe
+FhServiceEnterMaintenanceMode
+FhServiceExitMaintenanceMode
+FhServiceMigrationFinished
+FhServiceMigrationStarting
+FhServiceOpenPipe
+FhServiceReloadConfiguration
+FhServiceStartBackup
+FhServiceStopBackup
+FhServiceUnblockBackup
diff --git a/lib/libc/mingw/libarm32/fwpuclnt.def b/lib/libc/mingw/libarm32/fwpuclnt.def
new file mode 100644
index 0000000000..6f29ed7198
--- /dev/null
+++ b/lib/libc/mingw/libarm32/fwpuclnt.def
@@ -0,0 +1,259 @@
+;
+; Definition file of fwpuclnt.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "fwpuclnt.dll"
+EXPORTS
+FwpiExpandCriteria0
+FwpiFreeCriteria0
+FwpiVpnTriggerAddAppSids
+FwpiVpnTriggerAddFilePaths
+FwpiVpnTriggerConfigureParameters
+FwpiVpnTriggerEventSubscribe0
+FwpiVpnTriggerEventUnsubscribe0
+FwpiVpnTriggerInitializeNrptTriggering
+FwpiVpnTriggerRemoveAppSids
+FwpiVpnTriggerRemoveFilePaths
+FwpiVpnTriggerResetNrptTriggering
+FwpiVpnTriggerSetStateDisconnected
+FwpiVpnTriggerUninitializeNrptTriggering
+FwpmCalloutAdd0
+FwpmCalloutCreateEnumHandle0
+FwpmCalloutDeleteById0
+FwpmCalloutDeleteByKey0
+FwpmCalloutDestroyEnumHandle0
+FwpmCalloutEnum0
+FwpmCalloutGetById0
+FwpmCalloutGetByKey0
+FwpmCalloutGetSecurityInfoByKey0
+FwpmCalloutSetSecurityInfoByKey0
+FwpmCalloutSubscribeChanges0
+FwpmCalloutSubscriptionsGet0
+FwpmCalloutUnsubscribeChanges0
+FwpmConnectionCreateEnumHandle0
+FwpmConnectionDestroyEnumHandle0
+FwpmConnectionEnum0
+FwpmConnectionGetById0
+FwpmConnectionGetSecurityInfo0
+FwpmConnectionSetSecurityInfo0
+FwpmConnectionSubscribe0
+FwpmConnectionUnsubscribe0
+FwpmDiagnoseNetFailure0
+FwpmEngineClose0
+FwpmEngineGetOption0
+FwpmEngineGetSecurityInfo0
+FwpmEngineOpen0
+FwpmEngineSetOption0
+FwpmEngineSetSecurityInfo0
+FwpmEventProviderCreate0
+FwpmEventProviderDestroy0
+FwpmEventProviderFireNetEvent0
+FwpmEventProviderIsNetEventTypeEnabled0
+FwpmFilterAdd0
+FwpmFilterCreateEnumHandle0
+FwpmFilterDeleteById0
+FwpmFilterDeleteByKey0
+FwpmFilterDestroyEnumHandle0
+FwpmFilterEnum0
+FwpmFilterGetById0
+FwpmFilterGetByKey0
+FwpmFilterGetSecurityInfoByKey0
+FwpmFilterSetSecurityInfoByKey0
+FwpmFilterSubscribeChanges0
+FwpmFilterSubscriptionsGet0
+FwpmFilterUnsubscribeChanges0
+FwpmFreeMemory0
+FwpmGetAppIdFromFileName0
+FwpmGetSidFromOnlineId0
+FwpmIPsecTunnelAdd0
+FwpmIPsecTunnelAdd1
+FwpmIPsecTunnelAdd2
+FwpmIPsecTunnelAddConditions0
+FwpmIPsecTunnelDeleteByKey0
+FwpmLayerCreateEnumHandle0
+FwpmLayerDestroyEnumHandle0
+FwpmLayerEnum0
+FwpmLayerGetById0
+FwpmLayerGetByKey0
+FwpmLayerGetSecurityInfoByKey0
+FwpmLayerSetSecurityInfoByKey0
+FwpmNetEventCreateEnumHandle0
+FwpmNetEventDestroyEnumHandle0
+FwpmNetEventEnum0
+FwpmNetEventEnum1
+FwpmNetEventEnum2
+FwpmNetEventSubscribe0
+FwpmNetEventSubscribe1
+FwpmNetEventSubscriptionsGet0
+FwpmNetEventUnsubscribe0
+FwpmNetEventsGetSecurityInfo0
+FwpmNetEventsLost0
+FwpmNetEventsSetSecurityInfo0
+FwpmProcessNameResolutionEvent0
+FwpmProviderAdd0
+FwpmProviderContextAdd0
+FwpmProviderContextAdd1
+FwpmProviderContextAdd2
+FwpmProviderContextCreateEnumHandle0
+FwpmProviderContextDeleteById0
+FwpmProviderContextDeleteByKey0
+FwpmProviderContextDestroyEnumHandle0
+FwpmProviderContextEnum0
+FwpmProviderContextEnum1
+FwpmProviderContextEnum2
+FwpmProviderContextGetById0
+FwpmProviderContextGetById1
+FwpmProviderContextGetById2
+FwpmProviderContextGetByKey0
+FwpmProviderContextGetByKey1
+FwpmProviderContextGetByKey2
+FwpmProviderContextGetSecurityInfoByKey0
+FwpmProviderContextSetSecurityInfoByKey0
+FwpmProviderContextSubscribeChanges0
+FwpmProviderContextSubscriptionsGet0
+FwpmProviderContextUnsubscribeChanges0
+FwpmProviderCreateEnumHandle0
+FwpmProviderDeleteByKey0
+FwpmProviderDestroyEnumHandle0
+FwpmProviderEnum0
+FwpmProviderGetByKey0
+FwpmProviderGetSecurityInfoByKey0
+FwpmProviderSetSecurityInfoByKey0
+FwpmProviderSubscribeChanges0
+FwpmProviderSubscriptionsGet0
+FwpmProviderUnsubscribeChanges0
+FwpmSessionCreateEnumHandle0
+FwpmSessionDestroyEnumHandle0
+FwpmSessionEnum0
+FwpmSubLayerAdd0
+FwpmSubLayerCreateEnumHandle0
+FwpmSubLayerDeleteByKey0
+FwpmSubLayerDestroyEnumHandle0
+FwpmSubLayerEnum0
+FwpmSubLayerGetByKey0
+FwpmSubLayerGetSecurityInfoByKey0
+FwpmSubLayerSetSecurityInfoByKey0
+FwpmSubLayerSubscribeChanges0
+FwpmSubLayerSubscriptionsGet0
+FwpmSubLayerUnsubscribeChanges0
+FwpmSystemPortsGet0
+FwpmSystemPortsSubscribe0
+FwpmSystemPortsUnsubscribe0
+FwpmTraceRestoreDefaults0
+FwpmTransactionAbort0
+FwpmTransactionBegin0
+FwpmTransactionCommit0
+FwpmvSwitchEventSubscribe0
+FwpmvSwitchEventUnsubscribe0
+FwpmvSwitchEventsGetSecurityInfo0
+FwpmvSwitchEventsSetSecurityInfo0
+FwppConnectionGetByIPsecInfo
+FwpsAleEndpointCreateEnumHandle0
+FwpsAleEndpointDestroyEnumHandle0
+FwpsAleEndpointEnum0
+FwpsAleEndpointGetById0
+FwpsAleEndpointGetSecurityInfo0
+FwpsAleEndpointSetSecurityInfo0
+FwpsAleExplicitCredentialsQuery0
+FwpsAleGetPortStatus0
+FwpsClassifyUser0
+FwpsFreeMemory0
+FwpsGetInProcReplicaOffset0
+FwpsLayerCreateInProcReplica0
+FwpsLayerReleaseInProcReplica0
+FwpsOpenToken0
+FwpsQueryIPsecDosFWUsed0
+FwpsQueryIPsecOffloadDone0
+GetUnifiedTraceHandle
+IPsecDospGetSecurityInfo0
+IPsecDospGetStatistics0
+IPsecDospSetSecurityInfo0
+IPsecDospStateCreateEnumHandle0
+IPsecDospStateDestroyEnumHandle0
+IPsecDospStateEnum0
+IPsecGetKeyFromDictator0
+IPsecGetStatistics0
+IPsecGetStatistics1
+IPsecKeyDictationCheck0
+IPsecKeyManagerAddAndRegister0
+IPsecKeyManagerGetSecurityInfoByKey0
+IPsecKeyManagerSetSecurityInfoByKey0
+IPsecKeyManagerUnregisterAndDelete0
+IPsecKeyManagersGet0
+IPsecKeyModuleAdd0
+IPsecKeyModuleDelete0
+IPsecKeyModuleUpdateAcquire0
+IPsecKeyNotification0
+IPsecSaContextAddInbound0
+IPsecSaContextAddInbound1
+IPsecSaContextAddInboundAndTrackConnection
+IPsecSaContextAddOutbound0
+IPsecSaContextAddOutbound1
+IPsecSaContextAddOutboundAndTrackConnection
+IPsecSaContextCreate0
+IPsecSaContextCreate1
+IPsecSaContextCreateEnumHandle0
+IPsecSaContextDeleteById0
+IPsecSaContextDestroyEnumHandle0
+IPsecSaContextEnum0
+IPsecSaContextEnum1
+IPsecSaContextExpire0
+IPsecSaContextGetById0
+IPsecSaContextGetById1
+IPsecSaContextGetSpi0
+IPsecSaContextGetSpi1
+IPsecSaContextSetSpi0
+IPsecSaContextSubscribe0
+IPsecSaContextSubscriptionsGet0
+IPsecSaContextUnsubscribe0
+IPsecSaContextUpdate0
+IPsecSaCreateEnumHandle0
+IPsecSaDbGetSecurityInfo0
+IPsecSaDbSetSecurityInfo0
+IPsecSaDestroyEnumHandle0
+IPsecSaEnum0
+IPsecSaEnum1
+IPsecSaInitiateAsync0
+IkeextGetConfigParameters0
+IkeextGetStatistics0
+IkeextGetStatistics1
+IkeextSaCreateEnumHandle0
+IkeextSaDbGetSecurityInfo0
+IkeextSaDbSetSecurityInfo0
+IkeextSaDeleteById0
+IkeextSaDestroyEnumHandle0
+IkeextSaEnum0
+IkeextSaEnum1
+IkeextSaEnum2
+IkeextSaGetById0
+IkeextSaGetById1
+IkeextSaGetById2
+IkeextSaUpdateAdditionalAddressesByTunnelId0
+IkeextSaUpdatePreferredAddressesByTunnelId0
+IkeextSetConfigParameters0
+NamespaceCallout
+WFPRIODequeueCompletion
+WSADeleteSocketPeerTargetName
+WSAImpersonateSocketPeer
+WSAQuerySocketSecurity
+WSARevertImpersonation
+WSASetSocketPeerTargetName
+WSASetSocketSecurity
+WfpCloseDPConfigureHandle
+WfpConfigureDPSecurityDescriptor
+WfpCreateDPConfigureHandle
+WfpRIOChannelClose
+WfpRIOCleanupRequestQueue
+WfpRIOCloseCompletionQueue
+WfpRIOCreateChannel
+WfpRIOCreateCompletionQueue
+WfpRIOCreateRequestQueue
+WfpRIODeregisterBuffer
+WfpRIOIndicateActivityThreshold
+WfpRIONotify
+WfpRIOReceive
+WfpRIORegisterBuffer
+WfpRIOResume
+WfpRIOSend
+WfpRIOSuspend
diff --git a/lib/libc/mingw/libarm32/httpapi.def b/lib/libc/mingw/libarm32/httpapi.def
new file mode 100644
index 0000000000..2301238b82
--- /dev/null
+++ b/lib/libc/mingw/libarm32/httpapi.def
@@ -0,0 +1,46 @@
+;
+; Definition file of HTTPAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "HTTPAPI.dll"
+EXPORTS
+HttpAddFragmentToCache
+HttpAddUrl
+HttpAddUrlToUrlGroup
+HttpCancelHttpRequest
+HttpCloseRequestQueue
+HttpCloseServerSession
+HttpCloseUrlGroup
+HttpControlService
+HttpCreateHttpHandle
+HttpCreateRequestQueue
+HttpCreateServerSession
+HttpCreateUrlGroup
+HttpDeleteServiceConfiguration
+HttpEvaluateRequest
+HttpFlushResponseCache
+HttpGetCounters
+HttpInitialize
+HttpPrepareUrl
+HttpQueryRequestQueueProperty
+HttpQueryServerSessionProperty
+HttpQueryServiceConfiguration
+HttpQueryUrlGroupProperty
+HttpReadFragmentFromCache
+HttpReceiveClientCertificate
+HttpReceiveHttpRequest
+HttpReceiveRequestEntityBody
+HttpRemoveUrl
+HttpRemoveUrlFromUrlGroup
+HttpSendHttpResponse
+HttpSendResponseEntityBody
+HttpSetRequestQueueProperty
+HttpSetServerSessionProperty
+HttpSetServiceConfiguration
+HttpSetUrlGroupProperty
+HttpShutdownRequestQueue
+HttpTerminate
+HttpWaitForDemandStart
+HttpWaitForDisconnect
+HttpWaitForDisconnectEx
diff --git a/lib/libc/mingw/libarm32/magnification.def b/lib/libc/mingw/libarm32/magnification.def
new file mode 100644
index 0000000000..90f687dcd6
--- /dev/null
+++ b/lib/libc/mingw/libarm32/magnification.def
@@ -0,0 +1,26 @@
+;
+; Definition file of MAGNIFICATION.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "MAGNIFICATION.dll"
+EXPORTS
+MagGetColorEffect
+MagGetFullscreenColorEffect
+MagGetFullscreenTransform
+MagGetImageScalingCallback
+MagGetInputTransform
+MagGetWindowFilterList
+MagGetWindowSource
+MagGetWindowTransform
+MagInitialize
+MagSetColorEffect
+MagSetFullscreenColorEffect
+MagSetFullscreenTransform
+MagSetImageScalingCallback
+MagSetInputTransform
+MagSetWindowFilterList
+MagSetWindowSource
+MagSetWindowTransform
+MagShowSystemCursor
+MagUninitialize
diff --git a/lib/libc/mingw/libarm32/mdmregistration.def b/lib/libc/mingw/libarm32/mdmregistration.def
new file mode 100644
index 0000000000..2ed00bb010
--- /dev/null
+++ b/lib/libc/mingw/libarm32/mdmregistration.def
@@ -0,0 +1,15 @@
+;
+; Definition file of MDMRegistration.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "MDMRegistration.DLL"
+EXPORTS
+DiscoverManagementService
+DiscoverManagementServiceEx
+GetManagementAppHyperlink
+IsDeviceRegisteredWithManagement
+IsManagementRegistrationAllowed
+RegisterDeviceWithManagement
+SetManagedExternally
+UnregisterDeviceWithManagement
diff --git a/lib/libc/mingw/libarm32/mfcore.def b/lib/libc/mingw/libarm32/mfcore.def
new file mode 100644
index 0000000000..7fdc76f260
--- /dev/null
+++ b/lib/libc/mingw/libarm32/mfcore.def
@@ -0,0 +1,49 @@
+;
+; Definition file of MFCORE.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "MFCORE.dll"
+EXPORTS
+AppendPropVariant
+ConvertPropVariant
+CopyPropertyStore
+CreateNamedPropertyStore
+ExtractPropVariant
+MFCopyMFMetadata
+MFCreateAggregateSource
+MFCreateAppSourceProxy
+MFCreateAudioRenderer
+MFCreateAudioRendererActivate
+MFCreateDeviceSource
+MFCreateDeviceSourceActivate
+MFCreateFileSchemePlugin
+MFCreateMFMetadataOnPropertyStore
+MFCreateMediaProcessor
+MFCreateMediaSession
+MFCreatePMPHost
+MFCreatePMPMediaSession
+MFCreatePMPServer
+MFCreatePresentationClock
+MFCreateSampleCopierMFT
+MFCreateSampleGrabberSinkActivate
+MFCreateSequencerSegmentOffset
+MFCreateSequencerSource
+MFCreateSequencerSourceRemoteStream
+MFCreateSimpleTypeHandler
+MFCreateSoundEventSchemePlugin
+MFCreateStandardQualityManager
+MFCreateTopoLoader
+MFCreateTopology
+MFCreateTopologyNode
+MFCreateTransformWrapper
+MFCreateWMAEncoderActivate
+MFCreateWMVEncoderActivate
+MFEnumDeviceSources
+MFGetMultipleServiceProviders
+MFGetService
+MFGetTopoNodeCurrentType
+MFReadSequencerSegmentOffset
+MFRequireProtectedEnvironment
+MFShutdownObject
+MergePropertyStore
diff --git a/lib/libc/mingw/libarm32/mfplay.def b/lib/libc/mingw/libarm32/mfplay.def
new file mode 100644
index 0000000000..42cdb16537
--- /dev/null
+++ b/lib/libc/mingw/libarm32/mfplay.def
@@ -0,0 +1,9 @@
+;
+; Definition file of MFPlay.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "MFPlay.DLL"
+EXPORTS
+MFPCreateMediaPlayer
+MFPCreateMediaPlayerEx
diff --git a/lib/libc/mingw/libarm32/mfsrcsnk.def b/lib/libc/mingw/libarm32/mfsrcsnk.def
new file mode 100644
index 0000000000..8eed55deb9
--- /dev/null
+++ b/lib/libc/mingw/libarm32/mfsrcsnk.def
@@ -0,0 +1,9 @@
+;
+; Definition file of mfsrcsnk.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "mfsrcsnk.dll"
+EXPORTS
+MFCreateAVIMediaSink
+MFCreateWAVEMediaSink
diff --git a/lib/libc/mingw/libarm32/mprapi.def b/lib/libc/mingw/libarm32/mprapi.def
new file mode 100644
index 0000000000..38cab0a873
--- /dev/null
+++ b/lib/libc/mingw/libarm32/mprapi.def
@@ -0,0 +1,164 @@
+;
+; Definition file of MPRAPI.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "MPRAPI.dll"
+EXPORTS
+CompressPhoneNumber
+MprAdminAddRoutingDomain
+MprAdminBufferFree
+MprAdminConnectionClearStats
+MprAdminConnectionEnum
+MprAdminConnectionEnumEx
+MprAdminConnectionGetInfo
+MprAdminConnectionGetInfoEx
+MprAdminConnectionRemoveQuarantine
+MprAdminDeleteRoutingDomain
+MprAdminDeregisterConnectionNotification
+MprAdminDeviceEnum
+MprAdminEstablishDomainRasServer
+MprAdminFreeRoutingDomainConfigEx
+MprAdminGetErrorString
+MprAdminGetPDCServer
+MprAdminGetProtocolStatistics
+MprAdminGetRoutingDomainId
+MprAdminInterfaceClearStatisticsEx
+MprAdminInterfaceConnect
+MprAdminInterfaceCreate
+MprAdminInterfaceCreateEx
+MprAdminInterfaceDelete
+MprAdminInterfaceDeviceGetInfo
+MprAdminInterfaceDeviceSetInfo
+MprAdminInterfaceDisconnect
+MprAdminInterfaceEnum
+MprAdminInterfaceEnumEx
+MprAdminInterfaceGetCredentials
+MprAdminInterfaceGetCredentialsEx
+MprAdminInterfaceGetCustomInfoEx
+MprAdminInterfaceGetHandle
+MprAdminInterfaceGetInfo
+MprAdminInterfaceGetInfoEx
+MprAdminInterfaceGetStatisticsEx
+MprAdminInterfaceQueryUpdateResult
+MprAdminInterfaceSetCredentials
+MprAdminInterfaceSetCredentialsEx
+MprAdminInterfaceSetCustomInfoEx
+MprAdminInterfaceSetInfo
+MprAdminInterfaceSetInfoEx
+MprAdminInterfaceTransportAdd
+MprAdminInterfaceTransportGetInfo
+MprAdminInterfaceTransportRemove
+MprAdminInterfaceTransportSetInfo
+MprAdminInterfaceUpdatePhonebookInfo
+MprAdminInterfaceUpdateRoutes
+MprAdminIsDomainRasServer
+MprAdminIsMultiTenancyEnabled
+MprAdminIsServiceInitialized
+MprAdminIsServiceRunning
+MprAdminMIBBufferFree
+MprAdminMIBEntryCreate
+MprAdminMIBEntryDelete
+MprAdminMIBEntryGet
+MprAdminMIBEntryGetFirst
+MprAdminMIBEntryGetNext
+MprAdminMIBEntrySet
+MprAdminMIBServerConnect
+MprAdminMIBServerDisconnect
+MprAdminMarkServerOffline
+MprAdminPortClearStats
+MprAdminPortDisconnect
+MprAdminPortEnum
+MprAdminPortGetInfo
+MprAdminPortReset
+MprAdminProtocolAction
+MprAdminRegisterConnectionNotification
+MprAdminRoutingDomainConnectionEnumEx
+MprAdminRoutingDomainGetConfigEx
+MprAdminRoutingDomainSetConfigEx
+MprAdminRoutingDomainsEnumEx
+MprAdminSendUserMessage
+MprAdminServerConnect
+MprAdminServerDisconnect
+MprAdminServerGetCredentials
+MprAdminServerGetInfo
+MprAdminServerGetInfoEx
+MprAdminServerSetCredentials
+MprAdminServerSetInfo
+MprAdminServerSetInfoEx
+MprAdminTransportCreate
+MprAdminTransportGetInfo
+MprAdminTransportSetInfo
+MprAdminUpdateConnection
+MprAdminUpgradeUsers
+MprAdminUserClose
+MprAdminUserGetInfo
+MprAdminUserOpen
+MprAdminUserRead
+MprAdminUserReadProfFlags
+MprAdminUserServerConnect
+MprAdminUserServerDisconnect
+MprAdminUserSetInfo
+MprAdminUserWrite
+MprAdminUserWriteProfFlags
+MprConfigAddRoutingDomain
+MprConfigBufferFree
+MprConfigDeleteRoutingDomain
+MprConfigFilterGetInfo
+MprConfigFilterSetInfo
+MprConfigFreeRoutingDomainConfigEx
+MprConfigGetFriendlyName
+MprConfigGetGuidName
+MprConfigGetRoutingDomainId
+MprConfigInterfaceCreate
+MprConfigInterfaceCreateEx
+MprConfigInterfaceDelete
+MprConfigInterfaceEnum
+MprConfigInterfaceEnumEx
+MprConfigInterfaceGetCustomInfoEx
+MprConfigInterfaceGetHandle
+MprConfigInterfaceGetInfo
+MprConfigInterfaceGetInfoEx
+MprConfigInterfaceSetCustomInfoEx
+MprConfigInterfaceSetInfo
+MprConfigInterfaceSetInfoEx
+MprConfigInterfaceTransportAdd
+MprConfigInterfaceTransportEnum
+MprConfigInterfaceTransportGetHandle
+MprConfigInterfaceTransportGetInfo
+MprConfigInterfaceTransportRemove
+MprConfigInterfaceTransportSetInfo
+MprConfigIsMultiTenancyEnabled
+MprConfigRoutingDomainEnumEx
+MprConfigRoutingDomainGetConfigEx
+MprConfigRoutingDomainSetConfigEx
+MprConfigServerBackup
+MprConfigServerConnect
+MprConfigServerDisconnect
+MprConfigServerGetInfo
+MprConfigServerGetInfoEx
+MprConfigServerInstall
+MprConfigServerRefresh
+MprConfigServerRestore
+MprConfigServerSetInfo
+MprConfigServerSetInfoEx
+MprConfigTransportCreate
+MprConfigTransportDelete
+MprConfigTransportEnum
+MprConfigTransportGetHandle
+MprConfigTransportGetInfo
+MprConfigTransportSetInfo
+MprDomainQueryRasServer
+MprDomainRegisterRasServer
+MprGetUsrParams
+MprInfoBlockAdd
+MprInfoBlockFind
+MprInfoBlockQuerySize
+MprInfoBlockRemove
+MprInfoBlockSet
+MprInfoCreate
+MprInfoDelete
+MprInfoDuplicate
+MprInfoRemoveAll
+MprPortSetUsage
+RasPrivilegeAndCallBackNumber
diff --git a/lib/libc/mingw/libarm32/mscms.def b/lib/libc/mingw/libarm32/mscms.def
new file mode 100644
index 0000000000..5ee53d7d3f
--- /dev/null
+++ b/lib/libc/mingw/libarm32/mscms.def
@@ -0,0 +1,113 @@
+;
+; Definition file of mscms.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "mscms.dll"
+EXPORTS
+AssociateColorProfileWithDeviceA
+AssociateColorProfileWithDeviceW
+CheckBitmapBits
+CheckColors
+CloseColorProfile
+CloseDisplay
+ColorCplGetDefaultProfileScope
+ColorCplGetDefaultRenderingIntentScope
+ColorCplGetProfileProperties
+ColorCplHasSystemWideAssociationListChanged
+ColorCplInitialize
+ColorCplLoadAssociationList
+ColorCplMergeAssociationLists
+ColorCplOverwritePerUserAssociationList
+ColorCplReleaseProfileProperties
+ColorCplResetSystemWideAssociationListChangedWarning
+ColorCplSaveAssociationList
+ColorCplSetUsePerUserProfiles
+ColorCplUninitialize
+ConvertColorNameToIndex
+ConvertIndexToColorName
+CreateColorTransformA
+CreateColorTransformW
+CreateDeviceLinkProfile
+CreateMultiProfileTransform
+CreateProfileFromLogColorSpaceA
+CreateProfileFromLogColorSpaceW
+DccwCreateDisplayProfileAssociationList
+DccwGetDisplayProfileAssociationList
+DccwGetGamutSize
+DccwReleaseDisplayProfileAssociationList
+DccwSetDisplayProfileAssociationList
+DeleteColorTransform
+DeviceRenameEvent
+DisassociateColorProfileFromDeviceA
+DisassociateColorProfileFromDeviceW
+EnumColorProfilesA
+EnumColorProfilesW
+GenerateCopyFilePaths
+GetCMMInfo
+GetColorDirectoryA
+GetColorDirectoryW
+GetColorProfileElement
+GetColorProfileElementTag
+GetColorProfileFromHandle
+GetColorProfileHeader
+GetCountColorProfileElements
+GetNamedProfileInfo
+GetPS2ColorRenderingDictionary
+GetPS2ColorRenderingIntent
+GetPS2ColorSpaceArray
+GetStandardColorSpaceProfileA
+GetStandardColorSpaceProfileW
+InstallColorProfileA
+InstallColorProfileW
+InternalGetDeviceConfig
+InternalGetPS2CSAFromLCS
+InternalGetPS2ColorRenderingDictionary
+InternalGetPS2ColorSpaceArray
+InternalGetPS2PreviewCRD
+InternalRefreshCalibration
+InternalSetDeviceConfig
+InternalWcsAssociateColorProfileWithDevice
+IsColorProfileTagPresent
+IsColorProfileValid
+OpenColorProfileA
+OpenColorProfileW
+OpenDisplay
+RegisterCMMA
+RegisterCMMW
+SelectCMM
+SetColorProfileElement
+SetColorProfileElementReference
+SetColorProfileElementSize
+SetColorProfileHeader
+SetStandardColorSpaceProfileA
+SetStandardColorSpaceProfileW
+SpoolerCopyFileEvent
+TranslateBitmapBits
+TranslateColors
+UninstallColorProfileA
+UninstallColorProfileW
+UnregisterCMMA
+UnregisterCMMW
+WcsAssociateColorProfileWithDevice
+WcsCheckColors
+WcsCreateIccProfile
+WcsDisassociateColorProfileFromDevice
+WcsEnumColorProfiles
+WcsEnumColorProfilesSize
+WcsGetCalibrationManagementState
+WcsGetDefaultColorProfile
+WcsGetDefaultColorProfileSize
+WcsGetDefaultRenderingIntent
+WcsGetUsePerUserProfiles
+WcsGpCanInstallOrUninstallProfiles
+WcsOpenColorProfileA
+WcsOpenColorProfileW
+WcsSetCalibrationManagementState
+WcsSetDefaultColorProfile
+WcsSetDefaultRenderingIntent
+WcsSetUsePerUserProfiles
+WcsTranslateColors
+InternalGetPS2ColorRenderingDictionary2
+InternalGetPS2PreviewCRD2
+InternalGetPS2ColorSpaceArray2
diff --git a/lib/libc/mingw/libarm32/msctfmonitor.def b/lib/libc/mingw/libarm32/msctfmonitor.def
new file mode 100644
index 0000000000..c183c8b62c
--- /dev/null
+++ b/lib/libc/mingw/libarm32/msctfmonitor.def
@@ -0,0 +1,10 @@
+;
+; Definition file of MsCtfMonitor.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "MsCtfMonitor.DLL"
+EXPORTS
+DoMsCtfMonitor
+InitLocalMsCtfMonitor
+UninitLocalMsCtfMonitor
diff --git a/lib/libc/mingw/libarm32/newdev.def b/lib/libc/mingw/libarm32/newdev.def
new file mode 100644
index 0000000000..c205569c06
--- /dev/null
+++ b/lib/libc/mingw/libarm32/newdev.def
@@ -0,0 +1,27 @@
+;
+; Definition file of newdev.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "newdev.dll"
+EXPORTS
+DeviceInternetSettingUiW
+DiInstallDevice
+DiInstallDriverA
+DiInstallDriverW
+DiRollbackDriver
+DiShowUpdateDevice
+DiUninstallDevice
+GetInternetPolicies
+InstallNewDevice
+InstallSelectedDriver
+InstallWindowsUpdateDriver
+InstallWindowsUpdateDriverEx
+InstallWindowsUpdateDrivers
+QueryWindowsUpdateDriverStatus
+SetInternetPolicies
+UpdateDriverForPlugAndPlayDevicesA
+UpdateDriverForPlugAndPlayDevicesW
+pDiDoDeviceInstallAsAdmin
+pDiDoNullDriverInstall
+pDiRunFinishInstallOperations
diff --git a/lib/libc/mingw/libarm32/ninput.def b/lib/libc/mingw/libarm32/ninput.def
new file mode 100644
index 0000000000..7247627744
--- /dev/null
+++ b/lib/libc/mingw/libarm32/ninput.def
@@ -0,0 +1,37 @@
+;
+; Definition file of NInput.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "NInput.dll"
+EXPORTS
+DefaultInputHandler
+AddPointerInteractionContext
+BufferPointerPacketsInteractionContext
+CreateInteractionContext
+DestroyInteractionContext
+GetCrossSlideParameterInteractionContext
+GetInertiaParameterInteractionContext
+GetInteractionConfigurationInteractionContext
+GetMouseWheelParameterInteractionContext
+GetPropertyInteractionContext
+GetStateInteractionContext
+ProcessBufferedPacketsInteractionContext
+ProcessInertiaInteractionContext
+ProcessPointerFramesInteractionContext
+RegisterOutputCallbackInteractionContext
+RemovePointerInteractionContext
+ResetInteractionContext
+SetCrossSlideParametersInteractionContext
+SetInertiaParameterInteractionContext
+SetInteractionConfigurationInteractionContext
+SetMouseWheelParameterInteractionContext
+SetPivotInteractionContext
+SetPropertyInteractionContext
+StopInteractionContext
+ord_2500 @2500
+ord_2501 @2501
+ord_2502 @2502
+ord_2503 @2503
+ord_2504 @2504
+ord_2505 @2505
diff --git a/lib/libc/mingw/libarm32/ntlanman.def b/lib/libc/mingw/libarm32/ntlanman.def
new file mode 100644
index 0000000000..e62aeff106
--- /dev/null
+++ b/lib/libc/mingw/libarm32/ntlanman.def
@@ -0,0 +1,25 @@
+;
+; Definition file of NTLANMAN.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "NTLANMAN.dll"
+EXPORTS
+NPGetConnection
+NPGetCaps
+I_SystemFocusDialog
+NPGetUser
+NPAddConnection
+NPCancelConnection
+RegisterAppInstance
+NPOpenEnum
+NPEnumResource
+NPCloseEnum
+NPFormatNetworkName
+NPAddConnection3
+NPGetUniversalName
+NPGetResourceParent
+NPGetConnectionPerformance
+NPGetResourceInformation
+NPGetReconnectFlags
+NPGetConnection3
diff --git a/lib/libc/mingw/libarm32/ondemandconnroutehelper.def b/lib/libc/mingw/libarm32/ondemandconnroutehelper.def
new file mode 100644
index 0000000000..08c63d9bc2
--- /dev/null
+++ b/lib/libc/mingw/libarm32/ondemandconnroutehelper.def
@@ -0,0 +1,13 @@
+;
+; Definition file of OnDemandConnRouteHelper.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "OnDemandConnRouteHelper.DLL"
+EXPORTS
+OnDemandAddRouteRequest
+OnDemandGetRoutingHint
+OnDemandRegisterNotification
+OnDemandRemoveMatchingRoute
+OnDemandRemoveRouteRequest
+OnDemandUnRegisterNotification
diff --git a/lib/libc/mingw/libarm32/pdh.def b/lib/libc/mingw/libarm32/pdh.def
new file mode 100644
index 0000000000..8bb340c442
--- /dev/null
+++ b/lib/libc/mingw/libarm32/pdh.def
@@ -0,0 +1,136 @@
+;
+; Definition file of pdh.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "pdh.dll"
+EXPORTS
+PdhAdd009CounterA
+PdhAdd009CounterW
+PdhAddCounterA
+PdhAddCounterW
+PdhAddEnglishCounterA
+PdhAddEnglishCounterW
+PdhAddRelogCounter
+PdhAddV1Counter
+PdhAddV2Counter
+PdhBindInputDataSourceA
+PdhBindInputDataSourceW
+PdhBrowseCountersA
+PdhBrowseCountersHA
+PdhBrowseCountersHW
+PdhBrowseCountersW
+PdhCalculateCounterFromRawValue
+PdhCloseLog
+PdhCloseQuery
+PdhCollectQueryData
+PdhCollectQueryDataEx
+PdhCollectQueryDataWithTime
+PdhComputeCounterStatistics
+PdhConnectMachineA
+PdhConnectMachineW
+PdhCreateSQLTablesA
+PdhCreateSQLTablesW
+PdhEnumLogSetNamesA
+PdhEnumLogSetNamesW
+PdhEnumMachinesA
+PdhEnumMachinesHA
+PdhEnumMachinesHW
+PdhEnumMachinesW
+PdhEnumObjectItemsA
+PdhEnumObjectItemsHA
+PdhEnumObjectItemsHW
+PdhEnumObjectItemsW
+PdhEnumObjectsA
+PdhEnumObjectsHA
+PdhEnumObjectsHW
+PdhEnumObjectsW
+PdhExpandCounterPathA
+PdhExpandCounterPathW
+PdhExpandWildCardPathA
+PdhExpandWildCardPathHA
+PdhExpandWildCardPathHW
+PdhExpandWildCardPathW
+PdhFormatFromRawValue
+PdhGetCounterInfoA
+PdhGetCounterInfoW
+PdhGetCounterTimeBase
+PdhGetDataSourceTimeRangeA
+PdhGetDataSourceTimeRangeH
+PdhGetDataSourceTimeRangeW
+PdhGetDefaultPerfCounterA
+PdhGetDefaultPerfCounterHA
+PdhGetDefaultPerfCounterHW
+PdhGetDefaultPerfCounterW
+PdhGetDefaultPerfObjectA
+PdhGetDefaultPerfObjectHA
+PdhGetDefaultPerfObjectHW
+PdhGetDefaultPerfObjectW
+PdhGetDllVersion
+PdhGetExplainText
+PdhGetFormattedCounterArrayA
+PdhGetFormattedCounterArrayW
+PdhGetFormattedCounterValue
+PdhGetLogFileSize
+PdhGetLogFileTypeA
+PdhGetLogFileTypeW
+PdhGetLogSetGUID
+PdhGetRawCounterArrayA
+PdhGetRawCounterArrayW
+PdhGetRawCounterValue
+PdhIsRealTimeQuery
+PdhListLogFileHeaderA
+PdhListLogFileHeaderW
+PdhLookupPerfIndexByNameA
+PdhLookupPerfIndexByNameW
+PdhLookupPerfNameByIndexA
+PdhLookupPerfNameByIndexW
+PdhMakeCounterPathA
+PdhMakeCounterPathW
+PdhOpenLogA
+PdhOpenLogW
+PdhOpenQuery
+PdhOpenQueryA
+PdhOpenQueryH
+PdhOpenQueryW
+PdhParseCounterPathA
+PdhParseCounterPathW
+PdhParseInstanceNameA
+PdhParseInstanceNameW
+PdhReadRawLogRecord
+PdhRelogA
+PdhRelogW
+PdhRemoveCounter
+PdhResetRelogCounterValues
+PdhSelectDataSourceA
+PdhSelectDataSourceW
+PdhSetCounterScaleFactor
+PdhSetCounterValue
+PdhSetDefaultRealTimeDataSource
+PdhSetLogSetRunID
+PdhSetQueryTimeRange
+PdhTranslate009CounterA
+PdhTranslate009CounterW
+PdhTranslateLocaleCounterA
+PdhTranslateLocaleCounterW
+PdhUpdateLogA
+PdhUpdateLogFileCatalog
+PdhUpdateLogW
+PdhValidatePathA
+PdhValidatePathExA
+PdhValidatePathExW
+PdhValidatePathW
+PdhVbAddCounter
+PdhVbCreateCounterPathList
+PdhVbGetCounterPathElements
+PdhVbGetCounterPathFromList
+PdhVbGetDoubleCounterValue
+PdhVbGetLogFileSize
+PdhVbGetOneCounterPath
+PdhVbIsGoodStatus
+PdhVbOpenLog
+PdhVbOpenQuery
+PdhVbUpdateLog
+PdhVerifySQLDBA
+PdhVerifySQLDBW
+PdhWriteRelogSample
diff --git a/lib/libc/mingw/libarm32/query.def b/lib/libc/mingw/libarm32/query.def
new file mode 100644
index 0000000000..091bd136aa
--- /dev/null
+++ b/lib/libc/mingw/libarm32/query.def
@@ -0,0 +1,51 @@
+;
+; Definition file of query.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "query.dll"
+EXPORTS
+BeginCacheTransaction
+CIBuildQueryNode
+CIBuildQueryTree
+CICreateCommand
+CIGetGlobalPropertyList
+CIMakeICommand
+CIRestrictionToFullTree
+CIState
+CITextToFullTree
+CITextToFullTreeEx
+CITextToSelectTree
+CITextToSelectTreeEx
+CiCreateSecurityDescriptor
+CiSvcMain
+CollectCIISAPIPerformanceData
+CollectCIPerformanceData
+CollectFILTERPerformanceData
+DoneCIISAPIPerformanceData
+DoneCIPerformanceData
+DoneFILTERPerformanceData
+EndCacheTransaction
+FsCiShutdown
+InitializeCIISAPIPerformanceData
+InitializeCIPerformanceData
+InitializeFILTERPerformanceData
+LoadBinaryFilter
+LoadTextFilter
+SetCatalogState
+SetupCache
+SetupCacheEx
+SvcEntry_CiSvc
+BindIFilterFromStorage
+BindIFilterFromStream
+CIRevertToSelf
+CIShutdown
+InternalBindIFilterFromDocCLSID
+InternalBindIFilterFromFileName
+InternalBindIFilterFromStorage
+InternalBindIFilterFromStream
+LoadIFilter
+LoadIFilterEx
+LocateCatalogs
+LocateCatalogsA
+LocateCatalogsW
diff --git a/lib/libc/mingw/libarm32/rasapi32.def b/lib/libc/mingw/libarm32/rasapi32.def
new file mode 100644
index 0000000000..feb82e18fa
--- /dev/null
+++ b/lib/libc/mingw/libarm32/rasapi32.def
@@ -0,0 +1,134 @@
+;
+; Definition file of RASAPI32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "RASAPI32.dll"
+EXPORTS
+DDMFreePhonebookContext
+DDMFreeRemoteEndpoint
+DDMGetAddressesFromPhonebook
+DDMGetPhoneBookContext
+DDMGetPhonebookInfo
+DwCloneEntry
+DwEnumEntryDetails
+DwRasUninitialize
+GetAutoTriggerProfileInfo
+IsActiveAutoTriggerConnection
+LaunchVanUIW
+RasAutoDialSharedConnection
+RasAutodialAddressToNetwork
+RasAutodialEntryToNetwork
+RasClearConnectionStatistics
+RasClearLinkStatistics
+RasCompleteDialMachineCleanup
+RasConfigUserProxySettingsW
+RasConnectionNotificationA
+RasConnectionNotificationW
+RasCreatePhonebookEntryA
+RasCreatePhonebookEntryW
+RasDeleteEntryA
+RasDeleteEntryW
+RasDeleteSubEntryA
+RasDeleteSubEntryW
+RasDialA
+RasDialW
+RasEditPhonebookEntryA
+RasEditPhonebookEntryW
+RasEnumAutodialAddressesA
+RasEnumAutodialAddressesW
+RasEnumConnectionsA
+RasEnumConnectionsW
+RasEnumDevicesA
+RasEnumDevicesW
+RasEnumEntriesA
+RasEnumEntriesW
+RasFreeEapUserIdentityA
+RasFreeEapUserIdentityW
+RasFreeEntryAdvancedProperties
+RasGetAutoTriggerConnectStatus
+RasGetAutodialAddressA
+RasGetAutodialAddressW
+RasGetAutodialEnableA
+RasGetAutodialEnableW
+RasGetAutodialParamA
+RasGetAutodialParamW
+RasGetConnectStatusA
+RasGetConnectStatusW
+RasGetConnectionErrorStringW
+RasGetConnectionStatistics
+RasGetCountryInfoA
+RasGetCountryInfoW
+RasGetCredentialsA
+RasGetCredentialsW
+RasGetCustomAuthDataA
+RasGetCustomAuthDataW
+RasGetEapUserDataA
+RasGetEapUserDataW
+RasGetEapUserIdentityA
+RasGetEapUserIdentityW
+RasGetEntryAdvancedProperties
+RasGetEntryDialParamsA
+RasGetEntryDialParamsW
+RasGetEntryHrasconnW
+RasGetEntryPropertiesA
+RasGetEntryPropertiesW
+RasGetErrorStringA
+RasGetErrorStringW
+RasGetHport
+RasGetLinkStatistics
+RasGetNapStatus
+RasGetPbkPath
+RasGetProjectionInfoA
+RasGetProjectionInfoEx
+RasGetProjectionInfoW
+RasGetSubEntryHandleA
+RasGetSubEntryHandleW
+RasGetSubEntryPropertiesA
+RasGetSubEntryPropertiesW
+RasHandleTriggerConnDisconnect
+RasHangUpA
+RasHangUpW
+RasInvokeEapUI
+RasIsPublicPhonebook
+RasIsSharedConnection
+RasQueryRedialOnLinkFailure
+RasQuerySharedAutoDial
+RasQuerySharedConnection
+RasRenameEntryA
+RasRenameEntryW
+RasScriptGetIpAddress
+RasScriptInit
+RasScriptReceive
+RasScriptSend
+RasScriptTerm
+RasSetAutodialAddressA
+RasSetAutodialAddressW
+RasSetAutodialEnableA
+RasSetAutodialEnableW
+RasSetAutodialParamA
+RasSetAutodialParamW
+RasSetCredentialsA
+RasSetCredentialsW
+RasSetCustomAuthDataA
+RasSetCustomAuthDataW
+RasSetEapUserDataA
+RasSetEapUserDataAEx
+RasSetEapUserDataW
+RasSetEapUserDataWEx
+RasSetEntryAdvancedProperties
+RasSetEntryDialParamsA
+RasSetEntryDialParamsW
+RasSetEntryPropertiesA
+RasSetEntryPropertiesW
+RasSetOldPassword
+RasSetPerConnectionProxy
+RasSetSharedAutoDial
+RasSetSubEntryPropertiesA
+RasSetSubEntryPropertiesW
+RasTriggerConnection
+RasUpdateConnection
+RasValidateEntryNameA
+RasValidateEntryNameW
+RasWriteSharedPbkOptions
+UnInitializeRAS
diff --git a/lib/libc/mingw/libarm32/rasdlg.def b/lib/libc/mingw/libarm32/rasdlg.def
new file mode 100644
index 0000000000..45af4c8536
--- /dev/null
+++ b/lib/libc/mingw/libarm32/rasdlg.def
@@ -0,0 +1,32 @@
+;
+; Definition file of RASDLG.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "RASDLG.dll"
+EXPORTS
+RasHandleDiagnostics
+DwTerminalDlg
+GetRasDialOutProtocols
+RasAutodialQueryDlgA
+RasAutodialQueryDlgW
+RasDialDlgA
+RasDialDlgW
+RasEntryDlgA
+RasEntryDlgW
+RasPhonebookDlgA
+RasPhonebookDlgW
+RasSrvAddPropPages
+RasSrvAllowConnectionsConfig
+RasSrvCleanupService
+RasSrvEnumConnections
+RasSrvHangupConnection
+RasSrvInitializeService
+RasSrvIsConnectionConnected
+RasSrvIsICConfigured
+RasSrvIsServiceRunning
+RasUserEnableManualDial
+RasUserGetManualDial
+RasUserPrefsDlg
+RouterEntryDlgA
+RouterEntryDlgW
diff --git a/lib/libc/mingw/libarm32/rometadata.def b/lib/libc/mingw/libarm32/rometadata.def
new file mode 100644
index 0000000000..8aeef1fd44
--- /dev/null
+++ b/lib/libc/mingw/libarm32/rometadata.def
@@ -0,0 +1,8 @@
+;
+; Definition file of RoMetadata.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "RoMetadata.dll"
+EXPORTS
+MetaDataGetDispenser
diff --git a/lib/libc/mingw/libarm32/sas.def b/lib/libc/mingw/libarm32/sas.def
new file mode 100644
index 0000000000..8e8fadf827
--- /dev/null
+++ b/lib/libc/mingw/libarm32/sas.def
@@ -0,0 +1,8 @@
+;
+; Definition file of SAS.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "SAS.dll"
+EXPORTS
+SendSAS
diff --git a/lib/libc/mingw/libarm32/sfc.def b/lib/libc/mingw/libarm32/sfc.def
new file mode 100644
index 0000000000..07f3783ff5
--- /dev/null
+++ b/lib/libc/mingw/libarm32/sfc.def
@@ -0,0 +1,23 @@
+;
+; Definition file of sfc.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "sfc.dll"
+EXPORTS
+ord_1 @1
+ord_2 @2
+ord_3 @3
+ord_4 @4
+ord_5 @5
+ord_6 @6
+ord_7 @7
+ord_8 @8
+ord_9 @9
+SRSetRestorePoint
+SRSetRestorePointA
+SRSetRestorePointW
+SfcGetNextProtectedFile
+SfcIsFileProtected
+SfcIsKeyProtected
+SfpVerifyFile
diff --git a/lib/libc/mingw/libarm32/shdocvw.def b/lib/libc/mingw/libarm32/shdocvw.def
new file mode 100644
index 0000000000..321c6ab257
--- /dev/null
+++ b/lib/libc/mingw/libarm32/shdocvw.def
@@ -0,0 +1,129 @@
+;
+; Definition file of SHDOCVW.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "SHDOCVW.dll"
+EXPORTS
+ord_101 @101
+ord_102 @102
+ord_103 @103
+ord_104 @104
+ord_105 @105
+AddUrlToFavorites
+ord_110 @110
+ord_111 @111
+DllRegisterWindowClasses
+DoAddToFavDlg
+DoAddToFavDlgW
+ord_115 @115
+ord_116 @116
+ord_117 @117
+ord_118 @118
+ord_119 @119
+ord_120 @120
+ord_121 @121
+ord_122 @122
+ord_123 @123
+DoFileDownload
+ord_125 @125
+DoFileDownloadEx
+DoOrganizeFavDlg
+DoOrganizeFavDlgW
+DoPrivacyDlg
+ord_130 @130
+ord_131 @131
+HlinkFindFrame
+HlinkFrameNavigate
+HlinkFrameNavigateNHL
+ord_135 @135
+ord_136 @136
+ord_137 @137
+ord_138 @138
+ord_139 @139
+ord_140 @140
+ord_141 @141
+ord_142 @142
+ord_143 @143
+ImportPrivacySettings
+ord_145 @145
+ord_146 @146
+ord_147 @147
+ord_148 @148
+ord_149 @149
+ord_150 @150
+ord_151 @151
+ord_152 @152
+ord_153 @153
+OpenURL
+SHGetIDispatchForFolder
+SetQueryNetSessionCount
+SetShellOfflineState
+ord_158 @158
+ord_159 @159
+ord_160 @160
+ord_161 @161
+ord_162 @162
+SHAddSubscribeFavorite
+ord_164 @164
+ord_165 @165
+SoftwareUpdateMessageBox
+ord_167 @167
+URLQualifyA
+ord_169 @169
+ord_170 @170
+ord_171 @171
+ord_172 @172
+ord_173 @173
+ord_174 @174
+ord_175 @175
+ord_176 @176
+ord_177 @177
+ord_178 @178
+ord_179 @179
+ord_180 @180
+ord_181 @181
+URLQualifyW
+ord_183 @183
+ord_185 @185
+ord_187 @187
+ord_188 @188
+ord_189 @189
+ord_190 @190
+ord_191 @191
+ord_192 @192
+ord_194 @194
+ord_195 @195
+ord_196 @196
+ord_197 @197
+ord_198 @198
+ord_199 @199
+ord_200 @200
+ord_203 @203
+ord_204 @204
+ord_208 @208
+ord_209 @209
+ord_210 @210
+ord_211 @211
+ord_212 @212
+ord_213 @213
+ord_214 @214
+ord_215 @215
+ord_216 @216
+ord_217 @217
+ord_218 @218
+ord_219 @219
+ord_221 @221
+ord_222 @222
+ord_223 @223
+ord_224 @224
+ord_225 @225
+ord_226 @226
+ord_227 @227
+ord_228 @228
+ord_229 @229
+ord_230 @230
+ord_231 @231
+ord_232 @232
+ord_233 @233
+ord_234 @234
diff --git a/lib/libc/mingw/libarm32/slc.def b/lib/libc/mingw/libarm32/slc.def
new file mode 100644
index 0000000000..3bac8e5294
--- /dev/null
+++ b/lib/libc/mingw/libarm32/slc.def
@@ -0,0 +1,48 @@
+;
+; Definition file of SLC.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "SLC.dll"
+EXPORTS
+SLpCheckProductKey
+SLpGetGenuineLocal
+SLpProcessOemProductKey
+SLpUpdateComponentTokens
+SLClose
+SLConsumeRight
+SLConsumeWindowsRight
+SLDepositOfflineConfirmationId
+SLDepositOfflineConfirmationIdEx
+SLFireEvent
+SLGenerateOfflineInstallationId
+SLGenerateOfflineInstallationIdEx
+SLGetApplicationInformation
+SLGetGenuineInformation
+SLGetInstalledProductKeyIds
+SLGetLicense
+SLGetLicenseFileId
+SLGetLicenseInformation
+SLGetLicensingStatusInformation
+SLGetPKeyId
+SLGetPKeyInformation
+SLGetPolicyInformation
+SLGetPolicyInformationDWORD
+SLGetProductSkuInformation
+SLGetSLIDList
+SLGetServiceInformation
+SLGetWindowsInformation
+SLGetWindowsInformationDWORD
+SLInstallLicense
+SLInstallProofOfPurchase
+SLIsWindowsGenuineLocal
+SLOpen
+SLReArmWindows
+SLRegisterEvent
+SLRegisterWindowsEvent
+SLSetCurrentProductKey
+SLSetGenuineInformation
+SLUninstallLicense
+SLUninstallProofOfPurchase
+SLUnregisterEvent
+SLUnregisterWindowsEvent
diff --git a/lib/libc/mingw/libarm32/spoolss.def b/lib/libc/mingw/libarm32/spoolss.def
new file mode 100644
index 0000000000..9635032c37
--- /dev/null
+++ b/lib/libc/mingw/libarm32/spoolss.def
@@ -0,0 +1,205 @@
+;
+; Definition file of SPOOLSS.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "SPOOLSS.DLL"
+EXPORTS
+OpenPrinterExW
+RouterCorePrinterDriverInstalled
+RouterCreatePrintAsyncNotificationChannel
+RouterDeletePrinterDriverPackage
+RouterGetCorePrinterDrivers
+RouterGetPrintClassObject
+RouterGetPrinterDriverPackagePath
+RouterInstallPrinterDriverFromPackage
+RouterRegisterForPrintAsyncNotifications
+RouterUnregisterForPrintAsyncNotifications
+RouterUploadPrinterDriverPackage
+AbortPrinter
+AddFormW
+AddJobW
+AddMonitorW
+AddPerMachineConnectionW
+AddPortExW
+AddPortW
+AddPrintProcessorW
+AddPrintProvidorW
+AddPrinterConnectionW
+AddPrinterDriverExW
+AddPrinterDriverW
+AddPrinterExW
+AddPrinterW
+AdjustPointers
+AdjustPointersInStructuresArray
+AlignKMPtr
+AlignRpcPtr
+AllocSplStr
+AllowRemoteCalls
+AppendPrinterNotifyInfoData
+BuildOtherNamesFromMachineName
+CacheAddName
+CacheCreateAndAddNode
+CacheCreateAndAddNodeWithIPAddresses
+CacheDeleteNode
+CacheIsNameCluster
+CacheIsNameInNodeList
+CallDrvDevModeConversion
+CallRouterFindFirstPrinterChangeNotification
+CheckLocalCall
+ClosePrinter
+ConfigurePortW
+CreatePrinterIC
+DeleteFormW
+DeleteMonitorW
+DeletePerMachineConnectionW
+DeletePortW
+DeletePrintProcessorW
+DeletePrintProvidorW
+DeletePrinter
+DeletePrinterConnectionW
+DeletePrinterDataExW
+DeletePrinterDataW
+DeletePrinterDriverExW
+DeletePrinterDriverW
+DeletePrinterIC
+DeletePrinterKeyW
+DllAllocSplMem
+DllAllocSplStr
+DllFreeSplMem
+DllFreeSplStr
+DllReallocSplMem
+DllReallocSplStr
+EndDocPrinter
+EndPagePrinter
+EnumFormsW
+EnumJobsW
+EnumMonitorsW
+EnumPerMachineConnectionsW
+EnumPortsW
+EnumPrintProcessorDatatypesW
+EnumPrintProcessorsW
+EnumPrinterDataExW
+EnumPrinterDataW
+EnumPrinterDriversW
+EnumPrinterKeyW
+EnumPrintersW
+FindClosePrinterChangeNotification
+FlushPrinter
+FormatPrinterForRegistryKey
+FormatRegistryKeyForPrinter
+FreeOtherNames
+GetFormW
+GetJobAttributes
+GetJobAttributesEx
+GetJobW
+GetNetworkId
+GetPrintProcessorDirectoryW
+GetPrinterDataExW
+GetPrinterDataW
+GetPrinterDriverDirectoryW
+GetPrinterDriverExW
+GetPrinterDriverW
+GetPrinterW
+GetServerPolicy
+GetShrinkedSize
+GetSpoolerTlsIndexes
+ImpersonatePrinterClient
+InitializeRouter
+IsNameTheLocalMachineOrAClusterSpooler
+IsNamedPipeRpcCall
+MIDL_user_allocate1
+MIDL_user_free1
+MakeOffset
+MakePTR
+MarshallDownStructure
+MarshallDownStructuresArray
+MarshallUpStructure
+MarshallUpStructuresArray
+OldGetPrinterDriverW
+OpenPrinter2W
+OpenPrinterPort2W
+OpenPrinterW
+PackStringToEOB
+PackStrings
+PartialReplyPrinterChangeNotification
+PlayGdiScriptOnPrinterIC
+PrinterHandleRundown
+PrinterMessageBoxW
+ProvidorFindClosePrinterChangeNotification
+ProvidorFindFirstPrinterChangeNotification
+ReadPrinter
+ReallocSplMem
+ReallocSplStr
+RemoteFindFirstPrinterChangeNotification
+ReplyClosePrinter
+ReplyOpenPrinter
+ReplyPrinterChangeNotification
+ReplyPrinterChangeNotificationEx
+ReportJobProcessingProgress
+ResetPrinterW
+RevertToPrinterSelf
+RouterAddPrinterConnection2
+RouterAllocBidiMem
+RouterAllocBidiResponseContainer
+RouterAllocPrinterNotifyInfo
+RouterBroadcastMessage
+RouterFindCompatibleDriver
+RouterFindFirstPrinterChangeNotification
+RouterFindNextPrinterChangeNotification
+RouterFreeBidiMem
+RouterFreeBidiResponseContainer
+RouterFreePrinterNotifyInfo
+RouterInternalGetPrinterDriver
+RouterRefreshPrinterChangeNotification
+RouterReplyPrinter
+RouterSpoolerSetPolicy
+ScheduleJob
+SeekPrinter
+SendRecvBidiData
+SetFormW
+SetJobW
+SetPortW
+SetPrinterDataExW
+SetPrinterDataW
+SetPrinterW
+SplCloseSpoolFileHandle
+SplCommitSpoolData
+SplDriverUnloadComplete
+SplGetClientUserHandle
+SplGetSpoolFileInfo
+SplGetUserSidStringFromToken
+SplInitializeWinSpoolDrv
+SplIsSessionZero
+SplIsUpgrade
+SplProcessPnPEvent
+SplProcessSessionEvent
+SplPromptUIInUsersSession
+SplQueryUserInfo
+SplReadPrinter
+SplRegisterForDeviceEvents
+SplRegisterForSessionEvents
+SplShutDownRouter
+SplUalCollectData
+SplUnregisterForDeviceEvents
+SplUnregisterForSessionEvents
+SpoolerFindClosePrinterChangeNotification
+SpoolerFindFirstPrinterChangeNotification
+SpoolerFindNextPrinterChangeNotification
+SpoolerFreePrinterNotifyInfo
+SpoolerHasInitialized
+SpoolerInit
+SpoolerRefreshPrinterChangeNotification
+StartDocPrinterW
+StartPagePrinter
+UndoAlignKMPtr
+UndoAlignRpcPtr
+UpdateBufferSize
+UpdatePrinterRegAll
+UpdatePrinterRegUser
+WaitForPrinterChange
+WaitForSpoolerInitialization
+WritePrinter
+XcvDataW
+bGetDevModePerUser
+bSetDevModePerUser
diff --git a/lib/libc/mingw/libarm32/uiautomationcore.def b/lib/libc/mingw/libarm32/uiautomationcore.def
new file mode 100644
index 0000000000..6196bc3d98
--- /dev/null
+++ b/lib/libc/mingw/libarm32/uiautomationcore.def
@@ -0,0 +1,102 @@
+;
+; Definition file of UIAutomationCore.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "UIAutomationCore.DLL"
+EXPORTS
+DockPattern_SetDockPosition
+ExpandCollapsePattern_Collapse
+ExpandCollapsePattern_Expand
+GridPattern_GetItem
+InvokePattern_Invoke
+ItemContainerPattern_FindItemByProperty
+LegacyIAccessiblePattern_DoDefaultAction
+LegacyIAccessiblePattern_GetIAccessible
+LegacyIAccessiblePattern_Select
+LegacyIAccessiblePattern_SetValue
+MultipleViewPattern_GetViewName
+MultipleViewPattern_SetCurrentView
+RangeValuePattern_SetValue
+ScrollItemPattern_ScrollIntoView
+ScrollPattern_Scroll
+ScrollPattern_SetScrollPercent
+SelectionItemPattern_AddToSelection
+SelectionItemPattern_RemoveFromSelection
+SelectionItemPattern_Select
+SynchronizedInputPattern_Cancel
+SynchronizedInputPattern_StartListening
+TextPattern_GetSelection
+TextPattern_GetVisibleRanges
+TextPattern_RangeFromChild
+TextPattern_RangeFromPoint
+TextPattern_get_DocumentRange
+TextPattern_get_SupportedTextSelection
+TextRange_AddToSelection
+TextRange_Clone
+TextRange_Compare
+TextRange_CompareEndpoints
+TextRange_ExpandToEnclosingUnit
+TextRange_FindAttribute
+TextRange_FindText
+TextRange_GetAttributeValue
+TextRange_GetBoundingRectangles
+TextRange_GetChildren
+TextRange_GetEnclosingElement
+TextRange_GetText
+TextRange_Move
+TextRange_MoveEndpointByRange
+TextRange_MoveEndpointByUnit
+TextRange_RemoveFromSelection
+TextRange_ScrollIntoView
+TextRange_Select
+TogglePattern_Toggle
+TransformPattern_Move
+TransformPattern_Resize
+TransformPattern_Rotate
+UiaAddEvent
+UiaClientsAreListening
+UiaDisconnectAllProviders
+UiaDisconnectProvider
+UiaEventAddWindow
+UiaEventRemoveWindow
+UiaFind
+UiaGetErrorDescription
+UiaGetPatternProvider
+UiaGetPropertyValue
+UiaGetReservedMixedAttributeValue
+UiaGetReservedNotSupportedValue
+UiaGetRootNode
+UiaGetRuntimeId
+UiaGetUpdatedCache
+UiaHPatternObjectFromVariant
+UiaHTextRangeFromVariant
+UiaHUiaNodeFromVariant
+UiaHasServerSideProvider
+UiaHostProviderFromHwnd
+UiaIAccessibleFromProvider
+UiaLookupId
+UiaNavigate
+UiaNodeFromFocus
+UiaNodeFromHandle
+UiaNodeFromPoint
+UiaNodeFromProvider
+UiaNodeRelease
+UiaPatternRelease
+UiaProviderForNonClient
+UiaProviderFromIAccessible
+UiaRaiseAsyncContentLoadedEvent
+UiaRaiseAutomationEvent
+UiaRaiseAutomationPropertyChangedEvent
+UiaRaiseStructureChangedEvent
+UiaRaiseTextEditTextChangedEvent
+UiaRegisterProviderCallback
+UiaRemoveEvent
+UiaReturnRawElementProvider
+UiaSetFocus
+UiaTextRangeRelease
+ValuePattern_SetValue
+VirtualizedItemPattern_Realize
+WindowPattern_Close
+WindowPattern_SetWindowVisualState
+WindowPattern_WaitForInputIdle
diff --git a/lib/libc/mingw/libarm32/vssapi.def b/lib/libc/mingw/libarm32/vssapi.def
new file mode 100644
index 0000000000..3aff0956b6
--- /dev/null
+++ b/lib/libc/mingw/libarm32/vssapi.def
@@ -0,0 +1,89 @@
+;
+; Definition file of VSSAPI.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "VSSAPI.DLL"
+EXPORTS
+IsVolumeSnapshotted
+VssFreeSnapshotProperties
+ShouldBlockRevert
+??0CVssJetWriter@@QAA@XZ
+??0CVssWriter@@QAA@XZ
+??1CVssJetWriter@@UAA@XZ
+??1CVssWriter@@UAA@XZ
+?AreComponentsSelected@CVssJetWriter@@IBA_NXZ
+?AreComponentsSelected@CVssWriter@@IBA_NXZ
+?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z
+?CreateVssExamineWriterMetadata@@YGJPAGPAPAVIVssExamineWriterMetadata@@@Z
+?CreateVssSnapshotSetDescription@@YAJU_GUID@@JPAPAVIVssSnapshotSetDescription@@@Z
+?GetBackupType@CVssJetWriter@@IBA?AW4_VSS_BACKUP_TYPE@@XZ
+?GetBackupType@CVssWriter@@IBA?AW4_VSS_BACKUP_TYPE@@XZ
+?GetContext@CVssJetWriter@@IBAJXZ
+?GetContext@CVssWriter@@IBAJXZ
+?GetCurrentLevel@CVssJetWriter@@IBA?AW4_VSS_APPLICATION_LEVEL@@XZ
+?GetCurrentLevel@CVssWriter@@IBA?AW4_VSS_APPLICATION_LEVEL@@XZ
+?GetCurrentSnapshotSetId@CVssJetWriter@@IBA?AU_GUID@@XZ
+?GetCurrentSnapshotSetId@CVssWriter@@IBA?AU_GUID@@XZ
+?GetCurrentVolumeArray@CVssJetWriter@@IBAPAPBGXZ
+?GetCurrentVolumeArray@CVssWriter@@IBAPAPBGXZ
+?GetCurrentVolumeCount@CVssJetWriter@@IBAIXZ
+?GetCurrentVolumeCount@CVssWriter@@IBAIXZ
+?GetRestoreType@CVssJetWriter@@IBA?AW4_VSS_RESTORE_TYPE@@XZ
+?GetRestoreType@CVssWriter@@IBA?AW4_VSS_RESTORE_TYPE@@XZ
+?GetSnapshotDeviceName@CVssJetWriter@@IBAJPBGPAPBG@Z
+?GetSnapshotDeviceName@CVssWriter@@IBAJPBGPAPBG@Z
+?Initialize@CVssJetWriter@@QAAJU_GUID@@PBG_N211K@Z
+?Initialize@CVssWriter@@QAAJU_GUID@@PBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N1@Z
+?InstallAlternateWriter@CVssWriter@@QAAJU_GUID@@0@Z
+?IsBootableSystemStateBackedUp@CVssJetWriter@@IBA_NXZ
+?IsBootableSystemStateBackedUp@CVssWriter@@IBA_NXZ
+?IsPartialFileSupportEnabled@CVssJetWriter@@IBA_NXZ
+?IsPartialFileSupportEnabled@CVssWriter@@IBA_NXZ
+?IsPathAffected@CVssJetWriter@@IBA_NPBG@Z
+?IsPathAffected@CVssWriter@@IBA_NPBG@Z
+?LoadVssSnapshotSetDescription@@YAJPBGPAPAVIVssSnapshotSetDescription@@U_GUID@@@Z
+?OnAbortBegin@CVssJetWriter@@UAAXXZ
+?OnAbortEnd@CVssJetWriter@@UAAXXZ
+?OnBackOffIOOnVolume@CVssWriter@@UAA_NPAGU_GUID@@1@Z
+?OnBackupComplete@CVssWriter@@UAA_NPAVIVssWriterComponents@@@Z
+?OnBackupCompleteBegin@CVssJetWriter@@UAA_NPAVIVssWriterComponents@@@Z
+?OnBackupCompleteEnd@CVssJetWriter@@UAA_NPAVIVssWriterComponents@@_N@Z
+?OnBackupShutdown@CVssWriter@@UAA_NU_GUID@@@Z
+?OnContinueIOOnVolume@CVssWriter@@UAA_NPAGU_GUID@@1@Z
+?OnFreezeBegin@CVssJetWriter@@UAA_NXZ
+?OnFreezeEnd@CVssJetWriter@@UAA_N_N@Z
+?OnIdentify@CVssJetWriter@@UAA_NPAVIVssCreateWriterMetadata@@@Z
+?OnIdentify@CVssWriter@@UAA_NPAVIVssCreateWriterMetadata@@@Z
+?OnPostRestore@CVssWriter@@UAA_NPAVIVssWriterComponents@@@Z
+?OnPostRestoreBegin@CVssJetWriter@@UAA_NPAVIVssWriterComponents@@@Z
+?OnPostRestoreEnd@CVssJetWriter@@UAA_NPAVIVssWriterComponents@@_N@Z
+?OnPostSnapshot@CVssJetWriter@@UAA_NPAVIVssWriterComponents@@@Z
+?OnPostSnapshot@CVssWriter@@UAA_NPAVIVssWriterComponents@@@Z
+?OnPreRestore@CVssWriter@@UAA_NPAVIVssWriterComponents@@@Z
+?OnPreRestoreBegin@CVssJetWriter@@UAA_NPAVIVssWriterComponents@@@Z
+?OnPreRestoreEnd@CVssJetWriter@@UAA_NPAVIVssWriterComponents@@_N@Z
+?OnPrepareBackup@CVssWriter@@UAA_NPAVIVssWriterComponents@@@Z
+?OnPrepareBackupBegin@CVssJetWriter@@UAA_NPAVIVssWriterComponents@@@Z
+?OnPrepareBackupEnd@CVssJetWriter@@UAA_NPAVIVssWriterComponents@@_N@Z
+?OnPrepareSnapshotBegin@CVssJetWriter@@UAA_NXZ
+?OnPrepareSnapshotEnd@CVssJetWriter@@UAA_N_N@Z
+?OnThawBegin@CVssJetWriter@@UAA_NXZ
+?OnThawEnd@CVssJetWriter@@UAA_N_N@Z
+?OnVSSApplicationStartup@CVssWriter@@UAA_NXZ
+?OnVSSShutdown@CVssWriter@@UAA_NXZ
+?SetWriterFailure@CVssJetWriter@@IAAJJ@Z
+?SetWriterFailure@CVssWriter@@IAAJJ@Z
+?Subscribe@CVssWriter@@QAAJK@Z
+?Uninitialize@CVssJetWriter@@QAAXXZ
+?Unsubscribe@CVssWriter@@QAAJXZ
+CreateVssBackupComponentsInternal
+CreateVssExamineWriterMetadataInternal
+CreateVssExpressWriterInternal
+CreateWriter
+CreateWriterEx
+GetProviderMgmtInterface
+GetProviderMgmtInterfaceInternal
+IsVolumeSnapshottedInternal
+ShouldBlockRevertInternal
+VssFreeSnapshotPropertiesInternal
diff --git a/lib/libc/mingw/libarm32/wcmapi.def b/lib/libc/mingw/libarm32/wcmapi.def
new file mode 100644
index 0000000000..e7b6eb4c58
--- /dev/null
+++ b/lib/libc/mingw/libarm32/wcmapi.def
@@ -0,0 +1,31 @@
+;
+; Definition file of wcmapi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "wcmapi.dll"
+EXPORTS
+WcmBeginIgnoreProfileList
+WcmCancelOnDemandRequest
+WcmCloseHandle
+WcmCloseOnDemandRequestHandle
+WcmEndIgnoreProfileList
+WcmEnterConnectedStandby
+WcmEnterNetQuiet
+WcmEnumInterfaces
+WcmExitConnectedStandby
+WcmExitNetQuiet
+WcmFreeMemory
+WcmGetInterfaceToken
+WcmGetProfileList
+WcmOpenHandle
+WcmOpenOnDemandRequestHandle
+WcmOrderConnection
+WcmQueryOnDemandRequestStateInfo
+WcmQueryParameter
+WcmQueryProperty
+WcmResetIgnoreProfileList
+WcmSetParameter
+WcmSetProfileList
+WcmSetProperty
+WcmStartOnDemandRequest
diff --git a/lib/libc/mingw/libarm32/webservices.def b/lib/libc/mingw/libarm32/webservices.def
new file mode 100644
index 0000000000..45fb377b76
--- /dev/null
+++ b/lib/libc/mingw/libarm32/webservices.def
@@ -0,0 +1,200 @@
+;
+; Definition file of webservices.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "webservices.dll"
+EXPORTS
+WsAbandonCall
+WsAbandonMessage
+WsAbortChannel
+WsAbortListener
+WsAbortServiceHost
+WsAbortServiceProxy
+WsAcceptChannel
+WsAddCustomHeader
+WsAddErrorString
+WsAddMappedHeader
+WsAddressMessage
+WsAlloc
+WsAsyncExecute
+WsCall
+WsCheckMustUnderstandHeaders
+WsCloseChannel
+WsCloseListener
+WsCloseServiceHost
+WsCloseServiceProxy
+WsCombineUrl
+WsCopyError
+WsCopyNode
+WsCreateChannel
+WsCreateChannelForListener
+WsCreateError
+WsCreateFaultFromError
+WsCreateHeap
+WsCreateListener
+WsCreateMessage
+WsCreateMessageForChannel
+WsCreateMetadata
+WsCreateReader
+WsCreateServiceEndpointFromTemplate
+WsCreateServiceHost
+WsCreateServiceProxy
+WsCreateServiceProxyFromTemplate
+WsCreateWriter
+WsCreateXmlBuffer
+WsCreateXmlSecurityToken
+WsDateTimeToFileTime
+WsDecodeUrl
+WsEncodeUrl
+WsEndReaderCanonicalization
+WsEndWriterCanonicalization
+WsFileTimeToDateTime
+WsFillBody
+WsFillReader
+WsFindAttribute
+WsFlushBody
+WsFlushWriter
+WsFreeChannel
+WsFreeError
+WsFreeHeap
+WsFreeListener
+WsFreeMessage
+WsFreeMetadata
+WsFreeReader
+WsFreeSecurityToken
+WsFreeServiceHost
+WsFreeServiceProxy
+WsFreeWriter
+WsGetChannelProperty
+WsGetCustomHeader
+WsGetDictionary
+WsGetErrorProperty
+WsGetErrorString
+WsGetFaultErrorDetail
+WsGetFaultErrorProperty
+WsGetHeader
+WsGetHeaderAttributes
+WsGetHeapProperty
+WsGetListenerProperty
+WsGetMappedHeader
+WsGetMessageProperty
+WsGetMetadataEndpoints
+WsGetMetadataProperty
+WsGetMissingMetadataDocumentAddress
+WsGetNamespaceFromPrefix
+WsGetOperationContextProperty
+WsGetPolicyAlternativeCount
+WsGetPolicyProperty
+WsGetPrefixFromNamespace
+WsGetReaderNode
+WsGetReaderPosition
+WsGetReaderProperty
+WsGetSecurityContextProperty
+WsGetSecurityTokenProperty
+WsGetServiceHostProperty
+WsGetServiceProxyProperty
+WsGetWriterPosition
+WsGetWriterProperty
+WsGetXmlAttribute
+WsInitializeMessage
+WsMarkHeaderAsUnderstood
+WsMatchPolicyAlternative
+WsMoveReader
+WsMoveWriter
+WsOpenChannel
+WsOpenListener
+WsOpenServiceHost
+WsOpenServiceProxy
+WsPullBytes
+WsPushBytes
+WsReadArray
+WsReadAttribute
+WsReadBody
+WsReadBytes
+WsReadChars
+WsReadCharsUtf8
+WsReadElement
+WsReadEndAttribute
+WsReadEndElement
+WsReadEndpointAddressExtension
+WsReadEnvelopeEnd
+WsReadEnvelopeStart
+WsReadMessageEnd
+WsReadMessageStart
+WsReadMetadata
+WsReadNode
+WsReadQualifiedName
+WsReadStartAttribute
+WsReadStartElement
+WsReadToStartElement
+WsReadType
+WsReadValue
+WsReadXmlBuffer
+WsReadXmlBufferFromBytes
+WsReceiveMessage
+WsRegisterOperationForCancel
+WsRemoveCustomHeader
+WsRemoveHeader
+WsRemoveMappedHeader
+WsRemoveNode
+WsRequestReply
+WsRequestSecurityToken
+WsResetChannel
+WsResetError
+WsResetHeap
+WsResetListener
+WsResetMessage
+WsResetMetadata
+WsResetServiceHost
+WsResetServiceProxy
+WsRevokeSecurityContext
+WsSendFaultMessageForError
+WsSendMessage
+WsSendReplyMessage
+WsSetChannelProperty
+WsSetErrorProperty
+WsSetFaultErrorDetail
+WsSetFaultErrorProperty
+WsSetHeader
+WsSetInput
+WsSetInputToBuffer
+WsSetListenerProperty
+WsSetMessageProperty
+WsSetOutput
+WsSetOutputToBuffer
+WsSetReaderPosition
+WsSetWriterPosition
+WsShutdownSessionChannel
+WsSkipNode
+WsStartReaderCanonicalization
+WsStartWriterCanonicalization
+WsTrimXmlWhitespace
+WsVerifyXmlNCName
+WsWriteArray
+WsWriteAttribute
+WsWriteBody
+WsWriteBytes
+WsWriteChars
+WsWriteCharsUtf8
+WsWriteElement
+WsWriteEndAttribute
+WsWriteEndCData
+WsWriteEndElement
+WsWriteEndStartElement
+WsWriteEnvelopeEnd
+WsWriteEnvelopeStart
+WsWriteMessageEnd
+WsWriteMessageStart
+WsWriteNode
+WsWriteQualifiedName
+WsWriteStartAttribute
+WsWriteStartCData
+WsWriteStartElement
+WsWriteText
+WsWriteType
+WsWriteValue
+WsWriteXmlBuffer
+WsWriteXmlBufferToBytes
+WsWriteXmlnsAttribute
+WsXmlStringEquals
diff --git a/lib/libc/mingw/libarm32/wer.def b/lib/libc/mingw/libarm32/wer.def
new file mode 100644
index 0000000000..f8a6f06718
--- /dev/null
+++ b/lib/libc/mingw/libarm32/wer.def
@@ -0,0 +1,129 @@
+;
+; Definition file of wer.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "wer.dll"
+EXPORTS
+WerSysprepCleanup
+WerSysprepGeneralize
+WerSysprepSpecialize
+WerUnattendedSetup
+WerpAddAppCompatData
+WerpAddMemoryBlock
+WerpAddRegisteredDataToReport
+WerpArchiveReport
+WerpCancelResponseDownload
+WerpCancelUpload
+WerpCloseStore
+WerpCreateMachineStore
+WerpCreateUserStore
+WerpDeleteReport
+WerpDestroyWerString
+WerpDownloadResponse
+WerpDownloadResponseTemplate
+WerpEnumerateStoreNext
+WerpEnumerateStoreStart
+WerpExtractReportFiles
+WerpFlushImageCache
+WerpForceDeferredCollection
+WerpFreeUnmappedVaRanges
+WerpGetBucketId
+WerpGetDynamicParameter
+WerpGetEventType
+WerpGetExtendedDiagData
+WerpGetFileByIndex
+WerpGetFilePathByIndex
+WerpGetLegacyBucketId
+WerpGetLoadedModuleByIndex
+WerpGetNumFiles
+WerpGetNumLoadedModules
+WerpGetNumSigParams
+WerpGetReportFinalConsent
+WerpGetReportFlags
+WerpGetReportInformation
+WerpGetReportSettings
+WerpGetReportTime
+WerpGetReportType
+WerpGetResponseId
+WerpGetResponseUrl
+WerpGetSigParamByIndex
+WerpGetStorePath
+WerpGetStoreType
+WerpGetTextFromReport
+WerpGetUIParamByIndex
+WerpGetUploadTime
+WerpGetWerStringData
+WerpGetWow64Process
+WerpHashApplicationParameters
+WerpInitializeImageCache
+WerpIsOnBattery
+WerpIsTransportAvailable
+WerpLoadReport
+WerpLoadReportFromBuffer
+WerpOpenMachineArchive
+WerpOpenMachineQueue
+WerpOpenUserArchive
+WerpPromptUser
+WerpPruneStore
+WerpReportCancel
+WerpReportSprintfParameter
+WerpReserveMachineQueueReportDir
+WerpResetTransientImageCacheStatistics
+WerpRestartApplication
+WerpSetDynamicParameter
+WerpSetEventName
+WerpSetReportApplicationIdentity
+WerpSetReportFlags
+WerpSetReportInformation
+WerpSetReportNamespaceParameter
+WerpSetReportTime
+WerpSetReportUploadContextToken
+WerpShowUpsellUI
+WerpStitchedMinidumpVmPostReadCallback
+WerpStitchedMinidumpVmPreReadCallback
+WerpStitchedMinidumpVmQueryCallback
+WerpSubmitReportFromStore
+WerpSvcReportFromMachineQueue
+WerpTraceAuxMemDumpStatistics
+WerpTraceDuration
+WerpTraceImageCacheStatistics
+WerpTraceSnapshotStatistics
+WerpTraceStitchedDumpWriterStatistics
+WerpTraceUnmappedVaRangesStatistics
+WerpUnmapProcessViews
+WerpUpdateReportResponse
+WerpValidateReportKey
+WerpWalkGatherBlocks
+WerAddExcludedApplication
+WerRemoveExcludedApplication
+WerReportAddDump
+WerReportAddFile
+WerReportCloseHandle
+WerReportCreate
+WerReportSetParameter
+WerReportSetUIOption
+WerReportSubmit
+WerpAddFile
+WerpAddFileBuffer
+WerpAddFileCallback
+WerpAuxmdDumpProcessImages
+WerpAuxmdDumpRegisteredBlocks
+WerpAuxmdFree
+WerpAuxmdFreeCopyBuffer
+WerpAuxmdHashVaRanges
+WerpAuxmdInitialize
+WerpAuxmdMapFile
+WerpCreateIntegratorReportId
+WerpDownloadResponseOnly
+WerpFreeString
+WerpGetIntegratorReportId
+WerpGetReportConsent
+WerpGetStoreLocation
+WerpIsDisabled
+WerpLaunchResponse
+WerpOpenUserQueue
+WerpSetAuxiliaryArchivePath
+WerpSetCallBack
+WerpSetDefaultUserConsent
+WerpSetIntegratorReportId
diff --git a/lib/libc/mingw/libarm32/winbio.def b/lib/libc/mingw/libarm32/winbio.def
new file mode 100644
index 0000000000..22a13baa26
--- /dev/null
+++ b/lib/libc/mingw/libarm32/winbio.def
@@ -0,0 +1,68 @@
+;
+; Definition file of winbio.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "winbio.dll"
+EXPORTS
+WinBioNotifyPasswordChange
+_BioLogonIdentifiedUser
+WinBioAcquireFocus
+WinBioAsyncEnumBiometricUnits
+WinBioAsyncEnumDatabases
+WinBioAsyncEnumServiceProviders
+WinBioAsyncMonitorFrameworkChanges
+WinBioAsyncOpenFramework
+WinBioAsyncOpenSession
+WinBioCancel
+WinBioCaptureSample
+WinBioCaptureSampleWithCallback
+WinBioCloseFramework
+WinBioCloseSession
+WinBioControlUnit
+WinBioControlUnitPrivileged
+WinBioDeleteTemplate
+WinBioEnrollBegin
+WinBioEnrollCapture
+WinBioEnrollCaptureWithCallback
+WinBioEnrollCommit
+WinBioEnrollDiscard
+WinBioEnumBiometricUnits
+WinBioEnumDatabases
+WinBioEnumEnrollments
+WinBioEnumServiceProviders
+WinBioFree
+WinBioGetCredentialState
+WinBioGetCredentialWithTicket
+WinBioGetDomainLogonSetting
+WinBioGetEnabledSetting
+WinBioGetLogonSetting
+WinBioGetMSACredentialState
+WinBioGetMSACredentialWithTicket
+WinBioGetProperty
+WinBioIdentify
+WinBioIdentifyAndReleaseTicket
+WinBioIdentifyWithCallback
+WinBioLocateSensor
+WinBioLocateSensorWithCallback
+WinBioLockUnit
+WinBioLogonIdentifiedUser
+WinBioOpenSession
+WinBioProtectData
+WinBioRegisterEventMonitor
+WinBioRegisterServiceMonitor
+WinBioReleaseFocus
+WinBioRemoveAllCredentials
+WinBioRemoveAllDomainCredentials
+WinBioRemoveCredential
+WinBioRemoveMSACredential
+WinBioSetCredential
+WinBioSetMSACredential
+WinBioUnlockUnit
+WinBioUnprotectData
+WinBioUnregisterEventMonitor
+WinBioUnregisterServiceMonitor
+WinBioVerify
+WinBioVerifyAndReleaseTicket
+WinBioVerifyWithCallback
+WinBioWait
diff --git a/lib/libc/mingw/libarm32/winsta.def b/lib/libc/mingw/libarm32/winsta.def
new file mode 100644
index 0000000000..b7442fa6a3
--- /dev/null
+++ b/lib/libc/mingw/libarm32/winsta.def
@@ -0,0 +1,173 @@
+;
+; Definition file of WINSTA.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "WINSTA.dll"
+EXPORTS
+WinStationRegisterConsoleNotificationEx2
+LogonIdFromWinStationNameA
+LogonIdFromWinStationNameW
+RemoteAssistancePrepareSystemRestore
+ServerGetInternetConnectorStatus
+ServerLicensingClose
+ServerLicensingDeactivateCurrentPolicy
+ServerLicensingFreePolicyInformation
+ServerLicensingGetAvailablePolicyIds
+ServerLicensingGetPolicy
+ServerLicensingGetPolicyInformationA
+ServerLicensingGetPolicyInformationW
+ServerLicensingLoadPolicy
+ServerLicensingOpenA
+ServerLicensingOpenW
+ServerLicensingSetPolicy
+ServerLicensingUnloadPolicy
+ServerQueryInetConnectorInformationA
+ServerQueryInetConnectorInformationW
+ServerSetInternetConnectorStatus
+WTSRegisterSessionNotificationEx
+WTSUnRegisterSessionNotificationEx
+WinStationActivateLicense
+WinStationAutoReconnect
+WinStationBroadcastSystemMessage
+WinStationCheckAccess
+WinStationCheckLoopBack
+WinStationCloseServer
+WinStationConnectA
+WinStationConnectAndLockDesktop
+WinStationConnectCallback
+WinStationConnectEx
+WinStationConnectW
+WinStationCreateChildSessionTransport
+WinStationDisconnect
+WinStationEnableChildSessions
+WinStationEnumerateA
+WinStationEnumerateExW
+WinStationEnumerateLicenses
+WinStationEnumerateProcesses
+WinStationEnumerateW
+WinStationEnumerate_IndexedA
+WinStationEnumerate_IndexedW
+WinStationFreeConsoleNotification
+WinStationFreeEXECENVDATAEX
+WinStationFreeGAPMemory
+WinStationFreeMemory
+WinStationFreePropertyValue
+WinStationFreeUserCertificates
+WinStationFreeUserCredentials
+WinStationFreeUserSessionInfo
+WinStationGenerateLicense
+WinStationGetAllProcesses
+WinStationGetAllSessionsEx
+WinStationGetAllSessionsW
+WinStationGetAllUserSessions
+WinStationGetChildSessionId
+WinStationGetConnectionProperty
+WinStationGetCurrentSessionCapabilities
+WinStationGetCurrentSessionConnectionProperty
+WinStationGetCurrentSessionTerminalName
+WinStationGetDeviceId
+WinStationGetInitialApplication
+WinStationGetLanAdapterNameA
+WinStationGetLanAdapterNameW
+WinStationGetLoggedOnCount
+WinStationGetMachinePolicy
+WinStationGetParentSessionId
+WinStationGetProcessSid
+WinStationGetRedirectAuthInfo
+WinStationGetRestrictedLogonInfo
+WinStationGetSessionIds
+WinStationGetTermSrvCountersValue
+WinStationGetUserCertificates
+WinStationGetUserCredentials
+WinStationGetUserProfile
+WinStationInstallLicense
+WinStationIsChildSessionsEnabled
+WinStationIsCurrentSessionRemoteable
+WinStationIsHelpAssistantSession
+WinStationIsSessionPermitted
+WinStationIsSessionRemoteable
+WinStationNameFromLogonIdA
+WinStationNameFromLogonIdW
+WinStationNegotiateSession
+WinStationNtsdDebug
+WinStationOpenServerA
+WinStationOpenServerExA
+WinStationOpenServerExW
+WinStationOpenServerW
+WinStationPreCreateGlassReplacementSession
+WinStationQueryAllowConcurrentConnections
+WinStationQueryCurrentSessionInformation
+WinStationQueryEnforcementCore
+WinStationQueryInformationA
+WinStationQueryInformationW
+WinStationQueryLicense
+WinStationQueryLogonCredentialsW
+WinStationQuerySessionVirtualIP
+WinStationQueryUpdateRequired
+WinStationRcmShadow2
+WinStationRedirectErrorMessage
+WinStationRedirectLogonBeginPainting
+WinStationRedirectLogonError
+WinStationRedirectLogonMessage
+WinStationRedirectLogonStatus
+WinStationRegisterConsoleNotification
+WinStationRegisterConsoleNotificationEx
+WinStationRegisterCurrentSessionNotificationEvent
+WinStationRegisterNotificationEvent
+WinStationRemoveLicense
+WinStationRenameA
+WinStationRenameW
+WinStationReportUIResult
+WinStationReset
+WinStationRevertFromServicesSession
+WinStationSendMessageA
+WinStationSendMessageW
+WinStationSendWindowMessage
+WinStationServerPing
+WinStationSetAutologonPassword
+WinStationSetInformationA
+WinStationSetInformationW
+WinStationSetPoolCount
+WinStationSetRenderHint
+WinStationShadow
+WinStationShadowAccessCheck
+WinStationShadowStop
+WinStationShadowStop2
+WinStationShutdownSystem
+WinStationSwitchToServicesSession
+WinStationSystemShutdownStarted
+WinStationSystemShutdownWait
+WinStationTerminateGlassReplacementSession
+WinStationTerminateProcess
+WinStationUnRegisterConsoleNotification
+WinStationUnRegisterNotificationEvent
+WinStationUserLoginAccessCheck
+WinStationVerify
+WinStationVirtualOpen
+WinStationVirtualOpenEx
+WinStationWaitSystemEvent
+_NWLogonQueryAdmin
+_NWLogonSetAdmin
+_WinStationAnnoyancePopup
+_WinStationBeepOpen
+_WinStationBreakPoint
+_WinStationCallback
+_WinStationCheckForApplicationName
+_WinStationFUSCanRemoteUserDisconnect
+_WinStationGetApplicationInfo
+_WinStationNotifyDisconnectPipe
+_WinStationNotifyLogoff
+_WinStationNotifyLogon
+_WinStationNotifyNewSession
+_WinStationOpenSessionDirectory
+_WinStationReInitializeSecurity
+_WinStationReadRegistry
+_WinStationSessionInitialized
+_WinStationShadowTarget
+_WinStationShadowTarget2
+_WinStationShadowTargetSetup
+_WinStationUpdateClientCachedCredentials
+_WinStationUpdateSettings
+_WinStationUpdateUserConfig
+_WinStationWaitForConnect
diff --git a/lib/libc/mingw/libarm32/wldp.def b/lib/libc/mingw/libarm32/wldp.def
new file mode 100644
index 0000000000..384443d93b
--- /dev/null
+++ b/lib/libc/mingw/libarm32/wldp.def
@@ -0,0 +1,12 @@
+;
+; Definition file of Wldp.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "Wldp.dll"
+EXPORTS
+WldpCheckRetailConfiguration
+WldpGetLockdownPolicy
+WldpIsClassInApprovedList
+WldpIsDebugAllowed
+WldpIsRundll32Allowed
diff --git a/lib/libc/mingw/libarm32/wofutil.def b/lib/libc/mingw/libarm32/wofutil.def
new file mode 100644
index 0000000000..de3beb5d00
--- /dev/null
+++ b/lib/libc/mingw/libarm32/wofutil.def
@@ -0,0 +1,14 @@
+;
+; Definition file of WOFUTIL.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "WOFUTIL.dll"
+EXPORTS
+WofEnumEntries
+WofIsExternalFile
+WofSetFileDataLocation
+WofWimAddEntry
+WofWimEnumFiles
+WofWimRemoveEntry
+WofWimUpdateEntry
diff --git a/lib/libc/mingw/libarm32/wsclient.def b/lib/libc/mingw/libarm32/wsclient.def
new file mode 100644
index 0000000000..6bfc84bea8
--- /dev/null
+++ b/lib/libc/mingw/libarm32/wsclient.def
@@ -0,0 +1,38 @@
+;
+; Definition file of WSClient.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "WSClient.dll"
+EXPORTS
+WSpTLRW
+AcquireDeveloperLicense
+CheckDeveloperLicense
+GetApplicationURL
+RefreshBannedAppsList
+RemoveDeveloperLicense
+WSCallServer
+WSCheckForConsumable
+WSEvaluatePackage
+WSGetEvaluatePackageAttempted
+WSLicenseCleanUpState
+WSLicenseClose
+WSLicenseFilterValidAppCategoryIds
+WSLicenseGetAllUserTokens
+WSLicenseGetAllValidAppCategoryIds
+WSLicenseGetDevInstalledApps
+WSLicenseGetExtendedUserInfo
+WSLicenseGetFeatureLicenseResults
+WSLicenseGetLicensesForProducts
+WSLicenseGetOAuthServiceTicket
+WSLicenseGetProductLicenseResults
+WSLicenseInstallLicense
+WSLicenseOpen
+WSLicenseRefreshLicense
+WSLicenseRetrieveMachineID
+WSLicenseRevokeLicenses
+WSLicenseUninstallLicense
+WSNotifyOOBECompletion
+WSNotifyPackageInstalled
+WSTriggerOOBEFileValidation
+g_bPrintFromClientDLL DATA
diff --git a/lib/libc/mingw/libarm32/wsdapi.def b/lib/libc/mingw/libarm32/wsdapi.def
new file mode 100644
index 0000000000..45a9ade6ad
--- /dev/null
+++ b/lib/libc/mingw/libarm32/wsdapi.def
@@ -0,0 +1,52 @@
+;
+; Definition file of wsdapi.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "wsdapi.dll"
+EXPORTS
+WSDAddFirewallCheck
+WSDCancelNetworkChangeNotify
+WSDCopyNameList
+WSDNotifyNetworkChange
+WSDRemoveFirewallCheck
+WSDXMLCompareNames
+WSDAllocateLinkedMemory
+WSDAttachLinkedMemory
+WSDCompareEndpoints
+WSDCopyEndpoint
+WSDCreateDeviceHost
+WSDCreateDeviceHost2
+WSDCreateDeviceHostAdvanced
+WSDCreateDeviceProxy
+WSDCreateDeviceProxy2
+WSDCreateDeviceProxyAdvanced
+WSDCreateDiscoveryProvider
+WSDCreateDiscoveryProvider2
+WSDCreateDiscoveryPublisher
+WSDCreateDiscoveryPublisher2
+WSDCreateHttpAddress
+WSDCreateHttpMessageParameters
+WSDCreateHttpTransport
+WSDCreateMetadataAgent
+WSDCreateOutboundAttachment
+WSDCreateUdpAddress
+WSDCreateUdpMessageParameters
+WSDCreateUdpTransport
+WSDDetachLinkedMemory
+WSDFreeLinkedMemory
+WSDGenerateFault
+WSDGenerateFaultEx
+WSDGenerateRandomDelay
+WSDGetConfigurationOption
+WSDProcessFault
+WSDSetConfigurationOption
+WSDUriDecode
+WSDUriEncode
+WSDXMLAddChild
+WSDXMLAddSibling
+WSDXMLBuildAnyForSingleElement
+WSDXMLCleanupElement
+WSDXMLCreateContext
+WSDXMLGetNameFromBuiltinNamespace
+WSDXMLGetValueFromAny
diff --git a/lib/libc/mingw/libarm32/wsmsvc.def b/lib/libc/mingw/libarm32/wsmsvc.def
new file mode 100644
index 0000000000..c86b719aba
--- /dev/null
+++ b/lib/libc/mingw/libarm32/wsmsvc.def
@@ -0,0 +1,3676 @@
+;
+; Definition file of WsmSvc.DLL
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "WsmSvc.DLL"
+EXPORTS
+??0?$AutoCleanup@V?$AutoDelete@D@@PAD@@QAA@PAD@Z
+??0?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAA@PAG@Z
+??0?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@QAA@PAUIPRange@CWSManIPFilter@@@Z
+??0?$AutoCleanup@V?$AutoDelete@U_SID@@@@PAU_SID@@@@QAA@PAU_SID@@@Z
+??0?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@QAA@PAU_WSMAN_STREAM_ID_SET@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@QAA@PAV?$Handle@VISubscription@@@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAA@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAA@PAV?$SafeSet@PAVCCertMapping@@@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAA@PAV?$SafeSet@PAVCShellUriSettings@@@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAA@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PAV?$SimpleStack@VCListenerOperation@@@@@@QAA@PAV?$SimpleStack@VCListenerOperation@@@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PAV?$SimpleStack@VShellHostEntry@@@@@@QAA@PAV?$SimpleStack@VShellHostEntry@@@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAA@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAA@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAA@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@Z
+??0?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAA@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@QAA@PAVAdminSid@CSecurity@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAA@PAVBlockedRecord@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAA@PAVCBaseConfigCache@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@QAA@PAVCCertMapping@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@QAA@PAVCConfigChangeSource@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@QAA@PAVCListenerSettings@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@QAA@PAVCObserverConfigChangeErrors@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAA@PAVCServiceWatcher@CServiceConfigCache@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@QAA@PAVCShellUriSettings@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@QAA@PAVCWSManEPR@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAA@PAVCWSManResource@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAA@PAVCertHash@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAA@PAVConfigUpdate@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VCredUIDllLoader@@@@PAVCredUIDllLoader@@@@QAA@PAVCredUIDllLoader@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAA@PAVEnumSinkEx@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@QAA@PAVEventHandler@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@QAA@PAVExpiredOperationIdRecord@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@QAA@PAVGPApiManager@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAA@PAVGeneralSinkEx@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@QAA@PAVIChannelObserverFactory@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAA@PAVIQueryDASHSMASHInterface@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAA@PAVISpecification@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@QAA@PAVInteractiveSid@CSecurity@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@QAA@PAVIpHlpApiDllLoader@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@QAA@PAVMachineName@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@QAA@PAVNetworkServiceSid@CSecurity@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@QAA@PAVNtDsApiDllLoader@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAA@PAVOptionValue@SessionOptions@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAA@PAVPacketCreator@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@QAA@PAVPacketParser@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@QAA@PAVResources@Locale@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@QAA@PAVRunAsConfiguration@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAA@PAVSecurityEntry@Catalog@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PAVSendPacketArgs@RobustConnectionBuffer@@@@QAA@PAVSendPacketArgs@RobustConnectionBuffer@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAA@PAVServiceSoapProcessor@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@QAA@PAVShell32DllLoader@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@QAA@PAVShlWApiDllLoader@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@QAA@PAVSubscriptionEnumerator@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@QAA@PAVSubscriptionManager@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAA@PAVTSTRBUFFER@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@QAA@PAVUniqueStringOverflow@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@QAA@PAVUser32DllLoader@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@QAA@PAVWSMANCONFIGTABLE_IDENTITY@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@QAA@PAVWSManMemCryptManager@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAA@PAVWmiEnumContext@@@Z
+??0?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAA@PAVXmlReader@@@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAA@PBG@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QAA@PAD@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAA@PAE@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAA@PAG@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDeleteVector@H@@PAH@@QAA@PAH@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAA@PAPAG@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAA@PAPBG@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@QAA@PAU_CONFIG_UPDATE@@@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAA@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAA@PAU_WINRS_RUN_COMMAND_ARG@@@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@QAA@PAU_WSMAN_OPTION@@@Z
+??0?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QAA@PAX@Z
+??0?$AutoCleanup@V?$AutoFree@E@@PAE@@QAA@PAE@Z
+??0?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAA@PAVPacket@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@QAA@PAUIAppHostChildElementCollection@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@QAA@PAUIAppHostElement@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@QAA@PAUIAppHostElementCollection@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@QAA@PAUIAppHostProperty@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@QAA@PAUIAppHostPropertyCollection@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAA@PAUIClientSecurity@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAA@PAUIEnumWbemClassObject@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAA@PAUIErrorInfo@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAA@PAUIUnknown@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAA@PAUIWbemClassObject@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAA@PAUIWbemContext@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAA@PAUIWbemLocator@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAA@PAUIWbemObjectTextSrc@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAA@PAUIWbemPath@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAA@PAUIWbemPathKeyList@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAA@PAUIWbemQualifierSet@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAA@PAUIWbemQuery@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAA@PAUIWbemServices@@@Z
+??0?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@QAA@PAVApplication@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAA@PAVCBaseConfigCache@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAA@PAVCClientConfigSettings@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@QAA@PAVCCommonConfigSettings@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@QAA@PAVCConfigCacheMap@CBaseConfigCache@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAA@PAVCConfigManager@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@@QAA@PAVCRemoteOperation@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAA@PAVCRemoteSession@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAA@PAVCRequestContext@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@QAA@PAVCServiceCommonConfigSettings@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@QAA@PAVCServiceConfigCache@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAA@PAVCServiceConfigSettings@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAA@PAVCWSManEPR@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@QAA@PAVCWSManGroupPolicyCache@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAA@PAVCWSManGroupPolicyManager@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@QAA@PAVCWSManObject@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QAA@PAVCWSManResource@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAA@PAVCWinRSPluginConfigCache@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAA@PAVCWinRSPluginConfigSettings@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAA@PAVCommand@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@QAA@PAVConfigNotification@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@QAA@PAVConnectShellOperation@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@QAA@PAVCreateShellOperation@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@QAA@PAVDeleteShellOperation@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@QAA@PAVDisconnectOperation@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAA@PAVEnumSinkEx@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAA@PAVGeneralSinkEx@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PAVIISConfigSettings@@@@QAA@PAVIISConfigSettings@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@QAA@PAVIPCSoapProcessor@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAA@PAVIRequestContext@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAA@XZ
+??0?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@QAA@PAVISubscription@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QAA@PAVInboundRequestDetails@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAA@PAVReceiveOperation@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@QAA@PAVReconnectOperation@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAA@PAVSendOperation@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAA@PAVShell@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PAVShellInfo@@@@QAA@PAVShellInfo@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAA@PAVSignalOperation@Client@WSMan@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QAA@PAVUserRecord@@@Z
+??0?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@QAA@PAVWSManHttpListener@@@Z
+??0?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PAVHostMappingTableEntry@@@@QAA@PAVHostMappingTableEntry@@@Z
+??0?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAA@PAVShell@Client@WSMan@@@Z
+??0?$AutoCleanup@VAutoBstr@@PAG@@QAA@PAG@Z
+??0?$AutoCleanup@VAutoBstr@@PAG@@QAA@XZ
+??0?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAA@PAG@Z
+??0?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAA@XZ
+??0?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAA@PBU_CERT_CONTEXT@@@Z
+??0?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAA@XZ
+??0?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAA@PBU_CERT_CHAIN_CONTEXT@@@Z
+??0?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAA@XZ
+??0?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@QAA@PAX@Z
+??0?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@QAA@XZ
+??0?$AutoCleanup@VAutoEnvironmentBlock@@PAX@@QAA@PAX@Z
+??0?$AutoCleanup@VAutoEnvironmentBlock@@PAX@@QAA@XZ
+??0?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@QAA@PAX@Z
+??0?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@QAA@XZ
+??0?$AutoCleanup@VAutoHandle@@PAX@@QAA@PAX@Z
+??0?$AutoCleanup@VAutoHandle@@PAX@@QAA@XZ
+??0?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAA@PAX@Z
+??0?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAA@XZ
+??0?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@QAA@PAUHINSTANCE__@@@Z
+??0?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@QAA@XZ
+??0?$AutoCleanup@VAutoLocalFree@@PAX@@QAA@PAX@Z
+??0?$AutoCleanup@VAutoLocalFree@@PAX@@QAA@XZ
+??0?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAA@PAU_MI_Class@@@Z
+??0?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAA@XZ
+??0?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAA@PAU_MI_Instance@@@Z
+??0?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAA@XZ
+??0?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@QAA@PAUWSMAN_OBJECT@@@Z
+??0?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@QAA@XZ
+??0?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAA@PAUHKEY__@@@Z
+??0?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAA@XZ
+??0?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAA@PAX@Z
+??0?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAA@XZ
+??0?$AutoCleanup@VAutoWaitHandle@@PAX@@QAA@PAX@Z
+??0?$AutoCleanup@VAutoWaitHandle@@PAX@@QAA@XZ
+??0?$AutoDelete@D@@QAA@XZ
+??0?$AutoDelete@G@@QAA@PAG@Z
+??0?$AutoDelete@G@@QAA@XZ
+??0?$AutoDelete@UIPRange@CWSManIPFilter@@@@QAA@XZ
+??0?$AutoDelete@U_SID@@@@QAA@PAU_SID@@@Z
+??0?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@QAA@PAU_WSMAN_STREAM_ID_SET@@@Z
+??0?$AutoDelete@V?$Handle@VISubscription@@@@@@QAA@PAV?$Handle@VISubscription@@@@@Z
+??0?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA@XZ
+??0?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAA@XZ
+??0?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@QAA@PAV?$SafeSet@PAVCCertMapping@@@@@Z
+??0?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@QAA@XZ
+??0?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@QAA@PAV?$SafeSet@PAVCShellUriSettings@@@@@Z
+??0?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@QAA@XZ
+??0?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAA@XZ
+??0?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@QAA@XZ
+??0?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@QAA@XZ
+??0?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAA@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@Z
+??0?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAA@XZ
+??0?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAA@XZ
+??0?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAA@XZ
+??0?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAA@XZ
+??0?$AutoDelete@VAdminSid@CSecurity@@@@QAA@PAVAdminSid@CSecurity@@@Z
+??0?$AutoDelete@VBlockedRecord@@@@QAA@XZ
+??0?$AutoDelete@VCBaseConfigCache@@@@QAA@PAVCBaseConfigCache@@@Z
+??0?$AutoDelete@VCCertMapping@@@@QAA@PAVCCertMapping@@@Z
+??0?$AutoDelete@VCConfigChangeSource@@@@QAA@XZ
+??0?$AutoDelete@VCListenerSettings@@@@QAA@PAVCListenerSettings@@@Z
+??0?$AutoDelete@VCObserverConfigChangeErrors@@@@QAA@XZ
+??0?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QAA@PAVCServiceWatcher@CServiceConfigCache@@@Z
+??0?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QAA@XZ
+??0?$AutoDelete@VCShellUriSettings@@@@QAA@PAVCShellUriSettings@@@Z
+??0?$AutoDelete@VCWSManEPR@@@@QAA@PAVCWSManEPR@@@Z
+??0?$AutoDelete@VCWSManResource@@@@QAA@PAVCWSManResource@@@Z
+??0?$AutoDelete@VCWSManResource@@@@QAA@XZ
+??0?$AutoDelete@VCertHash@@@@QAA@PAVCertHash@@@Z
+??0?$AutoDelete@VCertHash@@@@QAA@XZ
+??0?$AutoDelete@VConfigUpdate@@@@QAA@PAVConfigUpdate@@@Z
+??0?$AutoDelete@VConfigUpdate@@@@QAA@XZ
+??0?$AutoDelete@VCredUIDllLoader@@@@QAA@PAVCredUIDllLoader@@@Z
+??0?$AutoDelete@VEnumSinkEx@@@@QAA@PAVEnumSinkEx@@@Z
+??0?$AutoDelete@VEnumSinkEx@@@@QAA@XZ
+??0?$AutoDelete@VEventHandler@WSMan@@@@QAA@PAVEventHandler@WSMan@@@Z
+??0?$AutoDelete@VExpiredOperationIdRecord@@@@QAA@PAVExpiredOperationIdRecord@@@Z
+??0?$AutoDelete@VGPApiManager@@@@QAA@XZ
+??0?$AutoDelete@VGeneralSinkEx@@@@QAA@PAVGeneralSinkEx@@@Z
+??0?$AutoDelete@VGeneralSinkEx@@@@QAA@XZ
+??0?$AutoDelete@VIChannelObserverFactory@@@@QAA@PAVIChannelObserverFactory@@@Z
+??0?$AutoDelete@VIChannelObserverFactory@@@@QAA@XZ
+??0?$AutoDelete@VIQueryDASHSMASHInterface@@@@QAA@PAVIQueryDASHSMASHInterface@@@Z
+??0?$AutoDelete@VIQueryDASHSMASHInterface@@@@QAA@XZ
+??0?$AutoDelete@VISpecification@@@@QAA@PAVISpecification@@@Z
+??0?$AutoDelete@VISpecification@@@@QAA@XZ
+??0?$AutoDelete@VInteractiveSid@CSecurity@@@@QAA@PAVInteractiveSid@CSecurity@@@Z
+??0?$AutoDelete@VIpHlpApiDllLoader@@@@QAA@PAVIpHlpApiDllLoader@@@Z
+??0?$AutoDelete@VMachineName@@@@QAA@PAVMachineName@@@Z
+??0?$AutoDelete@VNetworkServiceSid@CSecurity@@@@QAA@PAVNetworkServiceSid@CSecurity@@@Z
+??0?$AutoDelete@VNtDsApiDllLoader@@@@QAA@PAVNtDsApiDllLoader@@@Z
+??0?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@QAA@PAVOptionValue@SessionOptions@Client@WSMan@@@Z
+??0?$AutoDelete@VPacketCreator@@@@QAA@PAVPacketCreator@@@Z
+??0?$AutoDelete@VPacketCreator@@@@QAA@XZ
+??0?$AutoDelete@VPacketParser@@@@QAA@XZ
+??0?$AutoDelete@VResources@Locale@@@@QAA@PAVResources@Locale@@@Z
+??0?$AutoDelete@VRunAsConfiguration@@@@QAA@PAVRunAsConfiguration@@@Z
+??0?$AutoDelete@VSecurityEntry@Catalog@@@@QAA@PAVSecurityEntry@Catalog@@@Z
+??0?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@QAA@PAVSendPacketArgs@RobustConnectionBuffer@@@Z
+??0?$AutoDelete@VServiceSoapProcessor@@@@QAA@XZ
+??0?$AutoDelete@VShell32DllLoader@@@@QAA@PAVShell32DllLoader@@@Z
+??0?$AutoDelete@VShlWApiDllLoader@@@@QAA@PAVShlWApiDllLoader@@@Z
+??0?$AutoDelete@VSubscriptionEnumerator@@@@QAA@XZ
+??0?$AutoDelete@VSubscriptionManager@@@@QAA@PAVSubscriptionManager@@@Z
+??0?$AutoDelete@VTSTRBUFFER@@@@QAA@PAVTSTRBUFFER@@@Z
+??0?$AutoDelete@VTSTRBUFFER@@@@QAA@XZ
+??0?$AutoDelete@VUniqueStringOverflow@@@@QAA@XZ
+??0?$AutoDelete@VUser32DllLoader@@@@QAA@PAVUser32DllLoader@@@Z
+??0?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@QAA@PAVWSMANCONFIGTABLE_IDENTITY@@@Z
+??0?$AutoDelete@VWSManMemCryptManager@@@@QAA@PAVWSManMemCryptManager@@@Z
+??0?$AutoDelete@VWmiEnumContext@@@@QAA@PAVWmiEnumContext@@@Z
+??0?$AutoDelete@VWmiEnumContext@@@@QAA@XZ
+??0?$AutoDelete@VXmlReader@@@@QAA@PAVXmlReader@@@Z
+??0?$AutoDelete@VXmlReader@@@@QAA@XZ
+??0?$AutoDeleteVector@$$CBG@@QAA@XZ
+??0?$AutoDeleteVector@D@@QAA@PAD@Z
+??0?$AutoDeleteVector@D@@QAA@XZ
+??0?$AutoDeleteVector@E@@QAA@PAE@Z
+??0?$AutoDeleteVector@E@@QAA@XZ
+??0?$AutoDeleteVector@G@@QAA@PAG@Z
+??0?$AutoDeleteVector@G@@QAA@XZ
+??0?$AutoDeleteVector@H@@QAA@PAH@Z
+??0?$AutoDeleteVector@PAG@@QAA@PAPAG@Z
+??0?$AutoDeleteVector@PAG@@QAA@XZ
+??0?$AutoDeleteVector@PBG@@QAA@PAPBG@Z
+??0?$AutoDeleteVector@PBG@@QAA@XZ
+??0?$AutoDeleteVector@U_CONFIG_UPDATE@@@@QAA@XZ
+??0?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAA@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z
+??0?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAA@XZ
+??0?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QAA@PAU_WINRS_RUN_COMMAND_ARG@@@Z
+??0?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QAA@XZ
+??0?$AutoDeleteVector@U_WSMAN_OPTION@@@@QAA@PAU_WSMAN_OPTION@@@Z
+??0?$AutoDeleteVector@U_WSMAN_OPTION@@@@QAA@XZ
+??0?$AutoDeleteVector@X@@QAA@PAX@Z
+??0?$AutoDeleteVector@X@@QAA@XZ
+??0?$AutoFree@E@@QAA@PAE@Z
+??0?$AutoFree@E@@QAA@XZ
+??0?$AutoLocklessItemRecycle@VPacket@@@@QAA@PAVPacket@@@Z
+??0?$AutoLocklessItemRecycle@VPacket@@@@QAA@XZ
+??0?$AutoRelease@UIAppHostChildElementCollection@@@@QAA@XZ
+??0?$AutoRelease@UIAppHostElement@@@@QAA@XZ
+??0?$AutoRelease@UIAppHostElementCollection@@@@QAA@XZ
+??0?$AutoRelease@UIAppHostProperty@@@@QAA@XZ
+??0?$AutoRelease@UIAppHostPropertyCollection@@@@QAA@XZ
+??0?$AutoRelease@UIClientSecurity@@@@QAA@PAUIClientSecurity@@@Z
+??0?$AutoRelease@UIClientSecurity@@@@QAA@XZ
+??0?$AutoRelease@UIEnumWbemClassObject@@@@QAA@PAUIEnumWbemClassObject@@@Z
+??0?$AutoRelease@UIEnumWbemClassObject@@@@QAA@XZ
+??0?$AutoRelease@UIErrorInfo@@@@QAA@PAUIErrorInfo@@@Z
+??0?$AutoRelease@UIErrorInfo@@@@QAA@XZ
+??0?$AutoRelease@UIUnknown@@@@QAA@PAUIUnknown@@@Z
+??0?$AutoRelease@UIUnknown@@@@QAA@XZ
+??0?$AutoRelease@UIWbemClassObject@@@@QAA@PAUIWbemClassObject@@@Z
+??0?$AutoRelease@UIWbemClassObject@@@@QAA@XZ
+??0?$AutoRelease@UIWbemContext@@@@QAA@PAUIWbemContext@@@Z
+??0?$AutoRelease@UIWbemContext@@@@QAA@XZ
+??0?$AutoRelease@UIWbemLocator@@@@QAA@PAUIWbemLocator@@@Z
+??0?$AutoRelease@UIWbemLocator@@@@QAA@XZ
+??0?$AutoRelease@UIWbemObjectTextSrc@@@@QAA@PAUIWbemObjectTextSrc@@@Z
+??0?$AutoRelease@UIWbemObjectTextSrc@@@@QAA@XZ
+??0?$AutoRelease@UIWbemPath@@@@QAA@PAUIWbemPath@@@Z
+??0?$AutoRelease@UIWbemPath@@@@QAA@XZ
+??0?$AutoRelease@UIWbemPathKeyList@@@@QAA@PAUIWbemPathKeyList@@@Z
+??0?$AutoRelease@UIWbemPathKeyList@@@@QAA@XZ
+??0?$AutoRelease@UIWbemQualifierSet@@@@QAA@PAUIWbemQualifierSet@@@Z
+??0?$AutoRelease@UIWbemQualifierSet@@@@QAA@XZ
+??0?$AutoRelease@UIWbemQuery@@@@QAA@PAUIWbemQuery@@@Z
+??0?$AutoRelease@UIWbemQuery@@@@QAA@XZ
+??0?$AutoRelease@UIWbemServices@@@@QAA@PAUIWbemServices@@@Z
+??0?$AutoRelease@UIWbemServices@@@@QAA@XZ
+??0?$AutoRelease@VApplication@Client@WSMan@@@@QAA@XZ
+??0?$AutoRelease@VCBaseConfigCache@@@@QAA@PAVCBaseConfigCache@@@Z
+??0?$AutoRelease@VCClientConfigSettings@@@@QAA@PAVCClientConfigSettings@@@Z
+??0?$AutoRelease@VCClientConfigSettings@@@@QAA@XZ
+??0?$AutoRelease@VCCommonConfigSettings@@@@QAA@PAVCCommonConfigSettings@@@Z
+??0?$AutoRelease@VCCommonConfigSettings@@@@QAA@XZ
+??0?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QAA@PAVCConfigCacheMap@CBaseConfigCache@@@Z
+??0?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QAA@XZ
+??0?$AutoRelease@VCConfigManager@@@@QAA@PAVCConfigManager@@@Z
+??0?$AutoRelease@VCConfigManager@@@@QAA@XZ
+??0?$AutoRelease@VCRemoteOperation@@@@QAA@PAVCRemoteOperation@@@Z
+??0?$AutoRelease@VCRemoteSession@@@@QAA@PAVCRemoteSession@@@Z
+??0?$AutoRelease@VCRemoteSession@@@@QAA@XZ
+??0?$AutoRelease@VCRequestContext@@@@QAA@PAVCRequestContext@@@Z
+??0?$AutoRelease@VCRequestContext@@@@QAA@XZ
+??0?$AutoRelease@VCServiceCommonConfigSettings@@@@QAA@PAVCServiceCommonConfigSettings@@@Z
+??0?$AutoRelease@VCServiceCommonConfigSettings@@@@QAA@XZ
+??0?$AutoRelease@VCServiceConfigCache@@@@QAA@PAVCServiceConfigCache@@@Z
+??0?$AutoRelease@VCServiceConfigCache@@@@QAA@XZ
+??0?$AutoRelease@VCServiceConfigSettings@@@@QAA@PAVCServiceConfigSettings@@@Z
+??0?$AutoRelease@VCServiceConfigSettings@@@@QAA@XZ
+??0?$AutoRelease@VCWSManEPR@@@@QAA@PAVCWSManEPR@@@Z
+??0?$AutoRelease@VCWSManEPR@@@@QAA@XZ
+??0?$AutoRelease@VCWSManGroupPolicyCache@@@@QAA@PAVCWSManGroupPolicyCache@@@Z
+??0?$AutoRelease@VCWSManGroupPolicyManager@@@@QAA@PAVCWSManGroupPolicyManager@@@Z
+??0?$AutoRelease@VCWSManObject@@@@QAA@PAVCWSManObject@@@Z
+??0?$AutoRelease@VCWSManResource@@@@QAA@PAVCWSManResource@@@Z
+??0?$AutoRelease@VCWSManResource@@@@QAA@XZ
+??0?$AutoRelease@VCWinRSPluginConfigCache@@@@QAA@PAVCWinRSPluginConfigCache@@@Z
+??0?$AutoRelease@VCWinRSPluginConfigCache@@@@QAA@XZ
+??0?$AutoRelease@VCWinRSPluginConfigSettings@@@@QAA@PAVCWinRSPluginConfigSettings@@@Z
+??0?$AutoRelease@VCommand@Client@WSMan@@@@QAA@PAVCommand@Client@WSMan@@@Z
+??0?$AutoRelease@VConfigNotification@@@@QAA@PAVConfigNotification@@@Z
+??0?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@QAA@PAVConnectShellOperation@Client@WSMan@@@Z
+??0?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@QAA@PAVCreateShellOperation@Client@WSMan@@@Z
+??0?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@QAA@PAVDeleteShellOperation@Client@WSMan@@@Z
+??0?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@QAA@PAVDisconnectOperation@Client@WSMan@@@Z
+??0?$AutoRelease@VEnumSinkEx@@@@QAA@PAVEnumSinkEx@@@Z
+??0?$AutoRelease@VEnumSinkEx@@@@QAA@XZ
+??0?$AutoRelease@VGeneralSinkEx@@@@QAA@PAVGeneralSinkEx@@@Z
+??0?$AutoRelease@VGeneralSinkEx@@@@QAA@XZ
+??0?$AutoRelease@VIISConfigSettings@@@@QAA@XZ
+??0?$AutoRelease@VIPCSoapProcessor@@@@QAA@PAVIPCSoapProcessor@@@Z
+??0?$AutoRelease@VIRequestContext@@@@QAA@PAVIRequestContext@@@Z
+??0?$AutoRelease@VIRequestContext@@@@QAA@XZ
+??0?$AutoRelease@VISubscription@@@@QAA@PAVISubscription@@@Z
+??0?$AutoRelease@VInboundRequestDetails@@@@QAA@XZ
+??0?$AutoRelease@VReceiveOperation@Client@WSMan@@@@QAA@PAVReceiveOperation@Client@WSMan@@@Z
+??0?$AutoRelease@VReconnectOperation@Client@WSMan@@@@QAA@PAVReconnectOperation@Client@WSMan@@@Z
+??0?$AutoRelease@VSendOperation@Client@WSMan@@@@QAA@PAVSendOperation@Client@WSMan@@@Z
+??0?$AutoRelease@VShell@Client@WSMan@@@@QAA@PAVShell@Client@WSMan@@@Z
+??0?$AutoRelease@VShellInfo@@@@QAA@XZ
+??0?$AutoRelease@VSignalOperation@Client@WSMan@@@@QAA@PAVSignalOperation@Client@WSMan@@@Z
+??0?$AutoRelease@VUserRecord@@@@QAA@XZ
+??0?$AutoRelease@VWSManHttpListener@@@@QAA@PAVWSManHttpListener@@@Z
+??0?$AutoReleaseEx@VHostMappingTableEntry@@@@QAA@XZ
+??0?$AutoReleaseEx@VShell@Client@WSMan@@@@QAA@PAVShell@Client@WSMan@@@Z
+??0?$ILoader@VAdminSid@CSecurity@@@@QAA@P8AdminSid@CSecurity@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VCredUIDllLoader@@@@QAA@P8CredUIDllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VEventHandler@WSMan@@@@QAA@P8EventHandler@WSMan@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VInteractiveSid@CSecurity@@@@QAA@P8InteractiveSid@CSecurity@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VIpHlpApiDllLoader@@@@QAA@P8IpHlpApiDllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VMachineName@@@@QAA@P8MachineName@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VNetworkServiceSid@CSecurity@@@@QAA@P8NetworkServiceSid@CSecurity@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VNtDsApiDllLoader@@@@QAA@P8NtDsApiDllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VResources@Locale@@@@QAA@P8Resources@Locale@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VShell32DllLoader@@@@QAA@P8Shell32DllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VShlWApiDllLoader@@@@QAA@P8ShlWApiDllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VSubscriptionManager@@@@QAA@P8SubscriptionManager@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VUser32DllLoader@@@@QAA@P8User32DllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$ILoader@VWSManMemCryptManager@@@@QAA@P8WSManMemCryptManager@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$Loader@VAdminSid@CSecurity@@$00@@QAA@XZ
+??0?$Loader@VCredUIDllLoader@@$00@@QAA@XZ
+??0?$Loader@VEventHandler@WSMan@@$00@@QAA@XZ
+??0?$Loader@VInteractiveSid@CSecurity@@$00@@QAA@XZ
+??0?$Loader@VIpHlpApiDllLoader@@$00@@QAA@XZ
+??0?$Loader@VMachineName@@$00@@QAA@XZ
+??0?$Loader@VNetworkServiceSid@CSecurity@@$00@@QAA@XZ
+??0?$Loader@VNtDsApiDllLoader@@$00@@QAA@XZ
+??0?$Loader@VResources@Locale@@$0A@@@QAA@XZ
+??0?$Loader@VShell32DllLoader@@$00@@QAA@XZ
+??0?$Loader@VShlWApiDllLoader@@$00@@QAA@XZ
+??0?$Loader@VUser32DllLoader@@$00@@QAA@XZ
+??0?$Loader@VWSManMemCryptManager@@$00@@QAA@XZ
+??0?$LoaderSerializer@VAdminSid@CSecurity@@$00@@QAA@P8AdminSid@CSecurity@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VCredUIDllLoader@@$00@@QAA@P8CredUIDllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VEventHandler@WSMan@@$00@@QAA@P8EventHandler@WSMan@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VInteractiveSid@CSecurity@@$00@@QAA@P8InteractiveSid@CSecurity@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VIpHlpApiDllLoader@@$00@@QAA@P8IpHlpApiDllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VMachineName@@$00@@QAA@P8MachineName@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VNetworkServiceSid@CSecurity@@$00@@QAA@P8NetworkServiceSid@CSecurity@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VNtDsApiDllLoader@@$00@@QAA@P8NtDsApiDllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VResources@Locale@@$0A@@@QAA@P8Resources@Locale@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VShell32DllLoader@@$00@@QAA@P8Shell32DllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VShlWApiDllLoader@@$00@@QAA@P8ShlWApiDllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VSubscriptionManager@@$01@@QAA@P8SubscriptionManager@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VUser32DllLoader@@$00@@QAA@P8User32DllLoader@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$LoaderSerializer@VWSManMemCryptManager@@$00@@QAA@P8WSManMemCryptManager@@AA_NAAVIRequestContext@@@Z1@Z
+??0?$PacketElement@K@PacketParser@@QAA@XZ
+??0?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QAA@XZ
+??0?$PacketElement@PBG@PacketParser@@QAA@XZ
+??0?$PacketElement@_K@PacketParser@@QAA@XZ
+??0?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAA@XZ
+??0?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAA@XZ
+??0?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAA@XZ
+??0?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAA@XZ
+??0?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAA@XZ
+??0?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAA@XZ
+??0?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAA@XZ
+??0?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAA@XZ
+??0?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA@XZ
+??0?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAA@XZ
+??0?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAA@XZ
+??0?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAA@XZ
+??0?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAA@XZ
+??0?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAA@XZ
+??0?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAA@AAV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@_N@Z
+??0?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAA@AAV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@_N@Z
+??0?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAA@AAV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@_N@Z
+??0?$SafeMap_Iterator@PAXUEmpty@@@@QAA@AAV?$SafeMap@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@_N@Z
+??0?$SafeMap_Iterator@UPluginKey@@K@@QAA@AAV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@_N@Z
+??0?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@QAA@AAV?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@_N@Z
+??0?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAA@AAV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@_N@Z
+??0?$SafeMap_Iterator@VKey@Locale@@K@@QAA@AAV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@_N@Z
+??0?$SafeMap_Iterator@VStringKeyCI@@K@@QAA@AAV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@_N@Z
+??0?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QAA@AAV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@_N@Z
+??0?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAA@AAV?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@_N@Z
+??0?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@QAA@AAV?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@_N@Z
+??0?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAA@AAV?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@_N@Z
+??0?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@QAA@AAV?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@_N@Z
+??0?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QAA@ABV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@_N@Z
+??0?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAA@ABV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@_N@Z
+??0?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QAA@ABV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@_N@Z
+??0?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAA@ABV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@_N@Z
+??0?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QAA@ABV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@_N@Z
+??0?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAA@ABV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@_N@Z
+??0?$SafeMap_Lock@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@QAA@ABV?$SafeMap@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@_N@Z
+??0?$SafeMap_Lock@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAA@ABV?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@_N@Z
+??0?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAA@ABV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@_N@Z
+??0?$SafeMap_Lock@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAA@ABV?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@_N@Z
+??0?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAA@ABV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@_N@Z
+??0?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAA@ABV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@_N@Z
+??0?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA@ABV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@_N@Z
+??0?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QAA@ABV?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@_N@Z
+??0?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAA@ABV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@_N@Z
+??0?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAA@ABV?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@_N@Z
+??0?$SafeMap_Lock@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAA@ABV?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@_N@Z
+??0?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAA@ABV?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@_N@Z
+??0?$SafeMap_Lock@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAA@ABV?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@_N@Z
+??0?$SafeSet@PAVCCertMapping@@@@QAA@XZ
+??0?$SafeSet@PAVCListenerOperation@@@@QAA@XZ
+??0?$SafeSet@PAVCShellUriSettings@@@@QAA@XZ
+??0?$SafeSet@PAX@@QAA@XZ
+??0?$SafeSet_Iterator@PAVCCertMapping@@@@QAA@AAV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@_N@Z
+??0?$SafeSet_Iterator@PAVCCertMapping@@@@QAA@AAV?$SafeSet@PAVCCertMapping@@@@@Z
+??0?$SafeSet_Iterator@PAVCListenerOperation@@@@QAA@AAV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@_N@Z
+??0?$SafeSet_Iterator@PAVCListenerOperation@@@@QAA@AAV?$SafeSet@PAVCListenerOperation@@@@@Z
+??0?$SafeSet_Iterator@PAVCShellUriSettings@@@@QAA@AAV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@_N@Z
+??0?$SafeSet_Iterator@PAX@@QAA@AAV?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@_N@Z
+??0?$SimpleQueue@T_LARGE_INTEGER@@@@QAA@XZ
+??0AutoBstr@@QAA@PAG@Z
+??0AutoBstr@@QAA@XZ
+??0AutoBstrNoAlloc@@QAA@PAG@Z
+??0AutoBstrNoAlloc@@QAA@XZ
+??0AutoCertContext@@QAA@PBU_CERT_CONTEXT@@@Z
+??0AutoCertContext@@QAA@XZ
+??0AutoChainContext@@QAA@PBU_CERT_CHAIN_CONTEXT@@@Z
+??0AutoChainContext@@QAA@XZ
+??0AutoCoTaskMemFree@@QAA@PAX@Z
+??0AutoCoTaskMemFree@@QAA@XZ
+??0AutoEnvironmentBlock@@QAA@PAX@Z
+??0AutoEnvironmentBlock@@QAA@XZ
+??0AutoFwXmlCloseParser@@QAA@PAX@Z
+??0AutoFwXmlCloseParser@@QAA@XZ
+??0AutoHandle@@QAA@PAX@Z
+??0AutoHandle@@QAA@XZ
+??0AutoImpersonateUser@@QAA@PAX@Z
+??0AutoImpersonateUser@@QAA@XZ
+??0AutoLibrary@@QAA@PAUHINSTANCE__@@@Z
+??0AutoLibrary@@QAA@XZ
+??0AutoLocalFree@@QAA@PAX@Z
+??0AutoLocalFree@@QAA@XZ
+??0AutoMIClass@@QAA@PAU_MI_Class@@@Z
+??0AutoMIClass@@QAA@XZ
+??0AutoMIInstance@@QAA@PAU_MI_Instance@@@Z
+??0AutoMIInstance@@QAA@XZ
+??0AutoObject@@QAA@PAUWSMAN_OBJECT@@@Z
+??0AutoObject@@QAA@XZ
+??0AutoRegKey@@QAA@PAUHKEY__@@@Z
+??0AutoRegKey@@QAA@XZ
+??0AutoSecurityDescriptor@@QAA@PAX@Z
+??0AutoSecurityDescriptor@@QAA@XZ
+??0AutoWaitHandle@@QAA@PAX@Z
+??0AutoWaitHandle@@QAA@XZ
+??0BufferFormatter@@QAA@PAEK@Z
+??0BufferFormatter@@QAA@XZ
+??0CBaseConfigCache@@IAA@W4ConfigLocation@CConfigChangeSource@@PAVFastLock@@PAVCConfigCacheMap@0@@Z
+??0CClientConfigCache@@AAA@XZ
+??0CConfigManager@@AAA@XZ
+??0CErrorContext@@QAA@_N@Z
+??0CRequestContext@@QAA@PBG@Z
+??0CRequestContext@@QAA@XZ
+??0CResourceAlias@@QAA@PBG@Z
+??0CServiceConfigCache@@AAA@XZ
+??0CServiceWatcher@CServiceConfigCache@@AAA@PAV1@PAVIServiceConfigObserver@@@Z
+??0CWSManCriticalSection@@QAA@XZ
+??0CWSManCriticalSectionWithConditionVar@@QAA@XZ
+??0CWSManEPR@@QAA@H@Z
+??0CWSManGroupPolicyManager@@AAA@XZ
+??0CWSManResource@@QAA@H@Z
+??0CWSManResourceNoResourceUri@@QAA@H@Z
+??0CWSManSecurityUI@@QAA@XZ
+??0CWinRSPluginConfigCache@@AAA@XZ
+??0ChildLifeTimeManager@@QAA@XZ
+??0CircularBufferFormatter@@QAA@XZ
+??0ConfigRegistry@@IAA@XZ
+??0EtwCorrelationHelper@@QAA@ABV0@@Z
+??0EventHandler@WSMan@@QAA@XZ
+??0ExtendedSemantic@@QAA@K@Z
+??0FastLock@@QAA@XZ
+??0Fragment@PacketParser@@QAA@XZ
+??0IConfigChangeObserver@@QAA@ABV0@@Z
+??0IConfigChangeObserver@@QAA@XZ
+??0ILifeTimeMgmt@@QAA@ABV0@@Z
+??0ILifeTimeMgmt@@QAA@XZ
+??0IRequestContext@@IAA@XZ
+??0IWSManGroupPolicyObserver@@QAA@ABV0@@Z
+??0IWSManGroupPolicyObserver@@QAA@XZ
+??0IWSManGroupPolicyPublisher@@QAA@ABV0@@Z
+??0IWSManGroupPolicyPublisher@@QAA@XZ
+??0Locale@@QAA@ABV0@@Z
+??0Locale@@QAA@PAVIRequestContext@@@Z
+??0Locale@@QAA@XZ
+??0MessageId@PacketParser@@QAA@XZ
+??0NotUnderstandSoapHeader@PacketParser@@QAA@XZ
+??0OnHTTPInitialize@@QAA@XZ
+??0OperationId@PacketParser@@QAA@XZ
+??0OwnLock@@QAA@AAVFastLock@@@Z
+??0PacketFormatter@@QAA@XZ
+??0PacketParser@@QAA@XZ
+??0RBUFFER@@QAA@I@Z
+??0RBUFFER@@QAA@PAEI@Z
+??0ReferenceParameters@PacketParser@@QAA@XZ
+??0SBUFFER@@QAA@XZ
+??0SessionId@PacketParser@@QAA@XZ
+??0ShareLock@@QAA@AAVFastLock@@@Z
+??0SoapSemanticConverter@@QAA@XZ
+??0TSTRBUFFER@@QAA@XZ
+??0UserAuthzRecord@@QAA@ABV0@@Z
+??0UserAuthzRecord@@QAA@XZ
+??0UserRecord@@QAA@XZ
+??0XmlReader@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@D@@PAD@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@U_SID@@@@PAU_SID@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@PAV?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCollector@@@@@@PAV?$SafeSet_Iterator@PAVCollector@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVHostOperation@@@@@@PAV?$SafeSet_Iterator@PAVHostOperation@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@PAV?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PAV?$SimpleStack@VCListenerOperation@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PAV?$SimpleStack@VShellHostEntry@@@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@PAV?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@PAV?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@V?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@PAV?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VCredUIDllLoader@@@@PAVCredUIDllLoader@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PAVMasterReceiveData@CListenerReceive@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PAVSendPacketArgs@RobustConnectionBuffer@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@H@@PAH@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QAA@XZ
+??1?$AutoCleanup@V?$AutoFree@E@@PAE@@QAA@XZ
+??1?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCClientConfigCache@@@@PAVCClientConfigCache@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCListenerCommand@@@@PAVCListenerCommand@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCListenerMasterOperation@@@@PAVCListenerMasterOperation@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PAVCListenerReceive@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCListenerShell@@@@PAVCListenerShell@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCWSManSession@@@@PAVCWSManSession@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VHostMappingTable@@@@PAVHostMappingTable@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PAVIISConfigSettings@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VProxyManager@Client@WSMan@@@@PAVProxyManager@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VProxySelection@Client@WSMan@@@@PAVProxySelection@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VPushSubscribeOperation@@@@PAVPushSubscribeOperation@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VPushSubscription@@@@PAVPushSubscription@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PAVShellInfo@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PAVHostMappingTableEntry@@@@QAA@XZ
+??1?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAA@XZ
+??1?$AutoCleanup@VAutoBstr@@PAG@@QAA@XZ
+??1?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAA@XZ
+??1?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAA@XZ
+??1?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAA@XZ
+??1?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@QAA@XZ
+??1?$AutoCleanup@VAutoEnvironmentBlock@@PAX@@QAA@XZ
+??1?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@QAA@XZ
+??1?$AutoCleanup@VAutoHandle@@PAX@@QAA@XZ
+??1?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAA@XZ
+??1?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@QAA@XZ
+??1?$AutoCleanup@VAutoLocalFree@@PAX@@QAA@XZ
+??1?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAA@XZ
+??1?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAA@XZ
+??1?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@QAA@XZ
+??1?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAA@XZ
+??1?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAA@XZ
+??1?$AutoCleanup@VAutoWaitHandle@@PAX@@QAA@XZ
+??1?$AutoDelete@D@@QAA@XZ
+??1?$AutoDelete@G@@QAA@XZ
+??1?$AutoDelete@UIPRange@CWSManIPFilter@@@@QAA@XZ
+??1?$AutoDelete@U_SID@@@@QAA@XZ
+??1?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@QAA@XZ
+??1?$AutoDelete@V?$Handle@VISubscription@@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeSet_Iterator@PAVCollector@@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeSet_Iterator@PAVHostOperation@@@@@@QAA@XZ
+??1?$AutoDelete@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@QAA@XZ
+??1?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@QAA@XZ
+??1?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@QAA@XZ
+??1?$AutoDelete@V?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@QAA@XZ
+??1?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAA@XZ
+??1?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAA@XZ
+??1?$AutoDelete@V?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@QAA@XZ
+??1?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAA@XZ
+??1?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAA@XZ
+??1?$AutoDelete@V?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@QAA@XZ
+??1?$AutoDelete@VAdminSid@CSecurity@@@@QAA@XZ
+??1?$AutoDelete@VBlockedRecord@@@@QAA@XZ
+??1?$AutoDelete@VCBaseConfigCache@@@@QAA@XZ
+??1?$AutoDelete@VCCertMapping@@@@QAA@XZ
+??1?$AutoDelete@VCConfigChangeSource@@@@QAA@XZ
+??1?$AutoDelete@VCListenerSettings@@@@QAA@XZ
+??1?$AutoDelete@VCObserverConfigChangeErrors@@@@QAA@XZ
+??1?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QAA@XZ
+??1?$AutoDelete@VCShellUriSettings@@@@QAA@XZ
+??1?$AutoDelete@VCWSManEPR@@@@QAA@XZ
+??1?$AutoDelete@VCWSManResource@@@@QAA@XZ
+??1?$AutoDelete@VCertHash@@@@QAA@XZ
+??1?$AutoDelete@VConfigUpdate@@@@QAA@XZ
+??1?$AutoDelete@VCredUIDllLoader@@@@QAA@XZ
+??1?$AutoDelete@VEnumSinkEx@@@@QAA@XZ
+??1?$AutoDelete@VEventHandler@WSMan@@@@QAA@XZ
+??1?$AutoDelete@VExpiredOperationIdRecord@@@@QAA@XZ
+??1?$AutoDelete@VGPApiManager@@@@QAA@XZ
+??1?$AutoDelete@VGeneralSinkEx@@@@QAA@XZ
+??1?$AutoDelete@VIChannelObserverFactory@@@@QAA@XZ
+??1?$AutoDelete@VIQueryDASHSMASHInterface@@@@QAA@XZ
+??1?$AutoDelete@VISpecification@@@@QAA@XZ
+??1?$AutoDelete@VInteractiveSid@CSecurity@@@@QAA@XZ
+??1?$AutoDelete@VIpHlpApiDllLoader@@@@QAA@XZ
+??1?$AutoDelete@VMachineName@@@@QAA@XZ
+??1?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@QAA@XZ
+??1?$AutoDelete@VNetworkServiceSid@CSecurity@@@@QAA@XZ
+??1?$AutoDelete@VNtDsApiDllLoader@@@@QAA@XZ
+??1?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@QAA@XZ
+??1?$AutoDelete@VPacketCreator@@@@QAA@XZ
+??1?$AutoDelete@VPacketParser@@@@QAA@XZ
+??1?$AutoDelete@VResources@Locale@@@@QAA@XZ
+??1?$AutoDelete@VRunAsConfiguration@@@@QAA@XZ
+??1?$AutoDelete@VSecurityEntry@Catalog@@@@QAA@XZ
+??1?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@QAA@XZ
+??1?$AutoDelete@VServiceSoapProcessor@@@@QAA@XZ
+??1?$AutoDelete@VShell32DllLoader@@@@QAA@XZ
+??1?$AutoDelete@VShlWApiDllLoader@@@@QAA@XZ
+??1?$AutoDelete@VSubscriptionEnumerator@@@@QAA@XZ
+??1?$AutoDelete@VSubscriptionManager@@@@QAA@XZ
+??1?$AutoDelete@VTSTRBUFFER@@@@QAA@XZ
+??1?$AutoDelete@VUniqueStringOverflow@@@@QAA@XZ
+??1?$AutoDelete@VUser32DllLoader@@@@QAA@XZ
+??1?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@QAA@XZ
+??1?$AutoDelete@VWSManMemCryptManager@@@@QAA@XZ
+??1?$AutoDelete@VWmiEnumContext@@@@QAA@XZ
+??1?$AutoDelete@VXmlReader@@@@QAA@XZ
+??1?$AutoDeleteVector@$$CBG@@QAA@XZ
+??1?$AutoDeleteVector@D@@QAA@XZ
+??1?$AutoDeleteVector@E@@QAA@XZ
+??1?$AutoDeleteVector@G@@QAA@XZ
+??1?$AutoDeleteVector@H@@QAA@XZ
+??1?$AutoDeleteVector@PAG@@QAA@XZ
+??1?$AutoDeleteVector@PBG@@QAA@XZ
+??1?$AutoDeleteVector@U_CONFIG_UPDATE@@@@QAA@XZ
+??1?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAA@XZ
+??1?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QAA@XZ
+??1?$AutoDeleteVector@U_WSMAN_OPTION@@@@QAA@XZ
+??1?$AutoDeleteVector@X@@QAA@XZ
+??1?$AutoFree@E@@QAA@XZ
+??1?$AutoLocklessItemRecycle@VPacket@@@@QAA@XZ
+??1?$AutoRelease@UIAppHostChildElementCollection@@@@QAA@XZ
+??1?$AutoRelease@UIAppHostElement@@@@QAA@XZ
+??1?$AutoRelease@UIAppHostElementCollection@@@@QAA@XZ
+??1?$AutoRelease@UIAppHostProperty@@@@QAA@XZ
+??1?$AutoRelease@UIAppHostPropertyCollection@@@@QAA@XZ
+??1?$AutoRelease@UIClientSecurity@@@@QAA@XZ
+??1?$AutoRelease@UIEnumWbemClassObject@@@@QAA@XZ
+??1?$AutoRelease@UIErrorInfo@@@@QAA@XZ
+??1?$AutoRelease@UIUnknown@@@@QAA@XZ
+??1?$AutoRelease@UIWbemClassObject@@@@QAA@XZ
+??1?$AutoRelease@UIWbemContext@@@@QAA@XZ
+??1?$AutoRelease@UIWbemLocator@@@@QAA@XZ
+??1?$AutoRelease@UIWbemObjectTextSrc@@@@QAA@XZ
+??1?$AutoRelease@UIWbemPath@@@@QAA@XZ
+??1?$AutoRelease@UIWbemPathKeyList@@@@QAA@XZ
+??1?$AutoRelease@UIWbemQualifierSet@@@@QAA@XZ
+??1?$AutoRelease@UIWbemQuery@@@@QAA@XZ
+??1?$AutoRelease@UIWbemServices@@@@QAA@XZ
+??1?$AutoRelease@VApplication@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VCBaseConfigCache@@@@QAA@XZ
+??1?$AutoRelease@VCClientConfigCache@@@@QAA@XZ
+??1?$AutoRelease@VCClientConfigSettings@@@@QAA@XZ
+??1?$AutoRelease@VCCommonConfigSettings@@@@QAA@XZ
+??1?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QAA@XZ
+??1?$AutoRelease@VCConfigManager@@@@QAA@XZ
+??1?$AutoRelease@VCListenerCommand@@@@QAA@XZ
+??1?$AutoRelease@VCListenerMasterOperation@@@@QAA@XZ
+??1?$AutoRelease@VCListenerReceive@@@@QAA@XZ
+??1?$AutoRelease@VCListenerShell@@@@QAA@XZ
+??1?$AutoRelease@VCRemoteOperation@@@@QAA@XZ
+??1?$AutoRelease@VCRemoteSession@@@@QAA@XZ
+??1?$AutoRelease@VCRequestContext@@@@QAA@XZ
+??1?$AutoRelease@VCServiceCommonConfigSettings@@@@QAA@XZ
+??1?$AutoRelease@VCServiceConfigCache@@@@QAA@XZ
+??1?$AutoRelease@VCServiceConfigSettings@@@@QAA@XZ
+??1?$AutoRelease@VCWSManEPR@@@@QAA@XZ
+??1?$AutoRelease@VCWSManGroupPolicyCache@@@@QAA@XZ
+??1?$AutoRelease@VCWSManGroupPolicyManager@@@@QAA@XZ
+??1?$AutoRelease@VCWSManObject@@@@QAA@XZ
+??1?$AutoRelease@VCWSManResource@@@@QAA@XZ
+??1?$AutoRelease@VCWSManSession@@@@QAA@XZ
+??1?$AutoRelease@VCWinRSPluginConfigCache@@@@QAA@XZ
+??1?$AutoRelease@VCWinRSPluginConfigSettings@@@@QAA@XZ
+??1?$AutoRelease@VCommand@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VConfigNotification@@@@QAA@XZ
+??1?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VEnumSinkEx@@@@QAA@XZ
+??1?$AutoRelease@VGeneralSinkEx@@@@QAA@XZ
+??1?$AutoRelease@VHostMappingTable@@@@QAA@XZ
+??1?$AutoRelease@VIISConfigSettings@@@@QAA@XZ
+??1?$AutoRelease@VIPCSoapProcessor@@@@QAA@XZ
+??1?$AutoRelease@VIRequestContext@@@@QAA@XZ
+??1?$AutoRelease@VISubscription@@@@QAA@XZ
+??1?$AutoRelease@VInboundRequestDetails@@@@QAA@XZ
+??1?$AutoRelease@VProxyManager@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VProxySelection@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VPushSubscribeOperation@@@@QAA@XZ
+??1?$AutoRelease@VPushSubscription@@@@QAA@XZ
+??1?$AutoRelease@VReceiveOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VReconnectOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VSendOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VShell@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VShellInfo@@@@QAA@XZ
+??1?$AutoRelease@VSignalOperation@Client@WSMan@@@@QAA@XZ
+??1?$AutoRelease@VUserRecord@@@@QAA@XZ
+??1?$AutoRelease@VWSManHttpListener@@@@QAA@XZ
+??1?$AutoReleaseEx@VHostMappingTableEntry@@@@QAA@XZ
+??1?$AutoReleaseEx@VShell@Client@WSMan@@@@QAA@XZ
+??1?$ILoader@VAdminSid@CSecurity@@@@QAA@XZ
+??1?$ILoader@VCredUIDllLoader@@@@QAA@XZ
+??1?$ILoader@VEventHandler@WSMan@@@@QAA@XZ
+??1?$ILoader@VInteractiveSid@CSecurity@@@@QAA@XZ
+??1?$ILoader@VIpHlpApiDllLoader@@@@QAA@XZ
+??1?$ILoader@VMachineName@@@@QAA@XZ
+??1?$ILoader@VNetworkServiceSid@CSecurity@@@@QAA@XZ
+??1?$ILoader@VNtDsApiDllLoader@@@@QAA@XZ
+??1?$ILoader@VResources@Locale@@@@QAA@XZ
+??1?$ILoader@VShell32DllLoader@@@@QAA@XZ
+??1?$ILoader@VShlWApiDllLoader@@@@QAA@XZ
+??1?$ILoader@VSubscriptionManager@@@@QAA@XZ
+??1?$ILoader@VUser32DllLoader@@@@QAA@XZ
+??1?$ILoader@VWSManMemCryptManager@@@@QAA@XZ
+??1?$Loader@VAdminSid@CSecurity@@$00@@QAA@XZ
+??1?$Loader@VCredUIDllLoader@@$00@@QAA@XZ
+??1?$Loader@VEventHandler@WSMan@@$00@@QAA@XZ
+??1?$Loader@VInteractiveSid@CSecurity@@$00@@QAA@XZ
+??1?$Loader@VIpHlpApiDllLoader@@$00@@QAA@XZ
+??1?$Loader@VMachineName@@$00@@QAA@XZ
+??1?$Loader@VNetworkServiceSid@CSecurity@@$00@@QAA@XZ
+??1?$Loader@VNtDsApiDllLoader@@$00@@QAA@XZ
+??1?$Loader@VResources@Locale@@$0A@@@QAA@XZ
+??1?$Loader@VShell32DllLoader@@$00@@QAA@XZ
+??1?$Loader@VShlWApiDllLoader@@$00@@QAA@XZ
+??1?$Loader@VSubscriptionManager@@$01@@QAA@XZ
+??1?$Loader@VUser32DllLoader@@$00@@QAA@XZ
+??1?$Loader@VWSManMemCryptManager@@$00@@QAA@XZ
+??1?$LoaderSerializer@VAdminSid@CSecurity@@$00@@QAA@XZ
+??1?$LoaderSerializer@VCredUIDllLoader@@$00@@QAA@XZ
+??1?$LoaderSerializer@VEventHandler@WSMan@@$00@@QAA@XZ
+??1?$LoaderSerializer@VInteractiveSid@CSecurity@@$00@@QAA@XZ
+??1?$LoaderSerializer@VIpHlpApiDllLoader@@$00@@QAA@XZ
+??1?$LoaderSerializer@VMachineName@@$00@@QAA@XZ
+??1?$LoaderSerializer@VNetworkServiceSid@CSecurity@@$00@@QAA@XZ
+??1?$LoaderSerializer@VNtDsApiDllLoader@@$00@@QAA@XZ
+??1?$LoaderSerializer@VResources@Locale@@$0A@@@QAA@XZ
+??1?$LoaderSerializer@VShell32DllLoader@@$00@@QAA@XZ
+??1?$LoaderSerializer@VShlWApiDllLoader@@$00@@QAA@XZ
+??1?$LoaderSerializer@VSubscriptionManager@@$01@@QAA@XZ
+??1?$LoaderSerializer@VUser32DllLoader@@$00@@QAA@XZ
+??1?$LoaderSerializer@VWSManMemCryptManager@@$00@@QAA@XZ
+??1?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAA@XZ
+??1?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAA@XZ
+??1?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAA@XZ
+??1?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@QAA@XZ
+??1?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@QAA@XZ
+??1?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@QAA@XZ
+??1?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@QAA@XZ
+??1?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@QAA@XZ
+??1?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAA@XZ
+??1?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAA@XZ
+??1?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAA@XZ
+??1?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAA@XZ
+??1?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAA@XZ
+??1?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA@XZ
+??1?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QAA@XZ
+??1?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAA@XZ
+??1?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAA@XZ
+??1?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAA@XZ
+??1?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAA@XZ
+??1?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@QAA@XZ
+??1?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@QAA@XZ
+??1?$SafeMap_Iterator@PAXUEmpty@@@@QAA@XZ
+??1?$SafeMap_Iterator@UPluginKey@@K@@QAA@XZ
+??1?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@QAA@XZ
+??1?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAA@XZ
+??1?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@QAA@XZ
+??1?$SafeMap_Iterator@VKey@Locale@@K@@QAA@XZ
+??1?$SafeMap_Iterator@VStringKeyCI@@K@@QAA@XZ
+??1?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@QAA@XZ
+??1?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QAA@XZ
+??1?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAA@XZ
+??1?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@QAA@XZ
+??1?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAA@XZ
+??1?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@QAA@XZ
+??1?$SafeMap_Lock@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAA@XZ
+??1?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAA@XZ
+??1?$SafeMap_Lock@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAA@XZ
+??1?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAA@XZ
+??1?$SafeMap_Lock@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@QAA@XZ
+??1?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAA@XZ
+??1?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA@XZ
+??1?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@QAA@XZ
+??1?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QAA@XZ
+??1?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAA@XZ
+??1?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAA@XZ
+??1?$SafeMap_Lock@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAA@XZ
+??1?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAA@XZ
+??1?$SafeMap_Lock@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAA@XZ
+??1?$SafeSet@PAVCCertMapping@@@@QAA@XZ
+??1?$SafeSet@PAVCListenerOperation@@@@QAA@XZ
+??1?$SafeSet@PAVCShellUriSettings@@@@QAA@XZ
+??1?$SafeSet@PAVCollector@@@@QAA@XZ
+??1?$SafeSet@PAVHostOperation@@@@QAA@XZ
+??1?$SafeSet@PAVIOperation@@@@QAA@XZ
+??1?$SafeSet@PAVListenerSourceSubscription@@@@QAA@XZ
+??1?$SafeSet@PAVPushSubscription@@@@QAA@XZ
+??1?$SafeSet@PAX@@QAA@XZ
+??1?$SafeSet@VStringKeyCI@@@@QAA@XZ
+??1?$SafeSet_Iterator@PAVCCertMapping@@@@QAA@XZ
+??1?$SafeSet_Iterator@PAVCListenerOperation@@@@QAA@XZ
+??1?$SafeSet_Iterator@PAVCShellUriSettings@@@@QAA@XZ
+??1?$SafeSet_Iterator@PAVCollector@@@@QAA@XZ
+??1?$SafeSet_Iterator@PAVHostOperation@@@@QAA@XZ
+??1?$SafeSet_Iterator@PAVIOperation@@@@QAA@XZ
+??1?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@QAA@XZ
+??1?$SafeSet_Iterator@PAVPushSubscription@@@@QAA@XZ
+??1?$SafeSet_Iterator@PAX@@QAA@XZ
+??1?$SafeSet_Iterator@VStringKeyCI@@@@QAA@XZ
+??1?$SimpleQueue@T_LARGE_INTEGER@@@@QAA@XZ
+??1AutoBstr@@QAA@XZ
+??1AutoBstrNoAlloc@@QAA@XZ
+??1AutoCertContext@@QAA@XZ
+??1AutoChainContext@@QAA@XZ
+??1AutoCoTaskMemFree@@QAA@XZ
+??1AutoEnvironmentBlock@@QAA@XZ
+??1AutoFwXmlCloseParser@@QAA@XZ
+??1AutoHandle@@QAA@XZ
+??1AutoImpersonateUser@@QAA@XZ
+??1AutoLibrary@@QAA@XZ
+??1AutoLocalFree@@QAA@XZ
+??1AutoMIClass@@QAA@XZ
+??1AutoMIInstance@@QAA@XZ
+??1AutoObject@@QAA@XZ
+??1AutoRegKey@@QAA@XZ
+??1AutoSecurityDescriptor@@QAA@XZ
+??1AutoWaitHandle@@QAA@XZ
+??1BufferFormatter@@UAA@XZ
+??1CBaseConfigCache@@UAA@XZ
+??1CClientConfigCache@@UAA@XZ
+??1CCommonConfigSettings@@UAA@XZ
+??1CConfigManager@@UAA@XZ
+??1CErrorContext@@UAA@XZ
+??1CRequestContext@@UAA@XZ
+??1CResourceAlias@@QAA@XZ
+??1CServiceConfigCache@@EAA@XZ
+??1CServiceWatcher@CServiceConfigCache@@QAA@XZ
+??1CWSManCriticalSection@@QAA@XZ
+??1CWSManCriticalSectionWithConditionVar@@QAA@XZ
+??1CWSManEPR@@UAA@XZ
+??1CWSManGroupPolicyManager@@EAA@XZ
+??1CWSManResource@@UAA@XZ
+??1CWSManResourceNoResourceUri@@UAA@XZ
+??1CWSManSecurityUI@@QAA@XZ
+??1CWinRSPluginConfigCache@@EAA@XZ
+??1ChildLifeTimeManager@@QAA@XZ
+??1CircularBufferFormatter@@UAA@XZ
+??1ConfigRegistry@@IAA@XZ
+??1EtwCorrelationHelper@@UAA@XZ
+??1EventHandler@WSMan@@QAA@XZ
+??1IConfigChangeObserver@@UAA@XZ
+??1ILifeTimeMgmt@@UAA@XZ
+??1IRequestContext@@UAA@XZ
+??1IWSManGroupPolicyObserver@@UAA@XZ
+??1IWSManGroupPolicyPublisher@@UAA@XZ
+??1MessageId@PacketParser@@QAA@XZ
+??1OnHTTPInitialize@@QAA@XZ
+??1OperationId@PacketParser@@QAA@XZ
+??1OwnLock@@QAA@XZ
+??1PacketParser@@QAA@XZ
+??1RBUFFER@@QAA@XZ
+??1ReferenceParameters@PacketParser@@QAA@XZ
+??1SBUFFER@@QAA@XZ
+??1ShareLock@@QAA@XZ
+??1SoapSemanticConverter@@QAA@XZ
+??1TSTRBUFFER@@QAA@XZ
+??1UserRecord@@QAA@XZ
+??1XmlReader@@QAA@XZ
+??4?$AutoCleanup@V?$AutoDelete@D@@PAD@@QAAAAV?$AutoDelete@D@@PAD@Z
+??4?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAAAAV?$AutoDelete@G@@PAG@Z
+??4?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAAAAV?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@Z
+??4?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAAAAV?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@Z
+??4?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAAAAV?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@Z
+??4?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAAAAV?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@Z
+??4?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAAAAV?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@Z
+??4?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAAAAV?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@Z
+??4?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAAAAV?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@Z
+??4?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAAAAV?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@Z
+??4?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAAAAV?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAAAAV?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@QAAAAV?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@QAAAAV?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAAAAV?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAAAAV?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAAAAV?$AutoDelete@VCertHash@@@@PAVCertHash@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAAAAV?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAAAAV?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@QAAAAV?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAAAAV?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@QAAAAV?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAAAAV?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAAAAV?$AutoDelete@VISpecification@@@@PAVISpecification@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAAAAV?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@QAAAAV?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@QAAAAV?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAAAAV?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAAAAV?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@QAAAAV?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAAAAV?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@QAAAAV?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@QAAAAV?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAAAAV?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@Z
+??4?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAAAAV?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAAAAV?$AutoDeleteVector@$$CBG@@PBG@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QAAAAV?$AutoDeleteVector@D@@PAD@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAAAAV?$AutoDeleteVector@E@@PAE@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAAAAV?$AutoDeleteVector@G@@PAG@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAAAAV?$AutoDeleteVector@PAG@@PAPAG@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAAAAV?$AutoDeleteVector@PBG@@PAPBG@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@QAAAAV?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAAAAV?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAAAAV?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@QAAAAV?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@Z
+??4?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QAAAAV?$AutoDeleteVector@X@@PAX@Z
+??4?$AutoCleanup@V?$AutoFree@E@@PAE@@QAAAAV?$AutoFree@E@@PAE@Z
+??4?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAAAAV?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAAAAV?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAAAAV?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAAAAV?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAAAAV?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAAAAV?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAAAAV?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAAAAV?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAAAAV?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAAAAV?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAAAAV?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAAAAV?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAAAAV?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@Z
+??4?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAAAAV?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@QAAAAV?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAAAAV?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAAAAV?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@QAAAAV?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@QAAAAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAAAAV?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@@QAAAAV?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAAAAV?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAAAAV?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@QAAAAV?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@QAAAAV?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAAAAV?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAAAAV?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAAAAV?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QAAAAV?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAAAAV?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAAAAV?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAAAAV?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAAAAV?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAAAAV?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@QAAAAV?$AutoRelease@VISubscription@@@@PAVISubscription@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QAAAAV?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QAAAAV?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@Z
+??4?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@QAAAAV?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@Z
+??4?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAAAAV?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@Z
+??4?$AutoCleanup@VAutoBstr@@PAG@@QAAAAVAutoBstr@@PAG@Z
+??4?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAAAAVAutoBstrNoAlloc@@PAG@Z
+??4?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAAAAVAutoCertContext@@PBU_CERT_CONTEXT@@@Z
+??4?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAAAAVAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@Z
+??4?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@QAAAAVAutoCoTaskMemFree@@PAX@Z
+??4?$AutoCleanup@VAutoEnvironmentBlock@@PAX@@QAAAAVAutoEnvironmentBlock@@PAX@Z
+??4?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@QAAAAVAutoFwXmlCloseParser@@PAX@Z
+??4?$AutoCleanup@VAutoHandle@@PAX@@QAAAAVAutoHandle@@PAX@Z
+??4?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAAAAVAutoImpersonateUser@@PAX@Z
+??4?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@QAAAAVAutoLibrary@@PAUHINSTANCE__@@@Z
+??4?$AutoCleanup@VAutoLocalFree@@PAX@@QAAAAVAutoLocalFree@@PAX@Z
+??4?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAAAAVAutoMIClass@@PAU_MI_Class@@@Z
+??4?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAAAAVAutoMIInstance@@PAU_MI_Instance@@@Z
+??4?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@QAAAAVAutoObject@@PAUWSMAN_OBJECT@@@Z
+??4?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAAAAVAutoRegKey@@PAUHKEY__@@@Z
+??4?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAAAAVAutoSecurityDescriptor@@PAX@Z
+??4?$AutoCleanup@VAutoWaitHandle@@PAX@@QAAAAVAutoWaitHandle@@PAX@Z
+??4?$AutoDelete@D@@QAAAAV0@PAD@Z
+??4?$AutoDelete@G@@QAAAAV0@PAG@Z
+??4?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAAAAV0@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@Z
+??4?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAAAAV0@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@Z
+??4?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@QAAAAV0@PAV?$SafeSet@PAVCCertMapping@@@@@Z
+??4?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@QAAAAV0@PAV?$SafeSet@PAVCShellUriSettings@@@@@Z
+??4?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAAAAV0@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@Z
+??4?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAAAAV0@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@Z
+??4?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAAAAV0@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@Z
+??4?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAAAAV0@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@Z
+??4?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAAAAV0@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@Z
+??4?$AutoDelete@VBlockedRecord@@@@QAAAAV0@PAVBlockedRecord@@@Z
+??4?$AutoDelete@VCConfigChangeSource@@@@QAAAAV0@PAVCConfigChangeSource@@@Z
+??4?$AutoDelete@VCObserverConfigChangeErrors@@@@QAAAAV0@PAVCObserverConfigChangeErrors@@@Z
+??4?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QAAAAV0@PAVCServiceWatcher@CServiceConfigCache@@@Z
+??4?$AutoDelete@VCWSManResource@@@@QAAAAV0@PAVCWSManResource@@@Z
+??4?$AutoDelete@VCertHash@@@@QAAAAV0@PAVCertHash@@@Z
+??4?$AutoDelete@VConfigUpdate@@@@QAAAAV0@PAVConfigUpdate@@@Z
+??4?$AutoDelete@VEnumSinkEx@@@@QAAAAV0@PAVEnumSinkEx@@@Z
+??4?$AutoDelete@VGPApiManager@@@@QAAAAV0@PAVGPApiManager@@@Z
+??4?$AutoDelete@VGeneralSinkEx@@@@QAAAAV0@PAVGeneralSinkEx@@@Z
+??4?$AutoDelete@VIChannelObserverFactory@@@@QAAAAV0@PAVIChannelObserverFactory@@@Z
+??4?$AutoDelete@VIQueryDASHSMASHInterface@@@@QAAAAV0@PAVIQueryDASHSMASHInterface@@@Z
+??4?$AutoDelete@VISpecification@@@@QAAAAV0@PAVISpecification@@@Z
+??4?$AutoDelete@VPacketCreator@@@@QAAAAV0@PAVPacketCreator@@@Z
+??4?$AutoDelete@VPacketParser@@@@QAAAAV0@PAVPacketParser@@@Z
+??4?$AutoDelete@VRunAsConfiguration@@@@QAAAAV0@PAVRunAsConfiguration@@@Z
+??4?$AutoDelete@VSecurityEntry@Catalog@@@@QAAAAV0@PAVSecurityEntry@Catalog@@@Z
+??4?$AutoDelete@VServiceSoapProcessor@@@@QAAAAV0@PAVServiceSoapProcessor@@@Z
+??4?$AutoDelete@VSubscriptionEnumerator@@@@QAAAAV0@PAVSubscriptionEnumerator@@@Z
+??4?$AutoDelete@VTSTRBUFFER@@@@QAAAAV0@PAVTSTRBUFFER@@@Z
+??4?$AutoDelete@VUniqueStringOverflow@@@@QAAAAV0@PAVUniqueStringOverflow@@@Z
+??4?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@QAAAAV0@PAVWSMANCONFIGTABLE_IDENTITY@@@Z
+??4?$AutoDelete@VWmiEnumContext@@@@QAAAAV0@PAVWmiEnumContext@@@Z
+??4?$AutoDelete@VXmlReader@@@@QAAAAV0@PAVXmlReader@@@Z
+??4?$AutoDeleteVector@$$CBG@@QAAAAV0@PBG@Z
+??4?$AutoDeleteVector@D@@QAAAAV0@PAD@Z
+??4?$AutoDeleteVector@E@@QAAAAV0@PAE@Z
+??4?$AutoDeleteVector@G@@QAAAAV0@PAG@Z
+??4?$AutoDeleteVector@PAG@@QAAAAV0@PAPAG@Z
+??4?$AutoDeleteVector@PBG@@QAAAAV0@PAPBG@Z
+??4?$AutoDeleteVector@U_CONFIG_UPDATE@@@@QAAAAV0@PAU_CONFIG_UPDATE@@@Z
+??4?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAAAAV0@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z
+??4?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QAAAAV0@PAU_WINRS_RUN_COMMAND_ARG@@@Z
+??4?$AutoDeleteVector@U_WSMAN_OPTION@@@@QAAAAV0@PAU_WSMAN_OPTION@@@Z
+??4?$AutoDeleteVector@X@@QAAAAV0@PAX@Z
+??4?$AutoFree@E@@QAAAAV0@PAE@Z
+??4?$AutoLocklessItemRecycle@VPacket@@@@QAAAAV0@PAVPacket@@@Z
+??4?$AutoRelease@UIClientSecurity@@@@QAAAAV0@PAUIClientSecurity@@@Z
+??4?$AutoRelease@UIEnumWbemClassObject@@@@QAAAAV0@PAUIEnumWbemClassObject@@@Z
+??4?$AutoRelease@UIErrorInfo@@@@QAAAAV0@PAUIErrorInfo@@@Z
+??4?$AutoRelease@UIUnknown@@@@QAAAAV0@PAUIUnknown@@@Z
+??4?$AutoRelease@UIWbemClassObject@@@@QAAAAV0@PAUIWbemClassObject@@@Z
+??4?$AutoRelease@UIWbemContext@@@@QAAAAV0@PAUIWbemContext@@@Z
+??4?$AutoRelease@UIWbemLocator@@@@QAAAAV0@PAUIWbemLocator@@@Z
+??4?$AutoRelease@UIWbemObjectTextSrc@@@@QAAAAV0@PAUIWbemObjectTextSrc@@@Z
+??4?$AutoRelease@UIWbemPath@@@@QAAAAV0@PAUIWbemPath@@@Z
+??4?$AutoRelease@UIWbemPathKeyList@@@@QAAAAV0@PAUIWbemPathKeyList@@@Z
+??4?$AutoRelease@UIWbemQualifierSet@@@@QAAAAV0@PAUIWbemQualifierSet@@@Z
+??4?$AutoRelease@UIWbemQuery@@@@QAAAAV0@PAUIWbemQuery@@@Z
+??4?$AutoRelease@UIWbemServices@@@@QAAAAV0@PAUIWbemServices@@@Z
+??4?$AutoRelease@VApplication@Client@WSMan@@@@QAAAAV0@PAVApplication@Client@WSMan@@@Z
+??4?$AutoRelease@VCBaseConfigCache@@@@QAAAAV0@PAVCBaseConfigCache@@@Z
+??4?$AutoRelease@VCClientConfigSettings@@@@QAAAAV0@PAVCClientConfigSettings@@@Z
+??4?$AutoRelease@VCCommonConfigSettings@@@@QAAAAV0@PAVCCommonConfigSettings@@@Z
+??4?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QAAAAV0@PAVCConfigCacheMap@CBaseConfigCache@@@Z
+??4?$AutoRelease@VCConfigManager@@@@QAAAAV0@PAVCConfigManager@@@Z
+??4?$AutoRelease@VCRemoteOperation@@@@QAAAAV0@PAVCRemoteOperation@@@Z
+??4?$AutoRelease@VCRemoteSession@@@@QAAAAV0@PAVCRemoteSession@@@Z
+??4?$AutoRelease@VCRequestContext@@@@QAAAAV0@PAVCRequestContext@@@Z
+??4?$AutoRelease@VCServiceCommonConfigSettings@@@@QAAAAV0@PAVCServiceCommonConfigSettings@@@Z
+??4?$AutoRelease@VCServiceConfigCache@@@@QAAAAV0@PAVCServiceConfigCache@@@Z
+??4?$AutoRelease@VCServiceConfigSettings@@@@QAAAAV0@PAVCServiceConfigSettings@@@Z
+??4?$AutoRelease@VCWSManEPR@@@@QAAAAV0@PAVCWSManEPR@@@Z
+??4?$AutoRelease@VCWSManGroupPolicyManager@@@@QAAAAV0@PAVCWSManGroupPolicyManager@@@Z
+??4?$AutoRelease@VCWSManResource@@@@QAAAAV0@PAVCWSManResource@@@Z
+??4?$AutoRelease@VCWinRSPluginConfigCache@@@@QAAAAV0@PAVCWinRSPluginConfigCache@@@Z
+??4?$AutoRelease@VCWinRSPluginConfigSettings@@@@QAAAAV0@PAVCWinRSPluginConfigSettings@@@Z
+??4?$AutoRelease@VEnumSinkEx@@@@QAAAAV0@PAVEnumSinkEx@@@Z
+??4?$AutoRelease@VGeneralSinkEx@@@@QAAAAV0@PAVGeneralSinkEx@@@Z
+??4?$AutoRelease@VIRequestContext@@@@QAAAAV0@PAVIRequestContext@@@Z
+??4?$AutoRelease@VISubscription@@@@QAAAAV0@PAVISubscription@@@Z
+??4?$AutoRelease@VInboundRequestDetails@@@@QAAAAV0@PAVInboundRequestDetails@@@Z
+??4?$AutoRelease@VUserRecord@@@@QAAAAV0@PAVUserRecord@@@Z
+??4?$AutoRelease@VWSManHttpListener@@@@QAAAAV0@PAVWSManHttpListener@@@Z
+??4?$AutoReleaseEx@VShell@Client@WSMan@@@@QAAAAV0@PAVShell@Client@WSMan@@@Z
+??4?$PacketElement@K@PacketParser@@QAAAAV01@ABV01@@Z
+??4?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QAAAAV01@ABV01@@Z
+??4?$PacketElement@PBG@PacketParser@@QAAAAV01@ABV01@@Z
+??4?$PacketElement@_K@PacketParser@@QAAAAV01@ABV01@@Z
+??4?$SimpleQueue@T_LARGE_INTEGER@@@@QAAAAV0@ABV0@@Z
+??4AutoBstr@@QAAAAV0@PAG@Z
+??4AutoBstrNoAlloc@@QAAAAV0@PAG@Z
+??4AutoCertContext@@QAAAAV0@PBU_CERT_CONTEXT@@@Z
+??4AutoChainContext@@QAAAAV0@PBU_CERT_CHAIN_CONTEXT@@@Z
+??4AutoCoTaskMemFree@@QAAAAV0@PAX@Z
+??4AutoEnvironmentBlock@@QAAAAV0@PAX@Z
+??4AutoFwXmlCloseParser@@QAAAAV0@PAX@Z
+??4AutoHandle@@QAAAAV0@PAX@Z
+??4AutoImpersonateUser@@QAAAAV0@PAX@Z
+??4AutoLibrary@@QAAAAV0@PAUHINSTANCE__@@@Z
+??4AutoLocalFree@@QAAAAV0@PAX@Z
+??4AutoMIClass@@QAAAAV0@PAU_MI_Class@@@Z
+??4AutoMIInstance@@QAAAAV0@PAU_MI_Instance@@@Z
+??4AutoObject@@QAAAAV0@PAUWSMAN_OBJECT@@@Z
+??4AutoRegKey@@QAAAAV0@PAUHKEY__@@@Z
+??4AutoSecurityDescriptor@@QAAAAV0@PAX@Z
+??4AutoWaitHandle@@QAAAAV0@PAX@Z
+??4ChildLifeTimeManager@@QAAAAV0@ABV0@@Z
+??4ConfigRegistry@@QAAAAV0@ABV0@@Z
+??4EtwCorrelationHelper@@QAAAAV0@ABV0@@Z
+??4EventLog@@QAAAAV0@ABV0@@Z
+??4ExtendedSemantic@@QAAAAV0@ABV0@@Z
+??4FastLock@@QAAAAV0@ABV0@@Z
+??4Fragment@PacketParser@@QAAAAV01@ABV01@@Z
+??4IConfigChangeObserver@@QAAAAV0@ABV0@@Z
+??4ILifeTimeMgmt@@QAAAAV0@ABV0@@Z
+??4IWSManGroupPolicyObserver@@QAAAAV0@ABV0@@Z
+??4IWSManGroupPolicyPublisher@@QAAAAV0@ABV0@@Z
+??4Locale@@QAAAAV0@ABV0@@Z
+??4NotUnderstandSoapHeader@PacketParser@@QAAAAV01@ABV01@@Z
+??4PacketFormatter@@QAAAAV0@ABV0@@Z
+??4RBUFFER@@QAAAAV0@ABV0@@Z
+??4SBUFFER@@QAAAAV0@ABV0@@Z
+??4SessionId@PacketParser@@QAAAAV01@ABV01@@Z
+??4SoapSemanticConverter@@QAAAAV0@ABV0@@Z
+??4UserAuthzRecord@@QAAAAV0@ABV0@@Z
+??6BufferFormatter@@UAAAAV0@AAVBufferFormatterDataFormatDWORD@@@Z
+??6BufferFormatter@@UAAAAV0@AAVBufferFormatterDataFormatULONGLONG@@@Z
+??6BufferFormatter@@UAAAAV0@AAVBufferFormatterDataPCWSTR@@@Z
+??6BufferFormatter@@UAAAAV0@AAVBufferFormatterDataPUCHAR@@@Z
+??6BufferFormatter@@UAAAAV0@AAVBufferFormatterDataXmlEscape@@@Z
+??6BufferFormatter@@UAAAAV0@K@Z
+??6BufferFormatter@@UAAAAV0@PAU_FWXML_ELEMENT@@@Z
+??7?$AutoCleanup@V?$AutoDelete@G@@PAG@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QBA_NXZ
+??7?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QBA_NXZ
+??7?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QBA_NXZ
+??7?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QBA_NXZ
+??7?$AutoCleanup@VAutoHandle@@PAX@@QBA_NXZ
+??7?$AutoCleanup@VAutoImpersonateUser@@PAX@@QBA_NXZ
+??7?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QBA_NXZ
+??7?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QBA_NXZ
+??7?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QBA_NXZ
+??A?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAAPAKABUPluginKey@@@Z
+??A?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAAPAPAVBlockedRecord@@ABUUserKey@@@Z
+??A?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAAPAVCertThumbprintMappedSet@CServiceConfigSettings@@ABVCertThumbprintKey@@@Z
+??A?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAAPAKABVStringKeyCI@@@Z
+??A?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAAPAUUSER_CONTEXT_INFO@WSManHttpListener@@ABVStringKeyCI@@@Z
+??A?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAAPAPAVExpiredOperationIdRecord@@ABVStringKeyStore@@@Z
+??A?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAAPAPAVServerFullDuplexChannel@@ABVStringKeyStore@@@Z
+??A?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAAPAPAVOptionValue@SessionOptions@Client@WSMan@@ABW4WSManSessionOption@@@Z
+??A?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAAPAPAVSendPacketArgs@RobustConnectionBuffer@@AB_K@Z
+??A?$SafeSet@PAX@@QBAPBQAXABQAX@Z
+??B?$AutoCleanup@V?$AutoDelete@D@@PAD@@QAAPADXZ
+??B?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAAPAGXZ
+??B?$AutoCleanup@V?$AutoDelete@G@@PAG@@QBAQAGXZ
+??B?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@QAAPAUIPRange@CWSManIPFilter@@XZ
+??B?$AutoCleanup@V?$AutoDelete@U_SID@@@@PAU_SID@@@@QAAPAU_SID@@XZ
+??B?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@QAAPAU_WSMAN_STREAM_ID_SET@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@QAAPAV?$Handle@VISubscription@@@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAAPAV?$SafeMap_Iterator@VStringKeyCI@@K@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAAPAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAAPAV?$SafeSet@PAVCCertMapping@@@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAAPAV?$SafeSet@PAVCShellUriSettings@@@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAAPAV?$SafeSet_Iterator@PAVCListenerOperation@@@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAAPAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAAPAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAAPAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QBAQAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@XZ
+??B?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAAPAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@QAAPAVAdminSid@CSecurity@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAAPAVBlockedRecord@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAAPAVCBaseConfigCache@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@QAAPAVCCertMapping@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@QAAPAVCConfigChangeSource@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@QAAPAVCListenerSettings@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@QAAPAVCObserverConfigChangeErrors@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAAPAVCServiceWatcher@CServiceConfigCache@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@QAAPAVCShellUriSettings@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@QAAPAVCWSManEPR@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAAPAVCWSManResource@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAAPAVCertHash@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAAPAVConfigUpdate@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VCredUIDllLoader@@@@PAVCredUIDllLoader@@@@QAAPAVCredUIDllLoader@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAAPAVEnumSinkEx@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBAQAVEnumSinkEx@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@QAAPAVEventHandler@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@QAAPAVExpiredOperationIdRecord@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@QAAPAVGPApiManager@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAAPAVGeneralSinkEx@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBAQAVGeneralSinkEx@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@QAAPAVIChannelObserverFactory@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAAPAVIQueryDASHSMASHInterface@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QBAQAVIQueryDASHSMASHInterface@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAAPAVISpecification@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QBAQAVISpecification@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@QAAPAVInteractiveSid@CSecurity@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@QAAPAVIpHlpApiDllLoader@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@QAAPAVMachineName@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@QAAPAVNetworkServiceSid@CSecurity@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@QAAPAVNtDsApiDllLoader@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAAPAVOptionValue@SessionOptions@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAAPAVPacketCreator@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@QAAPAVPacketParser@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@QAAPAVResources@Locale@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAAPAVSecurityEntry@Catalog@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAAPAVServiceSoapProcessor@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@QAAPAVShell32DllLoader@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@QAAPAVShlWApiDllLoader@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@QAAPAVSubscriptionManager@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAAPAVTSTRBUFFER@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QBAQAVTSTRBUFFER@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@QAAPAVUniqueStringOverflow@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@QAAPAVUser32DllLoader@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@QAAPAVWSMANCONFIGTABLE_IDENTITY@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@QAAPAVWSManMemCryptManager@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAAPAVWmiEnumContext@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QBAQAVWmiEnumContext@@XZ
+??B?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAAPAVXmlReader@@XZ
+??B?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAAPBGXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QAAPADXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAAPAEXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QBAQAEXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAAPAGXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QBAQAGXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@H@@PAH@@QAAPAHXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAAPAPAGXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QBAQAPAGXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAAPAPBGXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QBAQAPBGXZ
+??B?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@QAAPAU_CONFIG_UPDATE@@XZ
+??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAAPAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ
+??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QBAQAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ
+??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAAPAU_WINRS_RUN_COMMAND_ARG@@XZ
+??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QBAQAU_WINRS_RUN_COMMAND_ARG@@XZ
+??B?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@QAAPAU_WSMAN_OPTION@@XZ
+??B?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QAAPAXXZ
+??B?$AutoCleanup@V?$AutoFree@E@@PAE@@QAAPAEXZ
+??B?$AutoCleanup@V?$AutoFree@E@@PAE@@QBAQAEXZ
+??B?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAAPAVPacket@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@QAAPAUIAppHostChildElementCollection@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@QAAPAUIAppHostElement@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@QAAPAUIAppHostElementCollection@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAAPAUIClientSecurity@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QBAQAUIClientSecurity@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAAPAUIEnumWbemClassObject@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QBAQAUIEnumWbemClassObject@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAAPAUIErrorInfo@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QBAQAUIErrorInfo@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAAPAUIUnknown@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QBAQAUIUnknown@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAAPAUIWbemClassObject@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QBAQAUIWbemClassObject@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAAPAUIWbemContext@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QBAQAUIWbemContext@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAAPAUIWbemLocator@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QBAQAUIWbemLocator@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAAPAUIWbemObjectTextSrc@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QBAQAUIWbemObjectTextSrc@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAAPAUIWbemPath@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QBAQAUIWbemPath@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAAPAUIWbemPathKeyList@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QBAQAUIWbemPathKeyList@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAAPAUIWbemQualifierSet@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QBAQAUIWbemQualifierSet@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAAPAUIWbemQuery@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QBAQAUIWbemQuery@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAAPAUIWbemServices@@XZ
+??B?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QBAQAUIWbemServices@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAAPAVCBaseConfigCache@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAAPAVCClientConfigSettings@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@QAAPAVCCommonConfigSettings@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@QAAPAVCConfigCacheMap@CBaseConfigCache@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAAPAVCConfigManager@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAAPAVCRemoteSession@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAAPAVCRequestContext@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@QAAPAVCServiceCommonConfigSettings@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@QAAPAVCServiceConfigCache@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAAPAVCServiceConfigSettings@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAAPAVCWSManEPR@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QBAQAVCWSManEPR@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@QAAPAVCWSManGroupPolicyCache@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAAPAVCWSManGroupPolicyManager@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@QAAPAVCWSManObject@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QAAPAVCWSManResource@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QBAQAVCWSManResource@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAAPAVCWinRSPluginConfigCache@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QBAQAVCWinRSPluginConfigCache@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAAPAVCWinRSPluginConfigSettings@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAAPAVCommand@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@QAAPAVConfigNotification@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@QAAPAVConnectShellOperation@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@QAAPAVCreateShellOperation@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@QAAPAVDeleteShellOperation@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@QAAPAVDisconnectOperation@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAAPAVEnumSinkEx@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBAQAVEnumSinkEx@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAAPAVGeneralSinkEx@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBAQAVGeneralSinkEx@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PAVIISConfigSettings@@@@QAAPAVIISConfigSettings@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@QAAPAVIPCSoapProcessor@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAAPAVIRequestContext@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QBAQAVIRequestContext@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@QAAPAVISubscription@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QAAPAVInboundRequestDetails@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QBAQAVInboundRequestDetails@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAAPAVReceiveOperation@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@QAAPAVReconnectOperation@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAAPAVSendOperation@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAAPAVShell@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QBAQAVShell@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAAPAVSignalOperation@Client@WSMan@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QAAPAVUserRecord@@XZ
+??B?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QBAQAVUserRecord@@XZ
+??B?$AutoCleanup@VAutoBstr@@PAG@@QAAPAGXZ
+??B?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAAPAGXZ
+??B?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QBAQAGXZ
+??B?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAAPBU_CERT_CONTEXT@@XZ
+??B?$AutoCleanup@VAutoHandle@@PAX@@QAAPAXXZ
+??B?$AutoCleanup@VAutoHandle@@PAX@@QBAQAXXZ
+??B?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAAPAXXZ
+??B?$AutoCleanup@VAutoImpersonateUser@@PAX@@QBAQAXXZ
+??B?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@QAAPAUHINSTANCE__@@XZ
+??B?$AutoCleanup@VAutoLocalFree@@PAX@@QAAPAXXZ
+??B?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAAPAU_MI_Class@@XZ
+??B?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAAPAU_MI_Instance@@XZ
+??B?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAAPAUHKEY__@@XZ
+??B?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAAPAXXZ
+??B?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QBA_NXZ
+??B?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QBA_NXZ
+??B?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QBA_NXZ
+??B?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QBA_NXZ
+??B?$SafeMap_Iterator@VKey@Locale@@K@@QBA_NXZ
+??B?$SafeMap_Iterator@VStringKeyCI@@K@@QBA_NXZ
+??B?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QBA_NXZ
+??B?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QBA_NXZ
+??B?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QBA_NXZ
+??C?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@QAAPAU_WSMAN_STREAM_ID_SET@@XZ
+??C?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@QAAPAV?$Handle@VISubscription@@@@XZ
+??C?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAAPAV?$SafeMap_Iterator@VStringKeyCI@@K@@XZ
+??C?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAAPAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@XZ
+??C?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAAPAV?$SafeSet@PAVCCertMapping@@@@XZ
+??C?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAAPAV?$SafeSet@PAVCShellUriSettings@@@@XZ
+??C?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAAPAV?$SafeSet_Iterator@PAVCListenerOperation@@@@XZ
+??C?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAAPAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@XZ
+??C?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAAPAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@XZ
+??C?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAAPAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@XZ
+??C?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAAPAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAAPAVBlockedRecord@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAAPAVCBaseConfigCache@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@QAAPAVCCertMapping@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@QAAPAVCConfigChangeSource@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@QAAPAVCListenerSettings@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAAPAVCServiceWatcher@CServiceConfigCache@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@QAAPAVCShellUriSettings@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@QAAPAVCWSManEPR@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAAPAVCWSManResource@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAAPAVCertHash@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAAPAVConfigUpdate@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAAPAVEnumSinkEx@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBAQAVEnumSinkEx@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@QAAPAVExpiredOperationIdRecord@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@QAAPAVGPApiManager@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAAPAVGeneralSinkEx@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBAQAVGeneralSinkEx@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@QAAPAVIChannelObserverFactory@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAAPAVIQueryDASHSMASHInterface@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QBAQAVIQueryDASHSMASHInterface@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAAPAVISpecification@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QBAQAVISpecification@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PAVMasterReceiveData@CListenerReceive@@@@QAAPAVMasterReceiveData@CListenerReceive@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAAPAVOptionValue@SessionOptions@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAAPAVPacketCreator@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@QAAPAVPacketParser@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@QAAPAVRunAsConfiguration@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAAPAVSecurityEntry@Catalog@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PAVSendPacketArgs@RobustConnectionBuffer@@@@QAAPAVSendPacketArgs@RobustConnectionBuffer@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAAPAVServiceSoapProcessor@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@QAAPAVSubscriptionEnumerator@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAAPAVTSTRBUFFER@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QBAQAVTSTRBUFFER@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@QAAPAVUniqueStringOverflow@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@QAAPAVWSMANCONFIGTABLE_IDENTITY@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAAPAVWmiEnumContext@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QBAQAVWmiEnumContext@@XZ
+??C?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAAPAVXmlReader@@XZ
+??C?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAAPAEXZ
+??C?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QBAQAEXZ
+??C?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAAPAGXZ
+??C?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QBAQAGXZ
+??C?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAAPAPAGXZ
+??C?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QBAQAPAGXZ
+??C?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAAPAPBGXZ
+??C?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QBAQAPBGXZ
+??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAAPAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ
+??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QBAQAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ
+??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAAPAU_WINRS_RUN_COMMAND_ARG@@XZ
+??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QBAQAU_WINRS_RUN_COMMAND_ARG@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@QAAPAUIAppHostChildElementCollection@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@QAAPAUIAppHostElementCollection@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@QAAPAUIAppHostProperty@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@QAAPAUIAppHostPropertyCollection@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAAPAUIClientSecurity@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QBAQAUIClientSecurity@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAAPAUIEnumWbemClassObject@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QBAQAUIEnumWbemClassObject@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAAPAUIErrorInfo@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QBAQAUIErrorInfo@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAAPAUIUnknown@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QBAQAUIUnknown@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAAPAUIWbemClassObject@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QBAQAUIWbemClassObject@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAAPAUIWbemContext@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QBAQAUIWbemContext@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAAPAUIWbemLocator@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QBAQAUIWbemLocator@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAAPAUIWbemObjectTextSrc@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QBAQAUIWbemObjectTextSrc@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAAPAUIWbemPath@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QBAQAUIWbemPath@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAAPAUIWbemPathKeyList@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QBAQAUIWbemPathKeyList@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAAPAUIWbemQualifierSet@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QBAQAUIWbemQualifierSet@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAAPAUIWbemQuery@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QBAQAUIWbemQuery@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAAPAUIWbemServices@@XZ
+??C?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QBAQAUIWbemServices@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAAPAVCBaseConfigCache@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAAPAVCClientConfigSettings@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@QAAPAVCConfigCacheMap@CBaseConfigCache@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAAPAVCConfigManager@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PAVCListenerReceive@@@@QAAPAVCListenerReceive@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAAPAVCRemoteSession@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QBAQAVCRemoteSession@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAAPAVCRequestContext@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@QAAPAVCServiceCommonConfigSettings@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@QAAPAVCServiceConfigCache@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAAPAVCServiceConfigSettings@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAAPAVCWSManEPR@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QBAQAVCWSManEPR@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@QAAPAVCWSManGroupPolicyCache@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAAPAVCWSManGroupPolicyManager@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@QAAPAVCWSManObject@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QAAPAVCWSManResource@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAAPAVCWinRSPluginConfigCache@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QBAQAVCWinRSPluginConfigCache@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAAPAVCWinRSPluginConfigSettings@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAAPAVCommand@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@QAAPAVConfigNotification@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@QAAPAVConnectShellOperation@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@QAAPAVCreateShellOperation@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@QAAPAVDeleteShellOperation@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@QAAPAVDisconnectOperation@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAAPAVEnumSinkEx@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBAQAVEnumSinkEx@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAAPAVGeneralSinkEx@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBAQAVGeneralSinkEx@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@QAAPAVIPCSoapProcessor@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAAPAVIRequestContext@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QBAQAVIRequestContext@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QAAPAVInboundRequestDetails@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QBAQAVInboundRequestDetails@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAAPAVReceiveOperation@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@QAAPAVReconnectOperation@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAAPAVSendOperation@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAAPAVShell@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QBAQAVShell@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAAPAVSignalOperation@Client@WSMan@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QAAPAVUserRecord@@XZ
+??C?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@QAAPAVWSManHttpListener@@XZ
+??C?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAAPAGXZ
+??C?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QBAQAGXZ
+??C?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAAPBU_CERT_CHAIN_CONTEXT@@XZ
+??C?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAAPAXXZ
+??C?$AutoCleanup@VAutoImpersonateUser@@PAX@@QBAQAXXZ
+??C?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAAPAU_MI_Class@@XZ
+??C?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QBAAAPAVExpiredOperationIdRecord@@XZ
+??C?$SafeSet_Iterator@PAVCListenerOperation@@@@QBAABQAVCListenerOperation@@XZ
+??D?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QBAAAVCertThumbprintMappedSet@CServiceConfigSettings@@XZ
+??D?$SafeMap_Iterator@VKey@Locale@@K@@QBAAAKXZ
+??D?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QBAAAPAVExpiredOperationIdRecord@@XZ
+??D?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QBAAAPAVOptionValue@SessionOptions@Client@WSMan@@XZ
+??D?$SafeSet_Iterator@PAVCCertMapping@@@@QBAABQAVCCertMapping@@XZ
+??D?$SafeSet_Iterator@PAVCListenerOperation@@@@QBAABQAVCListenerOperation@@XZ
+??D?$SafeSet_Iterator@PAVCShellUriSettings@@@@QBAABQAVCShellUriSettings@@XZ
+??E?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAAXH@Z
+??E?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAAXH@Z
+??E?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAAXH@Z
+??E?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAAXH@Z
+??E?$SafeMap_Iterator@VStringKeyCI@@K@@QAAXH@Z
+??E?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QAAXH@Z
+??E?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAAXH@Z
+??E?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAAXH@Z
+??_7?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@6B@ DATA
+??_7?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@6B@ DATA
+??_7?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@6B@ DATA
+??_7?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@6B@ DATA
+??_7?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@6B@ DATA
+??_7?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@6B@ DATA
+??_7?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@6B@ DATA
+??_7?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@6B@ DATA
+??_7?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@6B@ DATA
+??_7?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@6B@ DATA
+??_7?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@6B@ DATA
+??_7?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@6B@ DATA
+??_7?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@6B@ DATA
+??_7?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@6B@ DATA
+??_7?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@6B@ DATA
+??_7?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@6B@ DATA
+??_7?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@6B@ DATA
+??_7?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@6B@ DATA
+??_7?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@6B@ DATA
+??_7?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@6B@ DATA
+??_7?$SafeSet@PAVCCertMapping@@@@6B@ DATA
+??_7?$SafeSet@PAVCListenerOperation@@@@6B@ DATA
+??_7?$SafeSet@PAVCShellUriSettings@@@@6B@ DATA
+??_7?$SafeSet@PAX@@6B@ DATA
+??_7BufferFormatter@@6B@ DATA
+??_7CBaseConfigCache@@6BIConfigChangeObserver@@@ DATA
+??_7CBaseConfigCache@@6BILifeTimeMgmt@@@ DATA
+??_7CClientConfigCache@@6BIConfigChangeObserver@@@ DATA
+??_7CClientConfigCache@@6BILifeTimeMgmt@@@ DATA
+??_7CConfigManager@@6B@ DATA
+??_7CErrorContext@@6B@ DATA
+??_7CRequestContext@@6BCErrorContext@@@ DATA
+??_7CRequestContext@@6BEtwCorrelationHelper@@@ DATA
+??_7CServiceConfigCache@@6BIConfigChangeObserver@@@ DATA
+??_7CServiceConfigCache@@6BILifeTimeMgmt@@@ DATA
+??_7CWSManEPR@@6B@ DATA
+??_7CWSManGroupPolicyManager@@6B@ DATA
+??_7CWSManResource@@6B@ DATA
+??_7CWSManResourceNoResourceUri@@6B@ DATA
+??_7CWSManSecurityUI@@6B@ DATA
+??_7CWinRSPluginConfigCache@@6BIConfigChangeObserver@@@ DATA
+??_7CWinRSPluginConfigCache@@6BILifeTimeMgmt@@@ DATA
+??_7CircularBufferFormatter@@6B@ DATA
+??_7EtwCorrelationHelper@@6B@ DATA
+??_7IConfigChangeObserver@@6B@ DATA
+??_7ILifeTimeMgmt@@6B@ DATA
+??_7IRequestContext@@6B@ DATA
+??_7IWSManGroupPolicyObserver@@6B@ DATA
+??_7IWSManGroupPolicyPublisher@@6B@ DATA
+??_7PacketParser@@6B@ DATA
+??_7UserAuthzRecord@@6B@ DATA
+??_7UserRecord@@6B@ DATA
+??_FCErrorContext@@QAAXXZ
+??_FRBUFFER@@QAAXXZ
+?Acquire@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@UBAXXZ
+?Acquire@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@UBAXXZ
+?Acquire@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UBAXXZ
+?Acquire@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UBAXXZ
+?Acquire@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UBAXXZ
+?Acquire@?$SafeMap@VStringKey@@PAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PAVListenerEvents@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VStringKey@@PAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PAVListenerSourceSubscription@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UBAXXZ
+?Acquire@?$SafeMap@VStringKeyCI@@PAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PAVIISEndpoint@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@UBAXXZ
+?Acquire@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UBAXXZ
+?Acquire@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@UBAXXZ
+?Acquire@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@UBAXXZ
+?Acquire@?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAAXXZ
+?Acquire@?$SafeMap_Lock@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAAXXZ
+?Acquire@CWSManCriticalSection@@QAAXXZ
+?AcquireExclusive@FastLock@@QAAXXZ
+?AcquireShared@FastLock@@QAAXXZ
+?Acquired@?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAA_NXZ
+?Acquired@?$SafeMap_Lock@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAA_NXZ
+?Add@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAA_NABQAVCCertMapping@@ABUEmpty@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAA_NABQAVCListenerOperation@@ABUEmpty@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAA_NABQAVCShellUriSettings@@ABUEmpty@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAA_NABQAXABUEmpty@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAA_NABUPluginKey@@ABKAAVIRequestContext@@@Z
+?Add@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAA_NABUUserKey@@ABQAVBlockedRecord@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAA_NABVCertThumbprintKey@@ABVCertThumbprintMappedSet@CServiceConfigSettings@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAA_NABVKey@Locale@@ABKAAVIRequestContext@@@Z
+?Add@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA_NABVStringKeyCI@@ABKAAVIRequestContext@@@Z
+?Add@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QAA_NABVStringKeyCI@@ABUEmpty@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAA_NABVStringKeyCI@@ABUUSER_CONTEXT_INFO@WSManHttpListener@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAA_NABVStringKeyStore@@ABQAVExpiredOperationIdRecord@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAA_NABVStringKeyStore@@ABQAVServerFullDuplexChannel@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAA_NABW4WSManSessionOption@@ABQAVOptionValue@SessionOptions@Client@WSMan@@AAVIRequestContext@@@Z
+?Add@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAA_NAB_KABQAVSendPacketArgs@RobustConnectionBuffer@@AAVIRequestContext@@@Z
+?Add@?$SafeSet@PAVCCertMapping@@@@QAA_NABQAVCCertMapping@@AAVIRequestContext@@@Z
+?Add@?$SafeSet@PAVCListenerOperation@@@@QAA_NABQAVCListenerOperation@@AAVIRequestContext@@@Z
+?Add@?$SafeSet@PAVCShellUriSettings@@@@QAA_NABQAVCShellUriSettings@@AAVIRequestContext@@@Z
+?Add@?$SafeSet@PAX@@QAA_NABQAXAAVIRequestContext@@@Z
+?Add@?$SafeSet@VStringKeyCI@@@@QAA_NABVStringKeyCI@@AAVIRequestContext@@@Z
+?AddDefaultPlugins@ConfigUpdate@@SAHPAVIRequestContext@@H@Z
+?AddKey@CWSManResourceNoResourceUri@@QAAHPBG0PAVIRequestContext@@@Z
+?AddMessage@CRequestContext@@AAAHPBGPAPAD1@Z
+?AddOption@CWSManResourceNoResourceUri@@QAAHPBG0HPAVIRequestContext@@@Z
+?AddOptionSet@CWSManResourceNoResourceUri@@QAAHPAU_WSMAN_OPTION_SET@@PAVIRequestContext@@@Z
+?AddPacket@PacketParser@@QAA_NPAVPacket@@_N11@Z
+?AddRef@CWSManSecurityUI@@UAAKXZ
+?AddRef@ILifeTimeMgmt@@UAAJXZ
+?AddRef@UserRecord@@QAA_NAAVIRequestContext@@@Z
+?AddSource@CBaseConfigCache@@IAAHPAVIRequestContext@@PAVCConfigChangeSource@@@Z
+?AddToMap@CBaseConfigCache@@AAAHPAVIRequestContext@@AAVAutoLocalFree@@@Z
+?Alloc@WSManMemory@@SAPAXIHW4_NitsFaultMode@@@Z
+?AllocBstr@WSManMemory@@SAPAGPBGHH@Z
+?AllocBstrLen@WSManMemory@@SAPAGPBGIHH@Z
+?AllocCache@CClientConfigCache@@CAPAVCBaseConfigCache@@XZ
+?AllocCache@CServiceConfigCache@@CAPAVCBaseConfigCache@@XZ
+?AllocCache@CWinRSPluginConfigCache@@CAPAVCBaseConfigCache@@XZ
+?AllocSysString@TSTRBUFFER@@QBAJPAPAG@Z
+?AllowBasic@CCommonConfigSettings@@UBAHXZ
+?AllowClientCertificate@CCommonConfigSettings@@UBAHXZ
+?AllowCredSsp@CCommonConfigSettings@@UBAHXZ
+?AllowKerberos@CCommonConfigSettings@@UBAHXZ
+?AllowNegotiate@CCommonConfigSettings@@UBAHXZ
+?AllowUnencrypted@CCommonConfigSettings@@UBAHXZ
+?Append@SBUFFER@@QAAJPAEI@Z
+?Append@SBUFFER@@QAAJPAV1@@Z
+?Append@TSTRBUFFER@@QAAJPBG@Z
+?Append@TSTRBUFFER@@QAAJPBGII@Z
+?AppendChar@TSTRBUFFER@@QAAJG@Z
+?AppendEscapeXmlAttribute@TSTRBUFFER@@QAAJPBGG@Z
+?AppendEscapeXmlContent@TSTRBUFFER@@QAAJPBG_N@Z
+?AppendXmlElem@TSTRBUFFER@@QAAJPBG0HKPAU_XML_ATTRIB@@@Z
+?AppendXmlElemWithNamespace@TSTRBUFFER@@QAAJPBG00HKPAU_XML_ATTRIB@@@Z
+?AppendXmlElemWithNamespaceAndPrefix@TSTRBUFFER@@QAAJPBG000HKPAU_XML_ATTRIB@@@Z
+?AppendXmlElemWithPrefix@TSTRBUFFER@@QAAJPBG00HKPAU_XML_ATTRIB@@@Z
+?AppendXmlEndElem@TSTRBUFFER@@QAAJPBG@Z
+?AppendXmlEndElemWithPrefix@TSTRBUFFER@@QAAJPBG0@Z
+?AppendXmlEndFragment@TSTRBUFFER@@QAAJXZ
+?AppendXmlEndItem@TSTRBUFFER@@QAAJXZ
+?AppendXmlStartElem@TSTRBUFFER@@QAAJPBGHKPAU_XML_ATTRIB@@@Z
+?AppendXmlStartElemWithNamespace@TSTRBUFFER@@QAAJPBG0HKPAU_XML_ATTRIB@@@Z
+?AppendXmlStartElemWithNamespaceAndPrefix@TSTRBUFFER@@QAAJPBG00HKPAU_XML_ATTRIB@@@Z
+?AppendXmlStartElemWithNamespaces@TSTRBUFFER@@QAAJPBGKPAU_XML_NAMESPACE_PREFIX@@HKPAU_XML_ATTRIB@@@Z
+?AppendXmlStartElemWithNamespacesAndPrefixes@TSTRBUFFER@@QAAJPBG0KPAU_XML_NAMESPACE_PREFIX@@HKPAU_XML_ATTRIB@@@Z
+?AppendXmlStartElemWithPrefix@TSTRBUFFER@@QAAJPBG0HKPAU_XML_ATTRIB@@@Z
+?AppendXmlStartFragment@TSTRBUFFER@@QAAJXZ
+?AppendXmlStartItem@TSTRBUFFER@@QAAJXZ
+?ApplyQuota@UserRecord@@QAA_NW4OperationType@@AAVIRequestContext@@PBVProvider@Catalog@@PAVCServiceConfigSettings@@@Z
+?ApplySecurity@ConfigRegistry@@IAAHPAVIRequestContext@@PAUHKEY__@@PBG2@Z
+?AsReference@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAAAAV1@XZ
+?AsReference@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAAAAV1@XZ
+?AuthzComplete@UserRecord@@UAAKPAX0W4AdministratorType@UserAuthzRecord@@KPBG@Z
+?BOMS@PacketFormatter@@0QBUBOMInfo@1@B DATA
+?BeginRevertToSelf@CSecurity@@SAHPAPAXK@Z
+?BuildFragmentTransfer@CWSManResourceNoResourceUri@@UAAHAAVBufferFormatter@@@Z
+?BuildOptionSet@CWSManResourceNoResourceUri@@QAAHAAVBufferFormatter@@@Z
+?BuildSelectorSet@CWSManEPR@@UAAHAAVBufferFormatter@@@Z
+?BuildSelectorSet@CWSManResourceNoResourceUri@@UAAHAAVBufferFormatter@@@Z
+?CHARSETS@PacketFormatter@@0QBUCharsetInfo@1@B DATA
+?ChangeLogging@CServiceConfigCache@@QAAXW4ErrorLogging@@@Z
+?CheckSharedSSLConfiguration@ConfigRegistry@@IAAHPAVIRequestContext@@PBG1HPAH@Z
+?Clear@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAAXXZ
+?Clear@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAAXXZ
+?Clear@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAAXXZ
+?Clear@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAAXXZ
+?ClearKeys@CWSManResourceNoResourceUri@@QAAHXZ
+?ClearOptions@CWSManResourceNoResourceUri@@QAAHXZ
+?ClearRegistryKeys@ConfigRegistry@@IAAHPAVIRequestContext@@@Z
+?ClearSubKeys@@YAHPAUHKEY__@@PAVIRequestContext@@@Z
+?CompleteWithErrorContext@CRequestContext@@QAAXPAU_WSMAN_PLUGIN_REQUEST@@@Z
+?Confirm@ExtendedSemantic@@2KB
+?Copy@TSTRBUFFER@@QAAJPBG@Z
+?CopyString@@YAPAGPAVIRequestContext@@W4CallSiteId@@PBG@Z
+?CopyString@@YAPAGPBGABHAAVIRequestContext@@@Z
+?CopyString@MessageId@PacketParser@@QAAKPBGH@Z
+?CopyTo@CErrorContext@@UBAXPAVIRequestContext@@@Z
+?CopyTo@CRequestContext@@UBAXPAVIRequestContext@@@Z
+?CreateActivityId@EventHandler@WSMan@@SAXAAU_GUID@@@Z
+?CreateAnEvent@SoapSemanticConverter@@QAAKKPAVSemanticMessage@@AAVBufferFormatter@@PAVIRequestContext@@@Z
+?CreateAutoConfiguredListener@CConfigManager@@AAAHPAVIRequestContext@@PAVLISTENER_IDENTITY@@@Z
+?CreateInstance@?$ILoader@VAdminSid@CSecurity@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VCredUIDllLoader@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VEventHandler@WSMan@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VInteractiveSid@CSecurity@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VIpHlpApiDllLoader@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VMachineName@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VNetworkServiceSid@CSecurity@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VNtDsApiDllLoader@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VResources@Locale@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VShell32DllLoader@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VShlWApiDllLoader@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VSubscriptionManager@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VUser32DllLoader@@@@IAA_NAAVIRequestContext@@@Z
+?CreateInstance@?$ILoader@VWSManMemCryptManager@@@@IAA_NAAVIRequestContext@@@Z
+?CreateKey@ConfigRegistry@@IAAHPAVIRequestContext@@PBGPAPAUHKEY__@@1KPAK@Z
+?CreateNew@CBaseConfigCache@@CAPAV1@PAVIRequestContext@@PAVCConfigCacheMap@1@P6APAV1@XZW4ErrorLogging@@H@Z
+CreateProvHost
+?CreateRenderingInformation@CWSManSecurityUI@@AAAHPAVIRequestContext@@@Z
+?CreateResponse@SoapSemanticConverter@@QAAKKW4_MI_OperationCallback_ResponseType@@AAVBufferFormatter@@PAVIRequestContext@@@Z
+?CreateSessionGuid@SessionId@PacketParser@@QAAKPBGH@Z
+?Data@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@IBAAAV?$STLMap@PAVCCertMapping@@UEmpty@@@@XZ
+?Data@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@IBAAAV?$STLMap@PAVCListenerOperation@@UEmpty@@@@XZ
+?Data@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@IBAAAV?$STLMap@PAVCShellUriSettings@@UEmpty@@@@XZ
+?Data@?$SafeMap_Iterator@PAXUEmpty@@@@IBAAAV?$STLMap@PAXUEmpty@@@@XZ
+?Data@?$SafeMap_Iterator@UPluginKey@@K@@IBAAAV?$STLMap@UPluginKey@@K@@XZ
+?Data@?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@IBAAAV?$STLMap@UUserKey@@PAVBlockedRecord@@@@XZ
+?Data@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@IBAAAV?$STLMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@XZ
+?Data@?$SafeMap_Iterator@VKey@Locale@@K@@IBAAAV?$STLMap@VKey@Locale@@K@@XZ
+?Data@?$SafeMap_Iterator@VStringKeyCI@@K@@IBAAAV?$STLMap@VStringKeyCI@@K@@XZ
+?Data@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@IBAAAV?$STLMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@XZ
+?Data@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@IBAAAV?$STLMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@XZ
+?Data@?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@IBAAAV?$STLMap@VStringKeyStore@@PAVServerFullDuplexChannel@@@@XZ
+?Data@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@IBAAAV?$STLMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@XZ
+?Data@?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@IBAAAV?$STLMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@XZ
+?DeInitialize@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VStringKey@@PAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PAVListenerEvents@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VStringKey@@PAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PAVListenerSourceSubscription@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VStringKeyCI@@PAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PAVIISEndpoint@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@UAA_NAAVIRequestContext@@@Z
+?DeInitialize@CWSManGroupPolicyManager@@AAAHXZ
+?DeInitialize@EventHandler@WSMan@@QAA_NAAVIRequestContext@@@Z
+?Debug@ExtendedSemantic@@2KB
+?Decode@PacketFormatter@@QBAKPAPAVPacket@@@Z
+?DecodeFaultObject@CRequestContext@@AAAKPAU_FWXML_ELEMENT@@AAPBG11@Z
+?DecodeFaultObject@CRequestContext@@AAAKPBGKAAPBG11@Z
+?DecodeFaultObjectProvider@CRequestContext@@AAAKPAU_FWXML_ELEMENT@@AAPBG1@Z
+?DecodeFaultObjectProviderMessage@CRequestContext@@AAAKPAU_FWXML_ELEMENT@@AAPBG@Z
+?DecodeFaultReason@CRequestContext@@AAAKPAU_FWXML_ELEMENT@@AAPBG@Z
+?DecreaseProfileCount@UserRecord@@QAAXXZ
+?DeleteConfigKey@ConfigRegistry@@KAHPAVIRequestContext@@PBG1H@Z
+?DeleteCredentialsFromCredmanStore@CConfigManager@@SAHPAVIRequestContext@@PAG@Z
+?DeleteKey@@YAHPAVIRequestContext@@PBG1@Z
+?DeleteKey@ConfigRegistry@@KAHPAVIRequestContext@@PBGH@Z
+?DeleteSubkeys@ConfigRegistry@@KAHPAVIRequestContext@@PAUHKEY__@@PBGHH@Z
+?DeleteValues@ConfigRegistry@@KAHPAVIRequestContext@@PAUHKEY__@@@Z
+?Detach@?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAAPAGXZ
+?Detach@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@QAAPAUIPRange@CWSManIPFilter@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@QAAPAU_WSMAN_STREAM_ID_SET@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@QAAPAV?$Handle@VISubscription@@@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAAPAV?$SafeSet@PAVCCertMapping@@@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAAPAV?$SafeSet@PAVCShellUriSettings@@@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAAPAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@QAAPAVAdminSid@CSecurity@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAAPAVBlockedRecord@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAAPAVCBaseConfigCache@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@QAAPAVCCertMapping@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@QAAPAVCListenerSettings@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAAPAVCServiceWatcher@CServiceConfigCache@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@QAAPAVCShellUriSettings@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@QAAPAVCWSManEPR@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAAPAVCWSManResource@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAAPAVCertHash@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAAPAVConfigUpdate@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VCredUIDllLoader@@@@PAVCredUIDllLoader@@@@QAAPAVCredUIDllLoader@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAAPAVEnumSinkEx@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@QAAPAVEventHandler@WSMan@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@QAAPAVExpiredOperationIdRecord@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAAPAVGeneralSinkEx@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAAPAVIQueryDASHSMASHInterface@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAAPAVISpecification@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@QAAPAVInteractiveSid@CSecurity@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@QAAPAVIpHlpApiDllLoader@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@QAAPAVMachineName@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@QAAPAVNetworkServiceSid@CSecurity@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@QAAPAVNtDsApiDllLoader@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAAPAVOptionValue@SessionOptions@Client@WSMan@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@QAAPAVResources@Locale@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAAPAVSecurityEntry@Catalog@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAAPAVServiceSoapProcessor@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@QAAPAVShell32DllLoader@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@QAAPAVShlWApiDllLoader@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@QAAPAVSubscriptionManager@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAAPAVTSTRBUFFER@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@QAAPAVUser32DllLoader@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@QAAPAVWSManMemCryptManager@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAAPAVWmiEnumContext@@XZ
+?Detach@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAAPAVXmlReader@@XZ
+?Detach@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAAPBGXZ
+?Detach@?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QAAPADXZ
+?Detach@?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAAPAEXZ
+?Detach@?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAAPAGXZ
+?Detach@?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAAPAPAGXZ
+?Detach@?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAAPAPBGXZ
+?Detach@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAAPAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ
+?Detach@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAAPAU_WINRS_RUN_COMMAND_ARG@@XZ
+?Detach@?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@QAAPAU_WSMAN_OPTION@@XZ
+?Detach@?$AutoCleanup@V?$AutoFree@E@@PAE@@QAAPAEXZ
+?Detach@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAAPAVPacket@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAAPAUIClientSecurity@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAAPAUIEnumWbemClassObject@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAAPAUIErrorInfo@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAAPAUIUnknown@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAAPAUIWbemClassObject@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAAPAUIWbemContext@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAAPAUIWbemLocator@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAAPAUIWbemObjectTextSrc@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAAPAUIWbemPath@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAAPAUIWbemPathKeyList@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAAPAUIWbemQualifierSet@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAAPAUIWbemQuery@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAAPAUIWbemServices@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@QAAPAVApplication@Client@WSMan@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAAPAVCBaseConfigCache@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAAPAVCClientConfigSettings@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@QAAPAVCCommonConfigSettings@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAAPAVCConfigManager@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAAPAVCRemoteSession@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAAPAVCRequestContext@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAAPAVCServiceConfigSettings@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAAPAVCWSManEPR@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@QAAPAVCWSManGroupPolicyCache@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAAPAVCWSManGroupPolicyManager@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@QAAPAVCWSManObject@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAAPAVCWinRSPluginConfigCache@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAAPAVCWinRSPluginConfigSettings@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAAPAVCommand@Client@WSMan@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAAPAVEnumSinkEx@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAAPAVGeneralSinkEx@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@QAAPAVIPCSoapProcessor@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAAPAVIRequestContext@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAAPAVReceiveOperation@Client@WSMan@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAAPAVSendOperation@Client@WSMan@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAAPAVShell@Client@WSMan@@XZ
+?Detach@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAAPAVSignalOperation@Client@WSMan@@XZ
+?Detach@?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAAPAGXZ
+?Detach@?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAAPBU_CERT_CONTEXT@@XZ
+?Detach@?$AutoCleanup@VAutoHandle@@PAX@@QAAPAXXZ
+?Detach@?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAAPAXXZ
+?Detach@?$AutoCleanup@VAutoLocalFree@@PAX@@QAAPAXXZ
+?Detach@?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAAPAU_MI_Class@@XZ
+?Detach@?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAAPAU_MI_Instance@@XZ
+?Detach@?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAAPAUHKEY__@@XZ
+?Detach@?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAAPAXXZ
+?Detach@?$AutoCleanup@VAutoWaitHandle@@PAX@@QAAPAXXZ
+?Detach@BufferFormatter@@QAAPAEXZ
+?Discard@CServiceWatcher@CServiceConfigCache@@QAAXXZ
+?DoOnChange@CBaseConfigCache@@IAAXW4ConfigChangeSources@@KW4ConfigChangeSeverityType@@@Z
+?DoesThreadOwnLock@CWSManCriticalSection@@QAAHXZ
+?Down@?$LoaderSerializer@VSubscriptionManager@@$01@@AAAJXZ
+?DropData@CircularBufferFormatter@@QAAXK@Z
+?DuplicateCurrentToken@CSecurity@@SAHPAPAXKPAU_SECURITY_ATTRIBUTES@@W4_SECURITY_IMPERSONATION_LEVEL@@W4_TOKEN_TYPE@@H@Z
+?EnableAllPrivileges@@YAHPAPAE@Z
+?Encode@PacketFormatter@@QBAKPAPAVPacket@@@Z
+?Encode@PacketFormatter@@QBAKPBGKPAEKPAPAEPAK_N@Z
+?EndOfStream@PacketParser@@QAAXK@Z
+?EndRevertToSelf@CSecurity@@SAHPAX@Z
+?EnsureActivityIdOnThread@EventHandler@WSMan@@SAXXZ
+?EnsureNoActiveCaches@CClientConfigCache@@SAXXZ
+?EnsureNoActiveCaches@CServiceConfigCache@@SAXXZ
+?Error@EventLog@@SAXK@Z
+?Error@EventLog@@SAXKGPAPBG@Z
+?Error@EventLog@@SAXKPBG@Z
+?ErrorAction@ExtendedSemantic@@2KB
+?EventEnabled@EventHandler@WSMan@@AAA_NABU_EVENT_DESCRIPTOR@@@Z
+?EventProviderEnabled@EventHandler@WSMan@@AAA_NXZ
+?EventWrite@EventHandler@WSMan@@AAAXABU_EVENT_DESCRIPTOR@@KPAU_EVENT_DATA_DESCRIPTOR@@@Z
+?ExtractContextId@PacketParser@@QAAHPAPBGKPBG@Z
+?ExtractShellId@PacketParser@@QAAHPAVCRequestContext@@PAGK@Z
+?ExtractSidFromToken@CSecurity@@SAHPAVIRequestContext@@PAXAAVAutoLocalFree@@@Z
+?FindExisting@CBaseConfigCache@@CAPAV1@PAVCConfigCacheMap@1@PBGW4ErrorLogging@@@Z
+?FindMatch@CResourceAlias@@AAAPAU_ALIAS_INFORMATION@@PBG@Z
+?First@TSTRBUFFER@@QBAPBGXZ
+?Format@Locale@@ABA_NKPAPADPAPAXPAGKGW4CallSiteId@@@Z
+?FormatDataDescriptor@EventHandler@WSMan@@SAXAAU_EVENT_DATA_DESCRIPTOR@@AAG@Z
+?FormatDataDescriptor@EventHandler@WSMan@@SAXAAU_EVENT_DATA_DESCRIPTOR@@AAJ@Z
+?FormatDataDescriptor@EventHandler@WSMan@@SAXAAU_EVENT_DATA_DESCRIPTOR@@AAK@Z
+?FormatDataDescriptor@EventHandler@WSMan@@SAXAAU_EVENT_DATA_DESCRIPTOR@@PBD@Z
+?FormatDataDescriptor@EventHandler@WSMan@@SAXAAU_EVENT_DATA_DESCRIPTOR@@PBG@Z
+?FormatWithFallback@Locale@@ABA_NKPAPAD0PAPAXPAGK@Z
+?Free@WSManMemory@@SAXPAXH@Z
+?FreeBstr@WSManMemory@@SAXPAGHH@Z
+?FreeInstance@?$ILoader@VAdminSid@CSecurity@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VCredUIDllLoader@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VEventHandler@WSMan@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VInteractiveSid@CSecurity@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VIpHlpApiDllLoader@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VMachineName@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VNetworkServiceSid@CSecurity@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VNtDsApiDllLoader@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VResources@Locale@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VShell32DllLoader@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VShlWApiDllLoader@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VSubscriptionManager@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VUser32DllLoader@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$ILoader@VWSManMemCryptManager@@@@QAA_NAAVIRequestContext@@_N@Z
+?FreeInstance@?$LoaderSerializer@VSubscriptionManager@@$01@@QAA_NAAVIRequestContext@@_N@Z
+?FreeMemory@RBUFFER@@QAAXXZ
+?FreeMemory@SBUFFER@@QAAXXZ
+?FreePacket@PacketParser@@QAAXXZ
+?FreeXmlStructure@PacketParser@@QAAXXZ
+?GenerateTransferId@EventHandler@WSMan@@SAXABU_EVENT_DESCRIPTOR@@PBU_GUID@@1@Z
+?GenerateTransferIdImp@EventHandler@WSMan@@AAAXABU_EVENT_DESCRIPTOR@@PBU_GUID@@1@Z
+?GetAccessRights@CWSManSecurityUI@@UAAJPBU_GUID@@KPAPAU_SI_ACCESS@@PAK2@Z
+?GetAction@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetActionType@SoapSemanticConverter@@AAA_NPBGPAW4_MI_OperationCallback_ResponseType@@PAW4_MI_CallbackMode@@PAVIRequestContext@@@Z
+?GetActivityIdOnCurrentThread@EventHandler@WSMan@@SAXAAU_GUID@@@Z
+?GetBaseUri@CWSManResource@@QAAPBGXZ
+?GetBomIndex@PacketFormatter@@QBA?AW4Charset@1@XZ
+?GetBookmarkXml@PacketParser@@QAAABV?$PacketElement@PAU_FWXML_ELEMENT@@@1@XZ
+?GetBool@CConfigManager@@QAAHPAVIRequestContext@@W4ConfigSetting@@PAHPAW4WSManConfigSource@@@Z
+?GetBool@CWSManGroupPolicyManager@@QAAHPAVIRequestContext@@W4WSManGroupPolicySetting@@PAHPAW4WSManGroupPolicySettingState@@@Z
+?GetBuffer@BufferFormatter@@UAAPAEXZ
+?GetBuffer@BufferFormatter@@UBAPBEXZ
+?GetBuffer@CircularBufferFormatter@@UAAPAEXZ
+?GetBuffer@CircularBufferFormatter@@UBAPBEXZ
+?GetBuffer@XmlReader@@QAAPBGXZ
+?GetBufferLength@PacketParser@@UAAKXZ
+?GetBufferPtr@PacketParser@@UAAPAPAGXZ
+?GetBufferSize@BufferFormatter@@QBAKXZ
+?GetCacheCount@CClientConfigCache@@SAKXZ
+?GetCacheCount@CServiceConfigCache@@SAKXZ
+?GetCalculationSize@BufferFormatter@@UBAK_N@Z
+?GetCalculationSize@CircularBufferFormatter@@UBAK_N@Z
+?GetCharInUse@TSTRBUFFER@@QBAIXZ
+?GetCharset@PacketFormatter@@QBA?AW4Charset@1@XZ
+?GetCharsetLen@PacketFormatter@@QBAKXZ
+?GetCharsetName@PacketFormatter@@QBAPBDXZ
+?GetChildCount@ChildLifeTimeManager@@QBAJXZ
+?GetConfigCache@CBaseConfigCache@@KAPAV1@PAVIRequestContext@@W4ErrorLogging@@P6APAV1@XZPAVFastLock@@AAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@H@Z
+?GetConfigCache@CClientConfigCache@@SAPAV1@PAVIRequestContext@@H@Z
+?GetConfigCache@CServiceConfigCache@@SAPAV1@PAVIRequestContext@@W4ErrorLogging@@H@Z
+?GetConfigCache@CWinRSPluginConfigCache@@SAPAV1@PAVIRequestContext@@W4ErrorLogging@@H@Z
+?GetConfigManager@CConfigManager@@SAPAV1@XZ
+?GetConfigManagerForCertMapping@CConfigManager@@SAPAV1@PAVCERTMAPPING_IDENTITY@@PAVIRequestContext@@@Z
+?GetConfigManagerForListener@CConfigManager@@SAPAV1@PAVLISTENER_IDENTITY@@PAVIRequestContext@@@Z
+?GetConfigManagerForShellUri@CConfigManager@@SAPAV1@PAVSHELLURI_IDENTITY@@PAVIRequestContext@@@Z
+?GetConfigManagerForTable@CConfigManager@@SAPAV1@PAVWSMANCONFIGTABLE_IDENTITY@@PAVIRequestContext@@@Z
+?GetConfigXml@CConfigManager@@QAAHPAVIRequestContext@@PAPBGPAPAVXmlReader@@PAH@Z
+?GetCorrelationId@PacketParser@@QAAAAU_GUID@@XZ
+?GetCurrentCertMappingIdentity@CConfigManager@@QAAHPAVCERTMAPPING_IDENTITY@@PAVIRequestContext@@@Z
+?GetCurrentListenerIdentity@CConfigManager@@QAAHPAVLISTENER_IDENTITY@@PAVIRequestContext@@@Z
+?GetCurrentSettings@CBaseConfigCache@@IAAPAVCCommonConfigSettings@@PAVIRequestContext@@@Z
+?GetCurrentSettings@CClientConfigCache@@QAAPAVCClientConfigSettings@@PAVIRequestContext@@@Z
+?GetCurrentSettings@CServiceConfigCache@@QAAPAVCServiceConfigSettings@@PAVIRequestContext@@@Z
+?GetCurrentSettings@CWinRSPluginConfigCache@@QAAPAVCWinRSPluginConfigSettings@@PAVIRequestContext@@@Z
+?GetCurrentShellUriIdentity@CConfigManager@@QAAHPAVSHELLURI_IDENTITY@@PAVIRequestContext@@@Z
+?GetCurrentTableIdentity@CConfigManager@@QAAHPAVWSMANCONFIGTABLE_IDENTITY@@PAVIRequestContext@@@Z
+?GetDataLocale@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetDataLocaleHelper@PacketParser@@QAAAAVLocale@@XZ
+?GetDescriptionElement@SoapSemanticConverter@@QAAPAU_FWXML_ELEMENT@@PAU2@PAVIRequestContext@@@Z
+?GetDestructorIter@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAAAAV?$SafeSet_Iterator@PAVCCertMapping@@@@XZ
+?GetDestructorIter@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAAAAV?$SafeSet_Iterator@PAVCShellUriSettings@@@@XZ
+?GetDestructorIter@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAAAAV?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@XZ
+?GetDestructorIter@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAAAAV?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@XZ
+?GetDestructorIter@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAAAAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@XZ
+?GetDialect@Fragment@PacketParser@@QBAPBGXZ
+?GetError@BufferFormatter@@QBAKXZ
+?GetErrorCode@CErrorContext@@UBAKXZ
+?GetEventType@SoapSemanticConverter@@AAAKPBGPAVIRequestContext@@@Z
+?GetEventTypeAndResponseElement@SoapSemanticConverter@@AAAPAU_FWXML_ELEMENT@@PAU2@PAKPAVIRequestContext@@@Z
+?GetExtendedErrorString@CErrorContext@@UAAPAGXZ
+?GetExtendedErrorString@CRequestContext@@UAAPAGXZ
+?GetFaultToXml@PacketParser@@QBAABVReferenceParameters@1@XZ
+?GetFaultXML@CErrorContext@@UBAPBGXZ
+?GetFaultXML@CRequestContext@@UBAPBGXZ
+?GetFaultXMLPrivate@CRequestContext@@AAAXPAPAD0KHKKPBG11@Z
+?GetFirstConfigManagerForCertMapping@CConfigManager@@SAPAV1@PBG@Z
+?GetFirstConfigManagerForListener@CConfigManager@@SAPAV1@PBG@Z
+?GetFirstConfigManagerForShellUri@CConfigManager@@SAPAV1@PBG@Z
+?GetFirstConfigManagerForTable@CConfigManager@@SAPAV1@W4WSMANTableConfigType@@PBG@Z
+?GetFormat@PacketFormatter@@QBA?AW4Charset@1@XZ
+?GetFormatterMode@BufferFormatter@@QAA?AW4Charset@PacketFormatter@@XZ
+?GetFragment@PacketParser@@QBAABVFragment@1@XZ
+?GetFragmentDialect@CWSManResourceNoResourceUri@@QAAPBGXZ
+?GetFragmentPath@CWSManResourceNoResourceUri@@QAAPBGXZ
+?GetGroupPolicyManager@CWSManGroupPolicyManager@@SAPAV1@PAVIRequestContext@@PBG@Z
+?GetHeap@WSManMemory@@SAPAXXZ
+?GetIISConfiguration@CConfigManager@@SAHPAVIRequestContext@@PBGPAPAVXmlReader@@@Z
+?GetImpersonationToken@UserRecord@@QAAPAXXZ
+?GetInheritTypes@CWSManSecurityUI@@UAAJPAPAU_SI_INHERIT_TYPE@@PAK@Z
+?GetInitError@CWSManCriticalSection@@QBAKXZ
+?GetInstance@?$LoaderSerializer@VAdminSid@CSecurity@@$00@@QAAPAVAdminSid@CSecurity@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VCredUIDllLoader@@$00@@QAAPAVCredUIDllLoader@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VEventHandler@WSMan@@$00@@QAAPAVEventHandler@WSMan@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VInteractiveSid@CSecurity@@$00@@QAAPAVInteractiveSid@CSecurity@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VIpHlpApiDllLoader@@$00@@QAAPAVIpHlpApiDllLoader@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VMachineName@@$00@@QAAPAVMachineName@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VNetworkServiceSid@CSecurity@@$00@@QAAPAVNetworkServiceSid@CSecurity@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VNtDsApiDllLoader@@$00@@QAAPAVNtDsApiDllLoader@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VResources@Locale@@$0A@@@QAAPAVResources@Locale@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VShell32DllLoader@@$00@@QAAPAVShell32DllLoader@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VShlWApiDllLoader@@$00@@QAAPAVShlWApiDllLoader@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VSubscriptionManager@@$01@@QAAPAVSubscriptionManager@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VUser32DllLoader@@$00@@QAAPAVUser32DllLoader@@AAVIRequestContext@@@Z
+?GetInstance@?$LoaderSerializer@VWSManMemCryptManager@@$00@@QAAPAVWSManMemCryptManager@@AAVIRequestContext@@@Z
+?GetInt@CConfigManager@@QAAHPAVIRequestContext@@W4ConfigSetting@@PAKPAW4WSManConfigSource@@@Z
+?GetInt@CWSManGroupPolicyManager@@QAAHPAVIRequestContext@@W4WSManGroupPolicySetting@@PAKPAW4WSManGroupPolicySettingState@@@Z
+?GetKey@UserRecord@@QBA?AUUserKey@@XZ
+?GetKeyCount@CWSManResourceNoResourceUri@@QAAKXZ
+?GetKeyValue@CWSManResourceNoResourceUri@@QAAPBGPBG@Z
+?GetKeys@CWSManResourceNoResourceUri@@QAAPAU_WSMAN_KEY@@XZ
+?GetLCID@Locale@@QAAKXZ
+?GetLength@XmlReader@@QAAIXZ
+?GetLocale@CRequestContext@@QAAAAVLocale@@XZ
+?GetLocale@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetLocaleHelper@PacketParser@@QAAAAVLocale@@XZ
+?GetLocaleString@CRequestContext@@QAAPBGXZ
+?GetLocator@CWSManResource@@QAAPAU_WSMAN_RESOURCE_LOCATOR@@XZ
+?GetMachineId@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetMap@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QBAAAV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@QBAAAV?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QBAAAV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@QBAAAV?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@QBAAAV?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@QBAAAV?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QBAAAV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@QBAAAV?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@QBAAAV?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@QBAAAV?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@QBAAAV?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@QBAAAV?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@PAXUEmpty@@@@QBAAAV?$SafeMap@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@UPluginKey@@K@@QBAAAV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@XZ
+?GetMap@?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@QBAAAV?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QBAAAV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@QBAAAV?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@VKey@Locale@@K@@QBAAAV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@XZ
+?GetMap@?$SafeMap_Iterator@VStringKeyCI@@K@@QBAAAV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@XZ
+?GetMap@?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@QBAAAV?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QBAAAV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QBAAAV?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@QBAAAV?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QBAAAV?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@XZ
+?GetMap@?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@QBAAAV?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QBAABV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@QBAABV?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QBAABV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@QBAABV?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@QBAABV?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@QBAABV?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QBAABV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@QBAABV?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@QBAABV?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@QBAABV?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@QBAABV?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@QBAABV?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Lock@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@QBAABV?$SafeMap@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QBAABV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@XZ
+?GetMap@?$SafeMap_Lock@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QBAABV?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@XZ
+?GetMap@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QBAABV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@XZ
+?GetMap@?$SafeMap_Lock@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@QBAABV?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@XZ
+?GetMap@?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QBAABV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@XZ
+?GetMap@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QBAABV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@XZ
+?GetMap@?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@QBAABV?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@XZ
+?GetMap@?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QBAABV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@XZ
+?GetMap@?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QBAABV?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@XZ
+?GetMap@?$SafeMap_Lock@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QBAABV?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@XZ
+?GetMap@?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QBAABV?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@XZ
+?GetMap@?$SafeMap_Lock@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QBAABV?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@XZ
+?GetMaxBatchItems@CCommonConfigSettings@@UAAKXZ
+?GetMaxBatchSize@CCommonConfigSettings@@UAAKXZ
+?GetMaxEnvelopeSize@CCommonConfigSettings@@UAAKXZ
+?GetMaxEnvelopeSize@PacketParser@@QBAABV?$PacketElement@K@1@XZ
+?GetMaxTimeOut@CCommonConfigSettings@@UAAKXZ
+?GetMessageAlloc@Locale@@QBAPBGAAVAutoLocalFree@@KZZ
+?GetMessageEmpty@Locale@@QBAPBGAAVAutoLocalFree@@K@Z
+?GetMessageId@CErrorContext@@UBAKXZ
+?GetMessageId@CRequestContext@@UBAKXZ
+?GetMessageId@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetMessageW@Locale@@QBA_NKPAPAD0PAGK@Z
+?GetMinBatchItems@CCommonConfigSettings@@UAAKXZ
+?GetMinBatchSize@CCommonConfigSettings@@UAAKXZ
+?GetMinBatchTimeout@CCommonConfigSettings@@UAAKXZ
+?GetMinEnvelopeSize@CCommonConfigSettings@@UAAKXZ
+?GetMinTimeOut@CCommonConfigSettings@@UAAKXZ
+?GetNamespacePrefix@NotUnderstandSoapHeader@PacketParser@@QBAPBGXZ
+?GetNamespaceUrl@NotUnderstandSoapHeader@PacketParser@@QBAPBGXZ
+?GetNewStorage@RBUFFER@@IAAHI@Z
+?GetNotUnderstandHeader@PacketParser@@QBAABVNotUnderstandSoapHeader@1@XZ
+?GetObjectInformation@CWSManSecurityUI@@UAAJPAU_SI_OBJECT_INFO@@@Z
+?GetObjectW@?$ILoader@VAdminSid@CSecurity@@@@IBAPAVAdminSid@CSecurity@@XZ
+?GetObjectW@?$ILoader@VCredUIDllLoader@@@@IBAPAVCredUIDllLoader@@XZ
+?GetObjectW@?$ILoader@VEventHandler@WSMan@@@@IBAPAVEventHandler@WSMan@@XZ
+?GetObjectW@?$ILoader@VInteractiveSid@CSecurity@@@@IBAPAVInteractiveSid@CSecurity@@XZ
+?GetObjectW@?$ILoader@VIpHlpApiDllLoader@@@@IBAPAVIpHlpApiDllLoader@@XZ
+?GetObjectW@?$ILoader@VMachineName@@@@IBAPAVMachineName@@XZ
+?GetObjectW@?$ILoader@VNetworkServiceSid@CSecurity@@@@IBAPAVNetworkServiceSid@CSecurity@@XZ
+?GetObjectW@?$ILoader@VNtDsApiDllLoader@@@@IBAPAVNtDsApiDllLoader@@XZ
+?GetObjectW@?$ILoader@VResources@Locale@@@@IBAPAVResources@Locale@@XZ
+?GetObjectW@?$ILoader@VShell32DllLoader@@@@IBAPAVShell32DllLoader@@XZ
+?GetObjectW@?$ILoader@VShlWApiDllLoader@@@@IBAPAVShlWApiDllLoader@@XZ
+?GetObjectW@?$ILoader@VSubscriptionManager@@@@IBAPAVSubscriptionManager@@XZ
+?GetObjectW@?$ILoader@VUser32DllLoader@@@@IBAPAVUser32DllLoader@@XZ
+?GetObjectW@?$ILoader@VWSManMemCryptManager@@@@IBAPAVWSManMemCryptManager@@XZ
+?GetOperationId@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetOptionCount@CWSManResourceNoResourceUri@@QAAKXZ
+?GetOptionTypes@CWSManResourceNoResourceUri@@QAAPAPBGXZ
+?GetOptionValue@CWSManResourceNoResourceUri@@QAAPBGPBG@Z
+?GetOptions@CWSManResourceNoResourceUri@@QAAPAU_WSMAN_OPTION@@XZ
+?GetOptionsMustUnderstandValue@CWSManResourceNoResourceUri@@QAAHXZ
+?GetOptionsSetXml@PacketParser@@QAAABV?$PacketElement@PAU_FWXML_ELEMENT@@@1@XZ
+?GetOriginalUri@CWSManResource@@QAAPBGXZ
+?GetPacket@PacketParser@@QAAPAVPacket@@XZ
+?GetPacketPool@PacketParser@@QAAAAVPacketPool@@XZ
+?GetParser@XmlReader@@QAAPAXXZ
+?GetPath@Fragment@PacketParser@@QBAPBGXZ
+?GetPolicyLocation@CWSManGroupPolicyManager@@AAAPBGPBU_WSMAN_POLICY_INFO@@@Z
+?GetPolicyValueForConfigSetting@CConfigManager@@AAAJW4ConfigSetting@@KPAGPAKPAW4WSManGroupPolicySettingState@@PAVIRequestContext@@@Z
+?GetPolicyValueForConfigSetting@CConfigManager@@AAAJW4ConfigSetting@@PAKPAW4WSManGroupPolicySettingState@@PAVIRequestContext@@@Z
+?GetProfileCount@UserRecord@@QAAJXZ
+?GetProfileHandle@UserRecord@@QAA_JXZ
+?GetPromptType@SoapSemanticConverter@@AAA_NPBGPAW4_MI_PromptType@@PAVIRequestContext@@@Z
+?GetQuotaRecord@UserRecord@@QBAPBVQuotaRecord@@XZ
+?GetRefCount@ILifeTimeMgmt@@QAAJXZ
+?GetReferenceParameters@ReferenceParameters@PacketParser@@QBAPBGXZ
+?GetReferenceProperties@ReferenceParameters@PacketParser@@QBAPBGXZ
+?GetRemainderPacket@PacketParser@@QAAPAVPacket@@PAVIRequestContext@@@Z
+?GetReplyToXml@PacketParser@@QBAABVReferenceParameters@1@XZ
+?GetRequestedDataLocale@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetRequestedLocale@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetResourceUri@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetRoot@XmlReader@@QAAPAU_FWXML_ELEMENT@@XZ
+?GetSecurity@CWSManSecurityUI@@UAAJKPAPAXH@Z
+?GetSecurityDescriptor@CConfigManager@@QAAHPAVIRequestContext@@W4ConfigSetting@@PAPAXPAW4WSManConfigSource@@@Z
+?GetSelectorSetXml@PacketParser@@QAAABV?$PacketElement@PAU_FWXML_ELEMENT@@@1@XZ
+?GetSequenceId@PacketParser@@QBAABV?$PacketElement@_K@1@XZ
+?GetServiceCatalog@@YAPAVCatalog@@XZ
+?GetSessionId@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetSessionIdGuid@PacketParser@@QAAAAU_GUID@@XZ
+?GetSessionIdGuid@SessionId@PacketParser@@QAAAAU_GUID@@XZ
+?GetSetting@CConfigManager@@QAAHPAVIRequestContext@@W4ConfigSetting@@KPAGPAKPAW4WSManConfigSource@@@Z
+?GetShellCompressionType@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetSid@CSecurity@@SAPAXXZ
+?GetSizeInUse@SBUFFER@@QBAIXZ
+?GetSoapBody@PacketParser@@QAAPAU_FWXML_ELEMENT@@XZ
+?GetSoapHeaders@PacketParser@@QAAPAU_FWXML_ELEMENT@@XZ
+?GetSourceSubscriptionId@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetSpaceUsed@BufferFormatter@@UBAK_N@Z
+?GetSpaceUsed@CircularBufferFormatter@@UBAK_N@Z
+?GetStrPtr@TSTRBUFFER@@QAAPAGXZ
+?GetString@CConfigManager@@QAAHPAVIRequestContext@@W4ConfigSetting@@KPAGPAKPAW4WSManConfigSource@@@Z
+?GetString@CWSManGroupPolicyManager@@QAAHPAVIRequestContext@@W4WSManGroupPolicySetting@@KPAGPAKPAW4WSManGroupPolicySettingState@@@Z
+?GetString@Locale@@QAAPBGXZ
+?GetStringInternal@CConfigManager@@AAAHPAVIRequestContext@@W4ConfigSetting@@KKPAGPAKPAW4WSManConfigSource@@@Z
+?GetStringInternal@CWSManGroupPolicyManager@@AAAHPAVIRequestContext@@W4WSManGroupPolicySetting@@KKPAGPAKPAW4WSManGroupPolicySettingState@@@Z
+?GetSubscriptionId@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetSuccessCode@OnHTTPInitialize@@QBAKXZ
+?GetTimeout@PacketParser@@QBAABV?$PacketElement@K@1@XZ
+?GetTo@PacketParser@@QBAABV?$PacketElement@PBG@1@XZ
+?GetToken@CSecurity@@SAPAXXZ
+?GetToken@UserRecord@@QAAPAXXZ
+?GetUpdatedSDDL@CWSManSecurityUI@@QAAPAGPAVIRequestContext@@@Z
+?GetUri@CWSManResource@@QAAPBGXZ
+?GetUserAdministratorType@UserRecord@@QBA?AW4AdministratorType@UserAuthzRecord@@XZ
+?GetUserNameW@UserRecord@@QAAPBGXZ
+?GetValue@?$PacketElement@K@PacketParser@@QBAKXZ
+?GetValue@?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QBAPAU_FWXML_ELEMENT@@XZ
+?GetValue@?$PacketElement@PBG@PacketParser@@QBAPBGXZ
+?GetValue@?$PacketElement@_K@PacketParser@@QBA_KXZ
+?GetWsmanData@TSTRBUFFER@@QAAXPAU_WSMAN_DATA@@@Z
+?GetXmlDoc@PacketParser@@QAAPAUFWXML_DOCUMENT@@XZ
+?GrowBuffer@BufferFormatter@@UAAKK@Z
+?GrowBuffer@BufferFormatter@@UAAKXZ
+?GrowBuffer@CircularBufferFormatter@@UAAKK@Z
+?GrowBuffer@CircularBufferFormatter@@UAAKXZ
+?HandleAutoConfiguredListener@CConfigManager@@QAAHPAVIRequestContext@@PAVLISTENER_IDENTITY@@@Z
+?HandleMigration@@YAHPAVWSManMigrationContext@@@Z
+?HasFaultXML@CRequestContext@@QBAHXZ
+?HasHtmlError@CRequestContext@@ABAHXZ
+?HasOption@CWSManResourceNoResourceUri@@QAAHPBG@Z
+?ImpersonateUserOrSelf@CSecurity@@SAHW4CallSiteId@@PAX@Z
+?IncreaseProfileCount@UserRecord@@QAAXXZ
+?Info@EventLog@@SAXK@Z
+?Info@EventLog@@SAXKGPAPBG@Z
+?Info@EventLog@@SAXKPBG@Z
+?Init@CBaseConfigCache@@IAAHPAVIRequestContext@@H@Z
+?Init@CWSManSecurityUI@@QAAHPAG0PAVIRequestContext@@@Z
+?Init@ConfigRegistry@@IAAHXZ
+?Init@XmlReader@@QAAHPAVIRequestContext@@PAUWSMAN_OBJECT@@@Z
+?Init@XmlReader@@QAAHPAVIRequestContext@@PBG@Z
+?InitCfgMgr@CConfigManager@@AAAHPAVWSMANCONFIGTABLE_IDENTITY@@@Z
+?InitCfgMgr@CConfigManager@@AAAHPAVWSMANCONFIGTABLE_IDENTITY@@PAUHKEY__@@1@Z
+?InitMap@CBaseConfigCache@@CAHPAVIRequestContext@@AAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@@Z
+?Initialize@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VStringKey@@PAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PAVListenerEvents@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VStringKey@@PAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PAVListenerSourceSubscription@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VStringKeyCI@@PAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PAVIISEndpoint@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@UAA_NAAVIRequestContext@@@Z
+?Initialize@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAAAAV1@XZ
+?Initialize@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAAAAV1@XZ
+?Initialize@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAAAAV1@XZ
+?Initialize@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAAAAV1@XZ
+?Initialize@?$SafeMap_Iterator@VStringKeyCI@@K@@QAAAAV1@XZ
+?Initialize@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAAAAV1@XZ
+?Initialize@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAAAAV1@XZ
+?Initialize@CWSManGroupPolicyManager@@AAAHPAVIRequestContext@@PBG@Z
+?Initialize@EventHandler@WSMan@@QAA_NAAVIRequestContext@@@Z
+?Initialize@UserRecord@@SAXAAV1@ABUInitializer@1@@Z
+?InitializeSources@CBaseConfigCache@@IAAHPAVIRequestContext@@HH@Z
+?InitializeSourcesHelper@CBaseConfigCache@@MAAHPAVIRequestContext@@H@Z
+?InitializeSourcesHelper@CClientConfigCache@@EAAHPAVIRequestContext@@H@Z
+?InsertAtPosition@TSTRBUFFER@@QAAJPBGI@Z
+?InternalFailure@CErrorContext@@UAAXKZZ
+?InternalFailure@CRequestContext@@UAAXKZZ
+?InternalHResult@CErrorContext@@UAAXKKZZ
+?InternalHResult@CRequestContext@@UAAXKKZZ
+?InternalParse@CWSManEPR@@MAAHPAVIRequestContext@@@Z
+?InternalParse@CWSManResource@@MAAHPAVIRequestContext@@@Z
+?IsActive@ChildLifeTimeManager@@QAA_NXZ
+?IsAdmin@UserRecord@@QBA_NXZ
+?IsAutoListenerConfigurationOn@CConfigManager@@SAHPAVIRequestContext@@PAH@Z
+?IsCIM_Error@CRequestContext@@QAAHXZ
+?IsCurrentListenerAutoConfigured@CConfigManager@@QAAHPAVIRequestContext@@PAH@Z
+?IsCurrentListenerCompat@CConfigManager@@QBA_NXZ
+?IsDynAlloced@RBUFFER@@IBAHXZ
+?IsEPR@CWSManEPR@@UAAHXZ
+?IsEPR@CWSManResourceNoResourceUri@@UAAHXZ
+?IsEmpty@?$ILoader@VAdminSid@CSecurity@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VCredUIDllLoader@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VEventHandler@WSMan@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VInteractiveSid@CSecurity@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VIpHlpApiDllLoader@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VMachineName@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VNetworkServiceSid@CSecurity@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VNtDsApiDllLoader@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VResources@Locale@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VShell32DllLoader@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VShlWApiDllLoader@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VSubscriptionManager@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VUser32DllLoader@@@@QBA_NXZ
+?IsEmpty@?$ILoader@VWSManMemCryptManager@@@@QBA_NXZ
+?IsEmpty@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QBA_NXZ
+?IsEmpty@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QBA_NXZ
+?IsEmpty@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QBA_NXZ
+?IsEvent@SoapSemanticConverter@@QAA_NPAU_FWXML_ELEMENT@@@Z
+?IsEventEnabled@EventHandler@WSMan@@SA_NABU_EVENT_DESCRIPTOR@@@Z
+?IsEventProviderEnabled@EventHandler@WSMan@@SA_NXZ
+?IsFound@?$PacketElement@K@PacketParser@@QBAHXZ
+?IsFound@?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QBAHXZ
+?IsFound@?$PacketElement@PBG@PacketParser@@QBAHXZ
+?IsFound@?$PacketElement@_K@PacketParser@@QBAHXZ
+?IsGeneratingError@CErrorContext@@UBA_NXZ
+?IsIdentifyPacket@PacketParser@@QBAHXZ
+?IsInCommitMode@BufferFormatter@@QAA_NXZ
+?IsInteractive@UserRecord@@QBA_NXZ
+?IsLocalSystemSid@CSecurity@@SAHPAX@Z
+?IsMustUnderstand@?$PacketElement@PBG@PacketParser@@QBAHXZ
+?IsNonOperativePacket@PacketParser@@QBAHXZ
+?IsPolicyControlledSetting@CConfigManager@@QAAHPAVIRequestContext@@W4ConfigSetting@@PAH@Z
+?IsRobustConnectionPacket@PacketParser@@QBAHXZ
+?IsStreamingEvent@SoapSemanticConverter@@QAA_NPAU_FWXML_ELEMENT@@PAVIRequestContext@@@Z
+?IsStringNullOrEmpty@@YAHPBG@Z
+?IsValid@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QBA_NXZ
+?IsValid@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QBA_NXZ
+?IsValid@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QBA_NXZ
+?IsValid@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QBA_NXZ
+?IsValid@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QBA_NXZ
+?IsValid@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@PAXUEmpty@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@UPluginKey@@K@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VKey@Locale@@K@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VStringKey@@PAVListenerEvents@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VStringKey@@PAVListenerSourceSubscription@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VStringKeyCI@@K@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VStringKeyCI@@PAVIISEndpoint@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QBA_NXZ
+?IsValid@?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@QBA_NXZ
+?IsValid@CWSManCriticalSection@@QBAHXZ
+?IsValid@RBUFFER@@IBAHXZ
+?Key@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QBAPBVStringKeyCI@@ABV2@@Z
+?Key@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QBAPBVStringKeyCI@@ABV2@@Z
+?Key@?$SafeMap_Iterator@VKey@Locale@@K@@QBAABV0Locale@@XZ
+?Key@?$SafeMap_Iterator@VStringKeyCI@@K@@QBAABVStringKeyCI@@XZ
+?Key@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QBAABVStringKeyCI@@XZ
+?LogError@CBaseConfigCache@@UAAXKK@Z
+?LogErrorCode@CErrorContext@@QAAXXZ
+?LogErrorCode@CRequestContext@@QAAXXZ
+?LogErrorMessage@CRequestContext@@QAAXXZ
+?LogNotificationEvent@CWSManGroupPolicyManager@@CAXK@Z
+?LogReadErrors@CBaseConfigCache@@IAA?AW4ErrorLogging@@W4ConfigChangeSources@@@Z
+?LowerBound@?$SafeMap_Iterator@VKey@Locale@@K@@QAAXABVKey@Locale@@@Z
+?MakeUrlBinding@@YAHKPAGPAKPBG222@Z
+?MakeUrlBinding@@YAPAGPAVIRequestContext@@PBG111@Z
+?MapGeneric@CWSManSecurityUI@@UAAJPBU_GUID@@PAEPAK@Z
+?Me@?$AutoCleanup@V?$AutoDelete@D@@PAD@@AAAAAV?$AutoDelete@D@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@G@@PAG@@AAAAAV?$AutoDelete@G@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@AAAAAV?$AutoDelete@UIPRange@CWSManIPFilter@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@U_SID@@@@PAU_SID@@@@AAAAAV?$AutoDelete@U_SID@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@AAAAAV?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@AAAAAV?$AutoDelete@V?$Handle@VISubscription@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@AAAAAV?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@AAAAAV?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@AAAAAV?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@AAAAAV?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@PAV?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@AAAAAV?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@AAAAAV?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@AAAAAV?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@AAAAAV?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@AAAAAV?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@AAAAAV?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCollector@@@@@@PAV?$SafeSet_Iterator@PAVCollector@@@@@@AAAAAV?$AutoDelete@V?$SafeSet_Iterator@PAVCollector@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVHostOperation@@@@@@PAV?$SafeSet_Iterator@PAVHostOperation@@@@@@AAAAAV?$AutoDelete@V?$SafeSet_Iterator@PAVHostOperation@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@PAV?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@AAAAAV?$AutoDelete@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PAV?$SimpleStack@VCListenerOperation@@@@@@AAAAAV?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PAV?$SimpleStack@VShellHostEntry@@@@@@AAAAAV?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@PAV?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@AAAAAV?$AutoDelete@V?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@AAAAAV?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@AAAAAV?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@PAV?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@AAAAAV?$AutoDelete@V?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@AAAAAV?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@AAAAAV?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@PAV?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@AAAAAV?$AutoDelete@V?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@AAAAAV?$AutoDelete@VAdminSid@CSecurity@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@AAAAAV?$AutoDelete@VBlockedRecord@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@AAAAAV?$AutoDelete@VCBaseConfigCache@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@AAAAAV?$AutoDelete@VCCertMapping@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@AAAAAV?$AutoDelete@VCConfigChangeSource@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@AAAAAV?$AutoDelete@VCListenerSettings@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@AAAAAV?$AutoDelete@VCObserverConfigChangeErrors@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@AAAAAV?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@AAAAAV?$AutoDelete@VCShellUriSettings@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@AAAAAV?$AutoDelete@VCWSManEPR@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@AAAAAV?$AutoDelete@VCWSManResource@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@AAAAAV?$AutoDelete@VCertHash@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@AAAAAV?$AutoDelete@VConfigUpdate@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VCredUIDllLoader@@@@PAVCredUIDllLoader@@@@AAAAAV?$AutoDelete@VCredUIDllLoader@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@AAAAAV?$AutoDelete@VEnumSinkEx@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@AAAAAV?$AutoDelete@VEventHandler@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@AAAAAV?$AutoDelete@VExpiredOperationIdRecord@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@AAAAAV?$AutoDelete@VGPApiManager@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@AAAAAV?$AutoDelete@VGeneralSinkEx@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@AAAAAV?$AutoDelete@VIChannelObserverFactory@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@AAAAAV?$AutoDelete@VIQueryDASHSMASHInterface@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@AAAAAV?$AutoDelete@VISpecification@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@AAAAAV?$AutoDelete@VInteractiveSid@CSecurity@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@AAAAAV?$AutoDelete@VIpHlpApiDllLoader@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@AAAAAV?$AutoDelete@VMachineName@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PAVMasterReceiveData@CListenerReceive@@@@AAAAAV?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@AAAAAV?$AutoDelete@VNetworkServiceSid@CSecurity@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@AAAAAV?$AutoDelete@VNtDsApiDllLoader@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@AAAAAV?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@AAAAAV?$AutoDelete@VPacketCreator@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@AAAAAV?$AutoDelete@VPacketParser@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@AAAAAV?$AutoDelete@VResources@Locale@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@AAAAAV?$AutoDelete@VRunAsConfiguration@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@AAAAAV?$AutoDelete@VSecurityEntry@Catalog@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PAVSendPacketArgs@RobustConnectionBuffer@@@@AAAAAV?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@AAAAAV?$AutoDelete@VServiceSoapProcessor@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@AAAAAV?$AutoDelete@VShell32DllLoader@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@AAAAAV?$AutoDelete@VShlWApiDllLoader@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@AAAAAV?$AutoDelete@VSubscriptionEnumerator@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@AAAAAV?$AutoDelete@VSubscriptionManager@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@AAAAAV?$AutoDelete@VTSTRBUFFER@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@AAAAAV?$AutoDelete@VUniqueStringOverflow@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@AAAAAV?$AutoDelete@VUser32DllLoader@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@AAAAAV?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@AAAAAV?$AutoDelete@VWSManMemCryptManager@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@AAAAAV?$AutoDelete@VWmiEnumContext@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@AAAAAV?$AutoDelete@VXmlReader@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@AAAAAV?$AutoDeleteVector@$$CBG@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@AAAAAV?$AutoDeleteVector@D@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@AAAAAV?$AutoDeleteVector@E@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@AAAAAV?$AutoDeleteVector@G@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@H@@PAH@@AAAAAV?$AutoDeleteVector@H@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@AAAAAV?$AutoDeleteVector@PAG@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@AAAAAV?$AutoDeleteVector@PBG@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@AAAAAV?$AutoDeleteVector@U_CONFIG_UPDATE@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@AAAAAV?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@AAAAAV?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@AAAAAV?$AutoDeleteVector@U_WSMAN_OPTION@@@@XZ
+?Me@?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@AAAAAV?$AutoDeleteVector@X@@XZ
+?Me@?$AutoCleanup@V?$AutoFree@E@@PAE@@AAAAAV?$AutoFree@E@@XZ
+?Me@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@AAAAAV?$AutoLocklessItemRecycle@VPacket@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@AAAAAV?$AutoRelease@UIAppHostChildElementCollection@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@AAAAAV?$AutoRelease@UIAppHostElement@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@AAAAAV?$AutoRelease@UIAppHostElementCollection@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@AAAAAV?$AutoRelease@UIAppHostProperty@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@AAAAAV?$AutoRelease@UIAppHostPropertyCollection@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@AAAAAV?$AutoRelease@UIClientSecurity@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@AAAAAV?$AutoRelease@UIEnumWbemClassObject@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@AAAAAV?$AutoRelease@UIErrorInfo@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@AAAAAV?$AutoRelease@UIUnknown@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@AAAAAV?$AutoRelease@UIWbemClassObject@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@AAAAAV?$AutoRelease@UIWbemContext@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@AAAAAV?$AutoRelease@UIWbemLocator@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@AAAAAV?$AutoRelease@UIWbemObjectTextSrc@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@AAAAAV?$AutoRelease@UIWbemPath@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@AAAAAV?$AutoRelease@UIWbemPathKeyList@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@AAAAAV?$AutoRelease@UIWbemQualifierSet@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@AAAAAV?$AutoRelease@UIWbemQuery@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@AAAAAV?$AutoRelease@UIWbemServices@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@AAAAAV?$AutoRelease@VApplication@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@AAAAAV?$AutoRelease@VCBaseConfigCache@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCClientConfigCache@@@@PAVCClientConfigCache@@@@AAAAAV?$AutoRelease@VCClientConfigCache@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@AAAAAV?$AutoRelease@VCClientConfigSettings@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@AAAAAV?$AutoRelease@VCCommonConfigSettings@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@AAAAAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@AAAAAV?$AutoRelease@VCConfigManager@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCListenerCommand@@@@PAVCListenerCommand@@@@AAAAAV?$AutoRelease@VCListenerCommand@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCListenerMasterOperation@@@@PAVCListenerMasterOperation@@@@AAAAAV?$AutoRelease@VCListenerMasterOperation@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PAVCListenerReceive@@@@AAAAAV?$AutoRelease@VCListenerReceive@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCListenerShell@@@@PAVCListenerShell@@@@AAAAAV?$AutoRelease@VCListenerShell@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@@AAAAAV?$AutoRelease@VCRemoteOperation@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@AAAAAV?$AutoRelease@VCRemoteSession@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@AAAAAV?$AutoRelease@VCRequestContext@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@AAAAAV?$AutoRelease@VCServiceCommonConfigSettings@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@AAAAAV?$AutoRelease@VCServiceConfigCache@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@AAAAAV?$AutoRelease@VCServiceConfigSettings@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@AAAAAV?$AutoRelease@VCWSManEPR@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@AAAAAV?$AutoRelease@VCWSManGroupPolicyCache@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@AAAAAV?$AutoRelease@VCWSManGroupPolicyManager@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@AAAAAV?$AutoRelease@VCWSManObject@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@AAAAAV?$AutoRelease@VCWSManResource@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCWSManSession@@@@PAVCWSManSession@@@@AAAAAV?$AutoRelease@VCWSManSession@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@AAAAAV?$AutoRelease@VCWinRSPluginConfigCache@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@AAAAAV?$AutoRelease@VCWinRSPluginConfigSettings@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@AAAAAV?$AutoRelease@VCommand@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@AAAAAV?$AutoRelease@VConfigNotification@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@AAAAAV?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@AAAAAV?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@AAAAAV?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@AAAAAV?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@AAAAAV?$AutoRelease@VEnumSinkEx@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@AAAAAV?$AutoRelease@VGeneralSinkEx@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VHostMappingTable@@@@PAVHostMappingTable@@@@AAAAAV?$AutoRelease@VHostMappingTable@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PAVIISConfigSettings@@@@AAAAAV?$AutoRelease@VIISConfigSettings@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@AAAAAV?$AutoRelease@VIPCSoapProcessor@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@AAAAAV?$AutoRelease@VIRequestContext@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@AAAAAV?$AutoRelease@VISubscription@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@AAAAAV?$AutoRelease@VInboundRequestDetails@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VProxyManager@Client@WSMan@@@@PAVProxyManager@Client@WSMan@@@@AAAAAV?$AutoRelease@VProxyManager@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VProxySelection@Client@WSMan@@@@PAVProxySelection@Client@WSMan@@@@AAAAAV?$AutoRelease@VProxySelection@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VPushSubscribeOperation@@@@PAVPushSubscribeOperation@@@@AAAAAV?$AutoRelease@VPushSubscribeOperation@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VPushSubscription@@@@PAVPushSubscription@@@@AAAAAV?$AutoRelease@VPushSubscription@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@AAAAAV?$AutoRelease@VReceiveOperation@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@AAAAAV?$AutoRelease@VReconnectOperation@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@AAAAAV?$AutoRelease@VSendOperation@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@AAAAAV?$AutoRelease@VShell@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PAVShellInfo@@@@AAAAAV?$AutoRelease@VShellInfo@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@AAAAAV?$AutoRelease@VSignalOperation@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@AAAAAV?$AutoRelease@VUserRecord@@@@XZ
+?Me@?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@AAAAAV?$AutoRelease@VWSManHttpListener@@@@XZ
+?Me@?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PAVHostMappingTableEntry@@@@AAAAAV?$AutoReleaseEx@VHostMappingTableEntry@@@@XZ
+?Me@?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@AAAAAV?$AutoReleaseEx@VShell@Client@WSMan@@@@XZ
+?Me@?$AutoCleanup@VAutoBstr@@PAG@@AAAAAVAutoBstr@@XZ
+?Me@?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@AAAAAVAutoBstrNoAlloc@@XZ
+?Me@?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@AAAAAVAutoCertContext@@XZ
+?Me@?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@AAAAAVAutoChainContext@@XZ
+?Me@?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@AAAAAVAutoCoTaskMemFree@@XZ
+?Me@?$AutoCleanup@VAutoEnvironmentBlock@@PAX@@AAAAAVAutoEnvironmentBlock@@XZ
+?Me@?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@AAAAAVAutoFwXmlCloseParser@@XZ
+?Me@?$AutoCleanup@VAutoHandle@@PAX@@AAAAAVAutoHandle@@XZ
+?Me@?$AutoCleanup@VAutoImpersonateUser@@PAX@@AAAAAVAutoImpersonateUser@@XZ
+?Me@?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@AAAAAVAutoLibrary@@XZ
+?Me@?$AutoCleanup@VAutoLocalFree@@PAX@@AAAAAVAutoLocalFree@@XZ
+?Me@?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@AAAAAVAutoMIClass@@XZ
+?Me@?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@AAAAAVAutoMIInstance@@XZ
+?Me@?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@AAAAAVAutoObject@@XZ
+?Me@?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@AAAAAVAutoRegKey@@XZ
+?Me@?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@AAAAAVAutoSecurityDescriptor@@XZ
+?Me@?$AutoCleanup@VAutoWaitHandle@@PAX@@AAAAAVAutoWaitHandle@@XZ
+?MoveSettingsToMigrationKey@@YAHPAVIRequestContext@@_N@Z
+?NUM_BOMS@PacketFormatter@@0HB
+?NUM_CHARSETS@PacketFormatter@@0HB
+?Next@TSTRBUFFER@@QBAPBGPBG@Z
+?NextCertMapping@CConfigManager@@QAAHXZ
+?NextListener@CConfigManager@@QAAHXZ
+?NextRow@CConfigManager@@QAAHXZ
+?NextShellUri@CConfigManager@@QAAHXZ
+?NoSemantics@ExtendedSemantic@@2KB
+?NotifyObservers@CWSManGroupPolicyManager@@UAAHPAVIRequestContext@@PAVIWSManGroupPolicyCacheDataProvider@@@Z
+?OnChange@CBaseConfigCache@@UAAXW4ConfigChangeSources@@KW4ConfigChangeSeverityType@@@Z
+?OpenRegKey@ConfigRegistry@@IAAJPAU_CONFIG_INFO@@KPAVWSMANCONFIGTABLE_IDENTITY@@PAVAutoRegKey@@PAUHKEY__@@@Z
+?OverrideMaxEnvelopeSize@PacketParser@@QAAXK@Z
+?OverrideTimeout@PacketParser@@QAAXK@Z
+?Parse@CWSManResource@@SAPAV1@PAVIRequestContext@@PBG11PAU_WSMAN_SELECTOR_SET@@PAU_WSMAN_OPTION_SET@@H@Z
+?Parse@CWSManResource@@SAPAV1@PAVIRequestContext@@PBGH@Z
+?Parse@XmlReader@@AAAHPAVIRequestContext@@@Z
+?ParseAction@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@_N@Z
+?ParseActivityId@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseBookmark@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseDataLocale@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseEprElement@CWSManEPR@@SAPAV1@PAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z
+?ParseEvent@SoapSemanticConverter@@QAAPAVSemanticMessage@@PAU_FWXML_ELEMENT@@PAKPAVIRequestContext@@@Z
+?ParseFaultTo@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseFragment@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseHeader@PacketParser@@AAAHPAVCRequestContext@@PAU_FWXML_ELEMENT@@HPAVCServiceCommonConfigSettings@@@Z
+?ParseHeaders@CWSManResourceNoResourceUri@@QAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@11@Z
+?ParseHeaders@PacketParser@@AAAHPAVCRequestContext@@PAVCServiceCommonConfigSettings@@@Z
+?ParseLocale@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseMachineID@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z
+?ParseMaxEnvelopeSize@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@HPAVCServiceCommonConfigSettings@@@Z
+?ParseMessageId@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@_N@Z
+?ParseOperationId@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseOptionSet@CWSManResourceNoResourceUri@@QAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z
+?ParseOptions@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParsePacket@PacketParser@@QAAHPAVCRequestContext@@PAVPacket@@PAVCServiceCommonConfigSettings@@@Z
+?ParsePacketInternal@PacketParser@@AAAHPAVCRequestContext@@PAU_FWXML_ELEMENT@@PAVCServiceCommonConfigSettings@@@Z
+?ParseReplyTo@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z
+?ParseResourceLocator@CWSManResource@@SAPAV1@PAVIRequestContext@@PAU_WSMAN_RESOURCE_LOCATOR@@@Z
+?ParseResourceUri@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseResponse@SoapSemanticConverter@@QAA_NPAU_FWXML_ELEMENT@@PAKPA_NPAVIRequestContext@@@Z
+?ParseRobustConnectionAckSequenceId@PacketParser@@AAAKPA_K@Z
+?ParseRobustConnectionMessages@PacketParser@@QAAKPAW4PacketType@1@PA_NPA_K2@Z
+?ParseSelectors@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseSequenceId@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z
+?ParseSessionId@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseShellCompression@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseStream@PacketParser@@QAAXPAVCRequestContext@@PAVITransportReceiver@@PAVPacket@@PAVCServiceCommonConfigSettings@@@Z
+?ParseSubscriptionAgentPacket@PacketParser@@QAAHPAVCRequestContext@@PAVPacket@@PAVCServiceConfigSettings@@@Z
+?ParseSubscriptionID@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z
+?ParseTimeout@PacketParser@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@HPAVCServiceCommonConfigSettings@@@Z
+?ParseToAddress@PacketParser@@AAAHPAVCRequestContext@@PAU_FWXML_ELEMENT@@@Z
+?Passed@CErrorContext@@UBAHXZ
+?PolicyChanged@CWSManGroupPolicyManager@@AAAXE@Z
+?PostChange@CBaseConfigCache@@MAAHPAVIRequestContext@@PAVCCommonConfigSettings@@1@Z
+?PostChange@CServiceConfigCache@@EAAHPAVIRequestContext@@PAVCCommonConfigSettings@@1@Z
+?PostError@CBaseConfigCache@@MAAXK@Z
+?PostError@CServiceConfigCache@@EAAXK@Z
+?PrepareToCommitWithSize@BufferFormatter@@UAAKK@Z
+?PrepareToCommitWithSize@CircularBufferFormatter@@UAAKK@Z
+?PrintHandleTrace@@YAXPAX@Z
+?PrintReleaseTrace@@YAXPAXJ@Z
+?PrintUnregisterWaitTrace@@YAXPAX@Z
+?ProcessContext@CErrorContext@@UAAHHPAKPAU_WSMAN_FAULT_OBJECT@@@Z
+?ProcessContext@CErrorContext@@UAAHHPAU_WSMAN_ERROR@@@Z
+?ProcessContext@CRequestContext@@QAAHHPAU_WSMAN_ENUMERATOR_RESULT@@@Z
+?ProcessContext@CRequestContext@@QAAHHPAU_WSMAN_EVENTS_RESULT@@@Z
+?ProcessContext@CRequestContext@@QAAHHPAU_WSMAN_RESULT@@@Z
+?ProcessContext@CRequestContext@@QAAHHPAU_WSMAN_STATUS@@@Z
+?ProcessContext@CRequestContext@@UAAHHPAKPAU_WSMAN_FAULT_OBJECT@@@Z
+?ProcessContext@CRequestContext@@UAAHHPAU_WSMAN_ERROR@@@Z
+?ProcessEPR@CWSManEPR@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z
+?ProcessFragmentDialect@CWSManResourceNoResourceUri@@IAAHPAVIRequestContext@@PBGK@Z
+?ProcessFragmentPath@CWSManResourceNoResourceUri@@IAAHPAVIRequestContext@@PBGK@Z
+?ProcessKey@CWSManResourceNoResourceUri@@IAAHPAVIRequestContext@@PBG1@Z
+?ProcessNestedEPR@CWSManResourceNoResourceUri@@IAAHPAVIRequestContext@@PBGPAU_FWXML_ELEMENT@@@Z
+?ProcessOption@CWSManResourceNoResourceUri@@IAAHPAVIRequestContext@@PBG11H@Z
+?ProcessRefParameters@CWSManEPR@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z
+?ProcessRefProperties@CWSManEPR@@AAAHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z
+?ProcessUri@CWSManResource@@QAAHPAVIRequestContext@@PBGK@Z
+?Progress@ExtendedSemantic@@2KB
+?PropertySheetPageCallback@CWSManSecurityUI@@UAAJPAUHWND__@@IW4_SI_PAGE_TYPE@@@Z
+?ProviderFailure@CErrorContext@@UBAHXZ
+?ProviderShutdownCleanup@CWinRSPluginConfigCache@@SAXXZ
+?PutOverrideValue@?$PacketElement@K@PacketParser@@QAAXK@Z
+?PutOverrideValue@?$PacketElement@PBG@PacketParser@@QAAXPBG@Z
+?PutValue@?$PacketElement@K@PacketParser@@QAAXKH@Z
+?PutValue@?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QAAXPAU_FWXML_ELEMENT@@H@Z
+?PutValue@?$PacketElement@PBG@PacketParser@@QAAXPBGH@Z
+?PutValue@?$PacketElement@_K@PacketParser@@QAAX_KH@Z
+?PutValue@Fragment@PacketParser@@QAAXPBG0H@Z
+?PutValue@NotUnderstandSoapHeader@PacketParser@@QAAXPBG00@Z
+?PutValue@ReferenceParameters@PacketParser@@QAAKPAU_FWXML_ELEMENT@@H@Z
+?QueryInterface@CWSManSecurityUI@@UAAJABU_GUID@@PAPAX@Z
+?QueryPtr@RBUFFER@@QBAPAXXZ
+?QueryRegValue@CConfigManager@@AAAJPAU_CONFIG_INFO@@PAKKPAE1@Z
+?QueryRegValue@CWSManGroupPolicyManager@@AAAJPAVIRequestContext@@PBU_WSMAN_POLICY_INFO@@PAKKPAE2@Z
+?QuerySize@RBUFFER@@QBAIXZ
+?QueryStr@TSTRBUFFER@@QBAPBGXZ
+?QuotaComplete@UserRecord@@UAAXPAU_WSMAN_AUTHZ_QUOTA@@KPBG@Z
+?ReAlloc@WSManMemory@@SAPAXPAXIHW4_NitsFaultMode@@@Z
+?ReadCertMappingRegistryKey@CConfigManager@@SAHPAVIRequestContext@@PAVCERTMAPPING_IDENTITY@@PAG@Z
+?ReadCredentialsFromCredmanStore@CConfigManager@@SAHPAVIRequestContext@@PAG1@Z
+?ReadCurrentSettings@CClientConfigCache@@EAAPAVCCommonConfigSettings@@PAVIRequestContext@@W4ErrorLogging@@@Z
+?ReadCurrentSettings@CServiceConfigCache@@EAAPAVCCommonConfigSettings@@PAVIRequestContext@@W4ErrorLogging@@@Z
+?ReadCurrentSettings@CWinRSPluginConfigCache@@EAAPAVCCommonConfigSettings@@PAVIRequestContext@@W4ErrorLogging@@@Z
+?ReadDefaultSettings@CClientConfigCache@@EAAPAVCCommonConfigSettings@@PAVIRequestContext@@@Z
+?ReadDefaultSettings@CServiceConfigCache@@EAAPAVCCommonConfigSettings@@PAVIRequestContext@@@Z
+?ReadDefaultSettings@CWinRSPluginConfigCache@@EAAPAVCCommonConfigSettings@@PAVIRequestContext@@@Z
+?ReadShellUriRegistryKey@CConfigManager@@SAHPAVIRequestContext@@PAVSHELLURI_IDENTITY@@PAG@Z
+?ReadTableRegistryKey@CConfigManager@@SAHPAVIRequestContext@@PAVWSMANCONFIGTABLE_IDENTITY@@PAG@Z
+?ReallocStorage@RBUFFER@@IAAHI@Z
+?RecordAccessDenied@CErrorContext@@UAAXXZ
+?RecordAccessDenied@CRequestContext@@UAAXXZ
+?RecordAccessDeniedWithDetail@CErrorContext@@UAAXKZZ
+?RecordAccessDeniedWithDetail@CRequestContext@@UAAXKZZ
+?RecordFailure@CErrorContext@@UAAXK@Z
+?RecordFailure@CErrorContext@@UAAXKKZZ
+?RecordFailure@CErrorContext@@UAAXPAU_WSMAN_FAULT_OBJECT@@@Z
+?RecordFailure@CErrorContext@@UAAXW4_MI_Result@@KKZZ
+?RecordFailure@CRequestContext@@AAAXKKPAPAD0@Z
+?RecordFailure@CRequestContext@@UAAXK@Z
+?RecordFailure@CRequestContext@@UAAXKKZZ
+?RecordFailure@CRequestContext@@UAAXPAU_WSMAN_FAULT_OBJECT@@@Z
+?RecordFailure@CRequestContext@@UAAXW4_MI_Result@@KKZZ
+?RecordHresult@CErrorContext@@UAAXKKZZ
+?RecordHresult@CRequestContext@@UAAXKKZZ
+?RecordHtmlError@CRequestContext@@QAAHKPAU_FWXML_ELEMENT@@@Z
+?RecordHtmlError@CRequestContext@@QAAHKPBGK@Z
+?RecordMIFailure@IRequestContext@@QAAXW4_MI_Result@@K@Z
+?RecordOutOfMemory@CErrorContext@@UAAXXZ
+?RecordOutOfMemory@CRequestContext@@UAAXXZ
+?RecordProviderFailure@CErrorContext@@UAAXPAU_WSMAN_FAULT_OBJECT@@PBG1@Z
+?RecordProviderFailure@CRequestContext@@QAAXKHPBG00@Z
+?RecordProviderFailure@CRequestContext@@UAAXPAU_WSMAN_FAULT_OBJECT@@PBG1@Z
+?RecordSoapError@CErrorContext@@UAAHKPBG@Z
+?RecordSoapError@CRequestContext@@QAAHKPAU_FWXML_ELEMENT@@@Z
+?RecordSoapError@CRequestContext@@UAAHKPBG@Z
+?RecordText@CRequestContext@@AAAHKPBGIK@Z
+?RecordXml@CRequestContext@@AAAHKPAU_FWXML_ELEMENT@@K@Z
+?Refresh@UserRecord@@QAAXXZ
+?RegisterChild@ChildLifeTimeManager@@QAA_NXZ
+?RegisterChunkBoundary@CircularBufferFormatter@@QAAKXZ
+?RegisterConfigChangeNotification@CConfigManager@@QAAPAVConfigNotification@@PAX@Z
+?RegisterForPolicyNotification@CWSManGroupPolicyManager@@AAAHPAVIRequestContext@@H@Z
+RegisterModule
+?Release@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@UBAXXZ
+?Release@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@UBAXXZ
+?Release@?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@UBAXXZ
+?Release@?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@UBAXXZ
+?Release@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@UBAXXZ
+?Release@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@UBAXXZ
+?Release@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@UBAXXZ
+?Release@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UBAXXZ
+?Release@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@UBAXXZ
+?Release@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UBAXXZ
+?Release@?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@UBAXXZ
+?Release@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UBAXXZ
+?Release@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UBAXXZ
+?Release@?$SafeMap@VStringKey@@PAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PAVListenerEvents@@@@@@UBAXXZ
+?Release@?$SafeMap@VStringKey@@PAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PAVListenerSourceSubscription@@@@@@UBAXXZ
+?Release@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UBAXXZ
+?Release@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UBAXXZ
+?Release@?$SafeMap@VStringKeyCI@@PAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PAVIISEndpoint@@@@@@UBAXXZ
+?Release@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UBAXXZ
+?Release@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UBAXXZ
+?Release@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UBAXXZ
+?Release@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@UBAXXZ
+?Release@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@UBAXXZ
+?Release@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UBAXXZ
+?Release@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@UBAXXZ
+?Release@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@UBAXXZ
+?Release@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAAXXZ
+?Release@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAAXXZ
+?Release@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAAXXZ
+?Release@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAAXXZ
+?Release@?$SafeMap_Iterator@VStringKeyCI@@K@@QAAXXZ
+?Release@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAAXXZ
+?Release@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAAXXZ
+?Release@?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QAAXXZ
+?Release@?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QAAXXZ
+?Release@?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QAAXXZ
+?Release@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAAXXZ
+?Release@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAAXXZ
+?Release@?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAAXXZ
+?Release@?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAAXXZ
+?Release@CBaseConfigCache@@UAAJP6AXPAX@Z0@Z
+?Release@CWSManCriticalSection@@QAAXXZ
+?Release@CWSManSecurityUI@@UAAKXZ
+?Release@ILifeTimeMgmt@@UAAJP6AXPAX@Z0@Z
+?Release@UserRecord@@QAAJXZ
+?ReleaseExclusive@FastLock@@QAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@D@@PAD@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@G@@PAG@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@U_SID@@@@PAU_SID@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@PAV?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCollector@@@@@@PAV?$SafeSet_Iterator@PAVCollector@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVHostOperation@@@@@@PAV?$SafeSet_Iterator@PAVHostOperation@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@PAV?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PAV?$SimpleStack@VCListenerOperation@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PAV?$SimpleStack@VShellHostEntry@@@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@PAV?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@PAV?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@PAV?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCredUIDllLoader@@@@PAVCredUIDllLoader@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PAVMasterReceiveData@CListenerReceive@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PAVSendPacketArgs@RobustConnectionBuffer@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@H@@PAH@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoFree@E@@PAE@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCClientConfigCache@@@@PAVCClientConfigCache@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerCommand@@@@PAVCListenerCommand@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerMasterOperation@@@@PAVCListenerMasterOperation@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PAVCListenerReceive@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerShell@@@@PAVCListenerShell@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManSession@@@@PAVCWSManSession@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VHostMappingTable@@@@PAVHostMappingTable@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PAVIISConfigSettings@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VProxyManager@Client@WSMan@@@@PAVProxyManager@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VProxySelection@Client@WSMan@@@@PAVProxySelection@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VPushSubscribeOperation@@@@PAVPushSubscribeOperation@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VPushSubscription@@@@PAVPushSubscription@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PAVShellInfo@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PAVHostMappingTableEntry@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoBstr@@PAG@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoEnvironmentBlock@@PAX@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoHandle@@PAX@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoImpersonateUser@@PAX@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoLocalFree@@PAX@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@AAAXXZ
+?ReleasePtr@?$AutoCleanup@VAutoWaitHandle@@PAX@@AAAXXZ
+?ReleaseQuota@UserRecord@@QAAXW4OperationType@@PBVProvider@Catalog@@@Z
+?ReleaseShared@FastLock@@QAAXXZ
+?Remove@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAA_NABQAVCListenerOperation@@@Z
+?Remove@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAA_NABUUserKey@@@Z
+?Remove@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAA_NABVStringKeyCI@@@Z
+?Remove@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAA_NABVStringKeyCI@@@Z
+?Remove@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAA_NABVStringKeyStore@@@Z
+?Remove@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAA_NABVStringKeyStore@@@Z
+?Remove@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAA_NAB_K@Z
+?RemoveAll@CBaseConfigCache@@KAXPAVFastLock@@AAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@@Z
+?RemoveFromMap@CBaseConfigCache@@AAAHXZ
+?RemoveHttpsBinding@@YAXPBG@Z
+?RemoveHttpsCertificate@@YAXPBG0@Z
+?RemoveObserver@CServiceConfigCache@@AAAHPAVIServiceConfigObserver@@@Z
+?ReportEventW@EventLog@@SAXGKGPAPBG@Z
+?Reset@?$PacketElement@K@PacketParser@@QAAX_N@Z
+?Reset@?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QAAX_N@Z
+?Reset@?$PacketElement@PBG@PacketParser@@QAAX_N@Z
+?Reset@?$PacketElement@_K@PacketParser@@QAAX_N@Z
+?Reset@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAAXXZ
+?Reset@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAAXXZ
+?Reset@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAAXXZ
+?Reset@?$SafeMap_Iterator@PAXUEmpty@@@@QAAXXZ
+?Reset@?$SafeMap_Iterator@UPluginKey@@K@@QAAXXZ
+?Reset@?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@QAAXXZ
+?Reset@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAAXXZ
+?Reset@?$SafeMap_Iterator@VKey@Locale@@K@@QAAXXZ
+?Reset@?$SafeMap_Iterator@VStringKeyCI@@K@@QAAXXZ
+?Reset@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QAAXXZ
+?Reset@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAAXXZ
+?Reset@?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@QAAXXZ
+?Reset@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAAXXZ
+?Reset@?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@QAAXXZ
+?Reset@BufferFormatter@@UAAXXZ
+?Reset@CErrorContext@@UAAXH@Z
+?Reset@CRequestContext@@UAAXH@Z
+?Reset@CircularBufferFormatter@@UAAXXZ
+?Reset@Locale@@QAAXXZ
+?Reset@TSTRBUFFER@@QAAXXZ
+?Reset@UserRecord@@QAAXXZ
+?ResetProfileCount@UserRecord@@QAAXXZ
+?ResetRobustConnectionHeaders@PacketParser@@AAAXXZ
+?Resize@RBUFFER@@QAAHI@Z
+?Resize@RBUFFER@@QAAHII@Z
+?ResizeOptionList@CWSManResourceNoResourceUri@@IAA_NIAAVIRequestContext@@@Z
+?RestoreAllPrivileges@@YAHPAU_TOKEN_PRIVILEGES@@@Z
+?RetrieveCertMappingIdentity@CConfigManager@@AAAHPAUHKEY__@@PAVCERTMAPPING_IDENTITY@@@Z
+?RetrieveListenerIdentity@CConfigManager@@AAAHPAUHKEY__@@PAGPAPAGPAVLISTENER_IDENTITY@@@Z
+?RetrieveShellUriIdentity@CConfigManager@@AAAHPAUHKEY__@@PAVSHELLURI_IDENTITY@@@Z
+?RetrieveTableIdentity@CConfigManager@@AAAHPAUHKEY__@@PAVWSMANCONFIGTABLE_IDENTITY@@@Z
+?RevertToSelf@CSecurity@@SAHXZ
+?RtlSecureZeroMemory@XmlReader@@QAAXXZ
+?SafeStringToUI64@@YAJPBGEHPA_KPAVIRequestContext@@K@Z
+?SetBOM@PacketFormatter@@QAA_NPAVPacket@@@Z
+?SetBOM@PacketFormatter@@QAA_NPBEK@Z
+?SetCIM_Error@CErrorContext@@UAAXXZ
+?SetCIM_Error@CRequestContext@@UAAXXZ
+?SetCharset@PacketFormatter@@QAAXW4Charset@1@@Z
+?SetCharset@PacketFormatter@@QAA_NPBDK_NPA_N@Z
+?SetCharsetAndBom@PacketFormatter@@QAAXW4Charset@1@0@Z
+?SetConfigToUseDefaults@CErrorContext@@UAAXH@Z
+?SetErrorAction@ExtendedSemantic@@QAAXW4_MI_OperationCallback_ResponseType@@W4_MI_CallbackMode@@@Z
+?SetErrorState@CBaseConfigCache@@AAAXPAVCRequestContext@@K@Z
+?SetExactCharSize@TSTRBUFFER@@QAAJI@Z
+?SetExtendedErrorString@CErrorContext@@UAAXPAG@Z
+?SetExtendedErrorString@CRequestContext@@UAAXPAG@Z
+?SetExtraLogInfo@CErrorContext@@QAAXPBG000@Z
+?SetFault@CErrorContext@@UAAXKKKPBG@Z
+?SetFault@CRequestContext@@EAAXKKKPBG@Z
+?SetFinishValue@ConfigRegistry@@IAAHPAVIRequestContext@@@Z
+?SetFormatterMode@BufferFormatter@@QAAXW4Charset@PacketFormatter@@0@Z
+?SetFragmentDialect@CWSManResourceNoResourceUri@@QAAHPBGPAVIRequestContext@@@Z
+?SetFragmentPath@CWSManResourceNoResourceUri@@QAAHPBGPAVIRequestContext@@@Z
+?SetGeneratingError@CErrorContext@@UAAXXZ
+?SetLocale@CRequestContext@@QAA_NPBGK@Z
+?SetLocale@Locale@@QAA_NKPBGPAVIRequestContext@@@Z
+?SetMachineName@CRequestContext@@QAAKPBG@Z
+?SetMachineName@CRequestContext@@QAAKPBGI@Z
+?SetMachineName@CRequestContext@@QAAKXZ
+?SetMaxEnvelopeSize@CircularBufferFormatter@@QAAXK@Z
+?SetOptionsMustUnderstandValue@CWSManResourceNoResourceUri@@QAAXH@Z
+?SetProfileHandle@UserRecord@@QAAX_J@Z
+?SetProviderFailure@CErrorContext@@UAAXH@Z
+?SetSecurity@CWSManSecurityUI@@UAAJKPAX@Z
+?SetSize@TSTRBUFFER@@QAAJII@Z
+?SetSizeInUse@SBUFFER@@QAAXI@Z
+?SetThreadUILanguage@Locale@@QAA_NPAVIRequestContext@@@Z
+?SetUpdateMode@BufferFormatter@@UAAXW4Mode@1@@Z
+?SetUpdateMode@CircularBufferFormatter@@UAAXW4Mode@BufferFormatter@@@Z
+?SetUri@CWSManResource@@QAAHPBGPAVIRequestContext@@@Z
+?SetValid@RBUFFER@@IAAXH@Z
+?SetXml@ReferenceParameters@PacketParser@@AAAKAAVBufferFormatter@@PAU_FWXML_ELEMENT@@@Z
+?Shutdown@CBaseConfigCache@@IAAXXZ
+?Shutdown@CConfigManager@@SAHXZ
+?Shutdown@CWSManGroupPolicyManager@@SAHXZ
+?Shutdown@ChildLifeTimeManager@@QAAXXZ
+?ShutdownLocaleMap@Locale@@SAXXZ
+?Size@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QBAHXZ
+?Size@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QBAHXZ
+?Size@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QBAHXZ
+?Size@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QBAHXZ
+?Size@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QBAHXZ
+?Size@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QBAHXZ
+?SkipOrphans@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@PAXUEmpty@@@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@UPluginKey@@K@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@VKey@Locale@@K@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@VStringKeyCI@@K@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@IAAXXZ
+?SkipOrphans@?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@IAAXXZ
+StartSoapProcessor
+StopSoapProcessor
+?Storage@?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAAPAPAGXZ
+?Storage@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@QAAPAPAUIPRange@CWSManIPFilter@@XZ
+?Storage@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAAPAPAVEnumSinkEx@@XZ
+?Storage@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAAPAPAVGeneralSinkEx@@XZ
+?Storage@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAAPAPAVIQueryDASHSMASHInterface@@XZ
+?Storage@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAAPAPAVISpecification@@XZ
+?Storage@?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAAPAPAVPacketCreator@@XZ
+?Storage@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAAPAPAVTSTRBUFFER@@XZ
+?Storage@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAAPAPAVWmiEnumContext@@XZ
+?Storage@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAAPAPAVXmlReader@@XZ
+?Storage@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAAPAPBGXZ
+?Storage@?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAAPAPAEXZ
+?Storage@?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAAPAPAGXZ
+?Storage@?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAAPAPAPAGXZ
+?Storage@?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAAPAPAPBGXZ
+?Storage@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAAPAPAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ
+?Storage@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAAPAPAU_WINRS_RUN_COMMAND_ARG@@XZ
+?Storage@?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QAAPAPAXXZ
+?Storage@?$AutoCleanup@V?$AutoFree@E@@PAE@@QAAPAPAEXZ
+?Storage@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAAPAPAVPacket@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@QAAPAPAUIAppHostChildElementCollection@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@QAAPAPAUIAppHostElement@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@QAAPAPAUIAppHostElementCollection@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@QAAPAPAUIAppHostProperty@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@QAAPAPAUIAppHostPropertyCollection@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAAPAPAUIClientSecurity@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAAPAPAUIEnumWbemClassObject@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAAPAPAUIErrorInfo@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAAPAPAUIUnknown@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAAPAPAUIWbemClassObject@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAAPAPAUIWbemContext@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAAPAPAUIWbemLocator@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAAPAPAUIWbemObjectTextSrc@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAAPAPAUIWbemPath@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAAPAPAUIWbemPathKeyList@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAAPAPAUIWbemQualifierSet@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAAPAPAUIWbemQuery@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAAPAPAUIWbemServices@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAAPAPAVCWSManEPR@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAAPAPAVCWinRSPluginConfigCache@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAAPAPAVCommand@Client@WSMan@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAAPAPAVEnumSinkEx@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAAPAPAVGeneralSinkEx@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAAPAPAVIRequestContext@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAAPAPAVReceiveOperation@Client@WSMan@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAAPAPAVSendOperation@Client@WSMan@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAAPAPAVShell@Client@WSMan@@XZ
+?Storage@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAAPAPAVSignalOperation@Client@WSMan@@XZ
+?Storage@?$AutoCleanup@VAutoBstr@@PAG@@QAAPAPAGXZ
+?Storage@?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAAPAPAGXZ
+?Storage@?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAAPAPBU_CERT_CONTEXT@@XZ
+?Storage@?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAAPAPBU_CERT_CHAIN_CONTEXT@@XZ
+?Storage@?$AutoCleanup@VAutoHandle@@PAX@@QAAPAPAXXZ
+?Storage@?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAAPAPAXXZ
+?Storage@?$AutoCleanup@VAutoLocalFree@@PAX@@QAAPAPAXXZ
+?Storage@?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAAPAPAU_MI_Class@@XZ
+?Storage@?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAAPAPAU_MI_Instance@@XZ
+?Storage@?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAAPAPAUHKEY__@@XZ
+?Storage@?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAAPAPAXXZ
+?Storage@?$AutoCleanup@VAutoWaitHandle@@PAX@@QAAPAPAXXZ
+?StoreData@CWSManResource@@AAAHPAVIRequestContext@@PBG11PAU_WSMAN_SELECTOR_SET@@PAU_WSMAN_OPTION_SET@@@Z
+?StoreData@CWSManResource@@QAAHPAVIRequestContext@@PBG@Z
+?StoreDataFromResourceLocator@CWSManResource@@AAAHPAVIRequestContext@@PAU_WSMAN_RESOURCE_LOCATOR@@@Z
+?StoreExpansion@CResourceAlias@@AAAXPBGPAU_ALIAS_INFORMATION@@@Z
+?StreamingOutput@ExtendedSemantic@@2KB
+?StringCchEndsWithCI@@YAHPBG0@Z
+?StringCchEquals@@YAHPBG0@Z
+?StringCchEqualsCI@@YAHPBG0@Z
+?StringCchStartsWith@@YAHPBG0@Z
+?StringCchStartsWithCI@@YAHPBG0@Z
+?StringConcatenate@CWSManResourceNoResourceUri@@IAAHAAPAGAAKKPAG@Z
+?StringIsBlank@@YAHPBG@Z
+?StringToDword@@YAHPBDPAK@Z
+?StringToDword@@YAHPBGPAK@Z
+?StringTrimWhitespace@@YAPAGPAG@Z
+?Subscribe@CWSManGroupPolicyManager@@UAAHPAVIRequestContext@@PAVIWSManGroupPolicyObserver@@H@Z
+?TruncateAt@TSTRBUFFER@@QAAXI@Z
+?TryAcquire@CWSManCriticalSection@@QAAHXZ
+?UnSubscribe@CWSManGroupPolicyManager@@UAAHPAVIRequestContext@@PAVIWSManGroupPolicyObserver@@@Z
+?UninstallMigration@@YAHPAVIRequestContext@@@Z
+?UnregisterChild@ChildLifeTimeManager@@QAAXXZ
+?UnregisterPolicyNotification@CWSManGroupPolicyManager@@AAAHXZ
+?Up@?$LoaderSerializer@VSubscriptionManager@@$01@@AAAJXZ
+?UpdateCredentialsInCredmanStore@CConfigManager@@SAHPAVIRequestContext@@PAG1@Z
+?UpdateHttpsBinding@@YAHPAVIRequestContext@@PBG1PAH@Z
+?UpdateHttpsCertificate@@YAHPAVIRequestContext@@PBG11PAHHU_GUID@@@Z
+?UpdateKey@CWSManResourceNoResourceUri@@QAAHPAVIRequestContext@@PBG1@Z
+?Uri@CResourceAlias@@QAAPBGXZ
+?UseClientToken@UserRecord@@QAA_NXZ
+?UseDefaultConfig@CErrorContext@@UBAHXZ
+?UsingDefaultLCID@Locale@@QAA_NXZ
+?Validate@Locale@@SA_NPAU_WSMAN_DATA@@@Z
+?Validate@Locale@@SA_NPBG@Z
+?ValidateCBTHardeningLevel@ConfigRegistry@@IAAHPAVIRequestContext@@PBG@Z
+?ValidateCertificateHash@ConfigRegistry@@IAAHPAVIRequestContext@@PBG111@Z
+?ValidateHeaders@PacketParser@@QAAHPAVIRequestContext@@K@Z
+?ValidateHostnameAndCertificateCN@ConfigRegistry@@IAAHPAVIRequestContext@@PBG1@Z
+?ValidateIPFilter@ConfigRegistry@@IAAHPAVIRequestContext@@W4ConfigSetting@@PBG@Z
+?ValidateInt@CWSManGroupPolicyManager@@AAAHPAVIRequestContext@@PBU_WSMAN_POLICY_INFO@@K@Z
+?ValidateInt@ConfigRegistry@@IAAHPAVIRequestContext@@PAU_CONFIG_INFO@@KPBG@Z
+?ValidateString@CWSManGroupPolicyManager@@AAAHPAVIRequestContext@@PBU_WSMAN_POLICY_INFO@@PBG@Z
+?ValidateString@ConfigRegistry@@IAAHPAVIRequestContext@@PAU_CONFIG_INFO@@PBG@Z
+?ValidateTrustedHosts@ConfigRegistry@@IAAHPAVIRequestContext@@PBG@Z
+?ValidateUrlPrefix@ConfigRegistry@@IAAHPAVIRequestContext@@PBG@Z
+?Verbose@ExtendedSemantic@@2KB
+?VerifyState@RBUFFER@@IBAXXZ
+?WSManError@@YAXPBGK0KPAVIRequestContext@@@Z
+?WSManMemoryOperation@@YAHW4WSMANMEMOPERATION@@PAXKK@Z
+?WSManPostThreadMessageW@@YAHKIIJ@Z
+?WaitForAllChildrenToUnregister@ChildLifeTimeManager@@QAAXK@Z
+?WaitForConditionVar@CWSManCriticalSectionWithConditionVar@@QAAKK@Z
+?WaitForMore@PacketParser@@UAA_NXZ
+?WakeAllWaitingForConditionVar@CWSManCriticalSectionWithConditionVar@@QAAXXZ
+?WakeAllWaitingOnNoOfChildren@ChildLifeTimeManager@@AAAXXZ
+?Warning@EventLog@@SAXK@Z
+?Warning@EventLog@@SAXKGPAPBG@Z
+?Warning@EventLog@@SAXKPBG@Z
+?Warning@ExtendedSemantic@@2KB
+?WatchForChanges@CServiceConfigCache@@QAAPAVCServiceWatcher@1@PAVIRequestContext@@PAVIServiceConfigObserver@@@Z
+?WrapperCoSetProxyBlanket@@YAJPAUIUnknown@@KKPAGKKPAXKW4BehaviourForNoInterfaceError@@@Z
+?Write@EventHandler@WSMan@@SAXABU_EVENT_DESCRIPTOR@@KPAU_EVENT_DATA_DESCRIPTOR@@@Z
+?WriteCredentialsToCredmanStore@CConfigManager@@SAHPAVIRequestContext@@PAG1H@Z
+?WriteSoapA@EventHandler@WSMan@@SAXABU_EVENT_DESCRIPTOR@@PBDK@Z
+?WriteSoapMessageA@EventHandler@WSMan@@AAAXABU_EVENT_DESCRIPTOR@@PBDK@Z
+?WriteSoapMessageW@EventHandler@WSMan@@AAAXABU_EVENT_DESCRIPTOR@@PBGK@Z
+?WriteSoapMessageW_BE@EventHandler@WSMan@@AAAXABU_EVENT_DESCRIPTOR@@PBGK@Z
+?WriteSoapW@EventHandler@WSMan@@SAXABU_EVENT_DESCRIPTOR@@PBGK@Z
+?WriteSoapW_BE@EventHandler@WSMan@@SAXABU_EVENT_DESCRIPTOR@@PBGK@Z
+?_PolicyChangedCallback@CWSManGroupPolicyManager@@CAXPAXE@Z
+?back@?$SimpleQueue@T_LARGE_INTEGER@@@@QBA?BT_LARGE_INTEGER@@XZ
+?empty@?$SimpleQueue@T_LARGE_INTEGER@@@@QBA_NXZ
+?front@?$SimpleQueue@T_LARGE_INTEGER@@@@QBA?BT_LARGE_INTEGER@@XZ
+?g_Resources@Locale@@0V?$Loader@VResources@Locale@@$0A@@@A DATA
+?pop@?$SimpleQueue@T_LARGE_INTEGER@@@@QAAXXZ
+?push@?$SimpleQueue@T_LARGE_INTEGER@@@@QAAKT_LARGE_INTEGER@@@Z
+?s_cacheMap@CClientConfigCache@@0V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@A DATA
+?s_cacheMap@CServiceConfigCache@@0V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@A DATA
+?s_cacheMap@CWinRSPluginConfigCache@@0V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@A DATA
+?s_config@CConfigManager@@0V?$AutoRelease@VCConfigManager@@@@A DATA
+?s_lock@CConfigManager@@0VFastLock@@A DATA
+?s_lock@CWSManGroupPolicyManager@@0VFastLock@@A DATA
+?s_mapLock@CClientConfigCache@@0VFastLock@@A DATA
+?s_mapLock@CServiceConfigCache@@0VFastLock@@A DATA
+?s_mapLock@CWinRSPluginConfigCache@@0VFastLock@@A DATA
+?s_policyManager@CWSManGroupPolicyManager@@0V?$AutoRelease@VCWSManGroupPolicyManager@@@@A DATA
+EnumServiceUserResources
+FwGetParsedDocument
+FwGetRootElement
+FwIsXmlEscapedProperly
+FwXmlAddAttributeToAttributeList
+FwXmlCloseParser
+FwXmlCompareAttributeName
+FwXmlCompareAttributeNameEx
+FwXmlCompareElementName
+FwXmlCompareElementNameEx
+FwXmlCompareElementNameLen
+FwXmlCompareElementNameSpace
+FwXmlCompareName
+FwXmlCreateXmlFromElement
+FwXmlDecodeXmlEscapes
+FwXmlEncodeXmlEscapes
+FwXmlFindAttribute
+FwXmlFindAttributeEx
+FwXmlFindChildElement
+FwXmlFindChildElementEx
+FwXmlGetAttribute
+FwXmlGetAttributeNameEx
+FwXmlGetAttributeNamespacePrefix
+FwXmlGetAttributeValue
+FwXmlGetAttributeValueDWord
+FwXmlGetBooleanValue
+FwXmlGetBuffer
+FwXmlGetChild
+FwXmlGetElementName
+FwXmlGetElementNameEx
+FwXmlGetElementNamespacePrefix
+FwXmlGetElementNamespaceUrl
+FwXmlGetEntryNameEx
+FwXmlGetNamespaceForPrefix
+FwXmlGetNormalizedString
+FwXmlGetReferenceXmlFromElement
+FwXmlGetRemainder
+FwXmlGetSimpleContent
+FwXmlGetSimpleContentEx
+FwXmlGetSimpleContentEx2
+FwXmlHasText
+FwXmlIsEmpty
+FwXmlIsMustUnderstand
+FwXmlIsNull
+FwXmlIsSimpleContent
+FwXmlIsSimpleContentOrEmpty
+FwXmlIsTrueValue
+FwXmlNumAttributes
+FwXmlNumChildren
+FwXmlNumChildrenWithName
+FwXmlNumConsecutiveChildrenWithName
+FwXmlParsePrefixedXML
+FwXmlParseStream
+FwXmlParseText
+FwXmlParserCreate
+FwXmlUpdatePrefixes
+GetServiceSecurity
+MI_Application_InitializeV1
+ServiceMain
+SetServiceSecurity
+SubscriptionsProvEnumerate
+SvchostPushServiceGlobals
+WSManAckEvents
+WSManAddSubscriptionManagerInternal
+WSManCloseCommand
+WSManCloseEnumerationHandle
+WSManCloseEnumeratorHandle
+WSManCloseObjectHandle
+WSManCloseOperation
+WSManClosePublisherHandle
+WSManCloseSession
+WSManCloseSessionHandle
+WSManCloseShell
+WSManCloseSubscriptionHandle
+WSManConnectShell
+WSManConnectShellCommand
+WSManConstructError
+WSManCreateEnumeratorInternal
+WSManCreateInternal
+WSManCreateInternalEx
+WSManCreatePullSubscription
+WSManCreatePushSubscription
+WSManCreateSession
+WSManCreateSessionInternal
+WSManCreateShell
+WSManCreateShellEx
+WSManDecodeObject
+WSManDeinitialize
+WSManDeleteInternal
+WSManDeleteInternalEx
+WSManDeliverEndSubscriptionNotification
+WSManDeliverEvent
+WSManDisconnectShell
+WSManEncodeObject
+WSManEncodeObjectEx
+WSManEncodeObjectInternal
+WSManEnumerateInternal
+WSManEnumerateInternalEx
+WSManEnumeratorAddEvent
+WSManEnumeratorAddObject
+WSManEnumeratorBatchPolicyViolated
+WSManEnumeratorNextObject
+WSManEnumeratorObjectCount
+WSManGetErrorMessage
+WSManGetInternal
+WSManGetInternalEx
+WSManGetSessionOptionAsDword
+WSManGetSessionOptionAsString
+WSManIdentifyInternal
+WSManInitialize
+WSManInvokeInternal
+WSManInvokeInternalEx
+WSManPluginAuthzOperationComplete
+WSManPluginAuthzQueryQuotaComplete
+WSManPluginAuthzUserComplete
+WSManPluginFreeRequestDetails
+WSManPluginGetConfiguration
+WSManPluginGetOperationParameters
+WSManPluginInteractiveCallback
+WSManPluginObjectAndBookmarkResult
+WSManPluginObjectAndEprResult
+WSManPluginObjectResult
+WSManPluginOperationComplete
+WSManPluginReceiveResult
+WSManPluginReportCompletion
+WSManPluginReportContext
+WSManPluginShutdown
+WSManPluginStartup
+WSManProvCreate
+WSManProvDelete
+WSManProvEnumerate
+WSManProvGet
+WSManProvInvoke
+WSManProvPut
+WSManPull
+WSManPullEvents
+WSManPutInternal
+WSManPutInternalEx
+WSManReceiveShellOutput
+WSManReconnectShell
+WSManReconnectShellCommand
+WSManRemoveSubscriptionManagerInternal
+WSManRunShellCommand
+WSManRunShellCommandEx
+WSManSendShellInput
+WSManSetSessionOption
+WSManSignalShell
+mi_clientFT_V1 DATA
diff --git a/lib/libc/mingw/libarm32/wsnmp32.def b/lib/libc/mingw/libarm32/wsnmp32.def
new file mode 100644
index 0000000000..61e704a901
--- /dev/null
+++ b/lib/libc/mingw/libarm32/wsnmp32.def
@@ -0,0 +1,58 @@
+;
+; Definition file of wsnmp32.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "wsnmp32.dll"
+EXPORTS
+SnmpGetTranslateMode
+SnmpSetTranslateMode
+SnmpGetRetransmitMode
+SnmpSetRetransmitMode
+SnmpGetTimeout
+SnmpSetTimeout
+SnmpGetRetry
+SnmpSetRetry
+SnmpConveyAgentAddress
+SnmpSetAgentAddress
+SnmpGetVendorInfo
+SnmpStartup
+SnmpCleanup
+SnmpOpen
+SnmpClose
+SnmpSendMsg
+SnmpRecvMsg
+SnmpRegister
+SnmpCreateSession
+SnmpListen
+SnmpCancelMsg
+SnmpStartupEx
+SnmpCleanupEx
+SnmpListenEx
+SnmpStrToEntity
+SnmpEntityToStr
+SnmpFreeEntity
+SnmpSetPort
+SnmpStrToContext
+SnmpContextToStr
+SnmpFreeContext
+SnmpCreatePdu
+SnmpGetPduData
+SnmpSetPduData
+SnmpDuplicatePdu
+SnmpFreePdu
+SnmpCreateVbl
+SnmpDuplicateVbl
+SnmpFreeVbl
+SnmpCountVbl
+SnmpGetVb
+SnmpSetVb
+SnmpDeleteVb
+SnmpFreeDescriptor
+SnmpEncodeMsg
+SnmpDecodeMsg
+SnmpStrToOid
+SnmpOidToStr
+SnmpOidCopy
+SnmpOidCompare
+SnmpGetLastError
diff --git a/lib/libc/mingw/libarm32/xmllite.def b/lib/libc/mingw/libarm32/xmllite.def
new file mode 100644
index 0000000000..2cf21b845b
--- /dev/null
+++ b/lib/libc/mingw/libarm32/xmllite.def
@@ -0,0 +1,13 @@
+;
+; Definition file of XmlLite.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008-2014
+;
+LIBRARY "XmlLite.dll"
+EXPORTS
+CreateXmlReader
+CreateXmlReaderInputWithEncodingCodePage
+CreateXmlReaderInputWithEncodingName
+CreateXmlWriter
+CreateXmlWriterOutputWithEncodingCodePage
+CreateXmlWriterOutputWithEncodingName
diff --git a/lib/libc/musl/arch/aarch64/bits/hwcap.h b/lib/libc/musl/arch/aarch64/bits/hwcap.h
index a7484028e0..7ab73f99b6 100644
--- a/lib/libc/musl/arch/aarch64/bits/hwcap.h
+++ b/lib/libc/musl/arch/aarch64/bits/hwcap.h
@@ -38,3 +38,13 @@
#define HWCAP2_SVEBITPERM (1 << 4)
#define HWCAP2_SVESHA3 (1 << 5)
#define HWCAP2_SVESM4 (1 << 6)
+#define HWCAP2_FLAGM2 (1 << 7)
+#define HWCAP2_FRINT (1 << 8)
+#define HWCAP2_SVEI8MM (1 << 9)
+#define HWCAP2_SVEF32MM (1 << 10)
+#define HWCAP2_SVEF64MM (1 << 11)
+#define HWCAP2_SVEBF16 (1 << 12)
+#define HWCAP2_I8MM (1 << 13)
+#define HWCAP2_BF16 (1 << 14)
+#define HWCAP2_DGH (1 << 15)
+#define HWCAP2_RNG (1 << 16)
diff --git a/lib/libc/musl/arch/aarch64/bits/signal.h b/lib/libc/musl/arch/aarch64/bits/signal.h
index b71261f568..5098c7341d 100644
--- a/lib/libc/musl/arch/aarch64/bits/signal.h
+++ b/lib/libc/musl/arch/aarch64/bits/signal.h
@@ -11,7 +11,7 @@ typedef unsigned long greg_t;
typedef unsigned long gregset_t[34];
typedef struct {
- long double vregs[32];
+ __uint128_t vregs[32];
unsigned int fpsr;
unsigned int fpcr;
} fpregset_t;
@@ -34,7 +34,7 @@ struct fpsimd_context {
struct _aarch64_ctx head;
unsigned int fpsr;
unsigned int fpcr;
- long double vregs[32];
+ __uint128_t vregs[32];
};
struct esr_context {
struct _aarch64_ctx head;
diff --git a/lib/libc/musl/arch/aarch64/bits/syscall.h.in b/lib/libc/musl/arch/aarch64/bits/syscall.h.in
index 93648afdfe..f9457c184a 100644
--- a/lib/libc/musl/arch/aarch64/bits/syscall.h.in
+++ b/lib/libc/musl/arch/aarch64/bits/syscall.h.in
@@ -289,4 +289,8 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
diff --git a/lib/libc/musl/arch/aarch64/bits/user.h b/lib/libc/musl/arch/aarch64/bits/user.h
index d12cdf7fe5..8a1002aa67 100644
--- a/lib/libc/musl/arch/aarch64/bits/user.h
+++ b/lib/libc/musl/arch/aarch64/bits/user.h
@@ -6,7 +6,7 @@ struct user_regs_struct {
};
struct user_fpsimd_struct {
- long double vregs[32];
+ __uint128_t vregs[32];
unsigned int fpsr;
unsigned int fpcr;
};
diff --git a/lib/libc/musl/arch/aarch64/pthread_arch.h b/lib/libc/musl/arch/aarch64/pthread_arch.h
index e64b126d2c..3909616c37 100644
--- a/lib/libc/musl/arch/aarch64/pthread_arch.h
+++ b/lib/libc/musl/arch/aarch64/pthread_arch.h
@@ -1,12 +1,11 @@
-static inline struct pthread *__pthread_self()
+static inline uintptr_t __get_tp()
{
- char *self;
- __asm__ ("mrs %0,tpidr_el0" : "=r"(self));
- return (void*)(self - sizeof(struct pthread));
+ uintptr_t tp;
+ __asm__ ("mrs %0,tpidr_el0" : "=r"(tp));
+ return tp;
}
#define TLS_ABOVE_TP
#define GAP_ABOVE_TP 16
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread))
#define MC_PC pc
diff --git a/lib/libc/musl/arch/arm/bits/syscall.h.in b/lib/libc/musl/arch/arm/bits/syscall.h.in
index 11d677635b..7e2fc26697 100644
--- a/lib/libc/musl/arch/arm/bits/syscall.h.in
+++ b/lib/libc/musl/arch/arm/bits/syscall.h.in
@@ -389,6 +389,10 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
#define __ARM_NR_breakpoint 0x0f0001
#define __ARM_NR_cacheflush 0x0f0002
diff --git a/lib/libc/musl/arch/arm/pthread_arch.h b/lib/libc/musl/arch/arm/pthread_arch.h
index e689ea212a..157e2eae66 100644
--- a/lib/libc/musl/arch/arm/pthread_arch.h
+++ b/lib/libc/musl/arch/arm/pthread_arch.h
@@ -1,11 +1,11 @@
#if ((__ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \
|| __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7
-static inline pthread_t __pthread_self()
+static inline uintptr_t __get_tp()
{
- char *p;
- __asm__ ( "mrc p15,0,%0,c13,c0,3" : "=r"(p) );
- return (void *)(p-sizeof(struct pthread));
+ uintptr_t tp;
+ __asm__ ( "mrc p15,0,%0,c13,c0,3" : "=r"(tp) );
+ return tp;
}
#else
@@ -16,18 +16,17 @@ static inline pthread_t __pthread_self()
#define BLX "blx"
#endif
-static inline pthread_t __pthread_self()
+static inline uintptr_t __get_tp()
{
extern hidden uintptr_t __a_gettp_ptr;
- register uintptr_t p __asm__("r0");
- __asm__ ( BLX " %1" : "=r"(p) : "r"(__a_gettp_ptr) : "cc", "lr" );
- return (void *)(p-sizeof(struct pthread));
+ register uintptr_t tp __asm__("r0");
+ __asm__ ( BLX " %1" : "=r"(tp) : "r"(__a_gettp_ptr) : "cc", "lr" );
+ return tp;
}
#endif
#define TLS_ABOVE_TP
#define GAP_ABOVE_TP 8
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread))
#define MC_PC arm_pc
diff --git a/lib/libc/musl/arch/generic/bits/fcntl.h b/lib/libc/musl/arch/generic/bits/fcntl.h
index ae233cc003..730a98cfe6 100644
--- a/lib/libc/musl/arch/generic/bits/fcntl.h
+++ b/lib/libc/musl/arch/generic/bits/fcntl.h
@@ -30,9 +30,15 @@
#define F_SETSIG 10
#define F_GETSIG 11
+#if __LONG_MAX == 0x7fffffffL
#define F_GETLK 12
#define F_SETLK 13
#define F_SETLKW 14
+#else
+#define F_GETLK 5
+#define F_SETLK 6
+#define F_SETLKW 7
+#endif
#define F_SETOWN_EX 15
#define F_GETOWN_EX 16
diff --git a/lib/libc/musl/arch/i386/bits/syscall.h.in b/lib/libc/musl/arch/i386/bits/syscall.h.in
index 1ae4e48a8f..abdb210d39 100644
--- a/lib/libc/musl/arch/i386/bits/syscall.h.in
+++ b/lib/libc/musl/arch/i386/bits/syscall.h.in
@@ -426,4 +426,8 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
diff --git a/lib/libc/musl/arch/i386/pthread_arch.h b/lib/libc/musl/arch/i386/pthread_arch.h
index 6f600b9e01..a639c382ac 100644
--- a/lib/libc/musl/arch/i386/pthread_arch.h
+++ b/lib/libc/musl/arch/i386/pthread_arch.h
@@ -1,10 +1,8 @@
-static inline struct pthread *__pthread_self()
+static inline uintptr_t __get_tp()
{
- struct pthread *self;
- __asm__ ("movl %%gs:0,%0" : "=r" (self) );
- return self;
+ uintptr_t tp;
+ __asm__ ("movl %%gs:0,%0" : "=r" (tp) );
+ return tp;
}
-#define TP_ADJ(p) (p)
-
#define MC_PC gregs[REG_EIP]
diff --git a/lib/libc/musl/arch/i386/syscall_arch.h b/lib/libc/musl/arch/i386/syscall_arch.h
index 69642e578a..f92b7aa9f4 100644
--- a/lib/libc/musl/arch/i386/syscall_arch.h
+++ b/lib/libc/musl/arch/i386/syscall_arch.h
@@ -87,5 +87,3 @@ static inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a
#define VDSO_CGT32_VER "LINUX_2.6"
#define VDSO_CGT_SYM "__vdso_clock_gettime64"
#define VDSO_CGT_VER "LINUX_2.6"
-
-#define SYSCALL_USE_SOCKETCALL
diff --git a/lib/libc/musl/arch/mips/bits/syscall.h.in b/lib/libc/musl/arch/mips/bits/syscall.h.in
index 86251bf31b..2bb03f067a 100644
--- a/lib/libc/musl/arch/mips/bits/syscall.h.in
+++ b/lib/libc/musl/arch/mips/bits/syscall.h.in
@@ -408,4 +408,8 @@
#define __NR_fspick 4433
#define __NR_pidfd_open 4434
#define __NR_clone3 4435
+#define __NR_close_range 4436
+#define __NR_openat2 4437
+#define __NR_pidfd_getfd 4438
+#define __NR_faccessat2 4439
diff --git a/lib/libc/musl/arch/mips/pthread_arch.h b/lib/libc/musl/arch/mips/pthread_arch.h
index 1e7839ea67..c45347ab92 100644
--- a/lib/libc/musl/arch/mips/pthread_arch.h
+++ b/lib/libc/musl/arch/mips/pthread_arch.h
@@ -1,19 +1,19 @@
-static inline struct pthread *__pthread_self()
+static inline uintptr_t __get_tp()
{
#if __mips_isa_rev < 2
- register char *tp __asm__("$3");
+ register uintptr_t tp __asm__("$3");
__asm__ (".word 0x7c03e83b" : "=r" (tp) );
#else
- char *tp;
+ uintptr_t tp;
__asm__ ("rdhwr %0, $29" : "=r" (tp) );
#endif
- return (pthread_t)(tp - 0x7000 - sizeof(struct pthread));
+ return tp;
}
#define TLS_ABOVE_TP
#define GAP_ABOVE_TP 0
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000)
+#define TP_OFFSET 0x7000
#define DTP_OFFSET 0x8000
#define MC_PC pc
diff --git a/lib/libc/musl/arch/mips/syscall_arch.h b/lib/libc/musl/arch/mips/syscall_arch.h
index 380a94b366..5b7c38de20 100644
--- a/lib/libc/musl/arch/mips/syscall_arch.h
+++ b/lib/libc/musl/arch/mips/syscall_arch.h
@@ -149,3 +149,5 @@ static inline long __syscall7(long n, long a, long b, long c, long d, long e, lo
#define SO_SNDTIMEO_OLD 0x1005
#define SO_RCVTIMEO_OLD 0x1006
+
+#undef SYS_socketcall
diff --git a/lib/libc/musl/arch/mips64/bits/fcntl.h b/lib/libc/musl/arch/mips64/bits/fcntl.h
index 3bcec15e0d..5da1eef80c 100644
--- a/lib/libc/musl/arch/mips64/bits/fcntl.h
+++ b/lib/libc/musl/arch/mips64/bits/fcntl.h
@@ -13,7 +13,7 @@
#define O_ASYNC 010000
#define O_DIRECT 0100000
-#define O_LARGEFILE 0
+#define O_LARGEFILE 020000
#define O_NOATIME 01000000
#define O_PATH 010000000
#define O_TMPFILE 020200000
diff --git a/lib/libc/musl/arch/mips64/bits/syscall.h.in b/lib/libc/musl/arch/mips64/bits/syscall.h.in
index 9b406e9a4d..045e8238ad 100644
--- a/lib/libc/musl/arch/mips64/bits/syscall.h.in
+++ b/lib/libc/musl/arch/mips64/bits/syscall.h.in
@@ -338,4 +338,8 @@
#define __NR_fspick 5433
#define __NR_pidfd_open 5434
#define __NR_clone3 5435
+#define __NR_close_range 5436
+#define __NR_openat2 5437
+#define __NR_pidfd_getfd 5438
+#define __NR_faccessat2 5439
diff --git a/lib/libc/musl/arch/mips64/pthread_arch.h b/lib/libc/musl/arch/mips64/pthread_arch.h
index 1e7839ea67..c45347ab92 100644
--- a/lib/libc/musl/arch/mips64/pthread_arch.h
+++ b/lib/libc/musl/arch/mips64/pthread_arch.h
@@ -1,19 +1,19 @@
-static inline struct pthread *__pthread_self()
+static inline uintptr_t __get_tp()
{
#if __mips_isa_rev < 2
- register char *tp __asm__("$3");
+ register uintptr_t tp __asm__("$3");
__asm__ (".word 0x7c03e83b" : "=r" (tp) );
#else
- char *tp;
+ uintptr_t tp;
__asm__ ("rdhwr %0, $29" : "=r" (tp) );
#endif
- return (pthread_t)(tp - 0x7000 - sizeof(struct pthread));
+ return tp;
}
#define TLS_ABOVE_TP
#define GAP_ABOVE_TP 0
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000)
+#define TP_OFFSET 0x7000
#define DTP_OFFSET 0x8000
#define MC_PC pc
diff --git a/lib/libc/musl/arch/powerpc/bits/syscall.h.in b/lib/libc/musl/arch/powerpc/bits/syscall.h.in
index 8d4f79b524..5c6fae3e58 100644
--- a/lib/libc/musl/arch/powerpc/bits/syscall.h.in
+++ b/lib/libc/musl/arch/powerpc/bits/syscall.h.in
@@ -415,4 +415,8 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
diff --git a/lib/libc/musl/arch/powerpc/pthread_arch.h b/lib/libc/musl/arch/powerpc/pthread_arch.h
index ae0f28d6d1..42e88b07e8 100644
--- a/lib/libc/musl/arch/powerpc/pthread_arch.h
+++ b/lib/libc/musl/arch/powerpc/pthread_arch.h
@@ -1,18 +1,16 @@
-static inline struct pthread *__pthread_self()
+static inline uintptr_t __get_tp()
{
- register char *tp __asm__("r2");
+ register uintptr_t tp __asm__("r2");
__asm__ ("" : "=r" (tp) );
- return (pthread_t)(tp - 0x7000 - sizeof(struct pthread));
+ return tp;
}
#define TLS_ABOVE_TP
#define GAP_ABOVE_TP 0
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000)
+#define TP_OFFSET 0x7000
#define DTP_OFFSET 0x8000
// the kernel calls the ip "nip", it's the first saved value after the 32
// GPRs.
#define MC_PC gregs[32]
-
-#define CANARY canary_at_end
diff --git a/lib/libc/musl/arch/powerpc64/bits/syscall.h.in b/lib/libc/musl/arch/powerpc64/bits/syscall.h.in
index b935864c41..edf73d3d6b 100644
--- a/lib/libc/musl/arch/powerpc64/bits/syscall.h.in
+++ b/lib/libc/musl/arch/powerpc64/bits/syscall.h.in
@@ -387,4 +387,8 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
diff --git a/lib/libc/musl/arch/powerpc64/pthread_arch.h b/lib/libc/musl/arch/powerpc64/pthread_arch.h
index 79c3ecd8af..1b7b90797f 100644
--- a/lib/libc/musl/arch/powerpc64/pthread_arch.h
+++ b/lib/libc/musl/arch/powerpc64/pthread_arch.h
@@ -1,18 +1,16 @@
-static inline struct pthread *__pthread_self()
+static inline uintptr_t __get_tp()
{
- register char *tp __asm__("r13");
+ register uintptr_t tp __asm__("r13");
__asm__ ("" : "=r" (tp) );
- return (pthread_t)(tp - 0x7000 - sizeof(struct pthread));
+ return tp;
}
#define TLS_ABOVE_TP
#define GAP_ABOVE_TP 0
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000)
+#define TP_OFFSET 0x7000
#define DTP_OFFSET 0x8000
// the kernel calls the ip "nip", it's the first saved value after the 32
// GPRs.
#define MC_PC gp_regs[32]
-
-#define CANARY canary_at_end
diff --git a/lib/libc/musl/arch/riscv64/bits/fcntl.h b/lib/libc/musl/arch/riscv64/bits/fcntl.h
deleted file mode 100644
index ecb4d18fd1..0000000000
--- a/lib/libc/musl/arch/riscv64/bits/fcntl.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#define O_CREAT 0100
-#define O_EXCL 0200
-#define O_NOCTTY 0400
-#define O_TRUNC 01000
-#define O_APPEND 02000
-#define O_NONBLOCK 04000
-#define O_DSYNC 010000
-#define O_SYNC 04010000
-#define O_RSYNC 04010000
-#define O_DIRECTORY 0200000
-#define O_NOFOLLOW 0400000
-#define O_CLOEXEC 02000000
-
-#define O_ASYNC 020000
-#define O_DIRECT 040000
-#define O_LARGEFILE 0100000
-#define O_NOATIME 01000000
-#define O_PATH 010000000
-#define O_TMPFILE 020200000
-#define O_NDELAY O_NONBLOCK
-
-#define F_DUPFD 0
-#define F_GETFD 1
-#define F_SETFD 2
-#define F_GETFL 3
-#define F_SETFL 4
-#define F_GETLK 5
-#define F_SETLK 6
-#define F_SETLKW 7
-#define F_SETOWN 8
-#define F_GETOWN 9
-#define F_SETSIG 10
-#define F_GETSIG 11
-
-#define F_SETOWN_EX 15
-#define F_GETOWN_EX 16
-
-#define F_GETOWNER_UIDS 17
diff --git a/lib/libc/musl/arch/riscv64/bits/signal.h b/lib/libc/musl/arch/riscv64/bits/signal.h
index b006334f78..287367db73 100644
--- a/lib/libc/musl/arch/riscv64/bits/signal.h
+++ b/lib/libc/musl/arch/riscv64/bits/signal.h
@@ -60,10 +60,10 @@ struct sigaltstack {
size_t ss_size;
};
-typedef struct ucontext_t
+typedef struct __ucontext
{
unsigned long uc_flags;
- struct ucontext_t *uc_link;
+ struct __ucontext *uc_link;
stack_t uc_stack;
sigset_t uc_sigmask;
mcontext_t uc_mcontext;
diff --git a/lib/libc/musl/arch/riscv64/bits/syscall.h.in b/lib/libc/musl/arch/riscv64/bits/syscall.h.in
index 0043eeba3c..5def016b12 100644
--- a/lib/libc/musl/arch/riscv64/bits/syscall.h.in
+++ b/lib/libc/musl/arch/riscv64/bits/syscall.h.in
@@ -289,6 +289,10 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
#define __NR_sysriscv __NR_arch_specific_syscall
#define __NR_riscv_flush_icache (__NR_sysriscv + 15)
diff --git a/lib/libc/musl/arch/riscv64/pthread_arch.h b/lib/libc/musl/arch/riscv64/pthread_arch.h
index db414b1702..a20d7fba0d 100644
--- a/lib/libc/musl/arch/riscv64/pthread_arch.h
+++ b/lib/libc/musl/arch/riscv64/pthread_arch.h
@@ -1,13 +1,12 @@
-static inline struct pthread *__pthread_self()
+static inline uintptr_t __get_tp()
{
- char *tp;
+ uintptr_t tp;
__asm__ __volatile__("mv %0, tp" : "=r"(tp));
- return (void *)(tp - sizeof(struct pthread));
+ return tp;
}
#define TLS_ABOVE_TP
#define GAP_ABOVE_TP 0
-#define TP_ADJ(p) ((char *)p + sizeof(struct pthread))
#define DTP_OFFSET 0x800
diff --git a/lib/libc/musl/arch/s390x/bits/alltypes.h.in b/lib/libc/musl/arch/s390x/bits/alltypes.h.in
index 15d18c8f4a..6c0eb7f4b8 100644
--- a/lib/libc/musl/arch/s390x/bits/alltypes.h.in
+++ b/lib/libc/musl/arch/s390x/bits/alltypes.h.in
@@ -9,7 +9,11 @@
TYPEDEF int wchar_t;
#endif
+#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 1
TYPEDEF double float_t;
+#else
+TYPEDEF float float_t;
+#endif
TYPEDEF double double_t;
TYPEDEF struct { long long __ll; long double __ld; } max_align_t;
diff --git a/lib/libc/musl/arch/s390x/bits/float.h b/lib/libc/musl/arch/s390x/bits/float.h
index 90b73beed4..e188cb6197 100644
--- a/lib/libc/musl/arch/s390x/bits/float.h
+++ b/lib/libc/musl/arch/s390x/bits/float.h
@@ -1,4 +1,8 @@
-#define FLT_EVAL_METHOD 1
+#ifdef __FLT_EVAL_METHOD__
+#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
+#else
+#define FLT_EVAL_METHOD 0
+#endif
#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L
#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L
diff --git a/lib/libc/musl/arch/s390x/bits/syscall.h.in b/lib/libc/musl/arch/s390x/bits/syscall.h.in
index e89f378299..fb2e60e30b 100644
--- a/lib/libc/musl/arch/s390x/bits/syscall.h.in
+++ b/lib/libc/musl/arch/s390x/bits/syscall.h.in
@@ -352,4 +352,8 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
diff --git a/lib/libc/musl/arch/s390x/pthread_arch.h b/lib/libc/musl/arch/s390x/pthread_arch.h
index e2251f1fa4..e54fec3fe6 100644
--- a/lib/libc/musl/arch/s390x/pthread_arch.h
+++ b/lib/libc/musl/arch/s390x/pthread_arch.h
@@ -1,14 +1,12 @@
-static inline struct pthread *__pthread_self()
+static inline uintptr_t __get_tp()
{
- struct pthread *self;
+ uintptr_t tp;
__asm__ (
"ear %0, %%a0\n"
"sllg %0, %0, 32\n"
"ear %0, %%a1\n"
- : "=r"(self));
- return self;
+ : "=r"(tp));
+ return tp;
}
-#define TP_ADJ(p) (p)
-
#define MC_PC psw.addr
diff --git a/lib/libc/musl/arch/s390x/syscall_arch.h b/lib/libc/musl/arch/s390x/syscall_arch.h
index afb99852eb..83cc9a27c6 100644
--- a/lib/libc/musl/arch/s390x/syscall_arch.h
+++ b/lib/libc/musl/arch/s390x/syscall_arch.h
@@ -72,5 +72,3 @@ static inline long __syscall6(long n, long a, long b, long c, long d, long e, lo
register long r7 __asm__("r7") = f;
__asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7));
}
-
-#define SYSCALL_USE_SOCKETCALL
diff --git a/lib/libc/musl/arch/x86_64/bits/syscall.h.in b/lib/libc/musl/arch/x86_64/bits/syscall.h.in
index 6a646ad346..a611795104 100644
--- a/lib/libc/musl/arch/x86_64/bits/syscall.h.in
+++ b/lib/libc/musl/arch/x86_64/bits/syscall.h.in
@@ -345,4 +345,8 @@
#define __NR_fspick 433
#define __NR_pidfd_open 434
#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
diff --git a/lib/libc/musl/arch/x86_64/pthread_arch.h b/lib/libc/musl/arch/x86_64/pthread_arch.h
index 65e880c62e..c8c63f2e7a 100644
--- a/lib/libc/musl/arch/x86_64/pthread_arch.h
+++ b/lib/libc/musl/arch/x86_64/pthread_arch.h
@@ -1,10 +1,8 @@
-static inline struct pthread *__pthread_self()
+static inline uintptr_t __get_tp()
{
- struct pthread *self;
- __asm__ ("mov %%fs:0,%0" : "=r" (self) );
- return self;
+ uintptr_t tp;
+ __asm__ ("mov %%fs:0,%0" : "=r" (tp) );
+ return tp;
}
-#define TP_ADJ(p) (p)
-
#define MC_PC gregs[REG_RIP]
diff --git a/lib/libc/musl/include/alltypes.h.in b/lib/libc/musl/include/alltypes.h.in
index d9ff462e1e..d47aeea9aa 100644
--- a/lib/libc/musl/include/alltypes.h.in
+++ b/lib/libc/musl/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/lib/libc/musl/include/elf.h b/lib/libc/musl/include/elf.h
index 549f92c1aa..b5e7befb02 100644
--- a/lib/libc/musl/include/elf.h
+++ b/lib/libc/musl/include/elf.h
@@ -603,6 +603,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
@@ -1085,6 +1086,7 @@ typedef struct {
#define NT_GNU_BUILD_ID 3
#define NT_GNU_GOLD_VERSION 4
+#define NT_GNU_PROPERTY_TYPE_0 5
diff --git a/lib/libc/musl/include/netinet/if_ether.h b/lib/libc/musl/include/netinet/if_ether.h
index a08485e7f7..55a2ff1b17 100644
--- a/lib/libc/musl/include/netinet/if_ether.h
+++ b/lib/libc/musl/include/netinet/if_ether.h
@@ -59,6 +59,7 @@
#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
diff --git a/lib/libc/musl/include/netinet/in.h b/lib/libc/musl/include/netinet/in.h
index 103d2e044c..f9594339f0 100644
--- a/lib/libc/musl/include/netinet/in.h
+++ b/lib/libc/musl/include/netinet/in.h
@@ -101,8 +101,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 && \
@@ -200,6 +202,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/lib/libc/musl/include/netinet/tcp.h b/lib/libc/musl/include/netinet/tcp.h
index 44a007aaf5..b7b997f5fd 100644
--- a/lib/libc/musl/include/netinet/tcp.h
+++ b/lib/libc/musl/include/netinet/tcp.h
@@ -78,6 +78,8 @@ enum {
TCP_NLA_DSACK_DUPS,
TCP_NLA_REORD_SEEN,
TCP_NLA_SRTT,
+ TCP_NLA_TIMEOUT_REHASH,
+ TCP_NLA_BYTES_NOTSENT,
};
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
@@ -181,6 +183,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 +198,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 +249,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];
};
@@ -275,6 +285,8 @@ struct tcp_zerocopy_receive {
uint64_t address;
uint32_t length;
uint32_t recv_skip_hint;
+ uint32_t inq;
+ int32_t err;
};
#endif
diff --git a/lib/libc/musl/include/netinet/udp.h b/lib/libc/musl/include/netinet/udp.h
index ffd8907962..40c3f2034d 100644
--- a/lib/libc/musl/include/netinet/udp.h
+++ b/lib/libc/musl/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/lib/libc/musl/include/sched.h b/lib/libc/musl/include/sched.h
index 822f464efd..fda4b48460 100644
--- a/lib/libc/musl/include/sched.h
+++ b/lib/libc/musl/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
diff --git a/lib/libc/musl/include/signal.h b/lib/libc/musl/include/signal.h
index fbdf667b2f..9ed929e4f2 100644
--- a/lib/libc/musl/include/signal.h
+++ b/lib/libc/musl/include/signal.h
@@ -180,14 +180,24 @@ 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);
diff --git a/lib/libc/musl/include/stdlib.h b/lib/libc/musl/include/stdlib.h
index 194c20339e..b54a051fe9 100644
--- a/lib/libc/musl/include/stdlib.h
+++ b/lib/libc/musl/include/stdlib.h
@@ -145,6 +145,7 @@ int getloadavg(double *, int);
int clearenv(void);
#define WCOREDUMP(s) ((s) & 0x80)
#define WIFCONTINUED(s) ((s) == 0xffff)
+void *reallocarray (void *, size_t, size_t);
#endif
#ifdef _GNU_SOURCE
diff --git a/lib/libc/musl/include/sys/fanotify.h b/lib/libc/musl/include/sys/fanotify.h
index b637c8f58a..10e5f15e24 100644
--- a/lib/libc/musl/include/sys/fanotify.h
+++ b/lib/libc/musl/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/lib/libc/musl/include/sys/ioctl.h b/lib/libc/musl/include/sys/ioctl.h
index c2ce3b4840..a9a2346ee7 100644
--- a/lib/libc/musl/include/sys/ioctl.h
+++ b/lib/libc/musl/include/sys/ioctl.h
@@ -4,6 +4,8 @@
extern "C" {
#endif
+#define __NEED_struct_winsize
+
#include
#include
@@ -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/lib/libc/musl/include/sys/mman.h b/lib/libc/musl/include/sys/mman.h
index 3bade72720..4d603e9104 100644
--- a/lib/libc/musl/include/sys/mman.h
+++ b/lib/libc/musl/include/sys/mman.h
@@ -101,6 +101,7 @@ extern "C" {
#ifdef _GNU_SOURCE
#define MREMAP_MAYMOVE 1
#define MREMAP_FIXED 2
+#define MREMAP_DONTUNMAP 4
#define MLOCK_ONFAULT 0x01
diff --git a/lib/libc/musl/include/sys/personality.h b/lib/libc/musl/include/sys/personality.h
index 31d43dfe13..411dc47563 100644
--- a/lib/libc/musl/include/sys/personality.h
+++ b/lib/libc/musl/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/lib/libc/musl/include/sys/prctl.h b/lib/libc/musl/include/sys/prctl.h
index d9c846e9c2..4b9fcc0508 100644
--- a/lib/libc/musl/include/sys/prctl.h
+++ b/lib/libc/musl/include/sys/prctl.h
@@ -158,6 +158,9 @@ struct prctl_mm_map {
#define PR_GET_TAGGED_ADDR_CTRL 56
#define PR_TAGGED_ADDR_ENABLE (1UL << 0)
+#define PR_SET_IO_FLUSHER 57
+#define PR_GET_IO_FLUSHER 58
+
int prctl (int, ...);
#ifdef __cplusplus
diff --git a/lib/libc/musl/include/sys/random.h b/lib/libc/musl/include/sys/random.h
index 4ee7bf2cc4..59e40ab897 100644
--- a/lib/libc/musl/include/sys/random.h
+++ b/lib/libc/musl/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/lib/libc/musl/include/termios.h b/lib/libc/musl/include/termios.h
index d73c780d41..cbb533010e 100644
--- a/lib/libc/musl/include/termios.h
+++ b/lib/libc/musl/include/termios.h
@@ -8,6 +8,7 @@ extern "C" {
#include
#define __NEED_pid_t
+#define __NEED_struct_winsize
#include
@@ -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/lib/libc/musl/include/unistd.h b/lib/libc/musl/include/unistd.h
index 7bcbff943d..1306402603 100644
--- a/lib/libc/musl/include/unistd.h
+++ b/lib/libc/musl/include/unistd.h
@@ -82,6 +82,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,6 +191,7 @@ 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)
diff --git a/lib/libc/musl/libc.s b/lib/libc/musl/libc.s
index 09c5f5cabf..d00dea9f9f 100644
--- a/lib/libc/musl/libc.s
+++ b/lib/libc/musl/libc.s
@@ -105,6 +105,9 @@ in6addr_loopback:
.globl _Exit
.type _Exit, %function;
_Exit:
+.globl _Fork
+.type _Fork, %function;
+_Fork:
.weak _IO_feof_unlocked
.type _IO_feof_unlocked, %function;
_IO_feof_unlocked:
@@ -2116,6 +2119,9 @@ getsubopt:
.globl gettext
.type gettext, %function;
gettext:
+.globl gettid
+.type gettid, %function;
+gettid:
.globl gettimeofday
.type gettimeofday, %function;
gettimeofday:
@@ -2728,7 +2734,7 @@ lutimes:
.weak madvise
.type madvise, %function;
madvise:
-.globl malloc
+.weak malloc
.type malloc, %function;
malloc:
.globl malloc_usable_size
@@ -3709,6 +3715,9 @@ readv:
.globl realloc
.type realloc, %function;
realloc:
+.globl reallocarray
+.type reallocarray, %function;
+reallocarray:
.globl realpath
.type realpath, %function;
realpath:
@@ -4543,6 +4552,9 @@ tcgetpgrp:
.globl tcgetsid
.type tcgetsid, %function;
tcgetsid:
+.globl tcgetwinsize
+.type tcgetwinsize, %function;
+tcgetwinsize:
.globl tcsendbreak
.type tcsendbreak, %function;
tcsendbreak:
@@ -4552,6 +4564,9 @@ tcsetattr:
.globl tcsetpgrp
.type tcsetpgrp, %function;
tcsetpgrp:
+.globl tcsetwinsize
+.type tcsetwinsize, %function;
+tcsetwinsize:
.globl tdelete
.type tdelete, %function;
tdelete:
diff --git a/lib/libc/musl/src/aio/aio.c b/lib/libc/musl/src/aio/aio.c
index 6d34fa8693..a1a3e7914b 100644
--- a/lib/libc/musl/src/aio/aio.c
+++ b/lib/libc/musl/src/aio/aio.c
@@ -9,6 +9,12 @@
#include "syscall.h"
#include "atomic.h"
#include "pthread_impl.h"
+#include "aio_impl.h"
+
+#define malloc __libc_malloc
+#define calloc __libc_calloc
+#define realloc __libc_realloc
+#define free __libc_free
/* The following is a threads-based implementation of AIO with minimal
* dependence on implementation details. Most synchronization is
@@ -70,6 +76,10 @@ static struct aio_queue *****map;
static volatile int aio_fd_cnt;
volatile int __aio_fut;
+static size_t io_thread_stack_size;
+
+#define MAX(a,b) ((a)>(b) ? (a) : (b))
+
static struct aio_queue *__aio_get_queue(int fd, int need)
{
if (fd < 0) {
@@ -84,6 +94,10 @@ static struct aio_queue *__aio_get_queue(int fd, int need)
pthread_rwlock_unlock(&maplock);
if (fcntl(fd, F_GETFD) < 0) return 0;
pthread_rwlock_wrlock(&maplock);
+ if (!io_thread_stack_size) {
+ unsigned long val = __getauxval(AT_MINSIGSTKSZ);
+ io_thread_stack_size = MAX(MINSIGSTKSZ+2048, val+512);
+ }
if (!map) map = calloc(sizeof *map, (-1U/2+1)>>24);
if (!map) goto out;
if (!map[a]) map[a] = calloc(sizeof **map, 256);
@@ -259,15 +273,6 @@ static void *io_thread_func(void *ctx)
return 0;
}
-static size_t io_thread_stack_size = MINSIGSTKSZ+2048;
-static pthread_once_t init_stack_size_once;
-
-static void init_stack_size()
-{
- unsigned long val = __getauxval(AT_MINSIGSTKSZ);
- if (val > MINSIGSTKSZ) io_thread_stack_size = val + 512;
-}
-
static int submit(struct aiocb *cb, int op)
{
int ret = 0;
@@ -293,7 +298,6 @@ static int submit(struct aiocb *cb, int op)
else
pthread_attr_init(&a);
} else {
- pthread_once(&init_stack_size_once, init_stack_size);
pthread_attr_init(&a);
pthread_attr_setstacksize(&a, io_thread_stack_size);
pthread_attr_setguardsize(&a, 0);
@@ -392,6 +396,20 @@ int __aio_close(int fd)
return fd;
}
+void __aio_atfork(int who)
+{
+ if (who<0) {
+ pthread_rwlock_rdlock(&maplock);
+ return;
+ }
+ if (who>0 && map) for (int a=0; a<(-1U/2+1)>>24; a++)
+ if (map[a]) for (int b=0; b<256; b++)
+ if (map[a][b]) for (int c=0; c<256; c++)
+ if (map[a][b][c]) for (int d=0; d<256; d++)
+ map[a][b][c][d] = 0;
+ pthread_rwlock_unlock(&maplock);
+}
+
weak_alias(aio_cancel, aio_cancel64);
weak_alias(aio_error, aio_error64);
weak_alias(aio_fsync, aio_fsync64);
diff --git a/lib/libc/musl/src/aio/aio_suspend.c b/lib/libc/musl/src/aio/aio_suspend.c
index 34b66f8787..1c1060e340 100644
--- a/lib/libc/musl/src/aio/aio_suspend.c
+++ b/lib/libc/musl/src/aio/aio_suspend.c
@@ -3,6 +3,7 @@
#include
#include "atomic.h"
#include "pthread_impl.h"
+#include "aio_impl.h"
int aio_suspend(const struct aiocb *const cbs[], int cnt, const struct timespec *ts)
{
diff --git a/lib/libc/musl/src/crypt/crypt_blowfish.c b/lib/libc/musl/src/crypt/crypt_blowfish.c
index d3f798517e..d722607b02 100644
--- a/lib/libc/musl/src/crypt/crypt_blowfish.c
+++ b/lib/libc/musl/src/crypt/crypt_blowfish.c
@@ -15,7 +15,7 @@
* No copyright is claimed, and the software is hereby placed in the public
* domain. In case this attempt to disclaim copyright and place the software
* in the public domain is deemed null and void, then the software is
- * Copyright (c) 1998-2012 Solar Designer and it is hereby released to the
+ * Copyright (c) 1998-2014 Solar Designer and it is hereby released to the
* general public under the following terms:
*
* Redistribution and use in source and binary forms, with or without
@@ -31,12 +31,12 @@
* you place this code and any modifications you make under a license
* of your choice.
*
- * This implementation is mostly compatible with OpenBSD's bcrypt.c (prefix
- * "$2a$") by Niels Provos , and uses some of his
- * ideas. The password hashing algorithm was designed by David Mazieres
- * . For more information on the level of compatibility,
- * please refer to the comments in BF_set_key() below and to the included
- * crypt(3) man page.
+ * This implementation is fully compatible with OpenBSD's bcrypt.c for prefix
+ * "$2b$", originally by Niels Provos , and it uses
+ * some of his ideas. The password hashing algorithm was designed by David
+ * Mazieres . For information on the level of
+ * compatibility for bcrypt hash prefixes other than "$2b$", please refer to
+ * the comments in BF_set_key() below and to the included crypt(3) man page.
*
* There's a paper on the algorithm that explains its design decisions:
*
@@ -533,6 +533,7 @@ static void BF_set_key(const char *key, BF_key expanded, BF_key initial,
* Valid combinations of settings are:
*
* Prefix "$2a$": bug = 0, safety = 0x10000
+ * Prefix "$2b$": bug = 0, safety = 0
* Prefix "$2x$": bug = 1, safety = 0
* Prefix "$2y$": bug = 0, safety = 0
*/
@@ -596,12 +597,14 @@ static void BF_set_key(const char *key, BF_key expanded, BF_key initial,
initial[0] ^= sign;
}
+static const unsigned char flags_by_subtype[26] = {
+ 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0
+};
+
static char *BF_crypt(const char *key, const char *setting,
char *output, BF_word min)
{
- static const unsigned char flags_by_subtype[26] =
- {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0};
struct {
BF_ctx ctx;
BF_key expanded_key;
@@ -746,9 +749,11 @@ char *__crypt_blowfish(const char *key, const char *setting, char *output)
{
const char *test_key = "8b \xd0\xc1\xd2\xcf\xcc\xd8";
const char *test_setting = "$2a$00$abcdefghijklmnopqrstuu";
- static const char test_hash[2][34] =
- {"VUrPmXD6q/nVSSp7pNDhCR9071IfIRe\0\x55", /* $2x$ */
- "i1D709vfamulimlGcq0qq3UvuUasvEa\0\x55"}; /* $2a$, $2y$ */
+ static const char test_hashes[2][34] = {
+ "i1D709vfamulimlGcq0qq3UvuUasvEa\0\x55", /* 'a', 'b', 'y' */
+ "VUrPmXD6q/nVSSp7pNDhCR9071IfIRe\0\x55", /* 'x' */
+ };
+ const char *test_hash = test_hashes[0];
char *retval;
const char *p;
int ok;
@@ -768,8 +773,11 @@ char *__crypt_blowfish(const char *key, const char *setting, char *output)
* detected by the self-test.
*/
memcpy(buf.s, test_setting, sizeof(buf.s));
- if (retval)
+ if (retval) {
+ unsigned int flags = flags_by_subtype[setting[2] - 'a'];
+ test_hash = test_hashes[flags & 1];
buf.s[2] = setting[2];
+ }
memset(buf.o, 0x55, sizeof(buf.o));
buf.o[sizeof(buf.o) - 1] = 0;
p = BF_crypt(test_key, buf.s, buf.o, 1);
@@ -777,7 +785,7 @@ char *__crypt_blowfish(const char *key, const char *setting, char *output)
ok = (p == buf.o &&
!memcmp(p, buf.s, 7 + 22) &&
!memcmp(p + (7 + 22),
- test_hash[buf.s[2] & 1],
+ test_hash,
31 + 1 + 1 + 1));
{
diff --git a/lib/libc/musl/src/env/__init_tls.c b/lib/libc/musl/src/env/__init_tls.c
index 772baba32d..a93141ed36 100644
--- a/lib/libc/musl/src/env/__init_tls.c
+++ b/lib/libc/musl/src/env/__init_tls.c
@@ -67,7 +67,7 @@ void *__copy_tls(unsigned char *mem)
}
#endif
dtv[0] = libc.tls_cnt;
- td->dtv = td->dtv_copy = dtv;
+ td->dtv = dtv;
return td;
}
diff --git a/lib/libc/musl/src/env/__stack_chk_fail.c b/lib/libc/musl/src/env/__stack_chk_fail.c
index e32596d10f..bf5a280ad9 100644
--- a/lib/libc/musl/src/env/__stack_chk_fail.c
+++ b/lib/libc/musl/src/env/__stack_chk_fail.c
@@ -9,7 +9,7 @@ void __init_ssp(void *entropy)
if (entropy) memcpy(&__stack_chk_guard, entropy, sizeof(uintptr_t));
else __stack_chk_guard = (uintptr_t)&__stack_chk_guard * 1103515245;
- __pthread_self()->CANARY = __stack_chk_guard;
+ __pthread_self()->canary = __stack_chk_guard;
}
void __stack_chk_fail(void)
diff --git a/lib/libc/musl/src/exit/abort.c b/lib/libc/musl/src/exit/abort.c
index e1980f10a5..f21f458eca 100644
--- a/lib/libc/musl/src/exit/abort.c
+++ b/lib/libc/musl/src/exit/abort.c
@@ -6,8 +6,6 @@
#include "lock.h"
#include "ksigaction.h"
-hidden volatile int __abort_lock[1];
-
_Noreturn void abort(void)
{
raise(SIGABRT);
diff --git a/lib/libc/musl/src/exit/abort_lock.c b/lib/libc/musl/src/exit/abort_lock.c
new file mode 100644
index 0000000000..3af72c7b6a
--- /dev/null
+++ b/lib/libc/musl/src/exit/abort_lock.c
@@ -0,0 +1,3 @@
+#include "pthread_impl.h"
+
+volatile int __abort_lock[1];
diff --git a/lib/libc/musl/src/exit/assert.c b/lib/libc/musl/src/exit/assert.c
index 49b0dc3ec4..94edd82727 100644
--- a/lib/libc/musl/src/exit/assert.c
+++ b/lib/libc/musl/src/exit/assert.c
@@ -4,6 +4,5 @@
_Noreturn void __assert_fail(const char *expr, const char *file, int line, const char *func)
{
fprintf(stderr, "Assertion failed: %s (%s: %s: %d)\n", expr, file, func, line);
- fflush(NULL);
abort();
}
diff --git a/lib/libc/musl/src/exit/at_quick_exit.c b/lib/libc/musl/src/exit/at_quick_exit.c
index d3ce6522df..e4b5d78dbb 100644
--- a/lib/libc/musl/src/exit/at_quick_exit.c
+++ b/lib/libc/musl/src/exit/at_quick_exit.c
@@ -1,12 +1,14 @@
#include
#include "libc.h"
#include "lock.h"
+#include "fork_impl.h"
#define COUNT 32
static void (*funcs[COUNT])(void);
static int count;
static volatile int lock[1];
+volatile int *const __at_quick_exit_lockptr = lock;
void __funcs_on_quick_exit()
{
diff --git a/lib/libc/musl/src/exit/atexit.c b/lib/libc/musl/src/exit/atexit.c
index 160d277aeb..854e9fddbe 100644
--- a/lib/libc/musl/src/exit/atexit.c
+++ b/lib/libc/musl/src/exit/atexit.c
@@ -2,6 +2,12 @@
#include
#include "libc.h"
#include "lock.h"
+#include "fork_impl.h"
+
+#define malloc __libc_malloc
+#define calloc __libc_calloc
+#define realloc undef
+#define free undef
/* Ensure that at least 32 atexit handlers can be registered without malloc */
#define COUNT 32
@@ -15,6 +21,7 @@ static struct fl
static int slot;
static volatile int lock[1];
+volatile int *const __atexit_lockptr = lock;
void __funcs_on_exit()
{
diff --git a/lib/libc/musl/src/include/stdlib.h b/lib/libc/musl/src/include/stdlib.h
index d38a5417f1..e9da20158c 100644
--- a/lib/libc/musl/src/include/stdlib.h
+++ b/lib/libc/musl/src/include/stdlib.h
@@ -9,4 +9,10 @@ hidden int __mkostemps(char *, int, int);
hidden int __ptsname_r(int, char *, size_t);
hidden char *__randname(char *);
+hidden void *__libc_malloc(size_t);
+hidden void *__libc_malloc_impl(size_t);
+hidden void *__libc_calloc(size_t, size_t);
+hidden void *__libc_realloc(void *, size_t);
+hidden void __libc_free(void *);
+
#endif
diff --git a/lib/libc/musl/src/include/unistd.h b/lib/libc/musl/src/include/unistd.h
index 1b4605c7c6..7b52a9249e 100644
--- a/lib/libc/musl/src/include/unistd.h
+++ b/lib/libc/musl/src/include/unistd.h
@@ -8,7 +8,6 @@ extern char **__environ;
hidden int __dup3(int, int, int);
hidden int __mkostemps(char *, int, int);
hidden int __execvpe(const char *, char *const *, char *const *);
-hidden int __aio_close(int);
hidden off_t __lseek(int, off_t, int);
#endif
diff --git a/lib/libc/musl/src/internal/aio_impl.h b/lib/libc/musl/src/internal/aio_impl.h
new file mode 100644
index 0000000000..a865766544
--- /dev/null
+++ b/lib/libc/musl/src/internal/aio_impl.h
@@ -0,0 +1,9 @@
+#ifndef AIO_IMPL_H
+#define AIO_IMPL_H
+
+extern hidden volatile int __aio_fut;
+
+extern hidden int __aio_close(int);
+extern hidden void __aio_atfork(int);
+
+#endif
diff --git a/lib/libc/musl/src/internal/fork_impl.h b/lib/libc/musl/src/internal/fork_impl.h
new file mode 100644
index 0000000000..5892c13bf9
--- /dev/null
+++ b/lib/libc/musl/src/internal/fork_impl.h
@@ -0,0 +1,19 @@
+#include
+
+extern hidden volatile int *const __at_quick_exit_lockptr;
+extern hidden volatile int *const __atexit_lockptr;
+extern hidden volatile int *const __dlerror_lockptr;
+extern hidden volatile int *const __gettext_lockptr;
+extern hidden volatile int *const __locale_lockptr;
+extern hidden volatile int *const __random_lockptr;
+extern hidden volatile int *const __sem_open_lockptr;
+extern hidden volatile int *const __stdio_ofl_lockptr;
+extern hidden volatile int *const __syslog_lockptr;
+extern hidden volatile int *const __timezone_lockptr;
+
+extern hidden volatile int *const __bump_lockptr;
+
+extern hidden volatile int *const __vmlock_lockptr;
+
+hidden void __malloc_atfork(int);
+hidden void __ldso_atfork(int);
diff --git a/lib/libc/musl/src/internal/libm.h b/lib/libc/musl/src/internal/libm.h
index 7533f6baef..72ad17d8eb 100644
--- a/lib/libc/musl/src/internal/libm.h
+++ b/lib/libc/musl/src/internal/libm.h
@@ -267,5 +267,8 @@ hidden double __math_uflow(uint32_t);
hidden double __math_oflow(uint32_t);
hidden double __math_divzero(uint32_t);
hidden double __math_invalid(double);
+#if LDBL_MANT_DIG != DBL_MANT_DIG
+hidden long double __math_invalidl(long double);
+#endif
#endif
diff --git a/lib/libc/musl/src/internal/locale_impl.h b/lib/libc/musl/src/internal/locale_impl.h
index 741a71c4d1..4431a92eb7 100644
--- a/lib/libc/musl/src/internal/locale_impl.h
+++ b/lib/libc/musl/src/internal/locale_impl.h
@@ -15,6 +15,8 @@ struct __locale_map {
const struct __locale_map *next;
};
+extern hidden volatile int __locale_lock[1];
+
extern hidden const struct __locale_map __c_dot_utf8;
extern hidden const struct __locale_struct __c_locale;
extern hidden const struct __locale_struct __c_dot_utf8_locale;
diff --git a/lib/libc/musl/src/internal/pthread_impl.h b/lib/libc/musl/src/internal/pthread_impl.h
index 5742dfc55c..de2b9d8b47 100644
--- a/lib/libc/musl/src/internal/pthread_impl.h
+++ b/lib/libc/musl/src/internal/pthread_impl.h
@@ -11,16 +11,25 @@
#include "atomic.h"
#include "futex.h"
+#include "pthread_arch.h"
+
#define pthread __pthread
struct pthread {
/* Part 1 -- these fields may be external or
* internal (accessed via asm) ABI. Do not change. */
struct pthread *self;
+#ifndef TLS_ABOVE_TP
uintptr_t *dtv;
+#endif
struct pthread *prev, *next; /* non-ABI */
uintptr_t sysinfo;
- uintptr_t canary, canary2;
+#ifndef TLS_ABOVE_TP
+#ifdef CANARY_PAD
+ uintptr_t canary_pad;
+#endif
+ uintptr_t canary;
+#endif
/* Part 2 -- implementation details, non-ABI. */
int tid;
@@ -43,6 +52,7 @@ struct pthread {
long off;
volatile void *volatile pending;
} robust_list;
+ int h_errno_val;
volatile int timer_id;
locale_t locale;
volatile int killlock[1];
@@ -51,21 +61,19 @@ struct pthread {
/* Part 3 -- the positions of these fields relative to
* the end of the structure is external and internal ABI. */
- uintptr_t canary_at_end;
- uintptr_t *dtv_copy;
+#ifdef TLS_ABOVE_TP
+ uintptr_t canary;
+ uintptr_t *dtv;
+#endif
};
enum {
- DT_EXITING = 0,
+ DT_EXITED = 0,
+ DT_EXITING,
DT_JOINABLE,
DT_DETACHED,
};
-struct __timer {
- int timerid;
- pthread_t thread;
-};
-
#define __SU (sizeof(size_t)/sizeof(int))
#define _a_stacksize __u.__s[0]
@@ -98,16 +106,22 @@ struct __timer {
#define _b_waiters2 __u.__vi[4]
#define _b_inst __u.__p[3]
-#include "pthread_arch.h"
-
-#ifndef CANARY
-#define CANARY canary
+#ifndef TP_OFFSET
+#define TP_OFFSET 0
#endif
#ifndef DTP_OFFSET
#define DTP_OFFSET 0
#endif
+#ifdef TLS_ABOVE_TP
+#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + TP_OFFSET)
+#define __pthread_self() ((pthread_t)(__get_tp() - sizeof(struct __pthread) - TP_OFFSET))
+#else
+#define TP_ADJ(p) (p)
+#define __pthread_self() ((pthread_t)__get_tp())
+#endif
+
#ifndef tls_mod_off_t
#define tls_mod_off_t size_t
#endif
@@ -141,7 +155,6 @@ hidden int __pthread_key_delete_impl(pthread_key_t);
extern hidden volatile size_t __pthread_tsd_size;
extern hidden void *__pthread_tsd_main[];
-extern hidden volatile int __aio_fut;
extern hidden volatile int __eintr_valid_flag;
hidden int __clone(int (*)(void *), void *, int, void *, ...);
@@ -176,6 +189,8 @@ hidden void __tl_sync(pthread_t);
extern hidden volatile int __thread_list_lock;
+extern hidden volatile int __abort_lock[1];
+
extern hidden unsigned __default_stacksize;
extern hidden unsigned __default_guardsize;
diff --git a/lib/libc/musl/src/internal/syscall.h b/lib/libc/musl/src/internal/syscall.h
index 975a0031d4..d5f294d437 100644
--- a/lib/libc/musl/src/internal/syscall.h
+++ b/lib/libc/musl/src/internal/syscall.h
@@ -2,6 +2,7 @@
#define _INTERNAL_SYSCALL_H
#include
+#include
#include
#include "syscall_arch.h"
@@ -57,15 +58,22 @@ hidden long __syscall_ret(unsigned long),
#define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp,__VA_ARGS__)
#define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__))
-#ifndef SYSCALL_USE_SOCKETCALL
-#define __socketcall(nm,a,b,c,d,e,f) __syscall(SYS_##nm, a, b, c, d, e, f)
-#define __socketcall_cp(nm,a,b,c,d,e,f) __syscall_cp(SYS_##nm, a, b, c, d, e, f)
-#else
-#define __socketcall(nm,a,b,c,d,e,f) __syscall(SYS_socketcall, __SC_##nm, \
- ((long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f }))
-#define __socketcall_cp(nm,a,b,c,d,e,f) __syscall_cp(SYS_socketcall, __SC_##nm, \
- ((long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f }))
+static inline long __alt_socketcall(int sys, int sock, int cp, long a, long b, long c, long d, long e, long f)
+{
+ long r;
+ if (cp) r = __syscall_cp(sys, a, b, c, d, e, f);
+ else r = __syscall(sys, a, b, c, d, e, f);
+ if (r != -ENOSYS) return r;
+#ifdef SYS_socketcall
+ if (cp) r = __syscall_cp(SYS_socketcall, sock, ((long[6]){a, b, c, d, e, f}));
+ else r = __syscall(SYS_socketcall, sock, ((long[6]){a, b, c, d, e, f}));
#endif
+ return r;
+}
+#define __socketcall(nm, a, b, c, d, e, f) __alt_socketcall(SYS_##nm, __SC_##nm, 0, \
+ (long)(a), (long)(b), (long)(c), (long)(d), (long)(e), (long)(f))
+#define __socketcall_cp(nm, a, b, c, d, e, f) __alt_socketcall(SYS_##nm, __SC_##nm, 1, \
+ (long)(a), (long)(b), (long)(c), (long)(d), (long)(e), (long)(f))
/* fixup legacy 16-bit junk */
@@ -338,6 +346,12 @@ hidden long __syscall_ret(unsigned long),
#define __SC_recvmmsg 19
#define __SC_sendmmsg 20
+/* This is valid only because all socket syscalls are made via
+ * socketcall, which always fills unused argument slots with zeros. */
+#ifndef SYS_accept
+#define SYS_accept SYS_accept4
+#endif
+
#ifndef SO_RCVTIMEO_OLD
#define SO_RCVTIMEO_OLD 20
#endif
diff --git a/lib/libc/musl/src/internal/version.h b/lib/libc/musl/src/internal/version.h
index 78b418ff72..b23e8e2963 100644
--- a/lib/libc/musl/src/internal/version.h
+++ b/lib/libc/musl/src/internal/version.h
@@ -1 +1 @@
-#define VERSION "1.2.1"
+#define VERSION "1.2.2"
diff --git a/lib/libc/musl/src/ldso/dlerror.c b/lib/libc/musl/src/ldso/dlerror.c
index 3fcc777953..afe59253ea 100644
--- a/lib/libc/musl/src/ldso/dlerror.c
+++ b/lib/libc/musl/src/ldso/dlerror.c
@@ -4,6 +4,12 @@
#include "pthread_impl.h"
#include "dynlink.h"
#include "lock.h"
+#include "fork_impl.h"
+
+#define malloc __libc_malloc
+#define calloc __libc_calloc
+#define realloc __libc_realloc
+#define free __libc_free
char *dlerror()
{
@@ -19,6 +25,7 @@ char *dlerror()
static volatile int freebuf_queue_lock[1];
static void **freebuf_queue;
+volatile int *const __dlerror_lockptr = freebuf_queue_lock;
void __dl_thread_cleanup(void)
{
@@ -35,13 +42,16 @@ void __dl_thread_cleanup(void)
hidden void __dl_vseterr(const char *fmt, va_list ap)
{
LOCK(freebuf_queue_lock);
- while (freebuf_queue) {
- void **p = freebuf_queue;
- freebuf_queue = *p;
- free(p);
- }
+ void **q = freebuf_queue;
+ freebuf_queue = 0;
UNLOCK(freebuf_queue_lock);
+ while (q) {
+ void **p = *q;
+ free(q);
+ q = p;
+ }
+
va_list ap2;
va_copy(ap2, ap);
pthread_t self = __pthread_self();
diff --git a/lib/libc/musl/src/legacy/lutimes.c b/lib/libc/musl/src/legacy/lutimes.c
index 2e5502d1e3..dd465923ad 100644
--- a/lib/libc/musl/src/legacy/lutimes.c
+++ b/lib/libc/musl/src/legacy/lutimes.c
@@ -6,9 +6,11 @@
int lutimes(const char *filename, const struct timeval tv[2])
{
struct timespec times[2];
- times[0].tv_sec = tv[0].tv_sec;
- times[0].tv_nsec = tv[0].tv_usec * 1000;
- times[1].tv_sec = tv[1].tv_sec;
- times[1].tv_nsec = tv[1].tv_usec * 1000;
- return utimensat(AT_FDCWD, filename, times, AT_SYMLINK_NOFOLLOW);
+ if (tv) {
+ times[0].tv_sec = tv[0].tv_sec;
+ times[0].tv_nsec = tv[0].tv_usec * 1000;
+ times[1].tv_sec = tv[1].tv_sec;
+ times[1].tv_nsec = tv[1].tv_usec * 1000;
+ }
+ return utimensat(AT_FDCWD, filename, tv ? times : 0, AT_SYMLINK_NOFOLLOW);
}
diff --git a/lib/libc/musl/src/linux/gettid.c b/lib/libc/musl/src/linux/gettid.c
new file mode 100644
index 0000000000..70767137e9
--- /dev/null
+++ b/lib/libc/musl/src/linux/gettid.c
@@ -0,0 +1,8 @@
+#define _GNU_SOURCE
+#include
+#include "pthread_impl.h"
+
+pid_t gettid(void)
+{
+ return __pthread_self()->tid;
+}
diff --git a/lib/libc/musl/src/linux/membarrier.c b/lib/libc/musl/src/linux/membarrier.c
index 9ebe906ed8..343f7360ee 100644
--- a/lib/libc/musl/src/linux/membarrier.c
+++ b/lib/libc/musl/src/linux/membarrier.c
@@ -9,13 +9,8 @@ static void dummy_0(void)
{
}
-static void dummy_1(pthread_t t)
-{
-}
-
weak_alias(dummy_0, __tl_lock);
weak_alias(dummy_0, __tl_unlock);
-weak_alias(dummy_1, __tl_sync);
static sem_t barrier_sem;
diff --git a/lib/libc/musl/src/linux/setgroups.c b/lib/libc/musl/src/linux/setgroups.c
index 1248fdbfdc..47142f141f 100644
--- a/lib/libc/musl/src/linux/setgroups.c
+++ b/lib/libc/musl/src/linux/setgroups.c
@@ -1,8 +1,36 @@
#define _GNU_SOURCE
#include
+#include
#include "syscall.h"
+#include "libc.h"
+
+struct ctx {
+ size_t count;
+ const gid_t *list;
+ int ret;
+};
+
+static void do_setgroups(void *p)
+{
+ struct ctx *c = p;
+ if (c->ret<0) return;
+ int ret = __syscall(SYS_setgroups, c->count, c->list);
+ if (ret && !c->ret) {
+ /* If one thread fails to set groups after another has already
+ * succeeded, forcibly killing the process is the only safe
+ * thing to do. State is inconsistent and dangerous. Use
+ * SIGKILL because it is uncatchable. */
+ __block_all_sigs(0);
+ __syscall(SYS_kill, __syscall(SYS_getpid), SIGKILL);
+ }
+ c->ret = ret;
+}
int setgroups(size_t count, const gid_t list[])
{
- return syscall(SYS_setgroups, count, list);
+ /* ret is initially nonzero so that failure of the first thread does not
+ * trigger the safety kill above. */
+ struct ctx c = { .count = count, .list = list, .ret = 1 };
+ __synccall(do_setgroups, &c);
+ return __syscall_ret(c.ret);
}
diff --git a/lib/libc/musl/src/locale/dcngettext.c b/lib/libc/musl/src/locale/dcngettext.c
index 4c30439389..d1e6c6d13a 100644
--- a/lib/libc/musl/src/locale/dcngettext.c
+++ b/lib/libc/musl/src/locale/dcngettext.c
@@ -10,6 +10,12 @@
#include "atomic.h"
#include "pleval.h"
#include "lock.h"
+#include "fork_impl.h"
+
+#define malloc __libc_malloc
+#define calloc __libc_calloc
+#define realloc undef
+#define free undef
struct binding {
struct binding *next;
@@ -34,9 +40,11 @@ static char *gettextdir(const char *domainname, size_t *dirlen)
return 0;
}
+static volatile int lock[1];
+volatile int *const __gettext_lockptr = lock;
+
char *bindtextdomain(const char *domainname, const char *dirname)
{
- static volatile int lock[1];
struct binding *p, *q;
if (!domainname) return 0;
diff --git a/lib/libc/musl/src/locale/freelocale.c b/lib/libc/musl/src/locale/freelocale.c
index 802b8bfe1c..385d12069d 100644
--- a/lib/libc/musl/src/locale/freelocale.c
+++ b/lib/libc/musl/src/locale/freelocale.c
@@ -1,6 +1,11 @@
#include
#include "locale_impl.h"
+#define malloc undef
+#define calloc undef
+#define realloc undef
+#define free __libc_free
+
void freelocale(locale_t l)
{
if (__loc_is_allocated(l)) free(l);
diff --git a/lib/libc/musl/src/locale/locale_map.c b/lib/libc/musl/src/locale/locale_map.c
index 2321bac0ea..da61f7fc03 100644
--- a/lib/libc/musl/src/locale/locale_map.c
+++ b/lib/libc/musl/src/locale/locale_map.c
@@ -1,9 +1,16 @@
#include
#include
#include
+#include
#include "locale_impl.h"
#include "libc.h"
#include "lock.h"
+#include "fork_impl.h"
+
+#define malloc __libc_malloc
+#define calloc undef
+#define realloc undef
+#define free undef
const char *__lctrans_impl(const char *msg, const struct __locale_map *lm)
{
@@ -21,9 +28,11 @@ static const char envvars[][12] = {
"LC_MESSAGES",
};
+volatile int __locale_lock[1];
+volatile int *const __locale_lockptr = __locale_lock;
+
const struct __locale_map *__get_locale(int cat, const char *val)
{
- static volatile int lock[1];
static void *volatile loc_head;
const struct __locale_map *p;
struct __locale_map *new = 0;
@@ -54,20 +63,12 @@ const struct __locale_map *__get_locale(int cat, const char *val)
for (p=loc_head; p; p=p->next)
if (!strcmp(val, p->name)) return p;
- LOCK(lock);
-
- for (p=loc_head; p; p=p->next)
- if (!strcmp(val, p->name)) {
- UNLOCK(lock);
- return p;
- }
-
if (!libc.secure) path = getenv("MUSL_LOCPATH");
/* FIXME: add a default path? */
if (path) for (; *path; path=z+!!*z) {
z = __strchrnul(path, ':');
- l = z - path - !!*z;
+ l = z - path;
if (l >= sizeof buf - n - 2) continue;
memcpy(buf, path, l);
buf[l] = '/';
@@ -108,6 +109,5 @@ const struct __locale_map *__get_locale(int cat, const char *val)
* requested name was "C" or "POSIX". */
if (!new && cat == LC_CTYPE) new = (void *)&__c_dot_utf8;
- UNLOCK(lock);
return new;
}
diff --git a/lib/libc/musl/src/locale/newlocale.c b/lib/libc/musl/src/locale/newlocale.c
index d20a848983..9ac3cd386f 100644
--- a/lib/libc/musl/src/locale/newlocale.c
+++ b/lib/libc/musl/src/locale/newlocale.c
@@ -2,24 +2,23 @@
#include
#include
#include "locale_impl.h"
+#include "lock.h"
-static pthread_once_t default_locale_once;
+#define malloc __libc_malloc
+#define calloc undef
+#define realloc undef
+#define free undef
+
+static int default_locale_init_done;
static struct __locale_struct default_locale, default_ctype_locale;
-static void default_locale_init(void)
-{
- for (int i=0; i LC_ALL) return 0;
- LOCK(lock);
+ LOCK(__locale_lock);
/* For LC_ALL, setlocale is required to return a string which
* encodes the current setting for all categories. The format of
@@ -36,7 +35,7 @@ char *setlocale(int cat, const char *name)
}
lm = __get_locale(i, part);
if (lm == LOC_MAP_FAILED) {
- UNLOCK(lock);
+ UNLOCK(__locale_lock);
return 0;
}
tmp_locale.cat[i] = lm;
@@ -57,14 +56,14 @@ char *setlocale(int cat, const char *name)
s += l+1;
}
*--s = 0;
- UNLOCK(lock);
+ UNLOCK(__locale_lock);
return same==LC_ALL ? (char *)part : buf;
}
if (name) {
lm = __get_locale(cat, name);
if (lm == LOC_MAP_FAILED) {
- UNLOCK(lock);
+ UNLOCK(__locale_lock);
return 0;
}
libc.global_locale.cat[cat] = lm;
@@ -73,7 +72,7 @@ char *setlocale(int cat, const char *name)
}
char *ret = lm ? (char *)lm->name : "C";
- UNLOCK(lock);
+ UNLOCK(__locale_lock);
return ret;
}
diff --git a/lib/libc/musl/src/malloc/free.c b/lib/libc/musl/src/malloc/free.c
new file mode 100644
index 0000000000..f17a952cb4
--- /dev/null
+++ b/lib/libc/musl/src/malloc/free.c
@@ -0,0 +1,6 @@
+#include
+
+void free(void *p)
+{
+ return __libc_free(p);
+}
diff --git a/lib/libc/musl/src/malloc/libc_calloc.c b/lib/libc/musl/src/malloc/libc_calloc.c
new file mode 100644
index 0000000000..d25eabea47
--- /dev/null
+++ b/lib/libc/musl/src/malloc/libc_calloc.c
@@ -0,0 +1,4 @@
+#define calloc __libc_calloc
+#define malloc __libc_malloc
+
+#include "calloc.c"
diff --git a/lib/libc/musl/src/malloc/lite_malloc.c b/lib/libc/musl/src/malloc/lite_malloc.c
index f8931ba597..43a988fbb8 100644
--- a/lib/libc/musl/src/malloc/lite_malloc.c
+++ b/lib/libc/musl/src/malloc/lite_malloc.c
@@ -6,6 +6,7 @@
#include "libc.h"
#include "lock.h"
#include "syscall.h"
+#include "fork_impl.h"
#define ALIGN 16
@@ -31,10 +32,12 @@ static int traverses_stack_p(uintptr_t old, uintptr_t new)
return 0;
}
+static volatile int lock[1];
+volatile int *const __bump_lockptr = lock;
+
static void *__simple_malloc(size_t n)
{
static uintptr_t brk, cur, end;
- static volatile int lock[1];
static unsigned mmap_step;
size_t align=1;
void *p;
@@ -100,4 +103,16 @@ static void *__simple_malloc(size_t n)
return p;
}
-weak_alias(__simple_malloc, malloc);
+weak_alias(__simple_malloc, __libc_malloc_impl);
+
+void *__libc_malloc(size_t n)
+{
+ return __libc_malloc_impl(n);
+}
+
+static void *default_malloc(size_t n)
+{
+ return __libc_malloc_impl(n);
+}
+
+weak_alias(default_malloc, malloc);
diff --git a/lib/libc/musl/src/malloc/mallocng/glue.h b/lib/libc/musl/src/malloc/mallocng/glue.h
index 16acd1ea3b..151c48b804 100644
--- a/lib/libc/musl/src/malloc/mallocng/glue.h
+++ b/lib/libc/musl/src/malloc/mallocng/glue.h
@@ -20,6 +20,10 @@
#define is_allzero __malloc_allzerop
#define dump_heap __dump_heap
+#define malloc __libc_malloc_impl
+#define realloc __libc_realloc
+#define free __libc_free
+
#if USE_REAL_ASSERT
#include
#else
@@ -56,7 +60,8 @@ __attribute__((__visibility__("hidden")))
extern int __malloc_lock[1];
#define LOCK_OBJ_DEF \
-int __malloc_lock[1];
+int __malloc_lock[1]; \
+void __malloc_atfork(int who) { malloc_atfork(who); }
static inline void rdlock()
{
@@ -73,5 +78,16 @@ static inline void unlock()
static inline void upgradelock()
{
}
+static inline void resetlock()
+{
+ __malloc_lock[0] = 0;
+}
+
+static inline void malloc_atfork(int who)
+{
+ if (who<0) rdlock();
+ else if (who>0) resetlock();
+ else unlock();
+}
#endif
diff --git a/lib/libc/musl/src/malloc/mallocng/malloc_usable_size.c b/lib/libc/musl/src/malloc/mallocng/malloc_usable_size.c
index a440a4eab2..ce6a960c6f 100644
--- a/lib/libc/musl/src/malloc/mallocng/malloc_usable_size.c
+++ b/lib/libc/musl/src/malloc/mallocng/malloc_usable_size.c
@@ -3,6 +3,7 @@
size_t malloc_usable_size(void *p)
{
+ if (!p) return 0;
struct meta *g = get_meta(p);
int idx = get_slot_index(p);
size_t stride = get_stride(g);
diff --git a/lib/libc/musl/src/malloc/oldmalloc/aligned_alloc.c b/lib/libc/musl/src/malloc/oldmalloc/aligned_alloc.c
new file mode 100644
index 0000000000..4adca3b4f6
--- /dev/null
+++ b/lib/libc/musl/src/malloc/oldmalloc/aligned_alloc.c
@@ -0,0 +1,53 @@
+#include
+#include
+#include
+#include "malloc_impl.h"
+
+void *aligned_alloc(size_t align, size_t len)
+{
+ unsigned char *mem, *new;
+
+ if ((align & -align) != align) {
+ errno = EINVAL;
+ return 0;
+ }
+
+ if (len > SIZE_MAX - align ||
+ (__malloc_replaced && !__aligned_alloc_replaced)) {
+ errno = ENOMEM;
+ return 0;
+ }
+
+ if (align <= SIZE_ALIGN)
+ return malloc(len);
+
+ if (!(mem = malloc(len + align-1)))
+ return 0;
+
+ new = (void *)((uintptr_t)mem + align-1 & -align);
+ if (new == mem) return mem;
+
+ struct chunk *c = MEM_TO_CHUNK(mem);
+ struct chunk *n = MEM_TO_CHUNK(new);
+
+ if (IS_MMAPPED(c)) {
+ /* Apply difference between aligned and original
+ * address to the "extra" field of mmapped chunk. */
+ n->psize = c->psize + (new-mem);
+ n->csize = c->csize - (new-mem);
+ return new;
+ }
+
+ struct chunk *t = NEXT_CHUNK(c);
+
+ /* Split the allocated chunk into two chunks. The aligned part
+ * that will be used has the size in its footer reduced by the
+ * difference between the aligned and original addresses, and
+ * the resulting size copied to its header. A new header and
+ * footer are written for the split-off part to be freed. */
+ n->psize = c->csize = C_INUSE | (new-mem);
+ n->csize = t->psize -= new-mem;
+
+ __bin_chunk(c);
+ return new;
+}
diff --git a/lib/libc/musl/src/malloc/oldmalloc/malloc.c b/lib/libc/musl/src/malloc/oldmalloc/malloc.c
new file mode 100644
index 0000000000..53f5f959ec
--- /dev/null
+++ b/lib/libc/musl/src/malloc/oldmalloc/malloc.c
@@ -0,0 +1,552 @@
+#define _GNU_SOURCE
+#include
+#include
+#include
+#include
+#include
+#include
+#include "libc.h"
+#include "atomic.h"
+#include "pthread_impl.h"
+#include "malloc_impl.h"
+#include "fork_impl.h"
+
+#define malloc __libc_malloc
+#define realloc __libc_realloc
+#define free __libc_free
+
+#if defined(__GNUC__) && defined(__PIC__)
+#define inline inline __attribute__((always_inline))
+#endif
+
+static struct {
+ volatile uint64_t binmap;
+ struct bin bins[64];
+ volatile int split_merge_lock[2];
+} mal;
+
+/* Synchronization tools */
+
+static inline void lock(volatile int *lk)
+{
+ int need_locks = libc.need_locks;
+ if (need_locks) {
+ while(a_swap(lk, 1)) __wait(lk, lk+1, 1, 1);
+ if (need_locks < 0) libc.need_locks = 0;
+ }
+}
+
+static inline void unlock(volatile int *lk)
+{
+ if (lk[0]) {
+ a_store(lk, 0);
+ if (lk[1]) __wake(lk, 1, 1);
+ }
+}
+
+static inline void lock_bin(int i)
+{
+ lock(mal.bins[i].lock);
+ if (!mal.bins[i].head)
+ mal.bins[i].head = mal.bins[i].tail = BIN_TO_CHUNK(i);
+}
+
+static inline void unlock_bin(int i)
+{
+ unlock(mal.bins[i].lock);
+}
+
+static int first_set(uint64_t x)
+{
+#if 1
+ return a_ctz_64(x);
+#else
+ static const char debruijn64[64] = {
+ 0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28,
+ 62, 5, 39, 46, 44, 42, 22, 9, 24, 35, 59, 56, 49, 18, 29, 11,
+ 63, 52, 6, 26, 37, 40, 33, 47, 61, 45, 43, 21, 23, 58, 17, 10,
+ 51, 25, 36, 32, 60, 20, 57, 16, 50, 31, 19, 15, 30, 14, 13, 12
+ };
+ static const char debruijn32[32] = {
+ 0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13,
+ 31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14
+ };
+ if (sizeof(long) < 8) {
+ uint32_t y = x;
+ if (!y) {
+ y = x>>32;
+ return 32 + debruijn32[(y&-y)*0x076be629 >> 27];
+ }
+ return debruijn32[(y&-y)*0x076be629 >> 27];
+ }
+ return debruijn64[(x&-x)*0x022fdd63cc95386dull >> 58];
+#endif
+}
+
+static const unsigned char bin_tab[60] = {
+ 32,33,34,35,36,36,37,37,38,38,39,39,
+ 40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,
+ 44,44,44,44,44,44,44,44,45,45,45,45,45,45,45,45,
+ 46,46,46,46,46,46,46,46,47,47,47,47,47,47,47,47,
+};
+
+static int bin_index(size_t x)
+{
+ x = x / SIZE_ALIGN - 1;
+ if (x <= 32) return x;
+ if (x < 512) return bin_tab[x/8-4];
+ if (x > 0x1c00) return 63;
+ return bin_tab[x/128-4] + 16;
+}
+
+static int bin_index_up(size_t x)
+{
+ x = x / SIZE_ALIGN - 1;
+ if (x <= 32) return x;
+ x--;
+ if (x < 512) return bin_tab[x/8-4] + 1;
+ return bin_tab[x/128-4] + 17;
+}
+
+#if 0
+void __dump_heap(int x)
+{
+ struct chunk *c;
+ int i;
+ for (c = (void *)mal.heap; CHUNK_SIZE(c); c = NEXT_CHUNK(c))
+ fprintf(stderr, "base %p size %zu (%d) flags %d/%d\n",
+ c, CHUNK_SIZE(c), bin_index(CHUNK_SIZE(c)),
+ c->csize & 15,
+ NEXT_CHUNK(c)->psize & 15);
+ for (i=0; i<64; i++) {
+ if (mal.bins[i].head != BIN_TO_CHUNK(i) && mal.bins[i].head) {
+ fprintf(stderr, "bin %d: %p\n", i, mal.bins[i].head);
+ if (!(mal.binmap & 1ULL< len ? b-len : 0;
+ if (new>a && old len ? b-len : 0;
+ if (new>a && old SIZE_MAX/2 - PAGE_SIZE) {
+ errno = ENOMEM;
+ return 0;
+ }
+ n += -n & PAGE_SIZE-1;
+
+ if (!brk) {
+ brk = __syscall(SYS_brk, 0);
+ brk += -brk & PAGE_SIZE-1;
+ }
+
+ if (n < SIZE_MAX-brk && !traverses_stack_p(brk, brk+n)
+ && __syscall(SYS_brk, brk+n)==brk+n) {
+ *pn = n;
+ brk += n;
+ return (void *)(brk-n);
+ }
+
+ size_t min = (size_t)PAGE_SIZE << mmap_step/2;
+ if (n < min) n = min;
+ void *area = __mmap(0, n, PROT_READ|PROT_WRITE,
+ MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+ if (area == MAP_FAILED) return 0;
+ *pn = n;
+ mmap_step++;
+ return area;
+}
+
+static struct chunk *expand_heap(size_t n)
+{
+ static void *end;
+ void *p;
+ struct chunk *w;
+
+ /* The argument n already accounts for the caller's chunk
+ * overhead needs, but if the heap can't be extended in-place,
+ * we need room for an extra zero-sized sentinel chunk. */
+ n += SIZE_ALIGN;
+
+ p = __expand_heap(&n);
+ if (!p) return 0;
+
+ /* If not just expanding existing space, we need to make a
+ * new sentinel chunk below the allocated space. */
+ if (p != end) {
+ /* Valid/safe because of the prologue increment. */
+ n -= SIZE_ALIGN;
+ p = (char *)p + SIZE_ALIGN;
+ w = MEM_TO_CHUNK(p);
+ w->psize = 0 | C_INUSE;
+ }
+
+ /* Record new heap end and fill in footer. */
+ end = (char *)p + n;
+ w = MEM_TO_CHUNK(end);
+ w->psize = n | C_INUSE;
+ w->csize = 0 | C_INUSE;
+
+ /* Fill in header, which may be new or may be replacing a
+ * zero-size sentinel header at the old end-of-heap. */
+ w = MEM_TO_CHUNK(p);
+ w->csize = n | C_INUSE;
+
+ return w;
+}
+
+static int adjust_size(size_t *n)
+{
+ /* Result of pointer difference must fit in ptrdiff_t. */
+ if (*n-1 > PTRDIFF_MAX - SIZE_ALIGN - PAGE_SIZE) {
+ if (*n) {
+ errno = ENOMEM;
+ return -1;
+ } else {
+ *n = SIZE_ALIGN;
+ return 0;
+ }
+ }
+ *n = (*n + OVERHEAD + SIZE_ALIGN - 1) & SIZE_MASK;
+ return 0;
+}
+
+static void unbin(struct chunk *c, int i)
+{
+ if (c->prev == c->next)
+ a_and_64(&mal.binmap, ~(1ULL<prev->next = c->next;
+ c->next->prev = c->prev;
+ c->csize |= C_INUSE;
+ NEXT_CHUNK(c)->psize |= C_INUSE;
+}
+
+static void bin_chunk(struct chunk *self, int i)
+{
+ self->next = BIN_TO_CHUNK(i);
+ self->prev = mal.bins[i].tail;
+ self->next->prev = self;
+ self->prev->next = self;
+ if (self->prev == BIN_TO_CHUNK(i))
+ a_or_64(&mal.binmap, 1ULL<= n1 - DONTCARE) return;
+
+ next = NEXT_CHUNK(self);
+ split = (void *)((char *)self + n);
+
+ split->psize = n | C_INUSE;
+ split->csize = n1-n;
+ next->psize = n1-n;
+ self->csize = n | C_INUSE;
+
+ int i = bin_index(n1-n);
+ lock_bin(i);
+
+ bin_chunk(split, i);
+
+ unlock_bin(i);
+}
+
+void *malloc(size_t n)
+{
+ struct chunk *c;
+ int i, j;
+ uint64_t mask;
+
+ if (adjust_size(&n) < 0) return 0;
+
+ if (n > MMAP_THRESHOLD) {
+ size_t len = n + OVERHEAD + PAGE_SIZE - 1 & -PAGE_SIZE;
+ char *base = __mmap(0, len, PROT_READ|PROT_WRITE,
+ MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+ if (base == (void *)-1) return 0;
+ c = (void *)(base + SIZE_ALIGN - OVERHEAD);
+ c->csize = len - (SIZE_ALIGN - OVERHEAD);
+ c->psize = SIZE_ALIGN - OVERHEAD;
+ return CHUNK_TO_MEM(c);
+ }
+
+ i = bin_index_up(n);
+ if (i<63 && (mal.binmap & (1ULL<psize;
+ char *base = (char *)self - extra;
+ size_t oldlen = n0 + extra;
+ size_t newlen = n + extra;
+ /* Crash on realloc of freed chunk */
+ if (extra & 1) a_crash();
+ if (newlen < PAGE_SIZE && (new = malloc(n-OVERHEAD))) {
+ n0 = n;
+ goto copy_free_ret;
+ }
+ newlen = (newlen + PAGE_SIZE-1) & -PAGE_SIZE;
+ if (oldlen == newlen) return p;
+ base = __mremap(base, oldlen, newlen, MREMAP_MAYMOVE);
+ if (base == (void *)-1)
+ goto copy_realloc;
+ self = (void *)(base + extra);
+ self->csize = newlen - extra;
+ return CHUNK_TO_MEM(self);
+ }
+
+ next = NEXT_CHUNK(self);
+
+ /* Crash on corrupted footer (likely from buffer overflow) */
+ if (next->psize != self->csize) a_crash();
+
+ if (n < n0) {
+ int i = bin_index_up(n);
+ int j = bin_index(n0);
+ if (icsize = split->psize = n | C_INUSE;
+ split->csize = next->psize = n0-n | C_INUSE;
+ __bin_chunk(split);
+ return CHUNK_TO_MEM(self);
+ }
+
+ lock(mal.split_merge_lock);
+
+ size_t nsize = next->csize & C_INUSE ? 0 : CHUNK_SIZE(next);
+ if (n0+nsize >= n) {
+ int i = bin_index(nsize);
+ lock_bin(i);
+ if (!(next->csize & C_INUSE)) {
+ unbin(next, i);
+ unlock_bin(i);
+ next = NEXT_CHUNK(next);
+ self->csize = next->psize = n0+nsize | C_INUSE;
+ trim(self, n);
+ unlock(mal.split_merge_lock);
+ return CHUNK_TO_MEM(self);
+ }
+ unlock_bin(i);
+ }
+ unlock(mal.split_merge_lock);
+
+copy_realloc:
+ /* As a last resort, allocate a new chunk and copy to it. */
+ new = malloc(n-OVERHEAD);
+ if (!new) return 0;
+copy_free_ret:
+ memcpy(new, p, (npsize != self->csize) a_crash();
+
+ lock(mal.split_merge_lock);
+
+ size_t osize = CHUNK_SIZE(self), size = osize;
+
+ /* Since we hold split_merge_lock, only transition from free to
+ * in-use can race; in-use to free is impossible */
+ size_t psize = self->psize & C_INUSE ? 0 : CHUNK_PSIZE(self);
+ size_t nsize = next->csize & C_INUSE ? 0 : CHUNK_SIZE(next);
+
+ if (psize) {
+ int i = bin_index(psize);
+ lock_bin(i);
+ if (!(self->psize & C_INUSE)) {
+ struct chunk *prev = PREV_CHUNK(self);
+ unbin(prev, i);
+ self = prev;
+ size += psize;
+ }
+ unlock_bin(i);
+ }
+ if (nsize) {
+ int i = bin_index(nsize);
+ lock_bin(i);
+ if (!(next->csize & C_INUSE)) {
+ unbin(next, i);
+ next = NEXT_CHUNK(next);
+ size += nsize;
+ }
+ unlock_bin(i);
+ }
+
+ int i = bin_index(size);
+ lock_bin(i);
+
+ self->csize = size;
+ next->psize = size;
+ bin_chunk(self, i);
+ unlock(mal.split_merge_lock);
+
+ /* Replace middle of large chunks with fresh zero pages */
+ if (size > RECLAIM && (size^(size-osize)) > size-osize) {
+ uintptr_t a = (uintptr_t)self + SIZE_ALIGN+PAGE_SIZE-1 & -PAGE_SIZE;
+ uintptr_t b = (uintptr_t)next - SIZE_ALIGN & -PAGE_SIZE;
+#if 1
+ __madvise((void *)a, b-a, MADV_DONTNEED);
+#else
+ __mmap((void *)a, b-a, PROT_READ|PROT_WRITE,
+ MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, -1, 0);
+#endif
+ }
+
+ unlock_bin(i);
+}
+
+static void unmap_chunk(struct chunk *self)
+{
+ size_t extra = self->psize;
+ char *base = (char *)self - extra;
+ size_t len = CHUNK_SIZE(self) + extra;
+ /* Crash on double free */
+ if (extra & 1) a_crash();
+ __munmap(base, len);
+}
+
+void free(void *p)
+{
+ if (!p) return;
+
+ struct chunk *self = MEM_TO_CHUNK(p);
+
+ if (IS_MMAPPED(self))
+ unmap_chunk(self);
+ else
+ __bin_chunk(self);
+}
+
+void __malloc_donate(char *start, char *end)
+{
+ size_t align_start_up = (SIZE_ALIGN-1) & (-(uintptr_t)start - OVERHEAD);
+ size_t align_end_down = (SIZE_ALIGN-1) & (uintptr_t)end;
+
+ /* Getting past this condition ensures that the padding for alignment
+ * and header overhead will not overflow and will leave a nonzero
+ * multiple of SIZE_ALIGN bytes between start and end. */
+ if (end - start <= OVERHEAD + align_start_up + align_end_down)
+ return;
+ start += align_start_up + OVERHEAD;
+ end -= align_end_down;
+
+ struct chunk *c = MEM_TO_CHUNK(start), *n = MEM_TO_CHUNK(end);
+ c->psize = n->csize = C_INUSE;
+ c->csize = n->psize = C_INUSE | (end-start);
+ __bin_chunk(c);
+}
+
+void __malloc_atfork(int who)
+{
+ if (who<0) {
+ lock(mal.split_merge_lock);
+ for (int i=0; i<64; i++)
+ lock(mal.bins[i].lock);
+ } else if (!who) {
+ for (int i=0; i<64; i++)
+ unlock(mal.bins[i].lock);
+ unlock(mal.split_merge_lock);
+ } else {
+ for (int i=0; i<64; i++)
+ mal.bins[i].lock[0] = mal.bins[i].lock[1] = 0;
+ mal.split_merge_lock[1] = 0;
+ mal.split_merge_lock[0] = 0;
+ }
+}
diff --git a/lib/libc/musl/src/malloc/oldmalloc/malloc_impl.h b/lib/libc/musl/src/malloc/oldmalloc/malloc_impl.h
new file mode 100644
index 0000000000..e1cf4774c1
--- /dev/null
+++ b/lib/libc/musl/src/malloc/oldmalloc/malloc_impl.h
@@ -0,0 +1,39 @@
+#ifndef MALLOC_IMPL_H
+#define MALLOC_IMPL_H
+
+#include
+#include "dynlink.h"
+
+struct chunk {
+ size_t psize, csize;
+ struct chunk *next, *prev;
+};
+
+struct bin {
+ volatile int lock[2];
+ struct chunk *head;
+ struct chunk *tail;
+};
+
+#define SIZE_ALIGN (4*sizeof(size_t))
+#define SIZE_MASK (-SIZE_ALIGN)
+#define OVERHEAD (2*sizeof(size_t))
+#define MMAP_THRESHOLD (0x1c00*SIZE_ALIGN)
+#define DONTCARE 16
+#define RECLAIM 163840
+
+#define CHUNK_SIZE(c) ((c)->csize & -2)
+#define CHUNK_PSIZE(c) ((c)->psize & -2)
+#define PREV_CHUNK(c) ((struct chunk *)((char *)(c) - CHUNK_PSIZE(c)))
+#define NEXT_CHUNK(c) ((struct chunk *)((char *)(c) + CHUNK_SIZE(c)))
+#define MEM_TO_CHUNK(p) (struct chunk *)((char *)(p) - OVERHEAD)
+#define CHUNK_TO_MEM(c) (void *)((char *)(c) + OVERHEAD)
+#define BIN_TO_CHUNK(i) (MEM_TO_CHUNK(&mal.bins[i].head))
+
+#define C_INUSE ((size_t)1)
+
+#define IS_MMAPPED(c) !((c)->csize & (C_INUSE))
+
+hidden void __bin_chunk(struct chunk *);
+
+#endif
diff --git a/lib/libc/musl/src/malloc/oldmalloc/malloc_usable_size.c b/lib/libc/musl/src/malloc/oldmalloc/malloc_usable_size.c
new file mode 100644
index 0000000000..672b518ad0
--- /dev/null
+++ b/lib/libc/musl/src/malloc/oldmalloc/malloc_usable_size.c
@@ -0,0 +1,9 @@
+#include
+#include "malloc_impl.h"
+
+hidden void *(*const __realloc_dep)(void *, size_t) = realloc;
+
+size_t malloc_usable_size(void *p)
+{
+ return p ? CHUNK_SIZE(MEM_TO_CHUNK(p)) - OVERHEAD : 0;
+}
diff --git a/lib/libc/musl/src/malloc/realloc.c b/lib/libc/musl/src/malloc/realloc.c
new file mode 100644
index 0000000000..fb0e8b7c47
--- /dev/null
+++ b/lib/libc/musl/src/malloc/realloc.c
@@ -0,0 +1,6 @@
+#include
+
+void *realloc(void *p, size_t n)
+{
+ return __libc_realloc(p, n);
+}
diff --git a/lib/libc/musl/src/malloc/reallocarray.c b/lib/libc/musl/src/malloc/reallocarray.c
new file mode 100644
index 0000000000..4a6ebe4604
--- /dev/null
+++ b/lib/libc/musl/src/malloc/reallocarray.c
@@ -0,0 +1,13 @@
+#define _BSD_SOURCE
+#include
+#include
+
+void *reallocarray(void *ptr, size_t m, size_t n)
+{
+ if (n && m > -1 / n) {
+ errno = ENOMEM;
+ return 0;
+ }
+
+ return realloc(ptr, m * n);
+}
diff --git a/lib/libc/musl/src/math/__math_invalidl.c b/lib/libc/musl/src/math/__math_invalidl.c
new file mode 100644
index 0000000000..1fca99de4f
--- /dev/null
+++ b/lib/libc/musl/src/math/__math_invalidl.c
@@ -0,0 +1,9 @@
+#include
+#include "libm.h"
+
+#if LDBL_MANT_DIG != DBL_MANT_DIG
+long double __math_invalidl(long double x)
+{
+ return (x - x) / (x - x);
+}
+#endif
diff --git a/lib/libc/musl/src/math/arm/fabs.c b/lib/libc/musl/src/math/arm/fabs.c
index f890520a5c..6e1d367d3d 100644
--- a/lib/libc/musl/src/math/arm/fabs.c
+++ b/lib/libc/musl/src/math/arm/fabs.c
@@ -1,6 +1,6 @@
#include
-#if __ARM_PCS_VFP
+#if __ARM_PCS_VFP && __ARM_FP&8
double fabs(double x)
{
diff --git a/lib/libc/musl/src/math/arm/sqrt.c b/lib/libc/musl/src/math/arm/sqrt.c
index 874af9606c..567e2e9101 100644
--- a/lib/libc/musl/src/math/arm/sqrt.c
+++ b/lib/libc/musl/src/math/arm/sqrt.c
@@ -1,6 +1,6 @@
#include
-#if __ARM_PCS_VFP || (__VFP_FP__ && !__SOFTFP__)
+#if (__ARM_PCS_VFP || (__VFP_FP__ && !__SOFTFP__)) && (__ARM_FP&8)
double sqrt(double x)
{
diff --git a/lib/libc/musl/src/math/sqrt.c b/lib/libc/musl/src/math/sqrt.c
index f1f6d76c78..5ba2655962 100644
--- a/lib/libc/musl/src/math/sqrt.c
+++ b/lib/libc/musl/src/math/sqrt.c
@@ -1,184 +1,158 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_sqrt.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* sqrt(x)
- * Return correctly rounded sqrt.
- * ------------------------------------------
- * | Use the hardware sqrt if you have one |
- * ------------------------------------------
- * Method:
- * Bit by bit method using integer arithmetic. (Slow, but portable)
- * 1. Normalization
- * Scale x to y in [1,4) with even powers of 2:
- * find an integer k such that 1 <= (y=x*2^(2k)) < 4, then
- * sqrt(x) = 2^k * sqrt(y)
- * 2. Bit by bit computation
- * Let q = sqrt(y) truncated to i bit after binary point (q = 1),
- * i 0
- * i+1 2
- * s = 2*q , and y = 2 * ( y - q ). (1)
- * i i i i
- *
- * To compute q from q , one checks whether
- * i+1 i
- *
- * -(i+1) 2
- * (q + 2 ) <= y. (2)
- * i
- * -(i+1)
- * If (2) is false, then q = q ; otherwise q = q + 2 .
- * i+1 i i+1 i
- *
- * With some algebric manipulation, it is not difficult to see
- * that (2) is equivalent to
- * -(i+1)
- * s + 2 <= y (3)
- * i i
- *
- * The advantage of (3) is that s and y can be computed by
- * i i
- * the following recurrence formula:
- * if (3) is false
- *
- * s = s , y = y ; (4)
- * i+1 i i+1 i
- *
- * otherwise,
- * -i -(i+1)
- * s = s + 2 , y = y - s - 2 (5)
- * i+1 i i+1 i i
- *
- * One may easily use induction to prove (4) and (5).
- * Note. Since the left hand side of (3) contain only i+2 bits,
- * it does not necessary to do a full (53-bit) comparison
- * in (3).
- * 3. Final rounding
- * After generating the 53 bits result, we compute one more bit.
- * Together with the remainder, we can decide whether the
- * result is exact, bigger than 1/2ulp, or less than 1/2ulp
- * (it will never equal to 1/2ulp).
- * The rounding mode can be detected by checking whether
- * huge + tiny is equal to huge, and whether huge - tiny is
- * equal to huge for some floating point number "huge" and "tiny".
- *
- * Special cases:
- * sqrt(+-0) = +-0 ... exact
- * sqrt(inf) = inf
- * sqrt(-ve) = NaN ... with invalid signal
- * sqrt(NaN) = NaN ... with invalid signal for signaling NaN
- */
-
+#include
+#include
#include "libm.h"
+#include "sqrt_data.h"
-static const double tiny = 1.0e-300;
+#define FENV_SUPPORT 1
+
+/* returns a*b*2^-32 - e, with error 0 <= e < 1. */
+static inline uint32_t mul32(uint32_t a, uint32_t b)
+{
+ return (uint64_t)a*b >> 32;
+}
+
+/* returns a*b*2^-64 - e, with error 0 <= e < 3. */
+static inline uint64_t mul64(uint64_t a, uint64_t b)
+{
+ uint64_t ahi = a>>32;
+ uint64_t alo = a&0xffffffff;
+ uint64_t bhi = b>>32;
+ uint64_t blo = b&0xffffffff;
+ return ahi*bhi + (ahi*blo >> 32) + (alo*bhi >> 32);
+}
double sqrt(double x)
{
- double z;
- int32_t sign = (int)0x80000000;
- int32_t ix0,s0,q,m,t,i;
- uint32_t r,t1,s1,ix1,q1;
+ uint64_t ix, top, m;
- EXTRACT_WORDS(ix0, ix1, x);
-
- /* take care of Inf and NaN */
- if ((ix0&0x7ff00000) == 0x7ff00000) {
- return x*x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */
- }
- /* take care of zero */
- if (ix0 <= 0) {
- if (((ix0&~sign)|ix1) == 0)
- return x; /* sqrt(+-0) = +-0 */
- if (ix0 < 0)
- return (x-x)/(x-x); /* sqrt(-ve) = sNaN */
- }
- /* normalize x */
- m = ix0>>20;
- if (m == 0) { /* subnormal x */
- while (ix0 == 0) {
- m -= 21;
- ix0 |= (ix1>>11);
- ix1 <<= 21;
- }
- for (i=0; (ix0&0x00100000) == 0; i++)
- ix0<<=1;
- m -= i - 1;
- ix0 |= ix1>>(32-i);
- ix1 <<= i;
- }
- m -= 1023; /* unbias exponent */
- ix0 = (ix0&0x000fffff)|0x00100000;
- if (m & 1) { /* odd m, double x to make it even */
- ix0 += ix0 + ((ix1&sign)>>31);
- ix1 += ix1;
- }
- m >>= 1; /* m = [m/2] */
-
- /* generate sqrt(x) bit by bit */
- ix0 += ix0 + ((ix1&sign)>>31);
- ix1 += ix1;
- q = q1 = s0 = s1 = 0; /* [q,q1] = sqrt(x) */
- r = 0x00200000; /* r = moving bit from right to left */
-
- while (r != 0) {
- t = s0 + r;
- if (t <= ix0) {
- s0 = t + r;
- ix0 -= t;
- q += r;
- }
- ix0 += ix0 + ((ix1&sign)>>31);
- ix1 += ix1;
- r >>= 1;
+ /* special case handling. */
+ ix = asuint64(x);
+ top = ix >> 52;
+ if (predict_false(top - 0x001 >= 0x7ff - 0x001)) {
+ /* x < 0x1p-1022 or inf or nan. */
+ if (ix * 2 == 0)
+ return x;
+ if (ix == 0x7ff0000000000000)
+ return x;
+ if (ix > 0x7ff0000000000000)
+ return __math_invalid(x);
+ /* x is subnormal, normalize it. */
+ ix = asuint64(x * 0x1p52);
+ top = ix >> 52;
+ top -= 52;
}
- r = sign;
- while (r != 0) {
- t1 = s1 + r;
- t = s0;
- if (t < ix0 || (t == ix0 && t1 <= ix1)) {
- s1 = t1 + r;
- if ((t1&sign) == sign && (s1&sign) == 0)
- s0++;
- ix0 -= t;
- if (ix1 < t1)
- ix0--;
- ix1 -= t1;
- q1 += r;
- }
- ix0 += ix0 + ((ix1&sign)>>31);
- ix1 += ix1;
- r >>= 1;
- }
+ /* argument reduction:
+ x = 4^e m; with integer e, and m in [1, 4)
+ m: fixed point representation [2.62]
+ 2^e is the exponent part of the result. */
+ int even = top & 1;
+ m = (ix << 11) | 0x8000000000000000;
+ if (even) m >>= 1;
+ top = (top + 0x3ff) >> 1;
- /* use floating add to find out rounding direction */
- if ((ix0|ix1) != 0) {
- z = 1.0 - tiny; /* raise inexact flag */
- if (z >= 1.0) {
- z = 1.0 + tiny;
- if (q1 == (uint32_t)0xffffffff) {
- q1 = 0;
- q++;
- } else if (z > 1.0) {
- if (q1 == (uint32_t)0xfffffffe)
- q++;
- q1 += 2;
- } else
- q1 += q1 & 1;
- }
+ /* approximate r ~ 1/sqrt(m) and s ~ sqrt(m) when m in [1,4)
+
+ initial estimate:
+ 7bit table lookup (1bit exponent and 6bit significand).
+
+ iterative approximation:
+ using 2 goldschmidt iterations with 32bit int arithmetics
+ and a final iteration with 64bit int arithmetics.
+
+ details:
+
+ the relative error (e = r0 sqrt(m)-1) of a linear estimate
+ (r0 = a m + b) is |e| < 0.085955 ~ 0x1.6p-4 at best,
+ a table lookup is faster and needs one less iteration
+ 6 bit lookup table (128b) gives |e| < 0x1.f9p-8
+ 7 bit lookup table (256b) gives |e| < 0x1.fdp-9
+ for single and double prec 6bit is enough but for quad
+ prec 7bit is needed (or modified iterations). to avoid
+ one more iteration >=13bit table would be needed (16k).
+
+ a newton-raphson iteration for r is
+ w = r*r
+ u = 3 - m*w
+ r = r*u/2
+ can use a goldschmidt iteration for s at the end or
+ s = m*r
+
+ first goldschmidt iteration is
+ s = m*r
+ u = 3 - s*r
+ r = r*u/2
+ s = s*u/2
+ next goldschmidt iteration is
+ u = 3 - s*r
+ r = r*u/2
+ s = s*u/2
+ and at the end r is not computed only s.
+
+ they use the same amount of operations and converge at the
+ same quadratic rate, i.e. if
+ r1 sqrt(m) - 1 = e, then
+ r2 sqrt(m) - 1 = -3/2 e^2 - 1/2 e^3
+ the advantage of goldschmidt is that the mul for s and r
+ are independent (computed in parallel), however it is not
+ "self synchronizing": it only uses the input m in the
+ first iteration so rounding errors accumulate. at the end
+ or when switching to larger precision arithmetics rounding
+ errors dominate so the first iteration should be used.
+
+ the fixed point representations are
+ m: 2.30 r: 0.32, s: 2.30, d: 2.30, u: 2.30, three: 2.30
+ and after switching to 64 bit
+ m: 2.62 r: 0.64, s: 2.62, d: 2.62, u: 2.62, three: 2.62 */
+
+ static const uint64_t three = 0xc0000000;
+ uint64_t r, s, d, u, i;
+
+ i = (ix >> 46) % 128;
+ r = (uint32_t)__rsqrt_tab[i] << 16;
+ /* |r sqrt(m) - 1| < 0x1.fdp-9 */
+ s = mul32(m>>32, r);
+ /* |s/sqrt(m) - 1| < 0x1.fdp-9 */
+ d = mul32(s, r);
+ u = three - d;
+ r = mul32(r, u) << 1;
+ /* |r sqrt(m) - 1| < 0x1.7bp-16 */
+ s = mul32(s, u) << 1;
+ /* |s/sqrt(m) - 1| < 0x1.7bp-16 */
+ d = mul32(s, r);
+ u = three - d;
+ r = mul32(r, u) << 1;
+ /* |r sqrt(m) - 1| < 0x1.3704p-29 (measured worst-case) */
+ r = r << 32;
+ s = mul64(m, r);
+ d = mul64(s, r);
+ u = (three<<32) - d;
+ s = mul64(s, u); /* repr: 3.61 */
+ /* -0x1p-57 < s - sqrt(m) < 0x1.8001p-61 */
+ s = (s - 2) >> 9; /* repr: 12.52 */
+ /* -0x1.09p-52 < s - sqrt(m) < -0x1.fffcp-63 */
+
+ /* s < sqrt(m) < s + 0x1.09p-52,
+ compute nearest rounded result:
+ the nearest result to 52 bits is either s or s+0x1p-52,
+ we can decide by comparing (2^52 s + 0.5)^2 to 2^104 m. */
+ uint64_t d0, d1, d2;
+ double y, t;
+ d0 = (m << 42) - s*s;
+ d1 = s - d0;
+ d2 = d1 + s + 1;
+ s += d1 >> 63;
+ s &= 0x000fffffffffffff;
+ s |= top << 52;
+ y = asdouble(s);
+ if (FENV_SUPPORT) {
+ /* handle rounding modes and inexact exception:
+ only (s+1)^2 == 2^42 m case is exact otherwise
+ add a tiny value to cause the fenv effects. */
+ uint64_t tiny = predict_false(d2==0) ? 0 : 0x0010000000000000;
+ tiny |= (d1^d2) & 0x8000000000000000;
+ t = asdouble(tiny);
+ y = eval_as_double(y + t);
}
- ix0 = (q>>1) + 0x3fe00000;
- ix1 = q1>>1;
- if (q&1)
- ix1 |= sign;
- INSERT_WORDS(z, ix0 + ((uint32_t)m << 20), ix1);
- return z;
+ return y;
}
diff --git a/lib/libc/musl/src/math/sqrt_data.c b/lib/libc/musl/src/math/sqrt_data.c
new file mode 100644
index 0000000000..61bc22f430
--- /dev/null
+++ b/lib/libc/musl/src/math/sqrt_data.c
@@ -0,0 +1,19 @@
+#include "sqrt_data.h"
+const uint16_t __rsqrt_tab[128] = {
+0xb451,0xb2f0,0xb196,0xb044,0xaef9,0xadb6,0xac79,0xab43,
+0xaa14,0xa8eb,0xa7c8,0xa6aa,0xa592,0xa480,0xa373,0xa26b,
+0xa168,0xa06a,0x9f70,0x9e7b,0x9d8a,0x9c9d,0x9bb5,0x9ad1,
+0x99f0,0x9913,0x983a,0x9765,0x9693,0x95c4,0x94f8,0x9430,
+0x936b,0x92a9,0x91ea,0x912e,0x9075,0x8fbe,0x8f0a,0x8e59,
+0x8daa,0x8cfe,0x8c54,0x8bac,0x8b07,0x8a64,0x89c4,0x8925,
+0x8889,0x87ee,0x8756,0x86c0,0x862b,0x8599,0x8508,0x8479,
+0x83ec,0x8361,0x82d8,0x8250,0x81c9,0x8145,0x80c2,0x8040,
+0xff02,0xfd0e,0xfb25,0xf947,0xf773,0xf5aa,0xf3ea,0xf234,
+0xf087,0xeee3,0xed47,0xebb3,0xea27,0xe8a3,0xe727,0xe5b2,
+0xe443,0xe2dc,0xe17a,0xe020,0xdecb,0xdd7d,0xdc34,0xdaf1,
+0xd9b3,0xd87b,0xd748,0xd61a,0xd4f1,0xd3cd,0xd2ad,0xd192,
+0xd07b,0xcf69,0xce5b,0xcd51,0xcc4a,0xcb48,0xca4a,0xc94f,
+0xc858,0xc764,0xc674,0xc587,0xc49d,0xc3b7,0xc2d4,0xc1f4,
+0xc116,0xc03c,0xbf65,0xbe90,0xbdbe,0xbcef,0xbc23,0xbb59,
+0xba91,0xb9cc,0xb90a,0xb84a,0xb78c,0xb6d0,0xb617,0xb560,
+};
diff --git a/lib/libc/musl/src/math/sqrt_data.h b/lib/libc/musl/src/math/sqrt_data.h
new file mode 100644
index 0000000000..260c7f9c29
--- /dev/null
+++ b/lib/libc/musl/src/math/sqrt_data.h
@@ -0,0 +1,13 @@
+#ifndef _SQRT_DATA_H
+#define _SQRT_DATA_H
+
+#include
+#include
+
+/* if x in [1,2): i = (int)(64*x);
+ if x in [2,4): i = (int)(32*x-64);
+ __rsqrt_tab[i]*2^-16 is estimating 1/sqrt(x) with small relative error:
+ |__rsqrt_tab[i]*0x1p-16*sqrt(x) - 1| < -0x1.fdp-9 < 2^-8 */
+extern hidden const uint16_t __rsqrt_tab[128];
+
+#endif
diff --git a/lib/libc/musl/src/math/sqrtf.c b/lib/libc/musl/src/math/sqrtf.c
index d6ace38aa6..740d81cbab 100644
--- a/lib/libc/musl/src/math/sqrtf.c
+++ b/lib/libc/musl/src/math/sqrtf.c
@@ -1,83 +1,83 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_sqrtf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
+#include
+#include
#include "libm.h"
+#include "sqrt_data.h"
-static const float tiny = 1.0e-30;
+#define FENV_SUPPORT 1
+
+static inline uint32_t mul32(uint32_t a, uint32_t b)
+{
+ return (uint64_t)a*b >> 32;
+}
+
+/* see sqrt.c for more detailed comments. */
float sqrtf(float x)
{
- float z;
- int32_t sign = (int)0x80000000;
- int32_t ix,s,q,m,t,i;
- uint32_t r;
+ uint32_t ix, m, m1, m0, even, ey;
- GET_FLOAT_WORD(ix, x);
-
- /* take care of Inf and NaN */
- if ((ix&0x7f800000) == 0x7f800000)
- return x*x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */
-
- /* take care of zero */
- if (ix <= 0) {
- if ((ix&~sign) == 0)
- return x; /* sqrt(+-0) = +-0 */
- if (ix < 0)
- return (x-x)/(x-x); /* sqrt(-ve) = sNaN */
- }
- /* normalize x */
- m = ix>>23;
- if (m == 0) { /* subnormal x */
- for (i = 0; (ix&0x00800000) == 0; i++)
- ix<<=1;
- m -= i - 1;
- }
- m -= 127; /* unbias exponent */
- ix = (ix&0x007fffff)|0x00800000;
- if (m&1) /* odd m, double x to make it even */
- ix += ix;
- m >>= 1; /* m = [m/2] */
-
- /* generate sqrt(x) bit by bit */
- ix += ix;
- q = s = 0; /* q = sqrt(x) */
- r = 0x01000000; /* r = moving bit from right to left */
-
- while (r != 0) {
- t = s + r;
- if (t <= ix) {
- s = t+r;
- ix -= t;
- q += r;
- }
- ix += ix;
- r >>= 1;
+ ix = asuint(x);
+ if (predict_false(ix - 0x00800000 >= 0x7f800000 - 0x00800000)) {
+ /* x < 0x1p-126 or inf or nan. */
+ if (ix * 2 == 0)
+ return x;
+ if (ix == 0x7f800000)
+ return x;
+ if (ix > 0x7f800000)
+ return __math_invalidf(x);
+ /* x is subnormal, normalize it. */
+ ix = asuint(x * 0x1p23f);
+ ix -= 23 << 23;
}
- /* use floating add to find out rounding direction */
- if (ix != 0) {
- z = 1.0f - tiny; /* raise inexact flag */
- if (z >= 1.0f) {
- z = 1.0f + tiny;
- if (z > 1.0f)
- q += 2;
- else
- q += q & 1;
- }
+ /* x = 4^e m; with int e and m in [1, 4). */
+ even = ix & 0x00800000;
+ m1 = (ix << 8) | 0x80000000;
+ m0 = (ix << 7) & 0x7fffffff;
+ m = even ? m0 : m1;
+
+ /* 2^e is the exponent part of the return value. */
+ ey = ix >> 1;
+ ey += 0x3f800000 >> 1;
+ ey &= 0x7f800000;
+
+ /* compute r ~ 1/sqrt(m), s ~ sqrt(m) with 2 goldschmidt iterations. */
+ static const uint32_t three = 0xc0000000;
+ uint32_t r, s, d, u, i;
+ i = (ix >> 17) % 128;
+ r = (uint32_t)__rsqrt_tab[i] << 16;
+ /* |r*sqrt(m) - 1| < 0x1p-8 */
+ s = mul32(m, r);
+ /* |s/sqrt(m) - 1| < 0x1p-8 */
+ d = mul32(s, r);
+ u = three - d;
+ r = mul32(r, u) << 1;
+ /* |r*sqrt(m) - 1| < 0x1.7bp-16 */
+ s = mul32(s, u) << 1;
+ /* |s/sqrt(m) - 1| < 0x1.7bp-16 */
+ d = mul32(s, r);
+ u = three - d;
+ s = mul32(s, u);
+ /* -0x1.03p-28 < s/sqrt(m) - 1 < 0x1.fp-31 */
+ s = (s - 1)>>6;
+ /* s < sqrt(m) < s + 0x1.08p-23 */
+
+ /* compute nearest rounded result. */
+ uint32_t d0, d1, d2;
+ float y, t;
+ d0 = (m << 16) - s*s;
+ d1 = s - d0;
+ d2 = d1 + s + 1;
+ s += d1 >> 31;
+ s &= 0x007fffff;
+ s |= ey;
+ y = asfloat(s);
+ if (FENV_SUPPORT) {
+ /* handle rounding and inexact exception. */
+ uint32_t tiny = predict_false(d2==0) ? 0 : 0x01000000;
+ tiny |= (d1^d2) & 0x80000000;
+ t = asfloat(tiny);
+ y = eval_as_float(y + t);
}
- ix = (q>>1) + 0x3f000000;
- SET_FLOAT_WORD(z, ix + ((uint32_t)m << 23));
- return z;
+ return y;
}
diff --git a/lib/libc/musl/src/math/sqrtl.c b/lib/libc/musl/src/math/sqrtl.c
index 83a8f80c99..1b9f19c7d4 100644
--- a/lib/libc/musl/src/math/sqrtl.c
+++ b/lib/libc/musl/src/math/sqrtl.c
@@ -1,7 +1,259 @@
+#include
#include
+#include
+#include "libm.h"
+
+#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
+long double sqrtl(long double x)
+{
+ return sqrt(x);
+}
+#elif (LDBL_MANT_DIG == 113 || LDBL_MANT_DIG == 64) && LDBL_MAX_EXP == 16384
+#include "sqrt_data.h"
+
+#define FENV_SUPPORT 1
+
+typedef struct {
+ uint64_t hi;
+ uint64_t lo;
+} u128;
+
+/* top: 16 bit sign+exponent, x: significand. */
+static inline long double mkldbl(uint64_t top, u128 x)
+{
+ union ldshape u;
+#if LDBL_MANT_DIG == 113
+ u.i2.hi = x.hi;
+ u.i2.lo = x.lo;
+ u.i2.hi &= 0x0000ffffffffffff;
+ u.i2.hi |= top << 48;
+#elif LDBL_MANT_DIG == 64
+ u.i.se = top;
+ u.i.m = x.lo;
+ /* force the top bit on non-zero (and non-subnormal) results. */
+ if (top & 0x7fff)
+ u.i.m |= 0x8000000000000000;
+#endif
+ return u.f;
+}
+
+/* return: top 16 bit is sign+exp and following bits are the significand. */
+static inline u128 asu128(long double x)
+{
+ union ldshape u = {.f=x};
+ u128 r;
+#if LDBL_MANT_DIG == 113
+ r.hi = u.i2.hi;
+ r.lo = u.i2.lo;
+#elif LDBL_MANT_DIG == 64
+ r.lo = u.i.m<<49;
+ /* ignore the top bit: pseudo numbers are not handled. */
+ r.hi = u.i.m>>15;
+ r.hi &= 0x0000ffffffffffff;
+ r.hi |= (uint64_t)u.i.se << 48;
+#endif
+ return r;
+}
+
+/* returns a*b*2^-32 - e, with error 0 <= e < 1. */
+static inline uint32_t mul32(uint32_t a, uint32_t b)
+{
+ return (uint64_t)a*b >> 32;
+}
+
+/* returns a*b*2^-64 - e, with error 0 <= e < 3. */
+static inline uint64_t mul64(uint64_t a, uint64_t b)
+{
+ uint64_t ahi = a>>32;
+ uint64_t alo = a&0xffffffff;
+ uint64_t bhi = b>>32;
+ uint64_t blo = b&0xffffffff;
+ return ahi*bhi + (ahi*blo >> 32) + (alo*bhi >> 32);
+}
+
+static inline u128 add64(u128 a, uint64_t b)
+{
+ u128 r;
+ r.lo = a.lo + b;
+ r.hi = a.hi;
+ if (r.lo < a.lo)
+ r.hi++;
+ return r;
+}
+
+static inline u128 add128(u128 a, u128 b)
+{
+ u128 r;
+ r.lo = a.lo + b.lo;
+ r.hi = a.hi + b.hi;
+ if (r.lo < a.lo)
+ r.hi++;
+ return r;
+}
+
+static inline u128 sub64(u128 a, uint64_t b)
+{
+ u128 r;
+ r.lo = a.lo - b;
+ r.hi = a.hi;
+ if (a.lo < b)
+ r.hi--;
+ return r;
+}
+
+static inline u128 sub128(u128 a, u128 b)
+{
+ u128 r;
+ r.lo = a.lo - b.lo;
+ r.hi = a.hi - b.hi;
+ if (a.lo < b.lo)
+ r.hi--;
+ return r;
+}
+
+/* a<= 64) {
+ a.hi = a.lo<<(n-64);
+ a.lo = 0;
+ } else {
+ a.hi = (a.hi<>(64-n));
+ a.lo = a.lo<>n, 0 <= n <= 127 */
+static inline u128 rsh(u128 a, int n)
+{
+ if (n == 0)
+ return a;
+ if (n >= 64) {
+ a.lo = a.hi>>(n-64);
+ a.hi = 0;
+ } else {
+ a.lo = (a.lo>>n) | (a.hi<<(64-n));
+ a.hi = a.hi>>n;
+ }
+ return a;
+}
+
+/* returns a*b exactly. */
+static inline u128 mul64_128(uint64_t a, uint64_t b)
+{
+ u128 r;
+ uint64_t ahi = a>>32;
+ uint64_t alo = a&0xffffffff;
+ uint64_t bhi = b>>32;
+ uint64_t blo = b&0xffffffff;
+ uint64_t lo1 = ((ahi*blo)&0xffffffff) + ((alo*bhi)&0xffffffff) + (alo*blo>>32);
+ uint64_t lo2 = (alo*blo)&0xffffffff;
+ r.hi = ahi*bhi + (ahi*blo>>32) + (alo*bhi>>32) + (lo1>>32);
+ r.lo = (lo1<<32) + lo2;
+ return r;
+}
+
+/* returns a*b*2^-128 - e, with error 0 <= e < 7. */
+static inline u128 mul128(u128 a, u128 b)
+{
+ u128 hi = mul64_128(a.hi, b.hi);
+ uint64_t m1 = mul64(a.hi, b.lo);
+ uint64_t m2 = mul64(a.lo, b.hi);
+ return add64(add64(hi, m1), m2);
+}
+
+/* returns a*b % 2^128. */
+static inline u128 mul128_tail(u128 a, u128 b)
+{
+ u128 lo = mul64_128(a.lo, b.lo);
+ lo.hi += a.hi*b.lo + a.lo*b.hi;
+ return lo;
+}
+
+
+/* see sqrt.c for detailed comments. */
long double sqrtl(long double x)
{
- /* FIXME: implement in C, this is for LDBL_MANT_DIG == 64 only */
- return sqrt(x);
+ u128 ix, ml;
+ uint64_t top;
+
+ ix = asu128(x);
+ top = ix.hi >> 48;
+ if (predict_false(top - 0x0001 >= 0x7fff - 0x0001)) {
+ /* x < 0x1p-16382 or inf or nan. */
+ if (2*ix.hi == 0 && ix.lo == 0)
+ return x;
+ if (ix.hi == 0x7fff000000000000 && ix.lo == 0)
+ return x;
+ if (top >= 0x7fff)
+ return __math_invalidl(x);
+ /* x is subnormal, normalize it. */
+ ix = asu128(x * 0x1p112);
+ top = ix.hi >> 48;
+ top -= 112;
+ }
+
+ /* x = 4^e m; with int e and m in [1, 4) */
+ int even = top & 1;
+ ml = lsh(ix, 15);
+ ml.hi |= 0x8000000000000000;
+ if (even) ml = rsh(ml, 1);
+ top = (top + 0x3fff) >> 1;
+
+ /* r ~ 1/sqrt(m) */
+ static const uint64_t three = 0xc0000000;
+ uint64_t r, s, d, u, i;
+ i = (ix.hi >> 42) % 128;
+ r = (uint32_t)__rsqrt_tab[i] << 16;
+ /* |r sqrt(m) - 1| < 0x1p-8 */
+ s = mul32(ml.hi>>32, r);
+ d = mul32(s, r);
+ u = three - d;
+ r = mul32(u, r) << 1;
+ /* |r sqrt(m) - 1| < 0x1.7bp-16, switch to 64bit */
+ r = r<<32;
+ s = mul64(ml.hi, r);
+ d = mul64(s, r);
+ u = (three<<32) - d;
+ r = mul64(u, r) << 1;
+ /* |r sqrt(m) - 1| < 0x1.a5p-31 */
+ s = mul64(u, s) << 1;
+ d = mul64(s, r);
+ u = (three<<32) - d;
+ r = mul64(u, r) << 1;
+ /* |r sqrt(m) - 1| < 0x1.c001p-59, switch to 128bit */
+
+ static const u128 threel = {.hi=three<<32, .lo=0};
+ u128 rl, sl, dl, ul;
+ rl.hi = r;
+ rl.lo = 0;
+ sl = mul128(ml, rl);
+ dl = mul128(sl, rl);
+ ul = sub128(threel, dl);
+ sl = mul128(ul, sl); /* repr: 3.125 */
+ /* -0x1p-116 < s - sqrt(m) < 0x3.8001p-125 */
+ sl = rsh(sub64(sl, 4), 125-(LDBL_MANT_DIG-1));
+ /* s < sqrt(m) < s + 1 ULP + tiny */
+
+ long double y;
+ u128 d2, d1, d0;
+ d0 = sub128(lsh(ml, 2*(LDBL_MANT_DIG-1)-126), mul128_tail(sl,sl));
+ d1 = sub128(sl, d0);
+ d2 = add128(add64(sl, 1), d1);
+ sl = add64(sl, d1.hi >> 63);
+ y = mkldbl(top, sl);
+ if (FENV_SUPPORT) {
+ /* handle rounding modes and inexact exception. */
+ top = predict_false((d2.hi|d2.lo)==0) ? 0 : 1;
+ top |= ((d1.hi^d2.hi)&0x8000000000000000) >> 48;
+ y += mkldbl(top, (u128){0});
+ }
+ return y;
}
+#else
+#error unsupported long double format
+#endif
diff --git a/lib/libc/musl/src/misc/ioctl.c b/lib/libc/musl/src/misc/ioctl.c
index 8947751147..492828119a 100644
--- a/lib/libc/musl/src/misc/ioctl.c
+++ b/lib/libc/musl/src/misc/ioctl.c
@@ -4,6 +4,7 @@
#include
#include
#include
+#include
#include
#include "syscall.h"
@@ -28,6 +29,12 @@ struct ioctl_compat_map {
* number producing macros; only size of result is meaningful. */
#define new_misaligned(n) struct { int i; time_t t; char c[(n)-4]; }
+struct v4l2_event {
+ uint32_t a;
+ uint64_t b[8];
+ uint32_t c[2], ts[2], d[9];
+};
+
static const struct ioctl_compat_map compat_map[] = {
{ SIOCGSTAMP, SIOCGSTAMP_OLD, 8, R, 0, OFFS(0, 4) },
{ SIOCGSTAMPNS, SIOCGSTAMPNS_OLD, 8, R, 0, OFFS(0, 4) },
@@ -49,13 +56,14 @@ static const struct ioctl_compat_map compat_map[] = {
{ 0, 0, 8, WR, 1, OFFS(0,4) }, /* snd_pcm_mmap_control */
/* VIDIOC_QUERYBUF, VIDIOC_QBUF, VIDIOC_DQBUF, VIDIOC_PREPARE_BUF */
- { _IOWR('V', 9, new_misaligned(72)), _IOWR('V', 9, char[72]), 72, WR, 0, OFFS(20) },
- { _IOWR('V', 15, new_misaligned(72)), _IOWR('V', 15, char[72]), 72, WR, 0, OFFS(20) },
- { _IOWR('V', 17, new_misaligned(72)), _IOWR('V', 17, char[72]), 72, WR, 0, OFFS(20) },
- { _IOWR('V', 93, new_misaligned(72)), _IOWR('V', 93, char[72]), 72, WR, 0, OFFS(20) },
+ { _IOWR('V', 9, new_misaligned(68)), _IOWR('V', 9, char[68]), 68, WR, 1, OFFS(20, 24) },
+ { _IOWR('V', 15, new_misaligned(68)), _IOWR('V', 15, char[68]), 68, WR, 1, OFFS(20, 24) },
+ { _IOWR('V', 17, new_misaligned(68)), _IOWR('V', 17, char[68]), 68, WR, 1, OFFS(20, 24) },
+ { _IOWR('V', 93, new_misaligned(68)), _IOWR('V', 93, char[68]), 68, WR, 1, OFFS(20, 24) },
/* VIDIOC_DQEVENT */
- { _IOR('V', 89, new_misaligned(96)), _IOR('V', 89, char[96]), 96, R, 0, OFFS(76,80) },
+ { _IOR('V', 89, new_misaligned(120)), _IOR('V', 89, struct v4l2_event), sizeof(struct v4l2_event),
+ R, 0, OFFS(offsetof(struct v4l2_event, ts[0]), offsetof(struct v4l2_event, ts[1])) },
/* VIDIOC_OMAP3ISP_STAT_REQ */
{ _IOWR('V', 192+6, char[32]), _IOWR('V', 192+6, char[24]), 22, WR, 0, OFFS(0,4) },
diff --git a/lib/libc/musl/src/misc/realpath.c b/lib/libc/musl/src/misc/realpath.c
index d2708e59da..db8b74dc8d 100644
--- a/lib/libc/musl/src/misc/realpath.c
+++ b/lib/libc/musl/src/misc/realpath.c
@@ -1,43 +1,156 @@
#include
#include
-#include
-#include
#include
#include
#include
-#include "syscall.h"
+
+static size_t slash_len(const char *s)
+{
+ const char *s0 = s;
+ while (*s == '/') s++;
+ return s-s0;
+}
char *realpath(const char *restrict filename, char *restrict resolved)
{
- int fd;
- ssize_t r;
- struct stat st1, st2;
- char buf[15+3*sizeof(int)];
- char tmp[PATH_MAX];
+ char stack[PATH_MAX+1];
+ char output[PATH_MAX];
+ size_t p, q, l, l0, cnt=0, nup=0;
+ int check_dir=0;
if (!filename) {
errno = EINVAL;
return 0;
}
+ l = strnlen(filename, sizeof stack);
+ if (!l) {
+ errno = ENOENT;
+ return 0;
+ }
+ if (l >= PATH_MAX) goto toolong;
+ p = sizeof stack - l - 1;
+ q = 0;
+ memcpy(stack+p, filename, l+1);
- fd = sys_open(filename, O_PATH|O_NONBLOCK|O_CLOEXEC);
- if (fd < 0) return 0;
- __procfdname(buf, fd);
+ /* Main loop. Each iteration pops the next part from stack of
+ * remaining path components and consumes any slashes that follow.
+ * If not a link, it's moved to output; if a link, contents are
+ * pushed to the stack. */
+restart:
+ for (; ; p+=slash_len(stack+p)) {
+ /* If stack starts with /, the whole component is / or //
+ * and the output state must be reset. */
+ if (stack[p] == '/') {
+ check_dir=0;
+ nup=0;
+ q=0;
+ output[q++] = '/';
+ p++;
+ /* Initial // is special. */
+ if (stack[p] == '/' && stack[p+1] != '/')
+ output[q++] = '/';
+ continue;
+ }
- r = readlink(buf, tmp, sizeof tmp - 1);
- if (r < 0) goto err;
- tmp[r] = 0;
+ char *z = __strchrnul(stack+p, '/');
+ l0 = l = z-(stack+p);
- fstat(fd, &st1);
- r = stat(tmp, &st2);
- if (r<0 || st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) {
- if (!r) errno = ELOOP;
- goto err;
+ if (!l && !check_dir) break;
+
+ /* Skip any . component but preserve check_dir status. */
+ if (l==1 && stack[p]=='.') {
+ p += l;
+ continue;
+ }
+
+ /* Copy next component onto output at least temporarily, to
+ * call readlink, but wait to advance output position until
+ * determining it's not a link. */
+ if (q && output[q-1] != '/') {
+ if (!p) goto toolong;
+ stack[--p] = '/';
+ l++;
+ }
+ if (q+l >= PATH_MAX) goto toolong;
+ memcpy(output+q, stack+p, l);
+ output[q+l] = 0;
+ p += l;
+
+ int up = 0;
+ if (l0==2 && stack[p-2]=='.' && stack[p-1]=='.') {
+ up = 1;
+ /* Any non-.. path components we could cancel start
+ * after nup repetitions of the 3-byte string "../";
+ * if there are none, accumulate .. components to
+ * later apply to cwd, if needed. */
+ if (q <= 3*nup) {
+ nup++;
+ q += l;
+ continue;
+ }
+ /* When previous components are already known to be
+ * directories, processing .. can skip readlink. */
+ if (!check_dir) goto skip_readlink;
+ }
+ ssize_t k = readlink(output, stack, p);
+ if (k==p) goto toolong;
+ if (!k) {
+ errno = ENOENT;
+ return 0;
+ }
+ if (k<0) {
+ if (errno != EINVAL) return 0;
+skip_readlink:
+ check_dir = 0;
+ if (up) {
+ while(q && output[q-1]!='/') q--;
+ if (q>1 && (q>2 || output[0]!='/')) q--;
+ continue;
+ }
+ if (l0) q += l;
+ check_dir = stack[p];
+ continue;
+ }
+ if (++cnt == SYMLOOP_MAX) {
+ errno = ELOOP;
+ return 0;
+ }
+
+ /* If link contents end in /, strip any slashes already on
+ * stack to avoid /->// or //->/// or spurious toolong. */
+ if (stack[k-1]=='/') while (stack[p]=='/') p++;
+ p -= k;
+ memmove(stack+p, stack, k);
+
+ /* Skip the stack advancement in case we have a new
+ * absolute base path. */
+ goto restart;
}
- __syscall(SYS_close, fd);
- return resolved ? strcpy(resolved, tmp) : strdup(tmp);
-err:
- __syscall(SYS_close, fd);
+ output[q] = 0;
+
+ if (output[0] != '/') {
+ if (!getcwd(stack, sizeof stack)) return 0;
+ l = strlen(stack);
+ /* Cancel any initial .. components. */
+ p = 0;
+ while (nup--) {
+ while(l>1 && stack[l-1]!='/') l--;
+ if (l>1) l--;
+ p += 2;
+ if (p= PATH_MAX) goto toolong;
+ memmove(output + l, output + p, q - p + 1);
+ memcpy(output, stack, l);
+ q = l + q-p;
+ }
+
+ if (resolved) return memcpy(resolved, output, q+1);
+ else return strdup(output);
+
+toolong:
+ errno = ENAMETOOLONG;
return 0;
}
diff --git a/lib/libc/musl/src/misc/setrlimit.c b/lib/libc/musl/src/misc/setrlimit.c
index 7a66ab2975..8340aee096 100644
--- a/lib/libc/musl/src/misc/setrlimit.c
+++ b/lib/libc/musl/src/misc/setrlimit.c
@@ -6,25 +6,8 @@
#define MIN(a, b) ((a)<(b) ? (a) : (b))
#define FIX(x) do{ if ((x)>=SYSCALL_RLIM_INFINITY) (x)=RLIM_INFINITY; }while(0)
-static int __setrlimit(int resource, const struct rlimit *rlim)
-{
- unsigned long k_rlim[2];
- struct rlimit tmp;
- if (SYSCALL_RLIM_INFINITY != RLIM_INFINITY) {
- tmp = *rlim;
- FIX(tmp.rlim_cur);
- FIX(tmp.rlim_max);
- rlim = &tmp;
- }
- int ret = __syscall(SYS_prlimit64, 0, resource, rlim, 0);
- if (ret != -ENOSYS) return ret;
- k_rlim[0] = MIN(rlim->rlim_cur, MIN(-1UL, SYSCALL_RLIM_INFINITY));
- k_rlim[1] = MIN(rlim->rlim_max, MIN(-1UL, SYSCALL_RLIM_INFINITY));
- return __syscall(SYS_setrlimit, resource, k_rlim);
-}
-
struct ctx {
- const struct rlimit *rlim;
+ unsigned long lim[2];
int res;
int err;
};
@@ -33,12 +16,26 @@ static void do_setrlimit(void *p)
{
struct ctx *c = p;
if (c->err>0) return;
- c->err = -__setrlimit(c->res, c->rlim);
+ c->err = -__syscall(SYS_setrlimit, c->res, c->lim);
}
int setrlimit(int resource, const struct rlimit *rlim)
{
- struct ctx c = { .res = resource, .rlim = rlim, .err = -1 };
+ struct rlimit tmp;
+ if (SYSCALL_RLIM_INFINITY != RLIM_INFINITY) {
+ tmp = *rlim;
+ FIX(tmp.rlim_cur);
+ FIX(tmp.rlim_max);
+ rlim = &tmp;
+ }
+ int ret = __syscall(SYS_prlimit64, 0, resource, rlim, 0);
+ if (ret != -ENOSYS) return __syscall_ret(ret);
+
+ struct ctx c = {
+ .lim[0] = MIN(rlim->rlim_cur, MIN(-1UL, SYSCALL_RLIM_INFINITY)),
+ .lim[1] = MIN(rlim->rlim_max, MIN(-1UL, SYSCALL_RLIM_INFINITY)),
+ .res = resource, .err = -1
+ };
__synccall(do_setrlimit, &c);
if (c.err) {
if (c.err>0) errno = c.err;
diff --git a/lib/libc/musl/src/misc/syslog.c b/lib/libc/musl/src/misc/syslog.c
index 13d4b0a6d7..7dc0c1be50 100644
--- a/lib/libc/musl/src/misc/syslog.c
+++ b/lib/libc/musl/src/misc/syslog.c
@@ -10,6 +10,7 @@
#include
#include
#include "lock.h"
+#include "fork_impl.h"
static volatile int lock[1];
static char log_ident[32];
@@ -17,6 +18,7 @@ static int log_opt;
static int log_facility = LOG_USER;
static int log_mask = 0xff;
static int log_fd = -1;
+volatile int *const __syslog_lockptr = lock;
int setlogmask(int maskpri)
{
diff --git a/lib/libc/musl/src/multibyte/wcsnrtombs.c b/lib/libc/musl/src/multibyte/wcsnrtombs.c
index 676932b5dc..95e25e708d 100644
--- a/lib/libc/musl/src/multibyte/wcsnrtombs.c
+++ b/lib/libc/musl/src/multibyte/wcsnrtombs.c
@@ -1,41 +1,33 @@
#include
+#include
+#include
size_t wcsnrtombs(char *restrict dst, const wchar_t **restrict wcs, size_t wn, size_t n, mbstate_t *restrict st)
{
- size_t l, cnt=0, n2;
- char *s, buf[256];
const wchar_t *ws = *wcs;
- const wchar_t *tmp_ws;
-
- if (!dst) s = buf, n = sizeof buf;
- else s = dst;
-
- while ( ws && n && ( (n2=wn)>=n || n2>32 ) ) {
- if (n2>=n) n2=n;
- tmp_ws = ws;
- l = wcsrtombs(s, &ws, n2, 0);
- if (!(l+1)) {
- cnt = l;
- n = 0;
+ size_t cnt = 0;
+ if (!dst) n=0;
+ while (ws && wn) {
+ char tmp[MB_LEN_MAX];
+ size_t l = wcrtomb(nn) break;
+ memcpy(dst, tmp, l);
+ }
+ dst += l;
n -= l;
}
- wn = ws ? wn - (ws - tmp_ws) : 0;
- cnt += l;
- }
- if (ws) while (n && wn) {
- l = wcrtomb(s, *ws, 0);
- if ((l+1)<=1) {
- if (!l) ws = 0;
- else cnt = l;
+ if (!*ws) {
+ ws = 0;
break;
}
- ws++; wn--;
- /* safe - this loop runs fewer than sizeof(buf) times */
- s+=l; n-=l;
+ ws++;
+ wn--;
cnt += l;
}
if (dst) *wcs = ws;
diff --git a/lib/libc/musl/src/network/h_errno.c b/lib/libc/musl/src/network/h_errno.c
index 4f700ceaf1..638f771803 100644
--- a/lib/libc/musl/src/network/h_errno.c
+++ b/lib/libc/musl/src/network/h_errno.c
@@ -1,9 +1,11 @@
#include
+#include "pthread_impl.h"
#undef h_errno
int h_errno;
int *__h_errno_location(void)
{
- return &h_errno;
+ if (!__pthread_self()->stack) return &h_errno;
+ return &__pthread_self()->h_errno_val;
}
diff --git a/lib/libc/musl/src/network/herror.c b/lib/libc/musl/src/network/herror.c
index 65f25ff3f4..87f8cff4fd 100644
--- a/lib/libc/musl/src/network/herror.c
+++ b/lib/libc/musl/src/network/herror.c
@@ -4,5 +4,5 @@
void herror(const char *msg)
{
- fprintf(stderr, "%s%s%s", msg?msg:"", msg?": ":"", hstrerror(h_errno));
+ fprintf(stderr, "%s%s%s\n", msg?msg:"", msg?": ":"", hstrerror(h_errno));
}
diff --git a/lib/libc/musl/src/network/lookup_name.c b/lib/libc/musl/src/network/lookup_name.c
index aae0d95a04..aa558c197a 100644
--- a/lib/libc/musl/src/network/lookup_name.c
+++ b/lib/libc/musl/src/network/lookup_name.c
@@ -50,7 +50,7 @@ static int name_from_hosts(struct address buf[static MAXADDRS], char canon[stati
{
char line[512];
size_t l = strlen(name);
- int cnt = 0, badfam = 0;
+ int cnt = 0, badfam = 0, have_canon = 0;
unsigned char _buf[1032];
FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
if (!f) switch (errno) {
@@ -80,14 +80,19 @@ static int name_from_hosts(struct address buf[static MAXADDRS], char canon[stati
continue;
default:
badfam = EAI_NONAME;
- continue;
+ break;
}
+ if (have_canon) continue;
+
/* Extract first name as canonical name */
for (; *p && isspace(*p); p++);
for (z=p; *z && !isspace(*z); z++);
*z = 0;
- if (is_valid_hostname(p)) memcpy(canon, p, z-p+1);
+ if (is_valid_hostname(p)) {
+ have_canon = 1;
+ memcpy(canon, p, z-p+1);
+ }
}
__fclose_ca(f);
return cnt ? cnt : badfam;
diff --git a/lib/libc/musl/src/network/res_query.c b/lib/libc/musl/src/network/res_query.c
index 2f4da2e2e7..506dc23126 100644
--- a/lib/libc/musl/src/network/res_query.c
+++ b/lib/libc/musl/src/network/res_query.c
@@ -1,3 +1,4 @@
+#define _BSD_SOURCE
#include
#include
@@ -6,7 +7,20 @@ int res_query(const char *name, int class, int type, unsigned char *dest, int le
unsigned char q[280];
int ql = __res_mkquery(0, name, class, type, 0, 0, 0, q, sizeof q);
if (ql < 0) return ql;
- return __res_send(q, ql, dest, len);
+ int r = __res_send(q, ql, dest, len);
+ if (r<12) {
+ h_errno = TRY_AGAIN;
+ return -1;
+ }
+ if ((dest[3] & 15) == 3) {
+ h_errno = HOST_NOT_FOUND;
+ return -1;
+ }
+ if ((dest[3] & 15) == 0 && !dest[6] && !dest[7]) {
+ h_errno = NO_DATA;
+ return -1;
+ }
+ return r;
}
weak_alias(res_query, res_search);
diff --git a/lib/libc/musl/src/passwd/getgrouplist.c b/lib/libc/musl/src/passwd/getgrouplist.c
index 43e518245f..301824cec5 100644
--- a/lib/libc/musl/src/passwd/getgrouplist.c
+++ b/lib/libc/musl/src/passwd/getgrouplist.c
@@ -31,7 +31,8 @@ int getgrouplist(const char *user, gid_t gid, gid_t *groups, int *ngroups)
if (resp[INITGRFOUND]) {
nscdbuf = calloc(resp[INITGRNGRPS], sizeof(uint32_t));
if (!nscdbuf) goto cleanup;
- if (!fread(nscdbuf, sizeof(*nscdbuf)*resp[INITGRNGRPS], 1, f)) {
+ size_t nbytes = sizeof(*nscdbuf)*resp[INITGRNGRPS];
+ if (nbytes && !fread(nscdbuf, nbytes, 1, f)) {
if (!ferror(f)) errno = EIO;
goto cleanup;
}
diff --git a/lib/libc/musl/src/prng/random.c b/lib/libc/musl/src/prng/random.c
index 633a17f690..d3780fa7ea 100644
--- a/lib/libc/musl/src/prng/random.c
+++ b/lib/libc/musl/src/prng/random.c
@@ -1,6 +1,7 @@
#include
#include
#include "lock.h"
+#include "fork_impl.h"
/*
this code uses the same lagged fibonacci generator as the
@@ -23,6 +24,7 @@ static int i = 3;
static int j = 0;
static uint32_t *x = init+1;
static volatile int lock[1];
+volatile int *const __random_lockptr = lock;
static uint32_t lcg31(uint32_t x) {
return (1103515245*x + 12345) & 0x7fffffff;
diff --git a/lib/libc/musl/src/process/_Fork.c b/lib/libc/musl/src/process/_Fork.c
new file mode 100644
index 0000000000..da06386815
--- /dev/null
+++ b/lib/libc/musl/src/process/_Fork.c
@@ -0,0 +1,38 @@
+#include
+#include
+#include "syscall.h"
+#include "libc.h"
+#include "lock.h"
+#include "pthread_impl.h"
+#include "aio_impl.h"
+
+static void dummy(int x) { }
+weak_alias(dummy, __aio_atfork);
+
+pid_t _Fork(void)
+{
+ pid_t ret;
+ sigset_t set;
+ __block_all_sigs(&set);
+ __aio_atfork(-1);
+ LOCK(__abort_lock);
+#ifdef SYS_fork
+ ret = __syscall(SYS_fork);
+#else
+ ret = __syscall(SYS_clone, SIGCHLD, 0);
+#endif
+ if (!ret) {
+ pthread_t self = __pthread_self();
+ self->tid = __syscall(SYS_gettid);
+ self->robust_list.off = 0;
+ self->robust_list.pending = 0;
+ self->next = self->prev = self;
+ __thread_list_lock = 0;
+ libc.threads_minus_1 = 0;
+ if (libc.need_locks) libc.need_locks = -1;
+ }
+ UNLOCK(__abort_lock);
+ __aio_atfork(!ret);
+ __restore_sigs(&set);
+ return __syscall_ret(ret);
+}
diff --git a/lib/libc/musl/src/process/fork.c b/lib/libc/musl/src/process/fork.c
index 7e984ff8c3..54bc289202 100644
--- a/lib/libc/musl/src/process/fork.c
+++ b/lib/libc/musl/src/process/fork.c
@@ -1,38 +1,86 @@
#include
-#include
-#include
-#include "syscall.h"
+#include
#include "libc.h"
+#include "lock.h"
#include "pthread_impl.h"
+#include "fork_impl.h"
-static void dummy(int x)
-{
-}
+static volatile int *const dummy_lockptr = 0;
+weak_alias(dummy_lockptr, __at_quick_exit_lockptr);
+weak_alias(dummy_lockptr, __atexit_lockptr);
+weak_alias(dummy_lockptr, __dlerror_lockptr);
+weak_alias(dummy_lockptr, __gettext_lockptr);
+weak_alias(dummy_lockptr, __locale_lockptr);
+weak_alias(dummy_lockptr, __random_lockptr);
+weak_alias(dummy_lockptr, __sem_open_lockptr);
+weak_alias(dummy_lockptr, __stdio_ofl_lockptr);
+weak_alias(dummy_lockptr, __syslog_lockptr);
+weak_alias(dummy_lockptr, __timezone_lockptr);
+weak_alias(dummy_lockptr, __bump_lockptr);
+
+weak_alias(dummy_lockptr, __vmlock_lockptr);
+
+static volatile int *const *const atfork_locks[] = {
+ &__at_quick_exit_lockptr,
+ &__atexit_lockptr,
+ &__dlerror_lockptr,
+ &__gettext_lockptr,
+ &__locale_lockptr,
+ &__random_lockptr,
+ &__sem_open_lockptr,
+ &__stdio_ofl_lockptr,
+ &__syslog_lockptr,
+ &__timezone_lockptr,
+ &__bump_lockptr,
+};
+
+static void dummy(int x) { }
weak_alias(dummy, __fork_handler);
+weak_alias(dummy, __malloc_atfork);
+weak_alias(dummy, __ldso_atfork);
+
+static void dummy_0(void) { }
+weak_alias(dummy_0, __tl_lock);
+weak_alias(dummy_0, __tl_unlock);
pid_t fork(void)
{
- pid_t ret;
sigset_t set;
__fork_handler(-1);
- __block_all_sigs(&set);
-#ifdef SYS_fork
- ret = __syscall(SYS_fork);
-#else
- ret = __syscall(SYS_clone, SIGCHLD, 0);
-#endif
- if (!ret) {
- pthread_t self = __pthread_self();
- self->tid = __syscall(SYS_gettid);
- self->robust_list.off = 0;
- self->robust_list.pending = 0;
- self->next = self->prev = self;
- __thread_list_lock = 0;
- libc.threads_minus_1 = 0;
- if (libc.need_locks) libc.need_locks = -1;
+ __block_app_sigs(&set);
+ int need_locks = libc.need_locks > 0;
+ if (need_locks) {
+ __ldso_atfork(-1);
+ __inhibit_ptc();
+ for (int i=0; inext;
+ pid_t ret = _Fork();
+ int errno_save = errno;
+ if (need_locks) {
+ if (!ret) {
+ for (pthread_t td=next; td!=self; td=td->next)
+ td->tid = -1;
+ if (__vmlock_lockptr) {
+ __vmlock_lockptr[0] = 0;
+ __vmlock_lockptr[1] = 0;
+ }
+ }
+ __tl_unlock();
+ __malloc_atfork(!ret);
+ for (int i=0; i
#include
#include "syscall.h"
+#include "lock.h"
#include "pthread_impl.h"
#include "fdop.h"
@@ -170,9 +171,6 @@ int posix_spawn(pid_t *restrict res, const char *restrict path,
int ec=0, cs;
struct args args;
- if (pipe2(args.p, O_CLOEXEC))
- return errno;
-
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
args.path = path;
@@ -182,9 +180,20 @@ int posix_spawn(pid_t *restrict res, const char *restrict path,
args.envp = envp;
pthread_sigmask(SIG_BLOCK, SIGALL_SET, &args.oldmask);
+ /* The lock guards both against seeing a SIGABRT disposition change
+ * by abort and against leaking the pipe fd to fork-without-exec. */
+ LOCK(__abort_lock);
+
+ if (pipe2(args.p, O_CLOEXEC)) {
+ UNLOCK(__abort_lock);
+ ec = errno;
+ goto fail;
+ }
+
pid = __clone(child, stack+sizeof stack,
CLONE_VM|CLONE_VFORK|SIGCHLD, &args);
close(args.p[1]);
+ UNLOCK(__abort_lock);
if (pid > 0) {
if (read(args.p[0], &ec, sizeof ec) != sizeof ec) ec = 0;
@@ -197,6 +206,7 @@ int posix_spawn(pid_t *restrict res, const char *restrict path,
if (!ec && res) *res = pid;
+fail:
pthread_sigmask(SIG_SETMASK, &args.oldmask, 0);
pthread_setcancelstate(cs, 0);
diff --git a/lib/libc/musl/src/setjmp/aarch64/longjmp.s b/lib/libc/musl/src/setjmp/aarch64/longjmp.s
index 7c4655fa96..0af9c50ee5 100644
--- a/lib/libc/musl/src/setjmp/aarch64/longjmp.s
+++ b/lib/libc/musl/src/setjmp/aarch64/longjmp.s
@@ -18,7 +18,6 @@ longjmp:
ldp d12, d13, [x0,#144]
ldp d14, d15, [x0,#160]
- mov x0, x1
- cbnz x1, 1f
- mov x0, #1
-1: br x30
+ cmp w1, 0
+ csinc w0, w1, wzr, ne
+ br x30
diff --git a/lib/libc/musl/src/setjmp/i386/longjmp.s b/lib/libc/musl/src/setjmp/i386/longjmp.s
index 772d28ddb2..8188f06bcd 100644
--- a/lib/libc/musl/src/setjmp/i386/longjmp.s
+++ b/lib/libc/musl/src/setjmp/i386/longjmp.s
@@ -6,15 +6,11 @@ _longjmp:
longjmp:
mov 4(%esp),%edx
mov 8(%esp),%eax
- test %eax,%eax
- jnz 1f
- inc %eax
-1:
+ cmp $1,%eax
+ adc $0, %al
mov (%edx),%ebx
mov 4(%edx),%esi
mov 8(%edx),%edi
mov 12(%edx),%ebp
- mov 16(%edx),%ecx
- mov %ecx,%esp
- mov 20(%edx),%ecx
- jmp *%ecx
+ mov 16(%edx),%esp
+ jmp *20(%edx)
diff --git a/lib/libc/musl/src/setjmp/x32/longjmp.s b/lib/libc/musl/src/setjmp/x32/longjmp.s
index e175a4b960..1b2661c3e5 100644
--- a/lib/libc/musl/src/setjmp/x32/longjmp.s
+++ b/lib/libc/musl/src/setjmp/x32/longjmp.s
@@ -5,18 +5,14 @@
.type longjmp,@function
_longjmp:
longjmp:
- mov %rsi,%rax /* val will be longjmp return */
- test %rax,%rax
- jnz 1f
- inc %rax /* if val==0, val=1 per longjmp semantics */
-1:
+ xor %eax,%eax
+ cmp $1,%esi /* CF = val ? 0 : 1 */
+ adc %esi,%eax /* eax = val + !val */
mov (%rdi),%rbx /* rdi is the jmp_buf, restore regs from it */
mov 8(%rdi),%rbp
mov 16(%rdi),%r12
mov 24(%rdi),%r13
mov 32(%rdi),%r14
mov 40(%rdi),%r15
- mov 48(%rdi),%rdx /* this ends up being the stack pointer */
- mov %rdx,%rsp
- mov 56(%rdi),%rdx /* this is the instruction pointer */
- jmp *%rdx /* goto saved address without altering rsp */
+ mov 48(%rdi),%rsp
+ jmp *56(%rdi) /* goto saved address without altering rsp */
diff --git a/lib/libc/musl/src/setjmp/x32/setjmp.s b/lib/libc/musl/src/setjmp/x32/setjmp.s
index 98f58b8d65..d95e485355 100644
--- a/lib/libc/musl/src/setjmp/x32/setjmp.s
+++ b/lib/libc/musl/src/setjmp/x32/setjmp.s
@@ -18,5 +18,5 @@ setjmp:
mov %rdx,48(%rdi)
mov (%rsp),%rdx /* save return addr ptr for new rip */
mov %rdx,56(%rdi)
- xor %rax,%rax /* always return 0 */
+ xor %eax,%eax /* always return 0 */
ret
diff --git a/lib/libc/musl/src/setjmp/x86_64/longjmp.s b/lib/libc/musl/src/setjmp/x86_64/longjmp.s
index e175a4b960..1b2661c3e5 100644
--- a/lib/libc/musl/src/setjmp/x86_64/longjmp.s
+++ b/lib/libc/musl/src/setjmp/x86_64/longjmp.s
@@ -5,18 +5,14 @@
.type longjmp,@function
_longjmp:
longjmp:
- mov %rsi,%rax /* val will be longjmp return */
- test %rax,%rax
- jnz 1f
- inc %rax /* if val==0, val=1 per longjmp semantics */
-1:
+ xor %eax,%eax
+ cmp $1,%esi /* CF = val ? 0 : 1 */
+ adc %esi,%eax /* eax = val + !val */
mov (%rdi),%rbx /* rdi is the jmp_buf, restore regs from it */
mov 8(%rdi),%rbp
mov 16(%rdi),%r12
mov 24(%rdi),%r13
mov 32(%rdi),%r14
mov 40(%rdi),%r15
- mov 48(%rdi),%rdx /* this ends up being the stack pointer */
- mov %rdx,%rsp
- mov 56(%rdi),%rdx /* this is the instruction pointer */
- jmp *%rdx /* goto saved address without altering rsp */
+ mov 48(%rdi),%rsp
+ jmp *56(%rdi) /* goto saved address without altering rsp */
diff --git a/lib/libc/musl/src/setjmp/x86_64/setjmp.s b/lib/libc/musl/src/setjmp/x86_64/setjmp.s
index 98f58b8d65..d95e485355 100644
--- a/lib/libc/musl/src/setjmp/x86_64/setjmp.s
+++ b/lib/libc/musl/src/setjmp/x86_64/setjmp.s
@@ -18,5 +18,5 @@ setjmp:
mov %rdx,48(%rdi)
mov (%rsp),%rdx /* save return addr ptr for new rip */
mov %rdx,56(%rdi)
- xor %rax,%rax /* always return 0 */
+ xor %eax,%eax /* always return 0 */
ret
diff --git a/lib/libc/musl/src/signal/sigaction.c b/lib/libc/musl/src/signal/sigaction.c
index c109bea0cf..2203471b24 100644
--- a/lib/libc/musl/src/signal/sigaction.c
+++ b/lib/libc/musl/src/signal/sigaction.c
@@ -7,12 +7,6 @@
#include "lock.h"
#include "ksigaction.h"
-static volatile int dummy_lock[1] = { 0 };
-
-extern hidden volatile int __abort_lock[1];
-
-weak_alias(dummy_lock, __abort_lock);
-
static int unmask_done;
static unsigned long handler_set[_NSIG/(8*sizeof(long))];
@@ -26,7 +20,6 @@ volatile int __eintr_valid_flag;
int __libc_sigaction(int sig, const struct sigaction *restrict sa, struct sigaction *restrict old)
{
struct k_sigaction ksa, ksa_old;
- unsigned long set[_NSIG/(8*sizeof(long))];
if (sa) {
if ((uintptr_t)sa->sa_handler > 1UL) {
a_or_l(handler_set+(sig-1)/(8*sizeof(long)),
@@ -50,24 +43,12 @@ int __libc_sigaction(int sig, const struct sigaction *restrict sa, struct sigact
a_store(&__eintr_valid_flag, 1);
}
}
- /* Changing the disposition of SIGABRT to anything but
- * SIG_DFL requires a lock, so that it cannot be changed
- * while abort is terminating the process after simply
- * calling raise(SIGABRT) failed to do so. */
- if (sa->sa_handler != SIG_DFL && sig == SIGABRT) {
- __block_all_sigs(&set);
- LOCK(__abort_lock);
- }
ksa.handler = sa->sa_handler;
ksa.flags = sa->sa_flags | SA_RESTORER;
ksa.restorer = (sa->sa_flags & SA_SIGINFO) ? __restore_rt : __restore;
memcpy(&ksa.mask, &sa->sa_mask, _NSIG/8);
}
int r = __syscall(SYS_rt_sigaction, sig, sa?&ksa:0, old?&ksa_old:0, _NSIG/8);
- if (sig == SIGABRT && sa && sa->sa_handler != SIG_DFL) {
- UNLOCK(__abort_lock);
- __restore_sigs(&set);
- }
if (old && !r) {
old->sa_handler = ksa_old.handler;
old->sa_flags = ksa_old.flags;
@@ -78,11 +59,26 @@ int __libc_sigaction(int sig, const struct sigaction *restrict sa, struct sigact
int __sigaction(int sig, const struct sigaction *restrict sa, struct sigaction *restrict old)
{
+ unsigned long set[_NSIG/(8*sizeof(long))];
+
if (sig-32U < 3 || sig-1U >= _NSIG-1) {
errno = EINVAL;
return -1;
}
- return __libc_sigaction(sig, sa, old);
+
+ /* Doing anything with the disposition of SIGABRT requires a lock,
+ * so that it cannot be changed while abort is terminating the
+ * process and so any change made by abort can't be observed. */
+ if (sig == SIGABRT) {
+ __block_all_sigs(&set);
+ LOCK(__abort_lock);
+ }
+ int r = __libc_sigaction(sig, sa, old);
+ if (sig == SIGABRT) {
+ UNLOCK(__abort_lock);
+ __restore_sigs(&set);
+ }
+ return r;
}
weak_alias(__sigaction, sigaction);
diff --git a/lib/libc/musl/src/stdio/__stdio_close.c b/lib/libc/musl/src/stdio/__stdio_close.c
index 79452bdb64..3029132851 100644
--- a/lib/libc/musl/src/stdio/__stdio_close.c
+++ b/lib/libc/musl/src/stdio/__stdio_close.c
@@ -1,4 +1,5 @@
#include "stdio_impl.h"
+#include "aio_impl.h"
static int dummy(int fd)
{
diff --git a/lib/libc/musl/src/stdio/ofl.c b/lib/libc/musl/src/stdio/ofl.c
index f2d3215a9e..aad3d171df 100644
--- a/lib/libc/musl/src/stdio/ofl.c
+++ b/lib/libc/musl/src/stdio/ofl.c
@@ -1,8 +1,10 @@
#include "stdio_impl.h"
#include "lock.h"
+#include "fork_impl.h"
static FILE *ofl_head;
static volatile int ofl_lock[1];
+volatile int *const __stdio_ofl_lockptr = ofl_lock;
FILE **__ofl_lock()
{
diff --git a/lib/libc/musl/src/string/strstr.c b/lib/libc/musl/src/string/strstr.c
index 43a0207a72..96657bc231 100644
--- a/lib/libc/musl/src/string/strstr.c
+++ b/lib/libc/musl/src/string/strstr.c
@@ -96,7 +96,7 @@ static char *twoway_strstr(const unsigned char *h, const unsigned char *n)
for (;;) {
/* Update incremental end-of-haystack pointer */
if (z-h < l) {
- /* Fast estimate for MIN(l,63) */
+ /* Fast estimate for MAX(l,63) */
size_t grow = l | 63;
const unsigned char *z2 = memchr(z, 0, grow);
if (z2) {
diff --git a/lib/libc/musl/src/termios/tcgetwinsize.c b/lib/libc/musl/src/termios/tcgetwinsize.c
new file mode 100644
index 0000000000..9b3a65a40d
--- /dev/null
+++ b/lib/libc/musl/src/termios/tcgetwinsize.c
@@ -0,0 +1,8 @@
+#include
+#include
+#include "syscall.h"
+
+int tcgetwinsize(int fd, struct winsize *wsz)
+{
+ return syscall(SYS_ioctl, fd, TIOCGWINSZ, wsz);
+}
diff --git a/lib/libc/musl/src/termios/tcsetwinsize.c b/lib/libc/musl/src/termios/tcsetwinsize.c
new file mode 100644
index 0000000000..e01d0e2546
--- /dev/null
+++ b/lib/libc/musl/src/termios/tcsetwinsize.c
@@ -0,0 +1,8 @@
+#include
+#include
+#include "syscall.h"
+
+int tcsetwinsize(int fd, const struct winsize *wsz)
+{
+ return syscall(SYS_ioctl, fd, TIOCSWINSZ, wsz);
+}
diff --git a/lib/libc/musl/src/thread/i386/__set_thread_area.s b/lib/libc/musl/src/thread/i386/__set_thread_area.s
index c2c21dd5d6..aa6852beb6 100644
--- a/lib/libc/musl/src/thread/i386/__set_thread_area.s
+++ b/lib/libc/musl/src/thread/i386/__set_thread_area.s
@@ -28,6 +28,7 @@ __set_thread_area:
ret
2:
mov %ebx,%ecx
+ xor %eax,%eax
xor %ebx,%ebx
xor %edx,%edx
mov %ebx,(%esp)
diff --git a/lib/libc/musl/src/thread/pthread_attr_get.c b/lib/libc/musl/src/thread/pthread_attr_get.c
index 4aa5afdb28..f12ff44254 100644
--- a/lib/libc/musl/src/thread/pthread_attr_get.c
+++ b/lib/libc/musl/src/thread/pthread_attr_get.c
@@ -70,7 +70,7 @@ int pthread_condattr_getpshared(const pthread_condattr_t *restrict a, int *restr
int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict a, int *restrict protocol)
{
- *protocol = PTHREAD_PRIO_NONE;
+ *protocol = a->__attr / 8U % 2;
return 0;
}
int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict a, int *restrict pshared)
diff --git a/lib/libc/musl/src/thread/pthread_cond_timedwait.c b/lib/libc/musl/src/thread/pthread_cond_timedwait.c
index d15012406d..6b761455c4 100644
--- a/lib/libc/musl/src/thread/pthread_cond_timedwait.c
+++ b/lib/libc/musl/src/thread/pthread_cond_timedwait.c
@@ -146,14 +146,18 @@ relock:
if (oldstate == WAITING) goto done;
- if (!node.next) a_inc(&m->_m_waiters);
+ if (!node.next && !(m->_m_type & 8))
+ a_inc(&m->_m_waiters);
/* Unlock the barrier that's holding back the next waiter, and
* either wake it or requeue it to the mutex. */
- if (node.prev)
- unlock_requeue(&node.prev->barrier, &m->_m_lock, m->_m_type & 128);
- else
- a_dec(&m->_m_waiters);
+ if (node.prev) {
+ int val = m->_m_lock;
+ if (val>0) a_cas(&m->_m_lock, val, val|0x80000000);
+ unlock_requeue(&node.prev->barrier, &m->_m_lock, m->_m_type & (8|128));
+ } else if (!(m->_m_type & 8)) {
+ a_dec(&m->_m_waiters);
+ }
/* Since a signal was consumed, cancellation is not permitted. */
if (e == ECANCELED) e = 0;
diff --git a/lib/libc/musl/src/thread/pthread_create.c b/lib/libc/musl/src/thread/pthread_create.c
index 10f1b7d8cd..6f187ee89d 100644
--- a/lib/libc/musl/src/thread/pthread_create.c
+++ b/lib/libc/musl/src/thread/pthread_create.c
@@ -69,12 +69,25 @@ _Noreturn void __pthread_exit(void *result)
__pthread_tsd_run_dtors();
+ __block_app_sigs(&set);
+
+ /* This atomic potentially competes with a concurrent pthread_detach
+ * call; the loser is responsible for freeing thread resources. */
+ int state = a_cas(&self->detach_state, DT_JOINABLE, DT_EXITING);
+
+ if (state==DT_DETACHED && self->map_base) {
+ /* Since __unmapself bypasses the normal munmap code path,
+ * explicitly wait for vmlock holders first. This must be
+ * done before any locks are taken, to avoid lock ordering
+ * issues that could lead to deadlock. */
+ __vm_wait();
+ }
+
/* Access to target the exiting thread with syscalls that use
* its kernel tid is controlled by killlock. For detached threads,
* any use past this point would have undefined behavior, but for
* joinable threads it's a valid usage that must be handled.
* Signals must be blocked since pthread_kill must be AS-safe. */
- __block_app_sigs(&set);
LOCK(self->killlock);
/* The thread list lock must be AS-safe, and thus depends on
@@ -87,6 +100,7 @@ _Noreturn void __pthread_exit(void *result)
if (self->next == self) {
__tl_unlock();
UNLOCK(self->killlock);
+ self->detach_state = state;
__restore_sigs(&set);
exit(0);
}
@@ -125,10 +139,6 @@ _Noreturn void __pthread_exit(void *result)
self->prev->next = self->next;
self->prev = self->next = self;
- /* This atomic potentially competes with a concurrent pthread_detach
- * call; the loser is responsible for freeing thread resources. */
- int state = a_cas(&self->detach_state, DT_JOINABLE, DT_EXITING);
-
if (state==DT_DETACHED && self->map_base) {
/* Detached threads must block even implementation-internal
* signals, since they will not have a stack in their last
@@ -140,16 +150,13 @@ _Noreturn void __pthread_exit(void *result)
if (self->robust_list.off)
__syscall(SYS_set_robust_list, 0, 3*sizeof(long));
- /* Since __unmapself bypasses the normal munmap code path,
- * explicitly wait for vmlock holders first. */
- __vm_wait();
-
/* The following call unmaps the thread's stack mapping
* and then exits without touching the stack. */
__unmapself(self->map_base, self->map_size);
}
/* Wake any joiner. */
+ a_store(&self->detach_state, DT_EXITED);
__wake(&self->detach_state, 1, 1);
/* After the kernel thread exits, its tid may be reused. Clear it
@@ -314,7 +321,7 @@ int __pthread_create(pthread_t *restrict res, const pthread_attr_t *restrict att
new->detach_state = DT_JOINABLE;
}
new->robust_list.head = &new->robust_list.head;
- new->CANARY = self->CANARY;
+ new->canary = self->canary;
new->sysinfo = self->sysinfo;
/* Setup argument structure for the new thread on its stack.
diff --git a/lib/libc/musl/src/thread/pthread_mutex_destroy.c b/lib/libc/musl/src/thread/pthread_mutex_destroy.c
index 6d49e68989..8d1bf77b87 100644
--- a/lib/libc/musl/src/thread/pthread_mutex_destroy.c
+++ b/lib/libc/musl/src/thread/pthread_mutex_destroy.c
@@ -1,6 +1,10 @@
-#include
+#include "pthread_impl.h"
int pthread_mutex_destroy(pthread_mutex_t *mutex)
{
+ /* If the mutex being destroyed is process-shared and has nontrivial
+ * type (tracking ownership), it might be in the pending slot of a
+ * robust_list; wait for quiescence. */
+ if (mutex->_m_type > 128) __vm_wait();
return 0;
}
diff --git a/lib/libc/musl/src/thread/pthread_mutexattr_setprotocol.c b/lib/libc/musl/src/thread/pthread_mutexattr_setprotocol.c
index 511cc32d8f..8b80c1ce9b 100644
--- a/lib/libc/musl/src/thread/pthread_mutexattr_setprotocol.c
+++ b/lib/libc/musl/src/thread/pthread_mutexattr_setprotocol.c
@@ -1,24 +1,23 @@
#include "pthread_impl.h"
#include "syscall.h"
-static pthread_once_t check_pi_once;
-static int check_pi_result;
-
-static void check_pi()
-{
- volatile int lk = 0;
- check_pi_result = -__syscall(SYS_futex, &lk, FUTEX_LOCK_PI, 0, 0);
-}
+static volatile int check_pi_result = -1;
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *a, int protocol)
{
+ int r;
switch (protocol) {
case PTHREAD_PRIO_NONE:
a->__attr &= ~8;
return 0;
case PTHREAD_PRIO_INHERIT:
- pthread_once(&check_pi_once, check_pi);
- if (check_pi_result) return check_pi_result;
+ r = check_pi_result;
+ if (r < 0) {
+ volatile int lk = 0;
+ r = -__syscall(SYS_futex, &lk, FUTEX_LOCK_PI, 0, 0);
+ a_store(&check_pi_result, r);
+ }
+ if (r) return r;
a->__attr |= 8;
return 0;
case PTHREAD_PRIO_PROTECT:
diff --git a/lib/libc/musl/src/thread/pthread_mutexattr_setrobust.c b/lib/libc/musl/src/thread/pthread_mutexattr_setrobust.c
index 04db92a626..30a9ac3bea 100644
--- a/lib/libc/musl/src/thread/pthread_mutexattr_setrobust.c
+++ b/lib/libc/musl/src/thread/pthread_mutexattr_setrobust.c
@@ -1,22 +1,20 @@
#include "pthread_impl.h"
#include "syscall.h"
-static pthread_once_t check_robust_once;
-static int check_robust_result;
-
-static void check_robust()
-{
- void *p;
- size_t l;
- check_robust_result = -__syscall(SYS_get_robust_list, 0, &p, &l);
-}
+static volatile int check_robust_result = -1;
int pthread_mutexattr_setrobust(pthread_mutexattr_t *a, int robust)
{
if (robust > 1U) return EINVAL;
if (robust) {
- pthread_once(&check_robust_once, check_robust);
- if (check_robust_result) return check_robust_result;
+ int r = check_robust_result;
+ if (r < 0) {
+ void *p;
+ size_t l;
+ r = -__syscall(SYS_get_robust_list, 0, &p, &l);
+ a_store(&check_robust_result, r);
+ }
+ if (r) return r;
a->__attr |= 4;
return 0;
}
diff --git a/lib/libc/musl/src/thread/s390x/clone.s b/lib/libc/musl/src/thread/s390x/clone.s
index 577748eab3..2125f20b83 100644
--- a/lib/libc/musl/src/thread/s390x/clone.s
+++ b/lib/libc/musl/src/thread/s390x/clone.s
@@ -17,6 +17,9 @@ __clone:
# if (!tid) syscall(SYS_exit, a(d));
# return tid;
+ # preserve call-saved register used as syscall arg
+ stg %r6, 48(%r15)
+
# create initial stack frame for new thread
nill %r3, 0xfff8
aghi %r3, -160
@@ -35,6 +38,9 @@ __clone:
lg %r6, 160(%r15)
svc 120
+ # restore call-saved register
+ lg %r6, 48(%r15)
+
# if error or if we're the parent, return
ltgr %r2, %r2
bnzr %r14
diff --git a/lib/libc/musl/src/thread/s390x/syscall_cp.s b/lib/libc/musl/src/thread/s390x/syscall_cp.s
index c1da40de88..d094cbf5ae 100644
--- a/lib/libc/musl/src/thread/s390x/syscall_cp.s
+++ b/lib/libc/musl/src/thread/s390x/syscall_cp.s
@@ -14,6 +14,7 @@ __cp_begin:
icm %r2, 15, 0(%r2)
jne __cp_cancel
+ stg %r6, 48(%r15)
stg %r7, 56(%r15)
lgr %r1, %r3
lgr %r2, %r4
@@ -26,6 +27,7 @@ __cp_begin:
__cp_end:
lg %r7, 56(%r15)
+ lg %r6, 48(%r15)
br %r14
__cp_cancel:
diff --git a/lib/libc/musl/src/thread/sem_open.c b/lib/libc/musl/src/thread/sem_open.c
index de8555c5a6..0ad29de96c 100644
--- a/lib/libc/musl/src/thread/sem_open.c
+++ b/lib/libc/musl/src/thread/sem_open.c
@@ -12,6 +12,12 @@
#include
#include
#include "lock.h"
+#include "fork_impl.h"
+
+#define malloc __libc_malloc
+#define calloc __libc_calloc
+#define realloc undef
+#define free undef
static struct {
ino_t ino;
@@ -19,6 +25,7 @@ static struct {
int refcnt;
} *semtab;
static volatile int lock[1];
+volatile int *const __sem_open_lockptr = lock;
#define FLAGS (O_RDWR|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK)
@@ -163,10 +170,12 @@ int sem_close(sem_t *sem)
int i;
LOCK(lock);
for (i=0; itid)
+ goto single_threaded;
callback = func;
context = ctx;
diff --git a/lib/libc/musl/src/thread/vmlock.c b/lib/libc/musl/src/thread/vmlock.c
index 75f3cb7619..fa0a8e3c2e 100644
--- a/lib/libc/musl/src/thread/vmlock.c
+++ b/lib/libc/musl/src/thread/vmlock.c
@@ -1,6 +1,8 @@
#include "pthread_impl.h"
+#include "fork_impl.h"
static volatile int vmlock[2];
+volatile int *const __vmlock_lockptr = vmlock;
void __vm_wait()
{
diff --git a/lib/libc/musl/src/time/__tz.c b/lib/libc/musl/src/time/__tz.c
index 49a7371ebc..09a6317e6b 100644
--- a/lib/libc/musl/src/time/__tz.c
+++ b/lib/libc/musl/src/time/__tz.c
@@ -6,6 +6,12 @@
#include
#include "libc.h"
#include "lock.h"
+#include "fork_impl.h"
+
+#define malloc __libc_malloc
+#define calloc undef
+#define realloc undef
+#define free undef
long __timezone = 0;
int __daylight = 0;
@@ -30,6 +36,7 @@ static char *old_tz = old_tz_buf;
static size_t old_tz_size = sizeof old_tz_buf;
static volatile int lock[1];
+volatile int *const __timezone_lockptr = lock;
static int getint(const char **p)
{
@@ -178,7 +185,7 @@ static void do_tzset()
zi = map;
if (map) {
int scale = 2;
- if (sizeof(time_t) > 4 && map[4]=='2') {
+ if (map[4]!='1') {
size_t skip = zi_dotprod(zi+20, VEC(1,1,8,5,6,1), 6);
trans = zi+skip+44+44;
scale++;
diff --git a/lib/libc/musl/src/time/timer_create.c b/lib/libc/musl/src/time/timer_create.c
index 455d49fc50..4bef239051 100644
--- a/lib/libc/musl/src/time/timer_create.c
+++ b/lib/libc/musl/src/time/timer_create.c
@@ -2,6 +2,7 @@
#include
#include
#include "pthread_impl.h"
+#include "atomic.h"
struct ksigevent {
union sigval sigev_value;
@@ -32,19 +33,6 @@ static void cleanup_fromsig(void *p)
longjmp(p, 1);
}
-static void timer_handler(int sig, siginfo_t *si, void *ctx)
-{
-}
-
-static void install_handler()
-{
- struct sigaction sa = {
- .sa_sigaction = timer_handler,
- .sa_flags = SA_SIGINFO | SA_RESTART
- };
- __libc_sigaction(SIGTIMER, &sa, 0);
-}
-
static void *start(void *arg)
{
pthread_t self = __pthread_self();
@@ -71,7 +59,7 @@ static void *start(void *arg)
int timer_create(clockid_t clk, struct sigevent *restrict evp, timer_t *restrict res)
{
- static pthread_once_t once = PTHREAD_ONCE_INIT;
+ volatile static int init = 0;
pthread_t td;
pthread_attr_t attr;
int r;
@@ -83,11 +71,15 @@ int timer_create(clockid_t clk, struct sigevent *restrict evp, timer_t *restrict
switch (evp ? evp->sigev_notify : SIGEV_SIGNAL) {
case SIGEV_NONE:
case SIGEV_SIGNAL:
+ case SIGEV_THREAD_ID:
if (evp) {
ksev.sigev_value = evp->sigev_value;
ksev.sigev_signo = evp->sigev_signo;
ksev.sigev_notify = evp->sigev_notify;
- ksev.sigev_tid = 0;
+ if (evp->sigev_notify == SIGEV_THREAD_ID)
+ ksev.sigev_tid = evp->sigev_notify_thread_id;
+ else
+ ksev.sigev_tid = 0;
ksevp = &ksev;
}
if (syscall(SYS_timer_create, clk, ksevp, &timerid) < 0)
@@ -95,7 +87,11 @@ int timer_create(clockid_t clk, struct sigevent *restrict evp, timer_t *restrict
*res = (void *)(intptr_t)timerid;
break;
case SIGEV_THREAD:
- pthread_once(&once, install_handler);
+ if (!init) {
+ struct sigaction sa = { .sa_handler = SIG_DFL };
+ __libc_sigaction(SIGTIMER, &sa, 0);
+ a_store(&init, 1);
+ }
if (evp->sigev_notify_attributes)
attr = *evp->sigev_notify_attributes;
else
@@ -115,7 +111,7 @@ int timer_create(clockid_t clk, struct sigevent *restrict evp, timer_t *restrict
ksev.sigev_value.sival_ptr = 0;
ksev.sigev_signo = SIGTIMER;
- ksev.sigev_notify = 4; /* SIGEV_THREAD_ID */
+ ksev.sigev_notify = SIGEV_THREAD_ID;
ksev.sigev_tid = td->tid;
if (syscall(SYS_timer_create, clk, &ksev, &timerid) < 0)
timerid = -1;
diff --git a/lib/libc/musl/src/unistd/close.c b/lib/libc/musl/src/unistd/close.c
index 5b38e01946..a2105f5060 100644
--- a/lib/libc/musl/src/unistd/close.c
+++ b/lib/libc/musl/src/unistd/close.c
@@ -1,5 +1,6 @@
#include
#include
+#include "aio_impl.h"
#include "syscall.h"
static int dummy(int fd)
diff --git a/lib/libc/musl/src/unistd/faccessat.c b/lib/libc/musl/src/unistd/faccessat.c
index 76bbd4c72a..557503eb6d 100644
--- a/lib/libc/musl/src/unistd/faccessat.c
+++ b/lib/libc/musl/src/unistd/faccessat.c
@@ -25,12 +25,17 @@ static int checker(void *p)
int faccessat(int fd, const char *filename, int amode, int flag)
{
- if (!flag || (flag==AT_EACCESS && getuid()==geteuid() && getgid()==getegid()))
- return syscall(SYS_faccessat, fd, filename, amode, flag);
+ if (flag) {
+ int ret = __syscall(SYS_faccessat2, fd, filename, amode, flag);
+ if (ret != -ENOSYS) return __syscall_ret(ret);
+ }
- if (flag != AT_EACCESS)
+ if (flag & ~AT_EACCESS)
return __syscall_ret(-EINVAL);
+ if (!flag || (getuid()==geteuid() && getgid()==getegid()))
+ return syscall(SYS_faccessat, fd, filename, amode);
+
char stack[1024];
sigset_t set;
pid_t pid;
diff --git a/lib/libc/musl/src/unistd/readlink.c b/lib/libc/musl/src/unistd/readlink.c
index a152d52492..32f4537f97 100644
--- a/lib/libc/musl/src/unistd/readlink.c
+++ b/lib/libc/musl/src/unistd/readlink.c
@@ -4,9 +4,16 @@
ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize)
{
+ char dummy[1];
+ if (!bufsize) {
+ buf = dummy;
+ bufsize = 1;
+ }
#ifdef SYS_readlink
- return syscall(SYS_readlink, path, buf, bufsize);
+ int r = __syscall(SYS_readlink, path, buf, bufsize);
#else
- return syscall(SYS_readlinkat, AT_FDCWD, path, buf, bufsize);
+ int r = __syscall(SYS_readlinkat, AT_FDCWD, path, buf, bufsize);
#endif
+ if (buf == dummy && r > 0) r = 0;
+ return __syscall_ret(r);
}
diff --git a/lib/libc/musl/src/unistd/readlinkat.c b/lib/libc/musl/src/unistd/readlinkat.c
index 9af45cd5a4..f79d3d1428 100644
--- a/lib/libc/musl/src/unistd/readlinkat.c
+++ b/lib/libc/musl/src/unistd/readlinkat.c
@@ -3,5 +3,12 @@
ssize_t readlinkat(int fd, const char *restrict path, char *restrict buf, size_t bufsize)
{
- return syscall(SYS_readlinkat, fd, path, buf, bufsize);
+ char dummy[1];
+ if (!bufsize) {
+ buf = dummy;
+ bufsize = 1;
+ }
+ int r = __syscall(SYS_readlinkat, fd, path, buf, bufsize);
+ if (buf == dummy && r > 0) r = 0;
+ return __syscall_ret(r);
}
diff --git a/lib/libc/musl/src/unistd/setxid.c b/lib/libc/musl/src/unistd/setxid.c
index 0239f8afa9..487c1a160a 100644
--- a/lib/libc/musl/src/unistd/setxid.c
+++ b/lib/libc/musl/src/unistd/setxid.c
@@ -1,20 +1,19 @@
#include
-#include
+#include
#include "syscall.h"
#include "libc.h"
-#include "pthread_impl.h"
struct ctx {
int id, eid, sid;
- int nr, err;
+ int nr, ret;
};
static void do_setxid(void *p)
{
struct ctx *c = p;
- if (c->err>0) return;
- int ret = -__syscall(c->nr, c->id, c->eid, c->sid);
- if (ret && !c->err) {
+ if (c->ret<0) return;
+ int ret = __syscall(c->nr, c->id, c->eid, c->sid);
+ if (ret && !c->ret) {
/* If one thread fails to set ids after another has already
* succeeded, forcibly killing the process is the only safe
* thing to do. State is inconsistent and dangerous. Use
@@ -22,18 +21,14 @@ static void do_setxid(void *p)
__block_all_sigs(0);
__syscall(SYS_kill, __syscall(SYS_getpid), SIGKILL);
}
- c->err = ret;
+ c->ret = ret;
}
int __setxid(int nr, int id, int eid, int sid)
{
- /* err is initially nonzero so that failure of the first thread does not
+ /* ret is initially nonzero so that failure of the first thread does not
* trigger the safety kill above. */
- struct ctx c = { .nr = nr, .id = id, .eid = eid, .sid = sid, .err = -1 };
+ struct ctx c = { .nr = nr, .id = id, .eid = eid, .sid = sid, .ret = 1 };
__synccall(do_setxid, &c);
- if (c.err) {
- if (c.err>0) errno = c.err;
- return -1;
- }
- return 0;
+ return __syscall_ret(c.ret);
}
diff --git a/lib/std/Thread/Condition.zig b/lib/std/Thread/Condition.zig
index 9a8fafbb7c..a14b57f6b4 100644
--- a/lib/std/Thread/Condition.zig
+++ b/lib/std/Thread/Condition.zig
@@ -8,7 +8,7 @@
//! to wake up. Spurious wakeups are possible.
//! This API supports static initialization and does not require deinitialization.
-impl: Impl,
+impl: Impl = .{},
const std = @import("../std.zig");
const Condition = @This();
@@ -17,6 +17,18 @@ const linux = std.os.linux;
const Mutex = std.Thread.Mutex;
const assert = std.debug.assert;
+pub fn wait(cond: *Condition, mutex: *Mutex) void {
+ cond.impl.wait(mutex);
+}
+
+pub fn signal(cond: *Condition) void {
+ cond.impl.signal();
+}
+
+pub fn broadcast(cond: *Condition) void {
+ cond.impl.broadcast();
+}
+
const Impl = if (std.builtin.single_threaded)
SingleThreadedCondition
else if (std.Target.current.os.tag == .windows)
@@ -62,7 +74,7 @@ pub const PthreadCondition = struct {
cond: std.c.pthread_cond_t = .{},
pub fn wait(cond: *PthreadCondition, mutex: *Mutex) void {
- const rc = std.c.pthread_cond_wait(&cond.cond, &mutex.mutex);
+ const rc = std.c.pthread_cond_wait(&cond.cond, &mutex.impl.pthread_mutex);
assert(rc == 0);
}
diff --git a/lib/std/build.zig b/lib/std/build.zig
index 3e6cf7a981..77ca854f15 100644
--- a/lib/std/build.zig
+++ b/lib/std/build.zig
@@ -272,15 +272,57 @@ pub const Builder = struct {
return LibExeObjStep.createSharedLibrary(self, name, root_src_param, kind);
}
+ pub fn addSharedLibraryFromWriteFileStep(
+ self: *Builder,
+ name: []const u8,
+ wfs: *WriteFileStep,
+ basename: []const u8,
+ kind: LibExeObjStep.SharedLibKind,
+ ) *LibExeObjStep {
+ return LibExeObjStep.createSharedLibrary(self, name, @as(FileSource, .{
+ .write_file = .{
+ .step = wfs,
+ .basename = basename,
+ },
+ }), kind);
+ }
+
pub fn addStaticLibrary(self: *Builder, name: []const u8, root_src: ?[]const u8) *LibExeObjStep {
const root_src_param = if (root_src) |p| @as(FileSource, .{ .path = p }) else null;
return LibExeObjStep.createStaticLibrary(self, name, root_src_param);
}
+ pub fn addStaticLibraryFromWriteFileStep(
+ self: *Builder,
+ name: []const u8,
+ wfs: *WriteFileStep,
+ basename: []const u8,
+ ) *LibExeObjStep {
+ return LibExeObjStep.createStaticLibrary(self, name, @as(FileSource, .{
+ .write_file = .{
+ .step = wfs,
+ .basename = basename,
+ },
+ }));
+ }
+
pub fn addTest(self: *Builder, root_src: []const u8) *LibExeObjStep {
return LibExeObjStep.createTest(self, "test", .{ .path = root_src });
}
+ pub fn addTestFromWriteFileStep(
+ self: *Builder,
+ wfs: *WriteFileStep,
+ basename: []const u8,
+ ) *LibExeObjStep {
+ return LibExeObjStep.createTest(self, "test", @as(FileSource, .{
+ .write_file = .{
+ .step = wfs,
+ .basename = basename,
+ },
+ }));
+ }
+
pub fn addAssemble(self: *Builder, name: []const u8, src: []const u8) *LibExeObjStep {
const obj_step = LibExeObjStep.createObject(self, name, null);
obj_step.addAssemblyFile(src);
@@ -303,6 +345,14 @@ pub const Builder = struct {
return self.allocator.dupe(u8, bytes) catch unreachable;
}
+ pub fn dupeStrings(self: *Builder, strings: []const []const u8) [][]u8 {
+ const array = self.allocator.alloc([]u8, strings.len) catch unreachable;
+ for (strings) |s, i| {
+ array[i] = self.dupe(s);
+ }
+ return array;
+ }
+
pub fn dupePath(self: *Builder, bytes: []const u8) []u8 {
const the_copy = self.dupe(bytes);
for (the_copy) |*byte| {
@@ -448,7 +498,9 @@ pub const Builder = struct {
return error.InvalidStepName;
}
- pub fn option(self: *Builder, comptime T: type, name: []const u8, description: []const u8) ?T {
+ pub fn option(self: *Builder, comptime T: type, name_raw: []const u8, description_raw: []const u8) ?T {
+ const name = self.dupe(name_raw);
+ const description = self.dupe(description_raw);
const type_id = comptime typeToEnum(T);
const available_option = AvailableOption{
.name = name,
@@ -581,7 +633,7 @@ pub const Builder = struct {
const step_info = self.allocator.create(TopLevelStep) catch unreachable;
step_info.* = TopLevelStep{
.step = Step.initNoOp(.TopLevel, name, self.allocator),
- .description = description,
+ .description = self.dupe(description),
};
self.top_level_steps.append(step_info) catch unreachable;
return &step_info.step;
@@ -687,7 +739,7 @@ pub const Builder = struct {
return args.default_target;
},
else => |e| {
- warn("Unable to parse target '{}': {s}\n\n", .{ triple, @errorName(e) });
+ warn("Unable to parse target '{s}': {s}\n\n", .{ triple, @errorName(e) });
self.markInvalidUserInput();
return args.default_target;
},
@@ -718,7 +770,9 @@ pub const Builder = struct {
return selected_target;
}
- pub fn addUserInputOption(self: *Builder, name: []const u8, value: []const u8) !bool {
+ pub fn addUserInputOption(self: *Builder, name_raw: []const u8, value_raw: []const u8) !bool {
+ const name = self.dupe(name_raw);
+ const value = self.dupe(value_raw);
const gop = try self.user_input_options.getOrPut(name);
if (!gop.found_existing) {
gop.entry.value = UserInputOption{
@@ -759,7 +813,8 @@ pub const Builder = struct {
return false;
}
- pub fn addUserInputFlag(self: *Builder, name: []const u8) !bool {
+ pub fn addUserInputFlag(self: *Builder, name_raw: []const u8) !bool {
+ const name = self.dupe(name_raw);
const gop = try self.user_input_options.getOrPut(name);
if (!gop.found_existing) {
gop.entry.value = UserInputOption{
@@ -951,10 +1006,11 @@ pub const Builder = struct {
}
pub fn pushInstalledFile(self: *Builder, dir: InstallDir, dest_rel_path: []const u8) void {
- self.installed_files.append(InstalledFile{
+ const file = InstalledFile{
.dir = dir,
.path = dest_rel_path,
- }) catch unreachable;
+ };
+ self.installed_files.append(file.dupe(self)) catch unreachable;
}
pub fn updateFile(self: *Builder, source_path: []const u8, dest_path: []const u8) !void {
@@ -1097,7 +1153,7 @@ pub const Builder = struct {
}
pub fn addSearchPrefix(self: *Builder, search_prefix: []const u8) void {
- self.search_prefixes.append(search_prefix) catch unreachable;
+ self.search_prefixes.append(self.dupePath(search_prefix)) catch unreachable;
}
pub fn getInstallPath(self: *Builder, dir: InstallDir, dest_rel_path: []const u8) []const u8 {
@@ -1118,6 +1174,7 @@ pub const Builder = struct {
fn execPkgConfigList(self: *Builder, out_code: *u8) ![]const PkgConfigPkg {
const stdout = try self.execAllowFail(&[_][]const u8{ "pkg-config", "--list-all" }, out_code, .Ignore);
var list = ArrayList(PkgConfigPkg).init(self.allocator);
+ errdefer list.deinit();
var line_it = mem.tokenize(stdout, "\r\n");
while (line_it.next()) |line| {
if (mem.trim(u8, line, " \t").len == 0) continue;
@@ -1127,7 +1184,7 @@ pub const Builder = struct {
.desc = tok_it.rest(),
});
}
- return list.items;
+ return list.toOwnedSlice();
}
fn getPkgConfigList(self: *Builder) ![]const PkgConfigPkg {
@@ -1182,9 +1239,16 @@ pub const Pkg = struct {
dependencies: ?[]const Pkg = null,
};
-const CSourceFile = struct {
+pub const CSourceFile = struct {
source: FileSource,
args: []const []const u8,
+
+ fn dupe(self: CSourceFile, b: *Builder) CSourceFile {
+ return .{
+ .source = self.source.dupe(b),
+ .args = b.dupeStrings(self.args),
+ };
+ }
};
const CSourceFiles = struct {
@@ -1226,6 +1290,17 @@ pub const FileSource = union(enum) {
.translate_c => |tc| tc.getOutputPath(),
};
}
+
+ pub fn dupe(self: FileSource, b: *Builder) FileSource {
+ return switch (self) {
+ .path => |p| .{ .path = b.dupe(p) },
+ .write_file => |wf| .{ .write_file = .{
+ .step = wf.step,
+ .basename = b.dupe(wf.basename),
+ } },
+ .translate_c => |tc| .{ .translate_c = tc },
+ };
+ }
};
const BuildOptionArtifactArg = struct {
@@ -1401,12 +1476,14 @@ pub const LibExeObjStep = struct {
fn initExtraArgs(
builder: *Builder,
- name: []const u8,
- root_src: ?FileSource,
+ name_raw: []const u8,
+ root_src_raw: ?FileSource,
kind: Kind,
is_dynamic: bool,
ver: ?Version,
) LibExeObjStep {
+ const name = builder.dupe(name_raw);
+ const root_src: ?FileSource = if (root_src_raw) |rsrc| rsrc.dupe(builder) else null;
if (mem.indexOf(u8, name, "/") != null or mem.indexOf(u8, name, "\\") != null) {
panic("invalid name: '{s}'. It looks like a file path, but it is supposed to be the library or application name.", .{name});
}
@@ -1543,12 +1620,12 @@ pub const LibExeObjStep = struct {
}
pub fn setLinkerScriptPath(self: *LibExeObjStep, path: []const u8) void {
- self.linker_script = path;
+ self.linker_script = self.builder.dupePath(path);
}
pub fn linkFramework(self: *LibExeObjStep, framework_name: []const u8) void {
assert(self.target.isDarwin());
- self.frameworks.put(framework_name) catch unreachable;
+ self.frameworks.put(self.builder.dupe(framework_name)) catch unreachable;
}
/// Returns whether the library, executable, or object depends on a particular system library.
@@ -1712,25 +1789,23 @@ pub const LibExeObjStep = struct {
pub fn setNamePrefix(self: *LibExeObjStep, text: []const u8) void {
assert(self.kind == Kind.Test);
- self.name_prefix = text;
+ self.name_prefix = self.builder.dupe(text);
}
pub fn setFilter(self: *LibExeObjStep, text: ?[]const u8) void {
assert(self.kind == Kind.Test);
- self.filter = text;
+ self.filter = if (text) |t| self.builder.dupe(t) else null;
}
/// Handy when you have many C/C++ source files and want them all to have the same flags.
pub fn addCSourceFiles(self: *LibExeObjStep, files: []const []const u8, flags: []const []const u8) void {
const c_source_files = self.builder.allocator.create(CSourceFiles) catch unreachable;
- const flags_copy = self.builder.allocator.alloc([]u8, flags.len) catch unreachable;
- for (flags) |flag, i| {
- flags_copy[i] = self.builder.dupe(flag);
- }
+ const files_copy = self.builder.dupeStrings(files);
+ const flags_copy = self.builder.dupeStrings(flags);
c_source_files.* = .{
- .files = files,
+ .files = files_copy,
.flags = flags_copy,
};
self.link_objects.append(LinkObject{ .CSourceFiles = c_source_files }) catch unreachable;
@@ -1745,14 +1820,7 @@ pub const LibExeObjStep = struct {
pub fn addCSourceFileSource(self: *LibExeObjStep, source: CSourceFile) void {
const c_source_file = self.builder.allocator.create(CSourceFile) catch unreachable;
-
- const args_copy = self.builder.allocator.alloc([]u8, source.args.len) catch unreachable;
- for (source.args) |arg, i| {
- args_copy[i] = self.builder.dupe(arg);
- }
-
- c_source_file.* = source;
- c_source_file.args = args_copy;
+ c_source_file.* = source.dupe(self.builder);
self.link_objects.append(LinkObject{ .CSourceFile = c_source_file }) catch unreachable;
}
@@ -1769,15 +1837,15 @@ pub const LibExeObjStep = struct {
}
pub fn overrideZigLibDir(self: *LibExeObjStep, dir_path: []const u8) void {
- self.override_lib_dir = self.builder.dupe(dir_path);
+ self.override_lib_dir = self.builder.dupePath(dir_path);
}
pub fn setMainPkgPath(self: *LibExeObjStep, dir_path: []const u8) void {
- self.main_pkg_path = dir_path;
+ self.main_pkg_path = self.builder.dupePath(dir_path);
}
pub fn setLibCFile(self: *LibExeObjStep, libc_file: ?[]const u8) void {
- self.libc_file = libc_file;
+ self.libc_file = if (libc_file) |f| self.builder.dupe(f) else null;
}
/// Unless setOutputDir was called, this function must be called only in
@@ -1837,8 +1905,9 @@ pub const LibExeObjStep = struct {
}
pub fn addAssemblyFileSource(self: *LibExeObjStep, source: FileSource) void {
- self.link_objects.append(LinkObject{ .AssemblyFile = source }) catch unreachable;
- source.addStepDependencies(&self.step);
+ const source_duped = source.dupe(self.builder);
+ self.link_objects.append(LinkObject{ .AssemblyFile = source_duped }) catch unreachable;
+ source_duped.addStepDependencies(&self.step);
}
pub fn addObjectFile(self: *LibExeObjStep, path: []const u8) void {
@@ -1935,7 +2004,7 @@ pub const LibExeObjStep = struct {
/// The value is the path in the cache dir.
/// Adds a dependency automatically.
pub fn addBuildOptionArtifact(self: *LibExeObjStep, name: []const u8, artifact: *LibExeObjStep) void {
- self.build_options_artifact_args.append(.{ .name = name, .artifact = artifact }) catch unreachable;
+ self.build_options_artifact_args.append(.{ .name = self.builder.dupe(name), .artifact = artifact }) catch unreachable;
self.step.dependOn(&artifact.step);
}
@@ -2005,7 +2074,11 @@ pub const LibExeObjStep = struct {
pub fn setExecCmd(self: *LibExeObjStep, args: []const ?[]const u8) void {
assert(self.kind == Kind.Test);
- self.exec_cmd_args = args;
+ const duped_args = self.builder.allocator.alloc(?[]u8, args.len) catch unreachable;
+ for (args) |arg, i| {
+ duped_args[i] = if (arg) |a| self.builder.dupe(a) else null;
+ }
+ self.exec_cmd_args = duped_args;
}
fn linkLibraryOrObject(self: *LibExeObjStep, other: *LibExeObjStep) void {
@@ -2623,9 +2696,9 @@ pub const InstallFileStep = struct {
return InstallFileStep{
.builder = builder,
.step = Step.init(.InstallFile, builder.fmt("install {s}", .{src_path}), builder.allocator, make),
- .src_path = src_path,
- .dir = dir,
- .dest_rel_path = dest_rel_path,
+ .src_path = builder.dupePath(src_path),
+ .dir = dir.dupe(builder),
+ .dest_rel_path = builder.dupePath(dest_rel_path),
};
}
@@ -2642,6 +2715,16 @@ pub const InstallDirectoryOptions = struct {
install_dir: InstallDir,
install_subdir: []const u8,
exclude_extensions: ?[]const []const u8 = null,
+
+ fn dupe(self: InstallDirectoryOptions, b: *Builder) InstallDirectoryOptions {
+ return .{
+ .source_dir = b.dupe(self.source_dir),
+ .install_dir = self.install_dir.dupe(b),
+ .install_subdir = b.dupe(self.install_subdir),
+ .exclude_extensions = if (self.exclude_extensions) |extensions|
+ b.dupeStrings(extensions) else null,
+ };
+ }
};
pub const InstallDirStep = struct {
@@ -2657,7 +2740,7 @@ pub const InstallDirStep = struct {
return InstallDirStep{
.builder = builder,
.step = Step.init(.InstallDir, builder.fmt("install {s}/", .{options.source_dir}), builder.allocator, make),
- .options = options,
+ .options = options.dupe(builder),
};
}
@@ -2693,7 +2776,7 @@ pub const LogStep = struct {
return LogStep{
.builder = builder,
.step = Step.init(.Log, builder.fmt("log {s}", .{data}), builder.allocator, make),
- .data = data,
+ .data = builder.dupe(data),
};
}
@@ -2712,7 +2795,7 @@ pub const RemoveDirStep = struct {
return RemoveDirStep{
.builder = builder,
.step = Step.init(.RemoveDir, builder.fmt("RemoveDir {s}", .{dir_path}), builder.allocator, make),
- .dir_path = dir_path,
+ .dir_path = builder.dupePath(dir_path),
};
}
@@ -2756,7 +2839,7 @@ pub const Step = struct {
pub fn init(id: Id, name: []const u8, allocator: *Allocator, makeFn: fn (*Step) anyerror!void) Step {
return Step{
.id = id,
- .name = name,
+ .name = allocator.dupe(u8, name) catch unreachable,
.makeFn = makeFn,
.dependencies = ArrayList(*Step).init(allocator),
.loop_flag = false,
@@ -2863,11 +2946,28 @@ pub const InstallDir = union(enum) {
Header: void,
/// A path relative to the prefix
Custom: []const u8,
+
+ fn dupe(self: InstallDir, builder: *Builder) InstallDir {
+ if (self == .Custom) {
+ // Written with this temporary to avoid RLS problems
+ const duped_path = builder.dupe(self.Custom);
+ return .{ .Custom = duped_path };
+ } else {
+ return self;
+ }
+ }
};
pub const InstalledFile = struct {
dir: InstallDir,
path: []const u8,
+
+ pub fn dupe(self: InstalledFile, builder: *Builder) InstalledFile {
+ return .{
+ .dir = self.dir.dupe(builder),
+ .path = builder.dupe(self.path),
+ };
+ }
};
test "Builder.dupePkg()" {
diff --git a/lib/std/build/check_file.zig b/lib/std/build/check_file.zig
index 31966fad52..28c98547b7 100644
--- a/lib/std/build/check_file.zig
+++ b/lib/std/build/check_file.zig
@@ -27,8 +27,8 @@ pub const CheckFileStep = struct {
self.* = CheckFileStep{
.builder = builder,
.step = Step.init(.CheckFile, "CheckFile", builder.allocator, make),
- .source = source,
- .expected_matches = expected_matches,
+ .source = source.dupe(builder),
+ .expected_matches = builder.dupeStrings(expected_matches),
};
self.source.addStepDependencies(&self.step);
return self;
diff --git a/lib/std/build/run.zig b/lib/std/build/run.zig
index 8f8fa2eba0..ca39b0216e 100644
--- a/lib/std/build/run.zig
+++ b/lib/std/build/run.zig
@@ -76,7 +76,7 @@ pub const RunStep = struct {
self.argv.append(Arg{
.WriteFile = .{
.step = write_file,
- .file_name = file_name,
+ .file_name = self.builder.dupePath(file_name),
},
}) catch unreachable;
self.step.dependOn(&write_file.step);
@@ -119,7 +119,7 @@ pub const RunStep = struct {
const new_path = self.builder.fmt("{s}" ++ [1]u8{fs.path.delimiter} ++ "{s}", .{ pp, search_path });
env_map.set(key, new_path) catch unreachable;
} else {
- env_map.set(key, search_path) catch unreachable;
+ env_map.set(key, self.builder.dupePath(search_path)) catch unreachable;
}
}
@@ -134,15 +134,18 @@ pub const RunStep = struct {
pub fn setEnvironmentVariable(self: *RunStep, key: []const u8, value: []const u8) void {
const env_map = self.getEnvMap();
- env_map.set(key, value) catch unreachable;
+ env_map.set(
+ self.builder.dupe(key),
+ self.builder.dupe(value),
+ ) catch unreachable;
}
pub fn expectStdErrEqual(self: *RunStep, bytes: []const u8) void {
- self.stderr_action = .{ .expect_exact = bytes };
+ self.stderr_action = .{ .expect_exact = self.builder.dupe(bytes) };
}
pub fn expectStdOutEqual(self: *RunStep, bytes: []const u8) void {
- self.stdout_action = .{ .expect_exact = bytes };
+ self.stdout_action = .{ .expect_exact = self.builder.dupe(bytes) };
}
fn stdIoActionToBehavior(action: StdIoAction) std.ChildProcess.StdIo {
diff --git a/lib/std/build/translate_c.zig b/lib/std/build/translate_c.zig
index b98b0ae9eb..4009079e3d 100644
--- a/lib/std/build/translate_c.zig
+++ b/lib/std/build/translate_c.zig
@@ -57,11 +57,11 @@ pub const TranslateCStep = struct {
}
pub fn addIncludeDir(self: *TranslateCStep, include_dir: []const u8) void {
- self.include_dirs.append(include_dir) catch unreachable;
+ self.include_dirs.append(self.builder.dupePath(include_dir)) catch unreachable;
}
pub fn addCheckFile(self: *TranslateCStep, expected_matches: []const []const u8) *CheckFileStep {
- return CheckFileStep.create(self.builder, .{ .translate_c = self }, expected_matches);
+ return CheckFileStep.create(self.builder, .{ .translate_c = self }, self.builder.dupeStrings(expected_matches));
}
fn make(step: *Step) !void {
diff --git a/lib/std/build/write_file.zig b/lib/std/build/write_file.zig
index bbe6ec5086..6e88aa5633 100644
--- a/lib/std/build/write_file.zig
+++ b/lib/std/build/write_file.zig
@@ -32,7 +32,10 @@ pub const WriteFileStep = struct {
}
pub fn add(self: *WriteFileStep, basename: []const u8, bytes: []const u8) void {
- self.files.append(.{ .basename = basename, .bytes = bytes }) catch unreachable;
+ self.files.append(.{
+ .basename = self.builder.dupePath(basename),
+ .bytes = self.builder.dupe(bytes),
+ }) catch unreachable;
}
/// Unless setOutputDir was called, this function must be called only in
diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig
index c883e03ba9..93de8ae3b9 100644
--- a/lib/std/builtin.zig
+++ b/lib/std/builtin.zig
@@ -155,6 +155,7 @@ pub const CallingConvention = enum {
C,
Naked,
Async,
+ Inline,
Interrupt,
Signal,
Stdcall,
@@ -175,7 +176,7 @@ pub const SourceLocation = struct {
column: u32,
};
-pub const TypeId = @TagType(TypeInfo);
+pub const TypeId = std.meta.Tag(TypeInfo);
/// This data structure is used by the Zig language code generation and
/// therefore must be kept in sync with the compiler implementation.
@@ -404,21 +405,13 @@ pub const TypeInfo = union(enum) {
/// therefore must be kept in sync with the compiler implementation.
pub const FnDecl = struct {
fn_type: type,
- inline_type: Inline,
+ is_noinline: bool,
is_var_args: bool,
is_extern: bool,
is_export: bool,
lib_name: ?[]const u8,
return_type: type,
arg_names: []const []const u8,
-
- /// This data structure is used by the Zig language code generation and
- /// therefore must be kept in sync with the compiler implementation.
- pub const Inline = enum {
- Auto,
- Always,
- Never,
- };
};
};
};
diff --git a/lib/std/c/ast.zig b/lib/std/c/ast.zig
index 207fe8eac8..71455c0ea3 100644
--- a/lib/std/c/ast.zig
+++ b/lib/std/c/ast.zig
@@ -110,7 +110,7 @@ pub const Error = union(enum) {
pub const ExpectedToken = struct {
token: TokenIndex,
- expected_id: @TagType(Token.Id),
+ expected_id: std.meta.Tag(Token.Id),
pub fn render(self: *const ExpectedToken, tree: *Tree, stream: anytype) !void {
const found_token = tree.tokens.at(self.token);
diff --git a/lib/std/c/builtins.zig b/lib/std/c/builtins.zig
index 43f5ed0588..2b386c82f4 100644
--- a/lib/std/c/builtins.zig
+++ b/lib/std/c/builtins.zig
@@ -6,70 +6,70 @@
const std = @import("std");
-pub inline fn __builtin_bswap16(val: u16) callconv(.C) u16 { return @byteSwap(u16, val); }
-pub inline fn __builtin_bswap32(val: u32) callconv(.C) u32 { return @byteSwap(u32, val); }
-pub inline fn __builtin_bswap64(val: u64) callconv(.C) u64 { return @byteSwap(u64, val); }
+pub fn __builtin_bswap16(val: u16) callconv(.Inline) u16 { return @byteSwap(u16, val); }
+pub fn __builtin_bswap32(val: u32) callconv(.Inline) u32 { return @byteSwap(u32, val); }
+pub fn __builtin_bswap64(val: u64) callconv(.Inline) u64 { return @byteSwap(u64, val); }
-pub inline fn __builtin_signbit(val: f64) callconv(.C) c_int { return @boolToInt(std.math.signbit(val)); }
-pub inline fn __builtin_signbitf(val: f32) callconv(.C) c_int { return @boolToInt(std.math.signbit(val)); }
+pub fn __builtin_signbit(val: f64) callconv(.Inline) c_int { return @boolToInt(std.math.signbit(val)); }
+pub fn __builtin_signbitf(val: f32) callconv(.Inline) c_int { return @boolToInt(std.math.signbit(val)); }
-pub inline fn __builtin_popcount(val: c_uint) callconv(.C) c_int {
+pub fn __builtin_popcount(val: c_uint) callconv(.Inline) c_int {
// popcount of a c_uint will never exceed the capacity of a c_int
@setRuntimeSafety(false);
return @bitCast(c_int, @as(c_uint, @popCount(c_uint, val)));
}
-pub inline fn __builtin_ctz(val: c_uint) callconv(.C) c_int {
+pub fn __builtin_ctz(val: c_uint) callconv(.Inline) c_int {
// Returns the number of trailing 0-bits in val, starting at the least significant bit position.
// In C if `val` is 0, the result is undefined; in zig it's the number of bits in a c_uint
@setRuntimeSafety(false);
return @bitCast(c_int, @as(c_uint, @ctz(c_uint, val)));
}
-pub inline fn __builtin_clz(val: c_uint) callconv(.C) c_int {
+pub fn __builtin_clz(val: c_uint) callconv(.Inline) c_int {
// Returns the number of leading 0-bits in x, starting at the most significant bit position.
// In C if `val` is 0, the result is undefined; in zig it's the number of bits in a c_uint
@setRuntimeSafety(false);
return @bitCast(c_int, @as(c_uint, @clz(c_uint, val)));
}
-pub inline fn __builtin_sqrt(val: f64) callconv(.C) f64 { return @sqrt(val); }
-pub inline fn __builtin_sqrtf(val: f32) callconv(.C) f32 { return @sqrt(val); }
+pub fn __builtin_sqrt(val: f64) callconv(.Inline) f64 { return @sqrt(val); }
+pub fn __builtin_sqrtf(val: f32) callconv(.Inline) f32 { return @sqrt(val); }
-pub inline fn __builtin_sin(val: f64) callconv(.C) f64 { return @sin(val); }
-pub inline fn __builtin_sinf(val: f32) callconv(.C) f32 { return @sin(val); }
-pub inline fn __builtin_cos(val: f64) callconv(.C) f64 { return @cos(val); }
-pub inline fn __builtin_cosf(val: f32) callconv(.C) f32 { return @cos(val); }
+pub fn __builtin_sin(val: f64) callconv(.Inline) f64 { return @sin(val); }
+pub fn __builtin_sinf(val: f32) callconv(.Inline) f32 { return @sin(val); }
+pub fn __builtin_cos(val: f64) callconv(.Inline) f64 { return @cos(val); }
+pub fn __builtin_cosf(val: f32) callconv(.Inline) f32 { return @cos(val); }
-pub inline fn __builtin_exp(val: f64) callconv(.C) f64 { return @exp(val); }
-pub inline fn __builtin_expf(val: f32) callconv(.C) f32 { return @exp(val); }
-pub inline fn __builtin_exp2(val: f64) callconv(.C) f64 { return @exp2(val); }
-pub inline fn __builtin_exp2f(val: f32) callconv(.C) f32 { return @exp2(val); }
-pub inline fn __builtin_log(val: f64) callconv(.C) f64 { return @log(val); }
-pub inline fn __builtin_logf(val: f32) callconv(.C) f32 { return @log(val); }
-pub inline fn __builtin_log2(val: f64) callconv(.C) f64 { return @log2(val); }
-pub inline fn __builtin_log2f(val: f32) callconv(.C) f32 { return @log2(val); }
-pub inline fn __builtin_log10(val: f64) callconv(.C) f64 { return @log10(val); }
-pub inline fn __builtin_log10f(val: f32) callconv(.C) f32 { return @log10(val); }
+pub fn __builtin_exp(val: f64) callconv(.Inline) f64 { return @exp(val); }
+pub fn __builtin_expf(val: f32) callconv(.Inline) f32 { return @exp(val); }
+pub fn __builtin_exp2(val: f64) callconv(.Inline) f64 { return @exp2(val); }
+pub fn __builtin_exp2f(val: f32) callconv(.Inline) f32 { return @exp2(val); }
+pub fn __builtin_log(val: f64) callconv(.Inline) f64 { return @log(val); }
+pub fn __builtin_logf(val: f32) callconv(.Inline) f32 { return @log(val); }
+pub fn __builtin_log2(val: f64) callconv(.Inline) f64 { return @log2(val); }
+pub fn __builtin_log2f(val: f32) callconv(.Inline) f32 { return @log2(val); }
+pub fn __builtin_log10(val: f64) callconv(.Inline) f64 { return @log10(val); }
+pub fn __builtin_log10f(val: f32) callconv(.Inline) f32 { return @log10(val); }
// Standard C Library bug: The absolute value of the most negative integer remains negative.
-pub inline fn __builtin_abs(val: c_int) callconv(.C) c_int { return std.math.absInt(val) catch std.math.minInt(c_int); }
-pub inline fn __builtin_fabs(val: f64) callconv(.C) f64 { return @fabs(val); }
-pub inline fn __builtin_fabsf(val: f32) callconv(.C) f32 { return @fabs(val); }
+pub fn __builtin_abs(val: c_int) callconv(.Inline) c_int { return std.math.absInt(val) catch std.math.minInt(c_int); }
+pub fn __builtin_fabs(val: f64) callconv(.Inline) f64 { return @fabs(val); }
+pub fn __builtin_fabsf(val: f32) callconv(.Inline) f32 { return @fabs(val); }
-pub inline fn __builtin_floor(val: f64) callconv(.C) f64 { return @floor(val); }
-pub inline fn __builtin_floorf(val: f32) callconv(.C) f32 { return @floor(val); }
-pub inline fn __builtin_ceil(val: f64) callconv(.C) f64 { return @ceil(val); }
-pub inline fn __builtin_ceilf(val: f32) callconv(.C) f32 { return @ceil(val); }
-pub inline fn __builtin_trunc(val: f64) callconv(.C) f64 { return @trunc(val); }
-pub inline fn __builtin_truncf(val: f32) callconv(.C) f32 { return @trunc(val); }
-pub inline fn __builtin_round(val: f64) callconv(.C) f64 { return @round(val); }
-pub inline fn __builtin_roundf(val: f32) callconv(.C) f32 { return @round(val); }
+pub fn __builtin_floor(val: f64) callconv(.Inline) f64 { return @floor(val); }
+pub fn __builtin_floorf(val: f32) callconv(.Inline) f32 { return @floor(val); }
+pub fn __builtin_ceil(val: f64) callconv(.Inline) f64 { return @ceil(val); }
+pub fn __builtin_ceilf(val: f32) callconv(.Inline) f32 { return @ceil(val); }
+pub fn __builtin_trunc(val: f64) callconv(.Inline) f64 { return @trunc(val); }
+pub fn __builtin_truncf(val: f32) callconv(.Inline) f32 { return @trunc(val); }
+pub fn __builtin_round(val: f64) callconv(.Inline) f64 { return @round(val); }
+pub fn __builtin_roundf(val: f32) callconv(.Inline) f32 { return @round(val); }
-pub inline fn __builtin_strlen(s: [*c]const u8) callconv(.C) usize { return std.mem.lenZ(s); }
-pub inline fn __builtin_strcmp(s1: [*c]const u8, s2: [*c]const u8) callconv(.C) c_int {
+pub fn __builtin_strlen(s: [*c]const u8) callconv(.Inline) usize { return std.mem.lenZ(s); }
+pub fn __builtin_strcmp(s1: [*c]const u8, s2: [*c]const u8) callconv(.Inline) c_int {
return @as(c_int, std.cstr.cmp(s1, s2));
}
-pub inline fn __builtin_object_size(ptr: ?*const c_void, ty: c_int) callconv(.C) usize {
+pub fn __builtin_object_size(ptr: ?*const c_void, ty: c_int) callconv(.Inline) usize {
// clang semantics match gcc's: https://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html
// If it is not possible to determine which objects ptr points to at compile time,
// __builtin_object_size should return (size_t) -1 for type 0 or 1 and (size_t) 0
@@ -79,37 +79,37 @@ pub inline fn __builtin_object_size(ptr: ?*const c_void, ty: c_int) callconv(.C)
unreachable;
}
-pub inline fn __builtin___memset_chk(
+pub fn __builtin___memset_chk(
dst: ?*c_void,
val: c_int,
len: usize,
remaining: usize,
-) callconv(.C) ?*c_void {
+) callconv(.Inline) ?*c_void {
if (len > remaining) @panic("std.c.builtins.memset_chk called with len > remaining");
return __builtin_memset(dst, val, len);
}
-pub inline fn __builtin_memset(dst: ?*c_void, val: c_int, len: usize) callconv(.C) ?*c_void {
+pub fn __builtin_memset(dst: ?*c_void, val: c_int, len: usize) callconv(.Inline) ?*c_void {
const dst_cast = @ptrCast([*c]u8, dst);
@memset(dst_cast, @bitCast(u8, @truncate(i8, val)), len);
return dst;
}
-pub inline fn __builtin___memcpy_chk(
+pub fn __builtin___memcpy_chk(
noalias dst: ?*c_void,
noalias src: ?*const c_void,
len: usize,
remaining: usize,
-) callconv(.C) ?*c_void {
+) callconv(.Inline) ?*c_void {
if (len > remaining) @panic("std.c.builtins.memcpy_chk called with len > remaining");
return __builtin_memcpy(dst, src, len);
}
-pub inline fn __builtin_memcpy(
+pub fn __builtin_memcpy(
noalias dst: ?*c_void,
noalias src: ?*const c_void,
len: usize,
-) callconv(.C) ?*c_void {
+) callconv(.Inline) ?*c_void {
const dst_cast = @ptrCast([*c]u8, dst);
const src_cast = @ptrCast([*c]const u8, src);
diff --git a/lib/std/c/parse.zig b/lib/std/c/parse.zig
index 17c07611ab..3d17938d7a 100644
--- a/lib/std/c/parse.zig
+++ b/lib/std/c/parse.zig
@@ -26,7 +26,7 @@ pub const Options = struct {
None,
/// Some warnings are errors
- Some: []@TagType(ast.Error),
+ Some: []std.meta.Tag(ast.Error),
/// All warnings are errors
All,
@@ -1363,7 +1363,7 @@ const Parser = struct {
return &node.base;
}
- fn eatToken(parser: *Parser, id: @TagType(Token.Id)) ?TokenIndex {
+ fn eatToken(parser: *Parser, id: std.meta.Tag(Token.Id)) ?TokenIndex {
while (true) {
switch ((parser.it.next() orelse return null).id) {
.LineComment, .MultiLineComment, .Nl => continue,
@@ -1377,7 +1377,7 @@ const Parser = struct {
}
}
- fn expectToken(parser: *Parser, id: @TagType(Token.Id)) Error!TokenIndex {
+ fn expectToken(parser: *Parser, id: std.meta.Tag(Token.Id)) Error!TokenIndex {
while (true) {
switch ((parser.it.next() orelse return error.ParseError).id) {
.LineComment, .MultiLineComment, .Nl => continue,
diff --git a/lib/std/c/tokenizer.zig b/lib/std/c/tokenizer.zig
index ea5774fe4c..2e1969e269 100644
--- a/lib/std/c/tokenizer.zig
+++ b/lib/std/c/tokenizer.zig
@@ -131,7 +131,7 @@ pub const Token = struct {
Keyword_error,
Keyword_pragma,
- pub fn symbol(id: @TagType(Id)) []const u8 {
+ pub fn symbol(id: std.meta.TagType(Id)) []const u8 {
return switch (id) {
.Invalid => "Invalid",
.Eof => "Eof",
@@ -347,7 +347,7 @@ pub const Token = struct {
pub const Tokenizer = struct {
buffer: []const u8,
index: usize = 0,
- prev_tok_id: @TagType(Token.Id) = .Invalid,
+ prev_tok_id: std.meta.TagType(Token.Id) = .Invalid,
pp_directive: bool = false,
pub fn next(self: *Tokenizer) Token {
diff --git a/lib/std/compress/deflate.zig b/lib/std/compress/deflate.zig
index 3f920c08b6..e680dc9e6f 100644
--- a/lib/std/compress/deflate.zig
+++ b/lib/std/compress/deflate.zig
@@ -209,7 +209,7 @@ pub fn InflateStream(comptime ReaderType: type) type {
// Insert a single byte into the window.
// Assumes there's enough space.
- inline fn appendUnsafe(self: *WSelf, value: u8) void {
+ fn appendUnsafe(self: *WSelf, value: u8) callconv(.Inline) void {
self.buf[self.wi] = value;
self.wi = (self.wi + 1) & (self.buf.len - 1);
self.el += 1;
diff --git a/lib/std/crypto/25519/curve25519.zig b/lib/std/crypto/25519/curve25519.zig
index 14ad0444f5..765ffa1629 100644
--- a/lib/std/crypto/25519/curve25519.zig
+++ b/lib/std/crypto/25519/curve25519.zig
@@ -15,12 +15,12 @@ pub const Curve25519 = struct {
x: Fe,
/// Decode a Curve25519 point from its compressed (X) coordinates.
- pub inline fn fromBytes(s: [32]u8) Curve25519 {
+ pub fn fromBytes(s: [32]u8) callconv(.Inline) Curve25519 {
return .{ .x = Fe.fromBytes(s) };
}
/// Encode a Curve25519 point.
- pub inline fn toBytes(p: Curve25519) [32]u8 {
+ pub fn toBytes(p: Curve25519) callconv(.Inline) [32]u8 {
return p.x.toBytes();
}
diff --git a/lib/std/crypto/25519/edwards25519.zig b/lib/std/crypto/25519/edwards25519.zig
index 8c0a783083..d4238f87bb 100644
--- a/lib/std/crypto/25519/edwards25519.zig
+++ b/lib/std/crypto/25519/edwards25519.zig
@@ -92,7 +92,7 @@ pub const Edwards25519 = struct {
}
/// Flip the sign of the X coordinate.
- pub inline fn neg(p: Edwards25519) Edwards25519 {
+ pub fn neg(p: Edwards25519) callconv(.Inline) Edwards25519 {
return .{ .x = p.x.neg(), .y = p.y, .z = p.z, .t = p.t.neg() };
}
@@ -137,14 +137,14 @@ pub const Edwards25519 = struct {
return p.add(q.neg());
}
- inline fn cMov(p: *Edwards25519, a: Edwards25519, c: u64) void {
+ fn cMov(p: *Edwards25519, a: Edwards25519, c: u64) callconv(.Inline) void {
p.x.cMov(a.x, c);
p.y.cMov(a.y, c);
p.z.cMov(a.z, c);
p.t.cMov(a.t, c);
}
- inline fn pcSelect(comptime n: usize, pc: [n]Edwards25519, b: u8) Edwards25519 {
+ fn pcSelect(comptime n: usize, pc: [n]Edwards25519, b: u8) callconv(.Inline) Edwards25519 {
var t = Edwards25519.identityElement;
comptime var i: u8 = 1;
inline while (i < pc.len) : (i += 1) {
diff --git a/lib/std/crypto/25519/field.zig b/lib/std/crypto/25519/field.zig
index 12c7f06d39..320cb1bb51 100644
--- a/lib/std/crypto/25519/field.zig
+++ b/lib/std/crypto/25519/field.zig
@@ -52,7 +52,7 @@ pub const Fe = struct {
pub const edwards25519sqrtam2 = Fe{ .limbs = .{ 1693982333959686, 608509411481997, 2235573344831311, 947681270984193, 266558006233600 } };
/// Return true if the field element is zero
- pub inline fn isZero(fe: Fe) bool {
+ pub fn isZero(fe: Fe) callconv(.Inline) bool {
var reduced = fe;
reduced.reduce();
const limbs = reduced.limbs;
@@ -60,7 +60,7 @@ pub const Fe = struct {
}
/// Return true if both field elements are equivalent
- pub inline fn equivalent(a: Fe, b: Fe) bool {
+ pub fn equivalent(a: Fe, b: Fe) callconv(.Inline) bool {
return a.sub(b).isZero();
}
@@ -164,7 +164,7 @@ pub const Fe = struct {
}
/// Add a field element
- pub inline fn add(a: Fe, b: Fe) Fe {
+ pub fn add(a: Fe, b: Fe) callconv(.Inline) Fe {
var fe: Fe = undefined;
comptime var i = 0;
inline while (i < 5) : (i += 1) {
@@ -174,7 +174,7 @@ pub const Fe = struct {
}
/// Substract a field elememnt
- pub inline fn sub(a: Fe, b: Fe) Fe {
+ pub fn sub(a: Fe, b: Fe) callconv(.Inline) Fe {
var fe = b;
comptime var i = 0;
inline while (i < 4) : (i += 1) {
@@ -193,17 +193,17 @@ pub const Fe = struct {
}
/// Negate a field element
- pub inline fn neg(a: Fe) Fe {
+ pub fn neg(a: Fe) callconv(.Inline) Fe {
return zero.sub(a);
}
/// Return true if a field element is negative
- pub inline fn isNegative(a: Fe) bool {
+ pub fn isNegative(a: Fe) callconv(.Inline) bool {
return (a.toBytes()[0] & 1) != 0;
}
/// Conditonally replace a field element with `a` if `c` is positive
- pub inline fn cMov(fe: *Fe, a: Fe, c: u64) void {
+ pub fn cMov(fe: *Fe, a: Fe, c: u64) callconv(.Inline) void {
const mask: u64 = 0 -% c;
var x = fe.*;
comptime var i = 0;
@@ -244,7 +244,7 @@ pub const Fe = struct {
}
}
- inline fn _carry128(r: *[5]u128) Fe {
+ fn _carry128(r: *[5]u128) callconv(.Inline) Fe {
var rs: [5]u64 = undefined;
comptime var i = 0;
inline while (i < 4) : (i += 1) {
@@ -265,7 +265,7 @@ pub const Fe = struct {
}
/// Multiply two field elements
- pub inline fn mul(a: Fe, b: Fe) Fe {
+ pub fn mul(a: Fe, b: Fe) callconv(.Inline) Fe {
var ax: [5]u128 = undefined;
var bx: [5]u128 = undefined;
var a19: [5]u128 = undefined;
@@ -288,7 +288,7 @@ pub const Fe = struct {
return _carry128(&r);
}
- inline fn _sq(a: Fe, double: comptime bool) Fe {
+ fn _sq(a: Fe, double: comptime bool) callconv(.Inline) Fe {
var ax: [5]u128 = undefined;
var r: [5]u128 = undefined;
comptime var i = 0;
@@ -317,17 +317,17 @@ pub const Fe = struct {
}
/// Square a field element
- pub inline fn sq(a: Fe) Fe {
+ pub fn sq(a: Fe) callconv(.Inline) Fe {
return _sq(a, false);
}
/// Square and double a field element
- pub inline fn sq2(a: Fe) Fe {
+ pub fn sq2(a: Fe) callconv(.Inline) Fe {
return _sq(a, true);
}
/// Multiply a field element with a small (32-bit) integer
- pub inline fn mul32(a: Fe, comptime n: u32) Fe {
+ pub fn mul32(a: Fe, comptime n: u32) callconv(.Inline) Fe {
const sn = @intCast(u128, n);
var fe: Fe = undefined;
var x: u128 = 0;
@@ -342,7 +342,7 @@ pub const Fe = struct {
}
/// Square a field element `n` times
- inline fn sqn(a: Fe, comptime n: comptime_int) Fe {
+ fn sqn(a: Fe, comptime n: comptime_int) callconv(.Inline) Fe {
var i: usize = 0;
var fe = a;
while (i < n) : (i += 1) {
diff --git a/lib/std/crypto/25519/ristretto255.zig b/lib/std/crypto/25519/ristretto255.zig
index 35dd6ea76c..68fb938103 100644
--- a/lib/std/crypto/25519/ristretto255.zig
+++ b/lib/std/crypto/25519/ristretto255.zig
@@ -42,7 +42,7 @@ pub const Ristretto255 = struct {
}
/// Reject the neutral element.
- pub inline fn rejectIdentity(p: Ristretto255) !void {
+ pub fn rejectIdentity(p: Ristretto255) callconv(.Inline) !void {
return p.p.rejectIdentity();
}
@@ -141,19 +141,19 @@ pub const Ristretto255 = struct {
}
/// Double a Ristretto255 element.
- pub inline fn dbl(p: Ristretto255) Ristretto255 {
+ pub fn dbl(p: Ristretto255) callconv(.Inline) Ristretto255 {
return .{ .p = p.p.dbl() };
}
/// Add two Ristretto255 elements.
- pub inline fn add(p: Ristretto255, q: Ristretto255) Ristretto255 {
+ pub fn add(p: Ristretto255, q: Ristretto255) callconv(.Inline) Ristretto255 {
return .{ .p = p.p.add(q.p) };
}
/// Multiply a Ristretto255 element with a scalar.
/// Return error.WeakPublicKey if the resulting element is
/// the identity element.
- pub inline fn mul(p: Ristretto255, s: [encoded_length]u8) !Ristretto255 {
+ pub fn mul(p: Ristretto255, s: [encoded_length]u8) callconv(.Inline) !Ristretto255 {
return Ristretto255{ .p = try p.p.mul(s) };
}
diff --git a/lib/std/crypto/25519/scalar.zig b/lib/std/crypto/25519/scalar.zig
index d00f147274..ceff153bff 100644
--- a/lib/std/crypto/25519/scalar.zig
+++ b/lib/std/crypto/25519/scalar.zig
@@ -46,7 +46,7 @@ pub fn reduce64(s: [64]u8) [32]u8 {
/// Perform the X25519 "clamping" operation.
/// The scalar is then guaranteed to be a multiple of the cofactor.
-pub inline fn clamp(s: *[32]u8) void {
+pub fn clamp(s: *[32]u8) callconv(.Inline) void {
s[0] &= 248;
s[31] = (s[31] & 127) | 64;
}
diff --git a/lib/std/crypto/aegis.zig b/lib/std/crypto/aegis.zig
index 234b439708..089dc06be4 100644
--- a/lib/std/crypto/aegis.zig
+++ b/lib/std/crypto/aegis.zig
@@ -35,7 +35,7 @@ const State128L = struct {
return state;
}
- inline fn update(state: *State128L, d1: AesBlock, d2: AesBlock) void {
+ fn update(state: *State128L, d1: AesBlock, d2: AesBlock) callconv(.Inline) void {
const blocks = &state.blocks;
const tmp = blocks[7];
comptime var i: usize = 7;
@@ -207,7 +207,7 @@ const State256 = struct {
return state;
}
- inline fn update(state: *State256, d: AesBlock) void {
+ fn update(state: *State256, d: AesBlock) callconv(.Inline) void {
const blocks = &state.blocks;
const tmp = blocks[5].encrypt(blocks[0]);
comptime var i: usize = 5;
diff --git a/lib/std/crypto/aes/aesni.zig b/lib/std/crypto/aes/aesni.zig
index 231bf5dbe8..13b3f8e527 100644
--- a/lib/std/crypto/aes/aesni.zig
+++ b/lib/std/crypto/aes/aesni.zig
@@ -19,24 +19,24 @@ pub const Block = struct {
repr: BlockVec,
/// Convert a byte sequence into an internal representation.
- pub inline fn fromBytes(bytes: *const [16]u8) Block {
+ pub fn fromBytes(bytes: *const [16]u8) callconv(.Inline) Block {
const repr = mem.bytesToValue(BlockVec, bytes);
return Block{ .repr = repr };
}
/// Convert the internal representation of a block into a byte sequence.
- pub inline fn toBytes(block: Block) [16]u8 {
+ pub fn toBytes(block: Block) callconv(.Inline) [16]u8 {
return mem.toBytes(block.repr);
}
/// XOR the block with a byte sequence.
- pub inline fn xorBytes(block: Block, bytes: *const [16]u8) [16]u8 {
+ pub fn xorBytes(block: Block, bytes: *const [16]u8) callconv(.Inline) [16]u8 {
const x = block.repr ^ fromBytes(bytes).repr;
return mem.toBytes(x);
}
/// Encrypt a block with a round key.
- pub inline fn encrypt(block: Block, round_key: Block) Block {
+ pub fn encrypt(block: Block, round_key: Block) callconv(.Inline) Block {
return Block{
.repr = asm (
\\ vaesenc %[rk], %[in], %[out]
@@ -48,7 +48,7 @@ pub const Block = struct {
}
/// Encrypt a block with the last round key.
- pub inline fn encryptLast(block: Block, round_key: Block) Block {
+ pub fn encryptLast(block: Block, round_key: Block) callconv(.Inline) Block {
return Block{
.repr = asm (
\\ vaesenclast %[rk], %[in], %[out]
@@ -60,7 +60,7 @@ pub const Block = struct {
}
/// Decrypt a block with a round key.
- pub inline fn decrypt(block: Block, inv_round_key: Block) Block {
+ pub fn decrypt(block: Block, inv_round_key: Block) callconv(.Inline) Block {
return Block{
.repr = asm (
\\ vaesdec %[rk], %[in], %[out]
@@ -72,7 +72,7 @@ pub const Block = struct {
}
/// Decrypt a block with the last round key.
- pub inline fn decryptLast(block: Block, inv_round_key: Block) Block {
+ pub fn decryptLast(block: Block, inv_round_key: Block) callconv(.Inline) Block {
return Block{
.repr = asm (
\\ vaesdeclast %[rk], %[in], %[out]
@@ -84,17 +84,17 @@ pub const Block = struct {
}
/// Apply the bitwise XOR operation to the content of two blocks.
- pub inline fn xorBlocks(block1: Block, block2: Block) Block {
+ pub fn xorBlocks(block1: Block, block2: Block) callconv(.Inline) Block {
return Block{ .repr = block1.repr ^ block2.repr };
}
/// Apply the bitwise AND operation to the content of two blocks.
- pub inline fn andBlocks(block1: Block, block2: Block) Block {
+ pub fn andBlocks(block1: Block, block2: Block) callconv(.Inline) Block {
return Block{ .repr = block1.repr & block2.repr };
}
/// Apply the bitwise OR operation to the content of two blocks.
- pub inline fn orBlocks(block1: Block, block2: Block) Block {
+ pub fn orBlocks(block1: Block, block2: Block) callconv(.Inline) Block {
return Block{ .repr = block1.repr | block2.repr };
}
@@ -114,7 +114,7 @@ pub const Block = struct {
};
/// Encrypt multiple blocks in parallel, each their own round key.
- pub inline fn encryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
+ pub fn encryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
@@ -124,7 +124,7 @@ pub const Block = struct {
}
/// Decrypt multiple blocks in parallel, each their own round key.
- pub inline fn decryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
+ pub fn decryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
@@ -134,7 +134,7 @@ pub const Block = struct {
}
/// Encrypt multiple blocks in parallel with the same round key.
- pub inline fn encryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
+ pub fn encryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
@@ -144,7 +144,7 @@ pub const Block = struct {
}
/// Decrypt multiple blocks in parallel with the same round key.
- pub inline fn decryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
+ pub fn decryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
@@ -154,7 +154,7 @@ pub const Block = struct {
}
/// Encrypt multiple blocks in parallel with the same last round key.
- pub inline fn encryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
+ pub fn encryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
@@ -164,7 +164,7 @@ pub const Block = struct {
}
/// Decrypt multiple blocks in parallel with the same last round key.
- pub inline fn decryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
+ pub fn decryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
diff --git a/lib/std/crypto/aes/armcrypto.zig b/lib/std/crypto/aes/armcrypto.zig
index cb8387a2c6..d331783284 100644
--- a/lib/std/crypto/aes/armcrypto.zig
+++ b/lib/std/crypto/aes/armcrypto.zig
@@ -19,18 +19,18 @@ pub const Block = struct {
repr: BlockVec,
/// Convert a byte sequence into an internal representation.
- pub inline fn fromBytes(bytes: *const [16]u8) Block {
+ pub fn fromBytes(bytes: *const [16]u8) callconv(.Inline) Block {
const repr = mem.bytesToValue(BlockVec, bytes);
return Block{ .repr = repr };
}
/// Convert the internal representation of a block into a byte sequence.
- pub inline fn toBytes(block: Block) [16]u8 {
+ pub fn toBytes(block: Block) callconv(.Inline) [16]u8 {
return mem.toBytes(block.repr);
}
/// XOR the block with a byte sequence.
- pub inline fn xorBytes(block: Block, bytes: *const [16]u8) [16]u8 {
+ pub fn xorBytes(block: Block, bytes: *const [16]u8) callconv(.Inline) [16]u8 {
const x = block.repr ^ fromBytes(bytes).repr;
return mem.toBytes(x);
}
@@ -38,7 +38,7 @@ pub const Block = struct {
const zero = Vector(2, u64){ 0, 0 };
/// Encrypt a block with a round key.
- pub inline fn encrypt(block: Block, round_key: Block) Block {
+ pub fn encrypt(block: Block, round_key: Block) callconv(.Inline) Block {
return Block{
.repr = asm (
\\ mov %[out].16b, %[in].16b
@@ -54,7 +54,7 @@ pub const Block = struct {
}
/// Encrypt a block with the last round key.
- pub inline fn encryptLast(block: Block, round_key: Block) Block {
+ pub fn encryptLast(block: Block, round_key: Block) callconv(.Inline) Block {
return Block{
.repr = asm (
\\ mov %[out].16b, %[in].16b
@@ -69,7 +69,7 @@ pub const Block = struct {
}
/// Decrypt a block with a round key.
- pub inline fn decrypt(block: Block, inv_round_key: Block) Block {
+ pub fn decrypt(block: Block, inv_round_key: Block) callconv(.Inline) Block {
return Block{
.repr = asm (
\\ mov %[out].16b, %[in].16b
@@ -85,7 +85,7 @@ pub const Block = struct {
}
/// Decrypt a block with the last round key.
- pub inline fn decryptLast(block: Block, inv_round_key: Block) Block {
+ pub fn decryptLast(block: Block, inv_round_key: Block) callconv(.Inline) Block {
return Block{
.repr = asm (
\\ mov %[out].16b, %[in].16b
@@ -100,17 +100,17 @@ pub const Block = struct {
}
/// Apply the bitwise XOR operation to the content of two blocks.
- pub inline fn xorBlocks(block1: Block, block2: Block) Block {
+ pub fn xorBlocks(block1: Block, block2: Block) callconv(.Inline) Block {
return Block{ .repr = block1.repr ^ block2.repr };
}
/// Apply the bitwise AND operation to the content of two blocks.
- pub inline fn andBlocks(block1: Block, block2: Block) Block {
+ pub fn andBlocks(block1: Block, block2: Block) callconv(.Inline) Block {
return Block{ .repr = block1.repr & block2.repr };
}
/// Apply the bitwise OR operation to the content of two blocks.
- pub inline fn orBlocks(block1: Block, block2: Block) Block {
+ pub fn orBlocks(block1: Block, block2: Block) callconv(.Inline) Block {
return Block{ .repr = block1.repr | block2.repr };
}
@@ -120,7 +120,7 @@ pub const Block = struct {
pub const optimal_parallel_blocks = 8;
/// Encrypt multiple blocks in parallel, each their own round key.
- pub inline fn encryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
+ pub fn encryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
@@ -130,7 +130,7 @@ pub const Block = struct {
}
/// Decrypt multiple blocks in parallel, each their own round key.
- pub inline fn decryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
+ pub fn decryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
@@ -140,7 +140,7 @@ pub const Block = struct {
}
/// Encrypt multiple blocks in parallel with the same round key.
- pub inline fn encryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
+ pub fn encryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
@@ -150,7 +150,7 @@ pub const Block = struct {
}
/// Decrypt multiple blocks in parallel with the same round key.
- pub inline fn decryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
+ pub fn decryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
@@ -160,7 +160,7 @@ pub const Block = struct {
}
/// Encrypt multiple blocks in parallel with the same last round key.
- pub inline fn encryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
+ pub fn encryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
@@ -170,7 +170,7 @@ pub const Block = struct {
}
/// Decrypt multiple blocks in parallel with the same last round key.
- pub inline fn decryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
+ pub fn decryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) callconv(.Inline) [count]Block {
comptime var i = 0;
var out: [count]Block = undefined;
inline while (i < count) : (i += 1) {
diff --git a/lib/std/crypto/aes/soft.zig b/lib/std/crypto/aes/soft.zig
index 5eda9557ee..6f305b4050 100644
--- a/lib/std/crypto/aes/soft.zig
+++ b/lib/std/crypto/aes/soft.zig
@@ -18,7 +18,7 @@ pub const Block = struct {
repr: BlockVec align(16),
/// Convert a byte sequence into an internal representation.
- pub inline fn fromBytes(bytes: *const [16]u8) Block {
+ pub fn fromBytes(bytes: *const [16]u8) callconv(.Inline) Block {
const s0 = mem.readIntBig(u32, bytes[0..4]);
const s1 = mem.readIntBig(u32, bytes[4..8]);
const s2 = mem.readIntBig(u32, bytes[8..12]);
@@ -27,7 +27,7 @@ pub const Block = struct {
}
/// Convert the internal representation of a block into a byte sequence.
- pub inline fn toBytes(block: Block) [16]u8 {
+ pub fn toBytes(block: Block) callconv(.Inline) [16]u8 {
var bytes: [16]u8 = undefined;
mem.writeIntBig(u32, bytes[0..4], block.repr[0]);
mem.writeIntBig(u32, bytes[4..8], block.repr[1]);
@@ -37,7 +37,7 @@ pub const Block = struct {
}
/// XOR the block with a byte sequence.
- pub inline fn xorBytes(block: Block, bytes: *const [16]u8) [16]u8 {
+ pub fn xorBytes(block: Block, bytes: *const [16]u8) callconv(.Inline) [16]u8 {
const block_bytes = block.toBytes();
var x: [16]u8 = undefined;
comptime var i: usize = 0;
@@ -48,7 +48,7 @@ pub const Block = struct {
}
/// Encrypt a block with a round key.
- pub inline fn encrypt(block: Block, round_key: Block) Block {
+ pub fn encrypt(block: Block, round_key: Block) callconv(.Inline) Block {
const src = &block.repr;
const s0 = block.repr[0];
@@ -65,7 +65,7 @@ pub const Block = struct {
}
/// Encrypt a block with the last round key.
- pub inline fn encryptLast(block: Block, round_key: Block) Block {
+ pub fn encryptLast(block: Block, round_key: Block) callconv(.Inline) Block {
const src = &block.repr;
const t0 = block.repr[0];
@@ -87,7 +87,7 @@ pub const Block = struct {
}
/// Decrypt a block with a round key.
- pub inline fn decrypt(block: Block, round_key: Block) Block {
+ pub fn decrypt(block: Block, round_key: Block) callconv(.Inline) Block {
const src = &block.repr;
const s0 = block.repr[0];
@@ -104,7 +104,7 @@ pub const Block = struct {
}
/// Decrypt a block with the last round key.
- pub inline fn decryptLast(block: Block, round_key: Block) Block {
+ pub fn decryptLast(block: Block, round_key: Block) callconv(.Inline) Block {
const src = &block.repr;
const t0 = block.repr[0];
@@ -126,7 +126,7 @@ pub const Block = struct {
}
/// Apply the bitwise XOR operation to the content of two blocks.
- pub inline fn xorBlocks(block1: Block, block2: Block) Block {
+ pub fn xorBlocks(block1: Block, block2: Block) callconv(.Inline) Block {
var x: BlockVec = undefined;
comptime var i = 0;
inline while (i < 4) : (i += 1) {
@@ -136,7 +136,7 @@ pub const Block = struct {
}
/// Apply the bitwise AND operation to the content of two blocks.
- pub inline fn andBlocks(block1: Block, block2: Block) Block {
+ pub fn andBlocks(block1: Block, block2: Block) callconv(.Inline) Block {
var x: BlockVec = undefined;
comptime var i = 0;
inline while (i < 4) : (i += 1) {
@@ -146,7 +146,7 @@ pub const Block = struct {
}
/// Apply the bitwise OR operation to the content of two blocks.
- pub inline fn orBlocks(block1: Block, block2: Block) Block {
+ pub fn orBlocks(block1: Block, block2: Block) callconv(.Inline) Block {
var x: BlockVec = undefined;
comptime var i = 0;
inline while (i < 4) : (i += 1) {
diff --git a/lib/std/crypto/blake3.zig b/lib/std/crypto/blake3.zig
index e3d3192bf8..7a65487135 100644
--- a/lib/std/crypto/blake3.zig
+++ b/lib/std/crypto/blake3.zig
@@ -66,7 +66,7 @@ const CompressVectorized = struct {
const Lane = Vector(4, u32);
const Rows = [4]Lane;
- inline fn g(comptime even: bool, rows: *Rows, m: Lane) void {
+ fn g(comptime even: bool, rows: *Rows, m: Lane) callconv(.Inline) void {
rows[0] +%= rows[1] +% m;
rows[3] ^= rows[0];
rows[3] = math.rotr(Lane, rows[3], if (even) 8 else 16);
@@ -75,13 +75,13 @@ const CompressVectorized = struct {
rows[1] = math.rotr(Lane, rows[1], if (even) 7 else 12);
}
- inline fn diagonalize(rows: *Rows) void {
+ fn diagonalize(rows: *Rows) callconv(.Inline) void {
rows[0] = @shuffle(u32, rows[0], undefined, [_]i32{ 3, 0, 1, 2 });
rows[3] = @shuffle(u32, rows[3], undefined, [_]i32{ 2, 3, 0, 1 });
rows[2] = @shuffle(u32, rows[2], undefined, [_]i32{ 1, 2, 3, 0 });
}
- inline fn undiagonalize(rows: *Rows) void {
+ fn undiagonalize(rows: *Rows) callconv(.Inline) void {
rows[0] = @shuffle(u32, rows[0], undefined, [_]i32{ 1, 2, 3, 0 });
rows[3] = @shuffle(u32, rows[3], undefined, [_]i32{ 2, 3, 0, 1 });
rows[2] = @shuffle(u32, rows[2], undefined, [_]i32{ 3, 0, 1, 2 });
diff --git a/lib/std/crypto/chacha20.zig b/lib/std/crypto/chacha20.zig
index 8923bac26f..0f79707279 100644
--- a/lib/std/crypto/chacha20.zig
+++ b/lib/std/crypto/chacha20.zig
@@ -35,7 +35,7 @@ const ChaCha20VecImpl = struct {
};
}
- inline fn chacha20Core(x: *BlockVec, input: BlockVec) void {
+ fn chacha20Core(x: *BlockVec, input: BlockVec) callconv(.Inline) void {
x.* = input;
var r: usize = 0;
@@ -80,7 +80,7 @@ const ChaCha20VecImpl = struct {
}
}
- inline fn hashToBytes(out: *[64]u8, x: BlockVec) void {
+ fn hashToBytes(out: *[64]u8, x: BlockVec) callconv(.Inline) void {
var i: usize = 0;
while (i < 4) : (i += 1) {
mem.writeIntLittle(u32, out[16 * i + 0 ..][0..4], x[i][0]);
@@ -90,7 +90,7 @@ const ChaCha20VecImpl = struct {
}
}
- inline fn contextFeedback(x: *BlockVec, ctx: BlockVec) void {
+ fn contextFeedback(x: *BlockVec, ctx: BlockVec) callconv(.Inline) void {
x[0] +%= ctx[0];
x[1] +%= ctx[1];
x[2] +%= ctx[2];
@@ -190,7 +190,7 @@ const ChaCha20NonVecImpl = struct {
};
}
- inline fn chacha20Core(x: *BlockVec, input: BlockVec) void {
+ fn chacha20Core(x: *BlockVec, input: BlockVec) callconv(.Inline) void {
x.* = input;
const rounds = comptime [_]QuarterRound{
@@ -219,7 +219,7 @@ const ChaCha20NonVecImpl = struct {
}
}
- inline fn hashToBytes(out: *[64]u8, x: BlockVec) void {
+ fn hashToBytes(out: *[64]u8, x: BlockVec) callconv(.Inline) void {
var i: usize = 0;
while (i < 4) : (i += 1) {
mem.writeIntLittle(u32, out[16 * i + 0 ..][0..4], x[i * 4 + 0]);
@@ -229,7 +229,7 @@ const ChaCha20NonVecImpl = struct {
}
}
- inline fn contextFeedback(x: *BlockVec, ctx: BlockVec) void {
+ fn contextFeedback(x: *BlockVec, ctx: BlockVec) callconv(.Inline) void {
var i: usize = 0;
while (i < 16) : (i += 1) {
x[i] +%= ctx[i];
diff --git a/lib/std/crypto/ghash.zig b/lib/std/crypto/ghash.zig
index 3d56469d8e..ffc9ef41ae 100644
--- a/lib/std/crypto/ghash.zig
+++ b/lib/std/crypto/ghash.zig
@@ -95,7 +95,7 @@ pub const Ghash = struct {
}
}
- inline fn clmul_pclmul(x: u64, y: u64) u64 {
+ fn clmul_pclmul(x: u64, y: u64) callconv(.Inline) u64 {
const Vector = std.meta.Vector;
const product = asm (
\\ vpclmulqdq $0x00, %[x], %[y], %[out]
@@ -106,7 +106,7 @@ pub const Ghash = struct {
return product[0];
}
- inline fn clmul_pmull(x: u64, y: u64) u64 {
+ fn clmul_pmull(x: u64, y: u64) callconv(.Inline) u64 {
const Vector = std.meta.Vector;
const product = asm (
\\ pmull %[out].1q, %[x].1d, %[y].1d
diff --git a/lib/std/crypto/gimli.zig b/lib/std/crypto/gimli.zig
index a5a7fb8c59..4809b9b6f7 100644
--- a/lib/std/crypto/gimli.zig
+++ b/lib/std/crypto/gimli.zig
@@ -48,7 +48,7 @@ pub const State = struct {
return mem.asBytes(&self.data);
}
- inline fn endianSwap(self: *Self) void {
+ fn endianSwap(self: *Self) callconv(.Inline) void {
for (self.data) |*w| {
w.* = mem.littleToNative(u32, w.*);
}
@@ -116,7 +116,7 @@ pub const State = struct {
const Lane = Vector(4, u32);
- inline fn shift(x: Lane, comptime n: comptime_int) Lane {
+ fn shift(x: Lane, comptime n: comptime_int) callconv(.Inline) Lane {
return x << @splat(4, @as(u5, n));
}
diff --git a/lib/std/crypto/salsa20.zig b/lib/std/crypto/salsa20.zig
index 14505865cf..e22668f998 100644
--- a/lib/std/crypto/salsa20.zig
+++ b/lib/std/crypto/salsa20.zig
@@ -37,7 +37,7 @@ const Salsa20VecImpl = struct {
};
}
- inline fn salsa20Core(x: *BlockVec, input: BlockVec, comptime feedback: bool) void {
+ fn salsa20Core(x: *BlockVec, input: BlockVec, comptime feedback: bool) callconv(.Inline) void {
const n1n2n3n0 = Lane{ input[3][1], input[3][2], input[3][3], input[3][0] };
const n1n2 = Half{ n1n2n3n0[0], n1n2n3n0[1] };
const n3n0 = Half{ n1n2n3n0[2], n1n2n3n0[3] };
@@ -211,7 +211,7 @@ const Salsa20NonVecImpl = struct {
d: u6,
};
- inline fn Rp(a: usize, b: usize, c: usize, d: u6) QuarterRound {
+ fn Rp(a: usize, b: usize, c: usize, d: u6) callconv(.Inline) QuarterRound {
return QuarterRound{
.a = a,
.b = b,
@@ -220,7 +220,7 @@ const Salsa20NonVecImpl = struct {
};
}
- inline fn salsa20Core(x: *BlockVec, input: BlockVec, comptime feedback: bool) void {
+ fn salsa20Core(x: *BlockVec, input: BlockVec, comptime feedback: bool) callconv(.Inline) void {
const arx_steps = comptime [_]QuarterRound{
Rp(4, 0, 12, 7), Rp(8, 4, 0, 9), Rp(12, 8, 4, 13), Rp(0, 12, 8, 18),
Rp(9, 5, 1, 7), Rp(13, 9, 5, 9), Rp(1, 13, 9, 13), Rp(5, 1, 13, 18),
diff --git a/lib/std/crypto/siphash.zig b/lib/std/crypto/siphash.zig
index 0fde28f69e..67bb2a329a 100644
--- a/lib/std/crypto/siphash.zig
+++ b/lib/std/crypto/siphash.zig
@@ -7,10 +7,10 @@
// SipHash is a moderately fast pseudorandom function, returning a 64-bit or 128-bit tag for an arbitrary long input.
//
// Typical use cases include:
-// - protection against against DoS attacks for hash tables and bloom filters
+// - protection against DoS attacks for hash tables and bloom filters
// - authentication of short-lived messages in online protocols
//
-// https://131002.net/siphash/
+// https://www.aumasson.jp/siphash/siphash.pdf
const std = @import("../std.zig");
const assert = std.debug.assert;
const testing = std.testing;
diff --git a/lib/std/elf.zig b/lib/std/elf.zig
index 6dfa373414..cfb6b448c0 100644
--- a/lib/std/elf.zig
+++ b/lib/std/elf.zig
@@ -720,10 +720,10 @@ pub const Elf32_Rel = extern struct {
r_offset: Elf32_Addr,
r_info: Elf32_Word,
- pub inline fn r_sym(self: @This()) u24 {
+ pub fn r_sym(self: @This()) callconv(.Inline) u24 {
return @truncate(u24, self.r_info >> 8);
}
- pub inline fn r_type(self: @This()) u8 {
+ pub fn r_type(self: @This()) callconv(.Inline) u8 {
return @truncate(u8, self.r_info & 0xff);
}
};
@@ -731,10 +731,10 @@ pub const Elf64_Rel = extern struct {
r_offset: Elf64_Addr,
r_info: Elf64_Xword,
- pub inline fn r_sym(self: @This()) u32 {
+ pub fn r_sym(self: @This()) callconv(.Inline) u32 {
return @truncate(u32, self.r_info >> 32);
}
- pub inline fn r_type(self: @This()) u32 {
+ pub fn r_type(self: @This()) callconv(.Inline) u32 {
return @truncate(u32, self.r_info & 0xffffffff);
}
};
@@ -743,10 +743,10 @@ pub const Elf32_Rela = extern struct {
r_info: Elf32_Word,
r_addend: Elf32_Sword,
- pub inline fn r_sym(self: @This()) u24 {
+ pub fn r_sym(self: @This()) callconv(.Inline) u24 {
return @truncate(u24, self.r_info >> 8);
}
- pub inline fn r_type(self: @This()) u8 {
+ pub fn r_type(self: @This()) callconv(.Inline) u8 {
return @truncate(u8, self.r_info & 0xff);
}
};
@@ -755,10 +755,10 @@ pub const Elf64_Rela = extern struct {
r_info: Elf64_Xword,
r_addend: Elf64_Sxword,
- pub inline fn r_sym(self: @This()) u32 {
+ pub fn r_sym(self: @This()) callconv(.Inline) u32 {
return @truncate(u32, self.r_info >> 32);
}
- pub inline fn r_type(self: @This()) u32 {
+ pub fn r_type(self: @This()) callconv(.Inline) u32 {
return @truncate(u32, self.r_info & 0xffffffff);
}
};
diff --git a/lib/std/fmt.zig b/lib/std/fmt.zig
index 196e95f838..c1b24cc6da 100644
--- a/lib/std/fmt.zig
+++ b/lib/std/fmt.zig
@@ -69,6 +69,7 @@ pub const FormatOptions = struct {
/// - `c`: output integer as an ASCII character. Integer type must have 8 bits at max.
/// - `u`: output integer as an UTF-8 sequence. Integer type must have 21 bits at max.
/// - `*`: output the address of the value instead of the value itself.
+/// - `any`: output a value of any type using its default format
///
/// If a formatted user type contains a function of the type
/// ```
@@ -387,17 +388,32 @@ pub fn formatAddress(value: anytype, options: FormatOptions, writer: anytype) @T
return;
}
},
- .Array => |info| {
- try writer.writeAll(@typeName(info.child) ++ "@");
- try formatInt(@ptrToInt(value), 16, false, FormatOptions{}, writer);
- return;
- },
else => {},
}
@compileError("Cannot format non-pointer type " ++ @typeName(T) ++ " with * specifier");
}
+// This ANY const is a workaround for: https://github.com/ziglang/zig/issues/7948
+const ANY = "any";
+
+fn defaultSpec(comptime T: type) [:0]const u8 {
+ switch (@typeInfo(T)) {
+ .Array => |_| return ANY,
+ .Pointer => |ptr_info| switch (ptr_info.size) {
+ .One => switch (@typeInfo(ptr_info.child)) {
+ .Array => |_| return "*",
+ else => {},
+ },
+ .Many, .C => return "*",
+ .Slice => return ANY,
+ },
+ .Optional => |info| return defaultSpec(info.child),
+ else => {},
+ }
+ return "";
+}
+
pub fn formatType(
value: anytype,
comptime fmt: []const u8,
@@ -405,18 +421,19 @@ pub fn formatType(
writer: anytype,
max_depth: usize,
) @TypeOf(writer).Error!void {
- if (comptime std.mem.eql(u8, fmt, "*")) {
+ const actual_fmt = comptime if (std.mem.eql(u8, fmt, ANY)) defaultSpec(@TypeOf(value)) else fmt;
+ if (comptime std.mem.eql(u8, actual_fmt, "*")) {
return formatAddress(value, options, writer);
}
const T = @TypeOf(value);
if (comptime std.meta.trait.hasFn("format")(T)) {
- return try value.format(fmt, options, writer);
+ return try value.format(actual_fmt, options, writer);
}
switch (@typeInfo(T)) {
.ComptimeInt, .Int, .ComptimeFloat, .Float => {
- return formatValue(value, fmt, options, writer);
+ return formatValue(value, actual_fmt, options, writer);
},
.Void => {
return formatBuf("void", options, writer);
@@ -426,16 +443,16 @@ pub fn formatType(
},
.Optional => {
if (value) |payload| {
- return formatType(payload, fmt, options, writer, max_depth);
+ return formatType(payload, actual_fmt, options, writer, max_depth);
} else {
return formatBuf("null", options, writer);
}
},
.ErrorUnion => {
if (value) |payload| {
- return formatType(payload, fmt, options, writer, max_depth);
+ return formatType(payload, actual_fmt, options, writer, max_depth);
} else |err| {
- return formatType(err, fmt, options, writer, max_depth);
+ return formatType(err, actual_fmt, options, writer, max_depth);
}
},
.ErrorSet => {
@@ -461,7 +478,7 @@ pub fn formatType(
}
try writer.writeAll("(");
- try formatType(@enumToInt(value), fmt, options, writer, max_depth);
+ try formatType(@enumToInt(value), actual_fmt, options, writer, max_depth);
try writer.writeAll(")");
},
.Union => |info| {
@@ -475,7 +492,7 @@ pub fn formatType(
try writer.writeAll(" = ");
inline for (info.fields) |u_field| {
if (value == @field(UnionTagType, u_field.name)) {
- try formatType(@field(value, u_field.name), fmt, options, writer, max_depth - 1);
+ try formatType(@field(value, u_field.name), ANY, options, writer, max_depth - 1);
}
}
try writer.writeAll(" }");
@@ -497,48 +514,54 @@ pub fn formatType(
}
try writer.writeAll(f.name);
try writer.writeAll(" = ");
- try formatType(@field(value, f.name), fmt, options, writer, max_depth - 1);
+ try formatType(@field(value, f.name), ANY, options, writer, max_depth - 1);
}
try writer.writeAll(" }");
},
.Pointer => |ptr_info| switch (ptr_info.size) {
.One => switch (@typeInfo(ptr_info.child)) {
.Array => |info| {
+ if (actual_fmt.len == 0)
+ @compileError("cannot format array ref without a specifier (i.e. {s} or {*})");
if (info.child == u8) {
- if (fmt.len > 0 and comptime mem.indexOfScalar(u8, "sxXeEzZ", fmt[0]) != null) {
- return formatText(value, fmt, options, writer);
+ if (comptime mem.indexOfScalar(u8, "sxXeEzZ", actual_fmt[0]) != null) {
+ return formatText(value, actual_fmt, options, writer);
}
}
- return format(writer, "{s}@{x}", .{ @typeName(ptr_info.child), @ptrToInt(value) });
+ @compileError("Unknown format string: '" ++ actual_fmt ++ "'");
},
.Enum, .Union, .Struct => {
- return formatType(value.*, fmt, options, writer, max_depth);
+ return formatType(value.*, actual_fmt, options, writer, max_depth);
},
else => return format(writer, "{s}@{x}", .{ @typeName(ptr_info.child), @ptrToInt(value) }),
},
.Many, .C => {
+ if (actual_fmt.len == 0)
+ @compileError("cannot format pointer without a specifier (i.e. {s} or {*})");
if (ptr_info.sentinel) |sentinel| {
- return formatType(mem.span(value), fmt, options, writer, max_depth);
+ return formatType(mem.span(value), actual_fmt, options, writer, max_depth);
}
if (ptr_info.child == u8) {
- if (fmt.len > 0 and comptime mem.indexOfScalar(u8, "sxXeEzZ", fmt[0]) != null) {
- return formatText(mem.span(value), fmt, options, writer);
+ if (comptime mem.indexOfScalar(u8, "sxXeEzZ", actual_fmt[0]) != null) {
+ return formatText(mem.span(value), actual_fmt, options, writer);
}
}
- return format(writer, "{s}@{x}", .{ @typeName(ptr_info.child), @ptrToInt(value) });
+ @compileError("Unknown format string: '" ++ actual_fmt ++ "'");
},
.Slice => {
+ if (actual_fmt.len == 0)
+ @compileError("cannot format slice without a specifier (i.e. {s} or {any})");
if (max_depth == 0) {
return writer.writeAll("{ ... }");
}
if (ptr_info.child == u8) {
- if (fmt.len > 0 and comptime mem.indexOfScalar(u8, "sxXeEzZ", fmt[0]) != null) {
- return formatText(value, fmt, options, writer);
+ if (comptime mem.indexOfScalar(u8, "sxXeEzZ", actual_fmt[0]) != null) {
+ return formatText(value, actual_fmt, options, writer);
}
}
try writer.writeAll("{ ");
for (value) |elem, i| {
- try formatType(elem, fmt, options, writer, max_depth - 1);
+ try formatType(elem, actual_fmt, options, writer, max_depth - 1);
if (i != value.len - 1) {
try writer.writeAll(", ");
}
@@ -547,17 +570,19 @@ pub fn formatType(
},
},
.Array => |info| {
+ if (actual_fmt.len == 0)
+ @compileError("cannot format array without a specifier (i.e. {s} or {any})");
if (max_depth == 0) {
return writer.writeAll("{ ... }");
}
if (info.child == u8) {
- if (fmt.len > 0 and comptime mem.indexOfScalar(u8, "sxXeEzZ", fmt[0]) != null) {
- return formatText(&value, fmt, options, writer);
+ if (comptime mem.indexOfScalar(u8, "sxXeEzZ", actual_fmt[0]) != null) {
+ return formatText(&value, actual_fmt, options, writer);
}
}
try writer.writeAll("{ ");
for (value) |elem, i| {
- try formatType(elem, fmt, options, writer, max_depth - 1);
+ try formatType(elem, actual_fmt, options, writer, max_depth - 1);
if (i < value.len - 1) {
try writer.writeAll(", ");
}
@@ -568,7 +593,7 @@ pub fn formatType(
try writer.writeAll("{ ");
var i: usize = 0;
while (i < info.len) : (i += 1) {
- try formatValue(value[i], fmt, options, writer);
+ try formatValue(value[i], actual_fmt, options, writer);
if (i < info.len - 1) {
try writer.writeAll(", ");
}
@@ -634,12 +659,7 @@ pub fn formatIntValue(
@compileError("Cannot print integer that is larger than 8 bits as a ascii");
}
} else if (comptime std.mem.eql(u8, fmt, "Z")) {
- if (@typeInfo(@TypeOf(int_value)).Int.bits <= 8) {
- const c: u8 = int_value;
- return formatZigEscapes(@as(*const [1]u8, &c), options, writer);
- } else {
- @compileError("Cannot escape character with more than 8 bits");
- }
+ @compileError("specifier 'Z' has been deprecated, wrap your argument in std.zig.fmtEscapes instead");
} else if (comptime std.mem.eql(u8, fmt, "u")) {
if (@typeInfo(@TypeOf(int_value)).Int.bits <= 21) {
return formatUnicodeCodepoint(@as(u21, int_value), options, writer);
@@ -659,7 +679,7 @@ pub fn formatIntValue(
radix = 8;
uppercase = false;
} else {
- @compileError("Unknown format string: '" ++ fmt ++ "'");
+ @compileError("Unsupported format string '" ++ fmt ++ "' for type '" ++ @typeName(@TypeOf(value)) ++ "'");
}
return formatInt(int_value, radix, uppercase, options, writer);
@@ -686,7 +706,7 @@ fn formatFloatValue(
else => |e| return e,
};
} else {
- @compileError("Unknown format string: '" ++ fmt ++ "'");
+ @compileError("Unsupported format string '" ++ fmt ++ "' for type '" ++ @typeName(@TypeOf(value)) ++ "'");
}
return formatBuf(buf_stream.getWritten(), options, writer);
@@ -720,7 +740,7 @@ pub fn formatText(
} else if (comptime std.mem.eql(u8, fmt, "Z")) {
@compileError("specifier 'Z' has been deprecated, wrap your argument in std.zig.fmtEscapes instead");
} else {
- @compileError("Unknown format string: '" ++ fmt ++ "'");
+ @compileError("Unsupported format string '" ++ fmt ++ "' for type '" ++ @typeName(@TypeOf(value)) ++ "'");
}
}
@@ -1673,7 +1693,7 @@ test "slice" {
{
var int_slice = [_]u32{ 1, 4096, 391891, 1111111111 };
var runtime_zero: usize = 0;
- try expectFmt("int: { 1, 4096, 391891, 1111111111 }", "int: {}", .{int_slice[runtime_zero..]});
+ try expectFmt("int: { 1, 4096, 391891, 1111111111 }", "int: {any}", .{int_slice[runtime_zero..]});
try expectFmt("int: { 1, 4096, 391891, 1111111111 }", "int: {d}", .{int_slice[runtime_zero..]});
try expectFmt("int: { 1, 1000, 5fad3, 423a35c7 }", "int: {x}", .{int_slice[runtime_zero..]});
try expectFmt("int: { 00001, 01000, 5fad3, 423a35c7 }", "int: {x:0>5}", .{int_slice[runtime_zero..]});
diff --git a/lib/std/fmt/parse_float.zig b/lib/std/fmt/parse_float.zig
index caa88520ac..324b06898e 100644
--- a/lib/std/fmt/parse_float.zig
+++ b/lib/std/fmt/parse_float.zig
@@ -52,21 +52,21 @@ const Z96 = struct {
d2: u32,
// d = s >> 1
- inline fn shiftRight1(d: *Z96, s: Z96) void {
+ fn shiftRight1(d: *Z96, s: Z96) callconv(.Inline) void {
d.d0 = (s.d0 >> 1) | ((s.d1 & 1) << 31);
d.d1 = (s.d1 >> 1) | ((s.d2 & 1) << 31);
d.d2 = s.d2 >> 1;
}
// d = s << 1
- inline fn shiftLeft1(d: *Z96, s: Z96) void {
+ fn shiftLeft1(d: *Z96, s: Z96) callconv(.Inline) void {
d.d2 = (s.d2 << 1) | ((s.d1 & (1 << 31)) >> 31);
d.d1 = (s.d1 << 1) | ((s.d0 & (1 << 31)) >> 31);
d.d0 = s.d0 << 1;
}
// d += s
- inline fn add(d: *Z96, s: Z96) void {
+ fn add(d: *Z96, s: Z96) callconv(.Inline) void {
var w = @as(u64, d.d0) + @as(u64, s.d0);
d.d0 = @truncate(u32, w);
@@ -80,7 +80,7 @@ const Z96 = struct {
}
// d -= s
- inline fn sub(d: *Z96, s: Z96) void {
+ fn sub(d: *Z96, s: Z96) callconv(.Inline) void {
var w = @as(u64, d.d0) -% @as(u64, s.d0);
d.d0 = @truncate(u32, w);
diff --git a/lib/std/hash/auto_hash.zig b/lib/std/hash/auto_hash.zig
index 8b5852c4af..4afc2b425b 100644
--- a/lib/std/hash/auto_hash.zig
+++ b/lib/std/hash/auto_hash.zig
@@ -239,7 +239,7 @@ fn testHashDeepRecursive(key: anytype) u64 {
test "typeContainsSlice" {
comptime {
- testing.expect(!typeContainsSlice(@TagType(std.builtin.TypeInfo)));
+ testing.expect(!typeContainsSlice(meta.Tag(std.builtin.TypeInfo)));
testing.expect(typeContainsSlice([]const u8));
testing.expect(!typeContainsSlice(u8));
diff --git a/lib/std/hash/cityhash.zig b/lib/std/hash/cityhash.zig
index c2e7db4d49..d7f2f1a9eb 100644
--- a/lib/std/hash/cityhash.zig
+++ b/lib/std/hash/cityhash.zig
@@ -6,7 +6,7 @@
const std = @import("std");
const builtin = @import("builtin");
-inline fn offsetPtr(ptr: [*]const u8, offset: usize) [*]const u8 {
+fn offsetPtr(ptr: [*]const u8, offset: usize) callconv(.Inline) [*]const u8 {
// ptr + offset doesn't work at comptime so we need this instead.
return @ptrCast([*]const u8, &ptr[offset]);
}
diff --git a/lib/std/json.zig b/lib/std/json.zig
index 077b910a2c..ff258c7f3a 100644
--- a/lib/std/json.zig
+++ b/lib/std/json.zig
@@ -246,7 +246,7 @@ pub const StreamingParser = struct {
// Only call this function to generate array/object final state.
pub fn fromInt(x: anytype) State {
debug.assert(x == 0 or x == 1);
- const T = @TagType(State);
+ const T = std.meta.Tag(State);
return @intToEnum(State, @intCast(T, x));
}
};
@@ -1138,7 +1138,7 @@ pub const TokenStream = struct {
}
};
-fn checkNext(p: *TokenStream, id: std.meta.TagType(Token)) void {
+fn checkNext(p: *TokenStream, id: std.meta.Tag(Token)) void {
const token = (p.next() catch unreachable).?;
debug.assert(std.meta.activeTag(token) == id);
}
@@ -1255,6 +1255,7 @@ pub const Value = union(enum) {
Bool: bool,
Integer: i64,
Float: f64,
+ NumberString: []const u8,
String: []const u8,
Array: Array,
Object: ObjectMap,
@@ -1269,6 +1270,7 @@ pub const Value = union(enum) {
.Bool => |inner| try stringify(inner, options, out_stream),
.Integer => |inner| try stringify(inner, options, out_stream),
.Float => |inner| try stringify(inner, options, out_stream),
+ .NumberString => |inner| try out_stream.writeAll(inner),
.String => |inner| try stringify(inner, options, out_stream),
.Array => |inner| try stringify(inner.items, options, out_stream),
.Object => |inner| {
@@ -1338,6 +1340,12 @@ test "Value.jsonStringify" {
try (Value{ .Integer = 42 }).jsonStringify(.{}, fbs.writer());
testing.expectEqualSlices(u8, fbs.getWritten(), "42");
}
+ {
+ var buffer: [10]u8 = undefined;
+ var fbs = std.io.fixedBufferStream(&buffer);
+ try (Value{ .NumberString = "43" }).jsonStringify(.{}, fbs.writer());
+ testing.expectEqualSlices(u8, fbs.getWritten(), "43");
+ }
{
var buffer: [10]u8 = undefined;
var fbs = std.io.fixedBufferStream(&buffer);
@@ -1356,7 +1364,7 @@ test "Value.jsonStringify" {
var vals = [_]Value{
.{ .Integer = 1 },
.{ .Integer = 2 },
- .{ .Integer = 3 },
+ .{ .NumberString = "3" },
};
try (Value{
.Array = Array.fromOwnedSlice(undefined, &vals),
@@ -1374,6 +1382,65 @@ test "Value.jsonStringify" {
}
}
+/// parse tokens from a stream, returning `false` if they do not decode to `value`
+fn parsesTo(comptime T: type, value: T, tokens: *TokenStream, options: ParseOptions) !bool {
+ // TODO: should be able to write this function to not require an allocator
+ const tmp = try parse(T, tokens, options);
+ defer parseFree(T, tmp, options);
+
+ return parsedEqual(tmp, value);
+}
+
+/// Returns if a value returned by `parse` is deep-equal to another value
+fn parsedEqual(a: anytype, b: @TypeOf(a)) bool {
+ switch (@typeInfo(@TypeOf(a))) {
+ .Optional => {
+ if (a == null and b == null) return true;
+ if (a == null or b == null) return false;
+ return parsedEqual(a.?, b.?);
+ },
+ .Union => |unionInfo| {
+ if (info.tag_type) |UnionTag| {
+ const tag_a = std.meta.activeTag(a);
+ const tag_b = std.meta.activeTag(b);
+ if (tag_a != tag_b) return false;
+
+ inline for (info.fields) |field_info| {
+ if (@field(UnionTag, field_info.name) == tag_a) {
+ return parsedEqual(@field(a, field_info.name), @field(b, field_info.name));
+ }
+ }
+ return false;
+ } else {
+ unreachable;
+ }
+ },
+ .Array => {
+ for (a) |e, i|
+ if (!parsedEqual(e, b[i])) return false;
+ return true;
+ },
+ .Struct => |info| {
+ inline for (info.fields) |field_info| {
+ if (!parsedEqual(@field(a, field_info.name), @field(b, field_info.name))) return false;
+ }
+ return true;
+ },
+ .Pointer => |ptrInfo| switch (ptrInfo.size) {
+ .One => return parsedEqual(a.*, b.*),
+ .Slice => {
+ if (a.len != b.len) return false;
+ for (a) |e, i|
+ if (!parsedEqual(e, b[i])) return false;
+ return true;
+ },
+ .Many, .C => unreachable,
+ },
+ else => return a == b,
+ }
+ unreachable;
+}
+
pub const ParseOptions = struct {
allocator: ?*Allocator = null,
@@ -1454,6 +1521,8 @@ fn parseInternal(comptime T: type, token: Token, tokens: *TokenStream, options:
// Parsing some types won't have OutOfMemory in their
// error-sets, for the condition to be valid, merge it in.
if (@as(@TypeOf(err) || error{OutOfMemory}, err) == error.OutOfMemory) return err;
+ // Bubble up AllocatorRequired, as it indicates missing option
+ if (@as(@TypeOf(err) || error{AllocatorRequired}, err) == error.AllocatorRequired) return err;
// otherwise continue through the `inline for`
}
}
@@ -1471,7 +1540,7 @@ fn parseInternal(comptime T: type, token: Token, tokens: *TokenStream, options:
var fields_seen = [_]bool{false} ** structInfo.fields.len;
errdefer {
inline for (structInfo.fields) |field, i| {
- if (fields_seen[i]) {
+ if (fields_seen[i] and !field.is_comptime) {
parseFree(field.field_type, @field(r, field.name), options);
}
}
@@ -1504,7 +1573,13 @@ fn parseInternal(comptime T: type, token: Token, tokens: *TokenStream, options:
parseFree(field.field_type, @field(r, field.name), options);
}
}
- @field(r, field.name) = try parse(field.field_type, tokens, options);
+ if (field.is_comptime) {
+ if (!try parsesTo(field.field_type, field.default_value.?, tokens, options)) {
+ return error.UnexpectedValue;
+ }
+ } else {
+ @field(r, field.name) = try parse(field.field_type, tokens, options);
+ }
fields_seen[i] = true;
found = true;
break;
@@ -1518,7 +1593,9 @@ fn parseInternal(comptime T: type, token: Token, tokens: *TokenStream, options:
inline for (structInfo.fields) |field, i| {
if (!fields_seen[i]) {
if (field.default_value) |default| {
- @field(r, field.name) = default;
+ if (!field.is_comptime) {
+ @field(r, field.name) = default;
+ }
} else {
return error.MissingField;
}
@@ -1731,18 +1808,6 @@ test "parse into tagged union" {
testing.expectEqual(T{ .float = 1.5 }, try parse(T, &TokenStream.init("1.5"), ParseOptions{}));
}
- { // if union matches string member, fails with NoUnionMembersMatched rather than AllocatorRequired
- // Note that this behaviour wasn't necessarily by design, but was
- // what fell out of the implementation and may result in interesting
- // API breakage if changed
- const T = union(enum) {
- int: i32,
- float: f64,
- string: []const u8,
- };
- testing.expectError(error.NoUnionMembersMatched, parse(T, &TokenStream.init("\"foo\""), ParseOptions{}));
- }
-
{ // failing allocations should be bubbled up instantly without trying next member
var fail_alloc = testing.FailingAllocator.init(testing.allocator, 0);
const options = ParseOptions{ .allocator = &fail_alloc.allocator };
@@ -1772,6 +1837,25 @@ test "parse into tagged union" {
}
}
+test "parse union bubbles up AllocatorRequired" {
+ { // string member first in union (and not matching)
+ const T = union(enum) {
+ string: []const u8,
+ int: i32,
+ };
+ testing.expectError(error.AllocatorRequired, parse(T, &TokenStream.init("42"), ParseOptions{}));
+ }
+
+ { // string member not first in union (and matching)
+ const T = union(enum) {
+ int: i32,
+ float: f64,
+ string: []const u8,
+ };
+ testing.expectError(error.AllocatorRequired, parse(T, &TokenStream.init("\"foo\""), ParseOptions{}));
+ }
+}
+
test "parseFree descends into tagged union" {
var fail_alloc = testing.FailingAllocator.init(testing.allocator, 1);
const options = ParseOptions{ .allocator = &fail_alloc.allocator };
@@ -1782,13 +1866,50 @@ test "parseFree descends into tagged union" {
};
// use a string with unicode escape so we know result can't be a reference to global constant
const r = try parse(T, &TokenStream.init("\"with\\u0105unicode\""), options);
- testing.expectEqual(@TagType(T).string, @as(@TagType(T), r));
+ testing.expectEqual(std.meta.Tag(T).string, @as(std.meta.Tag(T), r));
testing.expectEqualSlices(u8, "withÄ…unicode", r.string);
testing.expectEqual(@as(usize, 0), fail_alloc.deallocations);
parseFree(T, r, options);
testing.expectEqual(@as(usize, 1), fail_alloc.deallocations);
}
+test "parse with comptime field" {
+ {
+ const T = struct {
+ comptime a: i32 = 0,
+ b: bool,
+ };
+ testing.expectEqual(T{ .a = 0, .b = true }, try parse(T, &TokenStream.init(
+ \\{
+ \\ "a": 0,
+ \\ "b": true
+ \\}
+ ), ParseOptions{}));
+ }
+
+ { // string comptime values currently require an allocator
+ const T = union(enum) {
+ foo: struct {
+ comptime kind: []const u8 = "boolean",
+ b: bool,
+ },
+ bar: struct {
+ comptime kind: []const u8 = "float",
+ b: f64,
+ },
+ };
+
+ const r = try std.json.parse(T, &std.json.TokenStream.init(
+ \\{
+ \\ "kind": "float",
+ \\ "b": 1.0
+ \\}
+ ), .{
+ .allocator = std.testing.allocator,
+ });
+ }
+}
+
test "parse into struct with no fields" {
const T = struct {};
testing.expectEqual(T{}, try parse(T, &TokenStream.init("{}"), ParseOptions{}));
@@ -2077,7 +2198,7 @@ pub const Parser = struct {
}
}
- fn parseString(p: *Parser, allocator: *Allocator, s: std.meta.TagPayloadType(Token, Token.String), input: []const u8, i: usize) !Value {
+ fn parseString(p: *Parser, allocator: *Allocator, s: std.meta.TagPayload(Token, Token.String), input: []const u8, i: usize) !Value {
const slice = s.slice(input, i);
switch (s.escapes) {
.None => return Value{ .String = if (p.copy_strings) try allocator.dupe(u8, slice) else slice },
@@ -2090,9 +2211,14 @@ pub const Parser = struct {
}
}
- fn parseNumber(p: *Parser, n: std.meta.TagPayloadType(Token, Token.Number), input: []const u8, i: usize) !Value {
+ fn parseNumber(p: *Parser, n: std.meta.TagPayload(Token, Token.Number), input: []const u8, i: usize) !Value {
return if (n.is_integer)
- Value{ .Integer = try std.fmt.parseInt(i64, n.slice(input, i), 10) }
+ Value{
+ .Integer = std.fmt.parseInt(i64, n.slice(input, i), 10) catch |e| switch (e) {
+ error.Overflow => return Value{ .NumberString = n.slice(input, i) },
+ error.InvalidCharacter => |err| return err,
+ },
+ }
else
Value{ .Float = try std.fmt.parseFloat(f64, n.slice(input, i)) };
}
@@ -2180,7 +2306,8 @@ test "json.parser.dynamic" {
\\ "Animated" : false,
\\ "IDs": [116, 943, 234, 38793],
\\ "ArrayOfObject": [{"n": "m"}],
- \\ "double": 1.3412
+ \\ "double": 1.3412,
+ \\ "LargeInt": 18446744073709551615
\\ }
\\}
;
@@ -2212,6 +2339,9 @@ test "json.parser.dynamic" {
const double = image.Object.get("double").?;
testing.expect(double.Float == 1.3412);
+
+ const large_int = image.Object.get("LargeInt").?;
+ testing.expect(mem.eql(u8, large_int.NumberString, "18446744073709551615"));
}
test "import more json tests" {
diff --git a/lib/std/macho.zig b/lib/std/macho.zig
index 459410861e..6785abffca 100644
--- a/lib/std/macho.zig
+++ b/lib/std/macho.zig
@@ -1334,6 +1334,41 @@ pub const reloc_type_x86_64 = packed enum(u4) {
X86_64_RELOC_TLV,
};
+pub const reloc_type_arm64 = packed enum(u4) {
+ /// For pointers.
+ ARM64_RELOC_UNSIGNED = 0,
+
+ /// Must be followed by a ARM64_RELOC_UNSIGNED.
+ ARM64_RELOC_SUBTRACTOR,
+
+ /// A B/BL instruction with 26-bit displacement.
+ ARM64_RELOC_BRANCH26,
+
+ /// Pc-rel distance to page of target.
+ ARM64_RELOC_PAGE21,
+
+ /// Offset within page, scaled by r_length.
+ ARM64_RELOC_PAGEOFF12,
+
+ /// Pc-rel distance to page of GOT slot.
+ ARM64_RELOC_GOT_LOAD_PAGE21,
+
+ /// Offset within page of GOT slot, scaled by r_length.
+ ARM64_RELOC_GOT_LOAD_PAGEOFF12,
+
+ /// For pointers to GOT slots.
+ ARM64_RELOC_POINTER_TO_GOT,
+
+ /// Pc-rel distance to page of TLVP slot.
+ ARM64_RELOC_TLVP_LOAD_PAGE21,
+
+ /// Offset within page of TLVP slot, scaled by r_length.
+ ARM64_RELOC_TLVP_LOAD_PAGEOFF12,
+
+ /// Must be followed by PAGE21 or PAGEOFF12.
+ ARM64_RELOC_ADDEND,
+};
+
/// This symbol is a reference to an external non-lazy (data) symbol.
pub const REFERENCE_FLAG_UNDEFINED_NON_LAZY: u16 = 0x0;
diff --git a/lib/std/math/big/int.zig b/lib/std/math/big/int.zig
index 3cd72dd8e4..81982eac51 100644
--- a/lib/std/math/big/int.zig
+++ b/lib/std/math/big/int.zig
@@ -549,8 +549,8 @@ pub const Mutable = struct {
return;
}
- const r_len = llshr(r.limbs[0..], a.limbs[0..a.limbs.len], shift);
- r.len = a.limbs.len - (shift / limb_bits);
+ llshr(r.limbs[0..], a.limbs[0..a.limbs.len], shift);
+ r.normalize(a.limbs.len - (shift / limb_bits));
r.positive = a.positive;
}
@@ -1348,7 +1348,9 @@ pub const Const = struct {
/// Returns true if `a == 0`.
pub fn eqZero(a: Const) bool {
- return a.limbs.len == 1 and a.limbs[0] == 0;
+ var d: Limb = 0;
+ for (a.limbs) |limb| d |= limb;
+ return d == 0;
}
/// Returns true if `|a| == |b|`.
diff --git a/lib/std/math/big/int_test.zig b/lib/std/math/big/int_test.zig
index b73e9f90d6..179e55ff69 100644
--- a/lib/std/math/big/int_test.zig
+++ b/lib/std/math/big/int_test.zig
@@ -1287,6 +1287,12 @@ test "big.int shift-right multi" {
try a.shiftRight(a, 67);
testing.expect((try a.to(u64)) == 0x1fffe0001dddc222);
+
+ try a.set(0xffff0000eeee1111dddd2222cccc3333);
+ try a.shiftRight(a, 63);
+ try a.shiftRight(a, 63);
+ try a.shiftRight(a, 2);
+ testing.expect(a.eqZero());
}
test "big.int shift-left single" {
diff --git a/lib/std/mem.zig b/lib/std/mem.zig
index 98a37e3d2b..5f23a10401 100644
--- a/lib/std/mem.zig
+++ b/lib/std/mem.zig
@@ -1507,7 +1507,7 @@ pub fn joinZ(allocator: *Allocator, separator: []const u8, slices: []const []con
}
fn joinMaybeZ(allocator: *Allocator, separator: []const u8, slices: []const []const u8, zero: bool) ![]u8 {
- if (slices.len == 0) return &[0]u8{};
+ if (slices.len == 0) return if (zero) try allocator.dupe(u8, &[1]u8{0}) else &[0]u8{};
const total_len = blk: {
var sum: usize = separator.len * (slices.len - 1);
@@ -1535,6 +1535,11 @@ fn joinMaybeZ(allocator: *Allocator, separator: []const u8, slices: []const []co
}
test "mem.join" {
+ {
+ const str = try join(testing.allocator, ",", &[_][]const u8{});
+ defer testing.allocator.free(str);
+ testing.expect(eql(u8, str, ""));
+ }
{
const str = try join(testing.allocator, ",", &[_][]const u8{ "a", "b", "c" });
defer testing.allocator.free(str);
@@ -1553,6 +1558,12 @@ test "mem.join" {
}
test "mem.joinZ" {
+ {
+ const str = try joinZ(testing.allocator, ",", &[_][]const u8{});
+ defer testing.allocator.free(str);
+ testing.expect(eql(u8, str, ""));
+ testing.expectEqual(str[str.len], 0);
+ }
{
const str = try joinZ(testing.allocator, ",", &[_][]const u8{ "a", "b", "c" });
defer testing.allocator.free(str);
diff --git a/lib/std/meta.zig b/lib/std/meta.zig
index 2c94569bf1..30f69ae9a5 100644
--- a/lib/std/meta.zig
+++ b/lib/std/meta.zig
@@ -600,15 +600,18 @@ test "std.meta.FieldEnum" {
expectEqualEnum(enum { a, b, c }, FieldEnum(union { a: u8, b: void, c: f32 }));
}
-pub fn TagType(comptime T: type) type {
+// Deprecated: use Tag
+pub const TagType = Tag;
+
+pub fn Tag(comptime T: type) type {
return switch (@typeInfo(T)) {
.Enum => |info| info.tag_type,
- .Union => |info| if (info.tag_type) |Tag| Tag else null,
+ .Union => |info| info.tag_type orelse @compileError(@typeName(T) ++ " has no tag type"),
else => @compileError("expected enum or union type, found '" ++ @typeName(T) ++ "'"),
};
}
-test "std.meta.TagType" {
+test "std.meta.Tag" {
const E = enum(u8) {
C = 33,
D,
@@ -618,14 +621,14 @@ test "std.meta.TagType" {
D: u16,
};
- testing.expect(TagType(E) == u8);
- testing.expect(TagType(U) == E);
+ testing.expect(Tag(E) == u8);
+ testing.expect(Tag(U) == E);
}
///Returns the active tag of a tagged union
-pub fn activeTag(u: anytype) @TagType(@TypeOf(u)) {
+pub fn activeTag(u: anytype) Tag(@TypeOf(u)) {
const T = @TypeOf(u);
- return @as(@TagType(T), u);
+ return @as(Tag(T), u);
}
test "std.meta.activeTag" {
@@ -646,13 +649,15 @@ test "std.meta.activeTag" {
testing.expect(activeTag(u) == UE.Float);
}
+const TagPayloadType = TagPayload;
+
///Given a tagged union type, and an enum, return the type of the union
/// field corresponding to the enum tag.
-pub fn TagPayloadType(comptime U: type, tag: @TagType(U)) type {
+pub fn TagPayload(comptime U: type, tag: Tag(U)) type {
testing.expect(trait.is(.Union)(U));
const info = @typeInfo(U).Union;
- const tag_info = @typeInfo(@TagType(U)).Enum;
+ const tag_info = @typeInfo(Tag(U)).Enum;
inline for (info.fields) |field_info| {
if (comptime mem.eql(u8, field_info.name, @tagName(tag)))
@@ -662,14 +667,14 @@ pub fn TagPayloadType(comptime U: type, tag: @TagType(U)) type {
unreachable;
}
-test "std.meta.TagPayloadType" {
+test "std.meta.TagPayload" {
const Event = union(enum) {
Moved: struct {
from: i32,
to: i32,
},
};
- const MovedEvent = TagPayloadType(Event, Event.Moved);
+ const MovedEvent = TagPayload(Event, Event.Moved);
var e: Event = undefined;
testing.expect(MovedEvent == @TypeOf(e.Moved));
}
@@ -694,13 +699,13 @@ pub fn eql(a: anytype, b: @TypeOf(a)) bool {
}
},
.Union => |info| {
- if (info.tag_type) |Tag| {
+ if (info.tag_type) |UnionTag| {
const tag_a = activeTag(a);
const tag_b = activeTag(b);
if (tag_a != tag_b) return false;
inline for (info.fields) |field_info| {
- if (@field(Tag, field_info.name) == tag_a) {
+ if (@field(UnionTag, field_info.name) == tag_a) {
return eql(@field(a, field_info.name), @field(b, field_info.name));
}
}
@@ -822,9 +827,9 @@ test "intToEnum with error return" {
pub const IntToEnumError = error{InvalidEnumTag};
-pub fn intToEnum(comptime Tag: type, tag_int: anytype) IntToEnumError!Tag {
- inline for (@typeInfo(Tag).Enum.fields) |f| {
- const this_tag_value = @field(Tag, f.name);
+pub fn intToEnum(comptime EnumTag: type, tag_int: anytype) IntToEnumError!EnumTag {
+ inline for (@typeInfo(EnumTag).Enum.fields) |f| {
+ const this_tag_value = @field(EnumTag, f.name);
if (tag_int == @enumToInt(this_tag_value)) {
return this_tag_value;
}
@@ -979,9 +984,59 @@ test "std.meta.cast" {
/// Given a value returns its size as C's sizeof operator would.
/// This is for translate-c and is not intended for general use.
pub fn sizeof(target: anytype) usize {
- switch (@typeInfo(@TypeOf(target))) {
- .Type => return @sizeOf(target),
- .Float, .Int, .Struct, .Union, .Enum => return @sizeOf(@TypeOf(target)),
+ const T: type = if (@TypeOf(target) == type) target else @TypeOf(target);
+ switch (@typeInfo(T)) {
+ .Float, .Int, .Struct, .Union, .Enum, .Array, .Bool, .Vector => return @sizeOf(T),
+ .Fn => {
+ // sizeof(main) returns 1, sizeof(&main) returns pointer size.
+ // We cannot distinguish those types in Zig, so use pointer size.
+ return @sizeOf(T);
+ },
+ .Null => return @sizeOf(*c_void),
+ .Void => {
+ // Note: sizeof(void) is 1 on clang/gcc and 0 on MSVC.
+ return 1;
+ },
+ .Opaque => {
+ if (T == c_void) {
+ // Note: sizeof(void) is 1 on clang/gcc and 0 on MSVC.
+ return 1;
+ } else {
+ @compileError("Cannot use C sizeof on opaque type "++@typeName(T));
+ }
+ },
+ .Optional => |opt| {
+ if (@typeInfo(opt.child) == .Pointer) {
+ return sizeof(opt.child);
+ } else {
+ @compileError("Cannot use C sizeof on non-pointer optional "++@typeName(T));
+ }
+ },
+ .Pointer => |ptr| {
+ if (ptr.size == .Slice) {
+ @compileError("Cannot use C sizeof on slice type "++@typeName(T));
+ }
+ // for strings, sizeof("a") returns 2.
+ // normal pointer decay scenarios from C are handled
+ // in the .Array case above, but strings remain literals
+ // and are therefore always pointers, so they need to be
+ // specially handled here.
+ if (ptr.size == .One and ptr.is_const and @typeInfo(ptr.child) == .Array) {
+ const array_info = @typeInfo(ptr.child).Array;
+ if ((array_info.child == u8 or array_info.child == u16) and
+ array_info.sentinel != null and
+ array_info.sentinel.? == 0) {
+ // length of the string plus one for the null terminator.
+ return (array_info.len + 1) * @sizeOf(array_info.child);
+ }
+ }
+ // When zero sized pointers are removed, this case will no
+ // longer be reachable and can be deleted.
+ if (@sizeOf(T) == 0) {
+ return @sizeOf(*c_void);
+ }
+ return @sizeOf(T);
+ },
.ComptimeFloat => return @sizeOf(f64), // TODO c_double #3999
.ComptimeInt => {
// TODO to get the correct result we have to translate
@@ -991,7 +1046,7 @@ pub fn sizeof(target: anytype) usize {
// TODO test if target fits in int, long or long long
return @sizeOf(c_int);
},
- else => @compileError("TODO implement std.meta.sizeof for type " ++ @typeName(@TypeOf(target))),
+ else => @compileError("std.meta.sizeof does not support type " ++ @typeName(T)),
}
}
@@ -999,12 +1054,45 @@ test "sizeof" {
const E = extern enum(c_int) { One, _ };
const S = extern struct { a: u32 };
+ const ptr_size = @sizeOf(*c_void);
+
testing.expect(sizeof(u32) == 4);
testing.expect(sizeof(@as(u32, 2)) == 4);
testing.expect(sizeof(2) == @sizeOf(c_int));
+
+ testing.expect(sizeof(2.0) == @sizeOf(f64));
+
testing.expect(sizeof(E) == @sizeOf(c_int));
testing.expect(sizeof(E.One) == @sizeOf(c_int));
+
testing.expect(sizeof(S) == 4);
+
+ testing.expect(sizeof([_]u32{4, 5, 6}) == 12);
+ testing.expect(sizeof([3]u32) == 12);
+ testing.expect(sizeof([3:0]u32) == 16);
+ testing.expect(sizeof(&[_]u32{4, 5, 6}) == ptr_size);
+
+ testing.expect(sizeof(*u32) == ptr_size);
+ testing.expect(sizeof([*]u32) == ptr_size);
+ testing.expect(sizeof([*c]u32) == ptr_size);
+ testing.expect(sizeof(?*u32) == ptr_size);
+ testing.expect(sizeof(?[*]u32) == ptr_size);
+ testing.expect(sizeof(*c_void) == ptr_size);
+ testing.expect(sizeof(*void) == ptr_size);
+ testing.expect(sizeof(null) == ptr_size);
+
+ testing.expect(sizeof("foobar") == 7);
+ testing.expect(sizeof(&[_:0]u16{'f','o','o','b','a','r'}) == 14);
+ testing.expect(sizeof(*const [4:0]u8) == 5);
+ testing.expect(sizeof(*[4:0]u8) == ptr_size);
+ testing.expect(sizeof([*]const [4:0]u8) == ptr_size);
+ testing.expect(sizeof(*const *const [4:0]u8) == ptr_size);
+ testing.expect(sizeof(*const [4]u8) == ptr_size);
+
+ testing.expect(sizeof(sizeof) == @sizeOf(@TypeOf(sizeof)));
+
+ testing.expect(sizeof(void) == 1);
+ testing.expect(sizeof(c_void) == 1);
}
/// For a given function type, returns a tuple type which fields will
diff --git a/lib/std/meta/trailer_flags.zig b/lib/std/meta/trailer_flags.zig
index a5882d9e1b..1697e9fe43 100644
--- a/lib/std/meta/trailer_flags.zig
+++ b/lib/std/meta/trailer_flags.zig
@@ -146,7 +146,7 @@ test "TrailerFlags" {
b: bool,
c: u64,
});
- testing.expectEqual(u2, @TagType(Flags.FieldEnum));
+ testing.expectEqual(u2, meta.Tag(Flags.FieldEnum));
var flags = Flags.init(.{
.b = true,
diff --git a/lib/std/os/bits/freebsd.zig b/lib/std/os/bits/freebsd.zig
index e2c4eb055b..8529c5e3db 100644
--- a/lib/std/os/bits/freebsd.zig
+++ b/lib/std/os/bits/freebsd.zig
@@ -815,16 +815,16 @@ pub const sigval = extern union {
pub const _SIG_WORDS = 4;
pub const _SIG_MAXSIG = 128;
-pub inline fn _SIG_IDX(sig: usize) usize {
+pub fn _SIG_IDX(sig: usize) callconv(.Inline) usize {
return sig - 1;
}
-pub inline fn _SIG_WORD(sig: usize) usize {
+pub fn _SIG_WORD(sig: usize) callconv(.Inline) usize {
return_SIG_IDX(sig) >> 5;
}
-pub inline fn _SIG_BIT(sig: usize) usize {
+pub fn _SIG_BIT(sig: usize) callconv(.Inline) usize {
return 1 << (_SIG_IDX(sig) & 31);
}
-pub inline fn _SIG_VALID(sig: usize) usize {
+pub fn _SIG_VALID(sig: usize) callconv(.Inline) usize {
return sig <= _SIG_MAXSIG and sig > 0;
}
diff --git a/lib/std/os/bits/netbsd.zig b/lib/std/os/bits/netbsd.zig
index 1780255aac..f8b950ea86 100644
--- a/lib/std/os/bits/netbsd.zig
+++ b/lib/std/os/bits/netbsd.zig
@@ -796,16 +796,16 @@ pub const _ksiginfo = extern struct {
pub const _SIG_WORDS = 4;
pub const _SIG_MAXSIG = 128;
-pub inline fn _SIG_IDX(sig: usize) usize {
+pub fn _SIG_IDX(sig: usize) callconv(.Inline) usize {
return sig - 1;
}
-pub inline fn _SIG_WORD(sig: usize) usize {
+pub fn _SIG_WORD(sig: usize) callconv(.Inline) usize {
return_SIG_IDX(sig) >> 5;
}
-pub inline fn _SIG_BIT(sig: usize) usize {
+pub fn _SIG_BIT(sig: usize) callconv(.Inline) usize {
return 1 << (_SIG_IDX(sig) & 31);
}
-pub inline fn _SIG_VALID(sig: usize) usize {
+pub fn _SIG_VALID(sig: usize) callconv(.Inline) usize {
return sig <= _SIG_MAXSIG and sig > 0;
}
diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig
index ffc1029708..b7534db191 100644
--- a/lib/std/os/linux.zig
+++ b/lib/std/os/linux.zig
@@ -126,7 +126,7 @@ pub fn fork() usize {
/// It is advised to avoid this function and use clone instead, because
/// the compiler is not aware of how vfork affects control flow and you may
/// see different results in optimized builds.
-pub inline fn vfork() usize {
+pub fn vfork() callconv(.Inline) usize {
return @call(.{ .modifier = .always_inline }, syscall0, .{.vfork});
}
diff --git a/lib/std/os/linux/tls.zig b/lib/std/os/linux/tls.zig
index a9c0f6cb56..614f5b4395 100644
--- a/lib/std/os/linux/tls.zig
+++ b/lib/std/os/linux/tls.zig
@@ -300,7 +300,7 @@ fn initTLS() void {
};
}
-inline fn alignPtrCast(comptime T: type, ptr: [*]u8) *T {
+fn alignPtrCast(comptime T: type, ptr: [*]u8) callconv(.Inline) *T {
return @ptrCast(*T, @alignCast(@alignOf(*T), ptr));
}
diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig
index e1e325d9f6..6f67b65252 100644
--- a/lib/std/os/windows.zig
+++ b/lib/std/os/windows.zig
@@ -1669,7 +1669,7 @@ pub fn wToPrefixedFileW(s: []const u16) !PathSpace {
return path_space;
}
-inline fn MAKELANGID(p: c_ushort, s: c_ushort) LANGID {
+fn MAKELANGID(p: c_ushort, s: c_ushort) callconv(.Inline) LANGID {
return (s << 10) | p;
}
diff --git a/lib/std/pdb.zig b/lib/std/pdb.zig
index 41356e84f5..6a47cd6e8b 100644
--- a/lib/std/pdb.zig
+++ b/lib/std/pdb.zig
@@ -662,6 +662,7 @@ const MsfStream = struct {
fn read(self: *MsfStream, buffer: []u8) !usize {
var block_id = @intCast(usize, self.pos / self.block_size);
+ if (block_id >= self.blocks.len) return 0; // End of Stream
var block = self.blocks[block_id];
var offset = self.pos % self.block_size;
@@ -680,6 +681,7 @@ const MsfStream = struct {
if (offset == self.block_size) {
offset = 0;
block_id += 1;
+ if (block_id >= self.blocks.len) break; // End of Stream
block = self.blocks[block_id];
try self.in_file.seekTo(block * self.block_size);
}
diff --git a/lib/std/start.zig b/lib/std/start.zig
index 718d48130e..0fb96c768f 100644
--- a/lib/std/start.zig
+++ b/lib/std/start.zig
@@ -262,7 +262,7 @@ const bad_main_ret = "expected return type of main to be 'void', '!void', 'noret
// This is marked inline because for some reason LLVM in release mode fails to inline it,
// and we want fewer call frames in stack traces.
-inline fn initEventLoopAndCallMain() u8 {
+fn initEventLoopAndCallMain() callconv(.Inline) u8 {
if (std.event.Loop.instance) |loop| {
if (!@hasDecl(root, "event_loop")) {
loop.init() catch |err| {
@@ -291,7 +291,7 @@ inline fn initEventLoopAndCallMain() u8 {
// and we want fewer call frames in stack traces.
// TODO This function is duplicated from initEventLoopAndCallMain instead of using generics
// because it is working around stage1 compiler bugs.
-inline fn initEventLoopAndCallWinMain() std.os.windows.INT {
+fn initEventLoopAndCallWinMain() callconv(.Inline) std.os.windows.INT {
if (std.event.Loop.instance) |loop| {
if (!@hasDecl(root, "event_loop")) {
loop.init() catch |err| {
diff --git a/lib/std/std.zig b/lib/std/std.zig
index 4d9a8d98f6..c0d97a9d9c 100644
--- a/lib/std/std.zig
+++ b/lib/std/std.zig
@@ -78,6 +78,7 @@ pub const testing = @import("testing.zig");
pub const time = @import("time.zig");
pub const unicode = @import("unicode.zig");
pub const valgrind = @import("valgrind.zig");
+pub const wasm = @import("wasm.zig");
pub const zig = @import("zig.zig");
pub const start = @import("start.zig");
diff --git a/lib/std/target.zig b/lib/std/target.zig
index 70a5f08612..227d783889 100644
--- a/lib/std/target.zig
+++ b/lib/std/target.zig
@@ -57,6 +57,9 @@ pub const Target = struct {
wasi,
emscripten,
uefi,
+ opencl,
+ glsl450,
+ vulkan,
other,
pub fn isDarwin(tag: Tag) bool {
@@ -248,6 +251,9 @@ pub const Target = struct {
.wasi,
.emscripten,
.uefi,
+ .opencl, // TODO: OpenCL versions
+ .glsl450, // TODO: GLSL versions
+ .vulkan,
.other,
=> return .{ .none = {} },
@@ -403,6 +409,9 @@ pub const Target = struct {
.wasi,
.emscripten,
.uefi,
+ .opencl,
+ .glsl450,
+ .vulkan,
.other,
=> false,
};
@@ -421,6 +430,7 @@ pub const Target = struct {
pub const powerpc = @import("target/powerpc.zig");
pub const riscv = @import("target/riscv.zig");
pub const sparc = @import("target/sparc.zig");
+ pub const spirv = @import("target/spirv.zig");
pub const systemz = @import("target/systemz.zig");
pub const wasm = @import("target/wasm.zig");
pub const x86 = @import("target/x86.zig");
@@ -493,6 +503,10 @@ pub const Target = struct {
.wasi,
.emscripten,
=> return .musl,
+ .opencl, // TODO: SPIR-V ABIs with Linkage capability
+ .glsl450,
+ .vulkan,
+ => return .none,
}
}
@@ -528,6 +542,7 @@ pub const Target = struct {
macho,
wasm,
c,
+ spirv,
hex,
raw,
};
@@ -744,6 +759,8 @@ pub const Target = struct {
// Stage1 currently assumes that architectures above this comment
// map one-to-one with the ZigLLVM_ArchType enum.
spu_2,
+ spirv32,
+ spirv64,
pub fn isARM(arch: Arch) bool {
return switch (arch) {
@@ -857,6 +874,8 @@ pub const Target = struct {
.s390x => ._S390,
.ve => ._NONE,
.spu_2 => ._SPU_2,
+ .spirv32 => ._NONE,
+ .spirv64 => ._NONE,
};
}
@@ -914,6 +933,8 @@ pub const Target = struct {
.s390x => .Unknown,
.ve => .Unknown,
.spu_2 => .Unknown,
+ .spirv32 => .Unknown,
+ .spirv64 => .Unknown,
};
}
@@ -957,6 +978,9 @@ pub const Target = struct {
.shave,
.ve,
.spu_2,
+ // GPU bitness is opaque. For now, assume little endian.
+ .spirv32,
+ .spirv64,
=> .Little,
.arc,
@@ -1012,6 +1036,7 @@ pub const Target = struct {
.wasm32,
.renderscript32,
.aarch64_32,
+ .spirv32,
=> return 32,
.aarch64,
@@ -1035,6 +1060,7 @@ pub const Target = struct {
.sparcv9,
.s390x,
.ve,
+ .spirv64,
=> return 64,
}
}
@@ -1057,6 +1083,7 @@ pub const Target = struct {
.i386, .x86_64 => "x86",
.nvptx, .nvptx64 => "nvptx",
.wasm32, .wasm64 => "wasm",
+ .spirv32, .spirv64 => "spir-v",
else => @tagName(arch),
};
}
@@ -1347,6 +1374,9 @@ pub const Target = struct {
.uefi,
.windows,
.emscripten,
+ .opencl,
+ .glsl450,
+ .vulkan,
.other,
=> return false,
else => return true,
@@ -1482,6 +1512,8 @@ pub const Target = struct {
.nvptx64,
.spu_2,
.avr,
+ .spirv32,
+ .spirv64,
=> return result,
// TODO go over each item in this list and either move it to the above list, or
@@ -1524,6 +1556,9 @@ pub const Target = struct {
.windows,
.emscripten,
.wasi,
+ .opencl,
+ .glsl450,
+ .vulkan,
.other,
=> return result,
diff --git a/lib/std/target/powerpc.zig b/lib/std/target/powerpc.zig
index 2ec559ca6e..2db7d30e8d 100644
--- a/lib/std/target/powerpc.zig
+++ b/lib/std/target/powerpc.zig
@@ -760,7 +760,7 @@ pub const cpu = struct {
};
pub const ppc32 = CpuModel{
.name = "ppc32",
- .llvm_name = "ppc32",
+ .llvm_name = "ppc",
.features = featureSet(&[_]Feature{
.hard_float,
}),
diff --git a/lib/std/testing.zig b/lib/std/testing.zig
index 26938367e9..1d89155a58 100644
--- a/lib/std/testing.zig
+++ b/lib/std/testing.zig
@@ -29,7 +29,7 @@ pub var zig_exe_path: []const u8 = undefined;
/// and then aborts when actual_error_union is not expected_error.
pub fn expectError(expected_error: anyerror, actual_error_union: anytype) void {
if (actual_error_union) |actual_payload| {
- std.debug.panic("expected error.{s}, found {}", .{ @errorName(expected_error), actual_payload });
+ std.debug.panic("expected error.{s}, found {any}", .{ @errorName(expected_error), actual_payload });
} else |actual_error| {
if (expected_error != actual_error) {
std.debug.panic("expected error.{s}, found error.{s}", .{
@@ -88,7 +88,7 @@ pub fn expectEqual(expected: anytype, actual: @TypeOf(expected)) void {
},
.Slice => {
if (actual.ptr != expected.ptr) {
- std.debug.panic("expected slice ptr {}, found {}", .{ expected.ptr, actual.ptr });
+ std.debug.panic("expected slice ptr {*}, found {*}", .{ expected.ptr, actual.ptr });
}
if (actual.len != expected.len) {
std.debug.panic("expected slice len {}, found {}", .{ expected.len, actual.len });
@@ -119,10 +119,10 @@ pub fn expectEqual(expected: anytype, actual: @TypeOf(expected)) void {
@compileError("Unable to compare untagged union values");
}
- const TagType = @TagType(@TypeOf(expected));
+ const Tag = std.meta.Tag(@TypeOf(expected));
- const expectedTag = @as(TagType, expected);
- const actualTag = @as(TagType, actual);
+ const expectedTag = @as(Tag, expected);
+ const actualTag = @as(Tag, actual);
expectEqual(expectedTag, actualTag);
@@ -145,11 +145,11 @@ pub fn expectEqual(expected: anytype, actual: @TypeOf(expected)) void {
if (actual) |actual_payload| {
expectEqual(expected_payload, actual_payload);
} else {
- std.debug.panic("expected {}, found null", .{expected_payload});
+ std.debug.panic("expected {any}, found null", .{expected_payload});
}
} else {
if (actual) |actual_payload| {
- std.debug.panic("expected null, found {}", .{actual_payload});
+ std.debug.panic("expected null, found {any}", .{actual_payload});
}
}
},
@@ -159,11 +159,11 @@ pub fn expectEqual(expected: anytype, actual: @TypeOf(expected)) void {
if (actual) |actual_payload| {
expectEqual(expected_payload, actual_payload);
} else |actual_err| {
- std.debug.panic("expected {}, found {}", .{ expected_payload, actual_err });
+ std.debug.panic("expected {any}, found {}", .{ expected_payload, actual_err });
}
} else |expected_err| {
if (actual) |actual_payload| {
- std.debug.panic("expected {}, found {}", .{ expected_err, actual_payload });
+ std.debug.panic("expected {}, found {any}", .{ expected_err, actual_payload });
} else |actual_err| {
expectEqual(expected_err, actual_err);
}
@@ -279,7 +279,7 @@ pub fn expectEqualSlices(comptime T: type, expected: []const T, actual: []const
var i: usize = 0;
while (i < expected.len) : (i += 1) {
if (!std.meta.eql(expected[i], actual[i])) {
- std.debug.panic("index {} incorrect. expected {}, found {}", .{ i, expected[i], actual[i] });
+ std.debug.panic("index {} incorrect. expected {any}, found {any}", .{ i, expected[i], actual[i] });
}
}
}
diff --git a/lib/std/wasm.zig b/lib/std/wasm.zig
new file mode 100644
index 0000000000..aa087c89c9
--- /dev/null
+++ b/lib/std/wasm.zig
@@ -0,0 +1,266 @@
+// SPDX-License-Identifier: MIT
+// Copyright (c) 2015-2021 Zig Contributors
+// This file is part of [zig](https://ziglang.org/), which is MIT licensed.
+// The MIT license requires this copyright notice to be included in all copies
+// and substantial portions of the software.
+const testing = @import("std.zig").testing;
+
+/// Wasm instruction opcodes
+///
+/// All instructions are defined as per spec:
+/// https://webassembly.github.io/spec/core/appendix/index-instructions.html
+pub const Opcode = enum(u8) {
+ @"unreachable" = 0x00,
+ nop = 0x01,
+ block = 0x02,
+ loop = 0x03,
+ @"if" = 0x04,
+ @"else" = 0x05,
+ end = 0x0B,
+ br = 0x0C,
+ br_if = 0x0D,
+ br_table = 0x0E,
+ @"return" = 0x0F,
+ call = 0x10,
+ call_indirect = 0x11,
+ drop = 0x1A,
+ select = 0x1B,
+ local_get = 0x20,
+ local_set = 0x21,
+ local_tee = 0x22,
+ global_get = 0x23,
+ global_set = 0x24,
+ i32_load = 0x28,
+ i64_load = 0x29,
+ f32_load = 0x2A,
+ f64_load = 0x2B,
+ i32_load8_s = 0x2C,
+ i32_load8_u = 0x2D,
+ i32_load16_s = 0x2E,
+ i32_load16_u = 0x2F,
+ i64_load8_s = 0x30,
+ i64_load8_u = 0x31,
+ i64_load16_s = 0x32,
+ i64_load16_u = 0x33,
+ i64_load32_s = 0x34,
+ i64_load32_u = 0x35,
+ i32_store = 0x36,
+ i64_store = 0x37,
+ f32_store = 0x38,
+ f64_store = 0x39,
+ i32_store8 = 0x3A,
+ i32_store16 = 0x3B,
+ i64_store8 = 0x3C,
+ i64_store16 = 0x3D,
+ i64_store32 = 0x3E,
+ memory_size = 0x3F,
+ memory_grow = 0x40,
+ i32_const = 0x41,
+ i64_const = 0x42,
+ f32_const = 0x43,
+ f64_const = 0x44,
+ i32_eqz = 0x45,
+ i32_eq = 0x46,
+ i32_ne = 0x47,
+ i32_lt_s = 0x48,
+ i32_lt_u = 0x49,
+ i32_gt_s = 0x4A,
+ i32_gt_u = 0x4B,
+ i32_le_s = 0x4C,
+ i32_le_u = 0x4D,
+ i32_ge_s = 0x4E,
+ i32_ge_u = 0x4F,
+ i64_eqz = 0x50,
+ i64_eq = 0x51,
+ i64_ne = 0x52,
+ i64_lt_s = 0x53,
+ i64_lt_u = 0x54,
+ i64_gt_s = 0x55,
+ i64_gt_u = 0x56,
+ i64_le_s = 0x57,
+ i64_le_u = 0x58,
+ i64_ge_s = 0x59,
+ i64_ge_u = 0x5A,
+ f32_eq = 0x5B,
+ f32_ne = 0x5C,
+ f32_lt = 0x5D,
+ f32_gt = 0x5E,
+ f32_le = 0x5F,
+ f32_ge = 0x60,
+ f64_eq = 0x61,
+ f64_ne = 0x62,
+ f64_lt = 0x63,
+ f64_gt = 0x64,
+ f64_le = 0x65,
+ f64_ge = 0x66,
+ i32_clz = 0x67,
+ i32_ctz = 0x68,
+ i32_popcnt = 0x69,
+ i32_add = 0x6A,
+ i32_sub = 0x6B,
+ i32_mul = 0x6C,
+ i32_div_s = 0x6D,
+ i32_div_u = 0x6E,
+ i32_rem_s = 0x6F,
+ i32_rem_u = 0x70,
+ i32_and = 0x71,
+ i32_or = 0x72,
+ i32_xor = 0x73,
+ i32_shl = 0x74,
+ i32_shr_s = 0x75,
+ i32_shr_u = 0x76,
+ i32_rotl = 0x77,
+ i32_rotr = 0x78,
+ i64_clz = 0x79,
+ i64_ctz = 0x7A,
+ i64_popcnt = 0x7B,
+ i64_add = 0x7C,
+ i64_sub = 0x7D,
+ i64_mul = 0x7E,
+ i64_div_s = 0x7F,
+ i64_div_u = 0x80,
+ i64_rem_s = 0x81,
+ i64_rem_u = 0x82,
+ i64_and = 0x83,
+ i64_or = 0x84,
+ i64_xor = 0x85,
+ i64_shl = 0x86,
+ i64_shr_s = 0x87,
+ i64_shr_u = 0x88,
+ i64_rotl = 0x89,
+ i64_rotr = 0x8A,
+ f32_abs = 0x8B,
+ f32_neg = 0x8C,
+ f32_ceil = 0x8D,
+ f32_floor = 0x8E,
+ f32_trunc = 0x8F,
+ f32_nearest = 0x90,
+ f32_sqrt = 0x91,
+ f32_add = 0x92,
+ f32_sub = 0x93,
+ f32_mul = 0x94,
+ f32_div = 0x95,
+ f32_min = 0x96,
+ f32_max = 0x97,
+ f32_copysign = 0x98,
+ f64_abs = 0x99,
+ f64_neg = 0x9A,
+ f64_ceil = 0x9B,
+ f64_floor = 0x9C,
+ f64_trunc = 0x9D,
+ f64_nearest = 0x9E,
+ f64_sqrt = 0x9F,
+ f64_add = 0xA0,
+ f64_sub = 0xA1,
+ f64_mul = 0xA2,
+ f64_div = 0xA3,
+ f64_min = 0xA4,
+ f64_max = 0xA5,
+ f64_copysign = 0xA6,
+ i32_wrap_i64 = 0xA7,
+ i32_trunc_f32_s = 0xA8,
+ i32_trunc_f32_u = 0xA9,
+ i32_trunc_f64_s = 0xB0,
+ i32_trunc_f64_u = 0xB1,
+ f32_convert_i32_s = 0xB2,
+ f32_convert_i32_u = 0xB3,
+ f32_convert_i64_s = 0xB4,
+ f32_convert_i64_u = 0xB5,
+ f32_demote_f64 = 0xB6,
+ f64_convert_i32_s = 0xB7,
+ f64_convert_i32_u = 0xB8,
+ f64_convert_i64_s = 0xB9,
+ f64_convert_i64_u = 0xBA,
+ f64_promote_f32 = 0xBB,
+ i32_reinterpret_f32 = 0xBC,
+ i64_reinterpret_f64 = 0xBD,
+ f32_reinterpret_i32 = 0xBE,
+ i64_reinterpret_i64 = 0xBF,
+ i32_extend8_s = 0xC0,
+ i32_extend16_s = 0xC1,
+ i64_extend8_s = 0xC2,
+ i64_extend16_s = 0xC3,
+ i64_extend32_s = 0xC4,
+ _,
+};
+
+/// Returns the integer value of an `Opcode`. Used by the Zig compiler
+/// to write instructions to the wasm binary file
+pub fn opcode(op: Opcode) u8 {
+ return @enumToInt(op);
+}
+
+test "Wasm - opcodes" {
+ // Ensure our opcodes values remain intact as certain values are skipped due to them being reserved
+ const i32_const = opcode(.i32_const);
+ const end = opcode(.end);
+ const drop = opcode(.drop);
+ const local_get = opcode(.local_get);
+ const i64_extend32_s = opcode(.i64_extend32_s);
+
+ testing.expectEqual(@as(u16, 0x41), i32_const);
+ testing.expectEqual(@as(u16, 0x0B), end);
+ testing.expectEqual(@as(u16, 0x1A), drop);
+ testing.expectEqual(@as(u16, 0x20), local_get);
+ testing.expectEqual(@as(u16, 0xC4), i64_extend32_s);
+}
+
+/// Enum representing all Wasm value types as per spec:
+/// https://webassembly.github.io/spec/core/binary/types.html
+pub const Valtype = enum(u8) {
+ i32 = 0x7F,
+ i64 = 0x7E,
+ f32 = 0x7D,
+ f64 = 0x7C,
+};
+
+/// Returns the integer value of a `Valtype`
+pub fn valtype(value: Valtype) u8 {
+ return @enumToInt(value);
+}
+
+test "Wasm - valtypes" {
+ const _i32 = valtype(.i32);
+ const _i64 = valtype(.i64);
+ const _f32 = valtype(.f32);
+ const _f64 = valtype(.f64);
+
+ testing.expectEqual(@as(u8, 0x7F), _i32);
+ testing.expectEqual(@as(u8, 0x7E), _i64);
+ testing.expectEqual(@as(u8, 0x7D), _f32);
+ testing.expectEqual(@as(u8, 0x7C), _f64);
+}
+
+/// Wasm module sections as per spec:
+/// https://webassembly.github.io/spec/core/binary/modules.html
+pub const Section = enum(u8) {
+ custom,
+ type,
+ import,
+ function,
+ table,
+ memory,
+ global,
+ @"export",
+ start,
+ element,
+ code,
+ data,
+};
+
+/// Returns the integer value of a given `Section`
+pub fn section(val: Section) u8 {
+ return @enumToInt(val);
+}
+
+// types
+pub const element_type: u8 = 0x70;
+pub const function_type: u8 = 0x60;
+pub const result_type: u8 = 0x40;
+
+/// Represents a block which will not return a value
+pub const block_empty: u8 = 0x40;
+
+// binary constants
+pub const magic = [_]u8{ 0x00, 0x61, 0x73, 0x6D }; // \0asm
+pub const version = [_]u8{ 0x01, 0x00, 0x00, 0x00 }; // version 1
diff --git a/lib/std/zig.zig b/lib/std/zig.zig
index 7f23405150..197d7c2c59 100644
--- a/lib/std/zig.zig
+++ b/lib/std/zig.zig
@@ -140,6 +140,7 @@ pub fn binNameAlloc(allocator: *std.mem.Allocator, options: BinNameOptions) erro
.Lib => return std.fmt.allocPrint(allocator, "{s}.wasm", .{root_name}),
},
.c => return std.fmt.allocPrint(allocator, "{s}.c", .{root_name}),
+ .spirv => return std.fmt.allocPrint(allocator, "{s}.spv", .{root_name}),
.hex => return std.fmt.allocPrint(allocator, "{s}.ihex", .{root_name}),
.raw => return std.fmt.allocPrint(allocator, "{s}.bin", .{root_name}),
}
diff --git a/lib/std/zig/cross_target.zig b/lib/std/zig/cross_target.zig
index f0849f9a03..c34dcc2bd3 100644
--- a/lib/std/zig/cross_target.zig
+++ b/lib/std/zig/cross_target.zig
@@ -130,6 +130,9 @@ pub const CrossTarget = struct {
.wasi,
.emscripten,
.uefi,
+ .opencl,
+ .glsl450,
+ .vulkan,
.other,
=> {
self.os_version_min = .{ .none = {} };
@@ -730,6 +733,9 @@ pub const CrossTarget = struct {
.wasi,
.emscripten,
.uefi,
+ .opencl,
+ .glsl450,
+ .vulkan,
.other,
=> return error.InvalidOperatingSystemVersion,
diff --git a/lib/std/zig/parser_test.zig b/lib/std/zig/parser_test.zig
index 9046feda85..fd587c10ed 100644
--- a/lib/std/zig/parser_test.zig
+++ b/lib/std/zig/parser_test.zig
@@ -3,6 +3,18 @@
// This file is part of [zig](https://ziglang.org/), which is MIT licensed.
// The MIT license requires this copyright notice to be included in all copies
// and substantial portions of the software.
+
+// TODO Remove this after zig 0.8.0 is released.
+test "zig fmt: rewrite inline functions as callconv(.Inline)" {
+ try testTransform(
+ \\inline fn foo() void {}
+ \\
+ ,
+ \\fn foo() callconv(.Inline) void {}
+ \\
+ );
+}
+
test "zig fmt: simple top level comptime block" {
try testCanonical(
\\// line comment
@@ -2593,28 +2605,28 @@ test "zig fmt: call expression" {
// \\
// );
//}
-
+//
//test "zig fmt: functions" {
// try testCanonical(
// \\extern fn puts(s: *const u8) c_int;
// \\extern "c" fn puts(s: *const u8) c_int;
// \\export fn puts(s: *const u8) c_int;
-// \\inline fn puts(s: *const u8) c_int;
+// \\fn puts(s: *const u8) callconv(.Inline) c_int;
// \\noinline fn puts(s: *const u8) c_int;
// \\pub extern fn puts(s: *const u8) c_int;
// \\pub extern "c" fn puts(s: *const u8) c_int;
// \\pub export fn puts(s: *const u8) c_int;
-// \\pub inline fn puts(s: *const u8) c_int;
+// \\pub fn puts(s: *const u8) callconv(.Inline) c_int;
// \\pub noinline fn puts(s: *const u8) c_int;
// \\pub extern fn puts(s: *const u8) align(2 + 2) c_int;
// \\pub extern "c" fn puts(s: *const u8) align(2 + 2) c_int;
// \\pub export fn puts(s: *const u8) align(2 + 2) c_int;
-// \\pub inline fn puts(s: *const u8) align(2 + 2) c_int;
+// \\pub fn puts(s: *const u8) align(2 + 2) callconv(.Inline) c_int;
// \\pub noinline fn puts(s: *const u8) align(2 + 2) c_int;
// \\
// );
//}
-
+//
//test "zig fmt: multiline string" {
// try testCanonical(
// \\test "" {
@@ -4278,7 +4290,7 @@ fn testCanonical(source: []const u8) !void {
return testTransform(source, source);
}
-const Error = @TagType(std.zig.ast.Error);
+const Error = std.meta.Tag(std.zig.ast.Error);
fn testError(source: []const u8, expected_errors: []const Error) !void {
var tree = try std.zig.parse(std.testing.allocator, source);
diff --git a/lib/std/zig/system/x86.zig b/lib/std/zig/system/x86.zig
index 24aebb5a61..bda9a17c95 100644
--- a/lib/std/zig/system/x86.zig
+++ b/lib/std/zig/system/x86.zig
@@ -19,11 +19,11 @@ fn setFeature(cpu: *Target.Cpu, feature: Target.x86.Feature, enabled: bool) void
if (enabled) cpu.features.addFeature(idx) else cpu.features.removeFeature(idx);
}
-inline fn bit(input: u32, offset: u5) bool {
+fn bit(input: u32, offset: u5) callconv(.Inline) bool {
return (input >> offset) & 1 != 0;
}
-inline fn hasMask(input: u32, mask: u32) bool {
+fn hasMask(input: u32, mask: u32) callconv(.Inline) bool {
return (input & mask) == mask;
}
diff --git a/src/DepTokenizer.zig b/src/DepTokenizer.zig
index b246a22bd0..0bd2999719 100644
--- a/src/DepTokenizer.zig
+++ b/src/DepTokenizer.zig
@@ -266,11 +266,11 @@ pub fn next(self: *Tokenizer) ?Token {
unreachable;
}
-fn errorPosition(comptime id: @TagType(Token), index: usize, bytes: []const u8) Token {
+fn errorPosition(comptime id: std.meta.Tag(Token), index: usize, bytes: []const u8) Token {
return @unionInit(Token, @tagName(id), .{ .index = index, .bytes = bytes });
}
-fn errorIllegalChar(comptime id: @TagType(Token), index: usize, char: u8) Token {
+fn errorIllegalChar(comptime id: std.meta.Tag(Token), index: usize, char: u8) Token {
return @unionInit(Token, @tagName(id), .{ .index = index, .char = char });
}
diff --git a/src/Module.zig b/src/Module.zig
index bd47332d15..a1c2822732 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -375,6 +375,10 @@ pub const Scope = struct {
}
}
+ pub fn isComptime(self: *Scope) bool {
+ return self.getGenZIR().force_comptime;
+ }
+
pub fn ownerDecl(self: *Scope) ?*Decl {
return switch (self.tag) {
.block => self.cast(Block).?.owner_decl,
@@ -669,14 +673,36 @@ pub const Scope = struct {
};
pub const Merges = struct {
- results: ArrayListUnmanaged(*Inst),
block_inst: *Inst.Block,
+ /// Separate array list from break_inst_list so that it can be passed directly
+ /// to resolvePeerTypes.
+ results: ArrayListUnmanaged(*Inst),
+ /// Keeps track of the break instructions so that the operand can be replaced
+ /// if we need to add type coercion at the end of block analysis.
+ /// Same indexes, capacity, length as `results`.
+ br_list: ArrayListUnmanaged(*Inst.Br),
};
/// For debugging purposes.
pub fn dump(self: *Block, mod: Module) void {
zir.dumpBlock(mod, self);
}
+
+ pub fn makeSubBlock(parent: *Block) Block {
+ return .{
+ .parent = parent,
+ .inst_table = parent.inst_table,
+ .func = parent.func,
+ .owner_decl = parent.owner_decl,
+ .src_decl = parent.src_decl,
+ .instructions = .{},
+ .arena = parent.arena,
+ .label = null,
+ .inlining = parent.inlining,
+ .is_comptime = parent.is_comptime,
+ .branch_quota = parent.branch_quota,
+ };
+ }
};
/// This is a temporary structure, references to it are valid only
@@ -688,13 +714,32 @@ pub const Scope = struct {
parent: *Scope,
decl: *Decl,
arena: *Allocator,
+ force_comptime: bool,
/// The first N instructions in a function body ZIR are arg instructions.
instructions: std.ArrayListUnmanaged(*zir.Inst) = .{},
label: ?Label = null,
break_block: ?*zir.Inst.Block = null,
continue_block: ?*zir.Inst.Block = null,
- /// only valid if label != null or (continue_block and break_block) != null
+ /// Only valid when setBlockResultLoc is called.
break_result_loc: astgen.ResultLoc = undefined,
+ /// When a block has a pointer result location, here it is.
+ rl_ptr: ?*zir.Inst = null,
+ /// Keeps track of how many branches of a block did not actually
+ /// consume the result location. astgen uses this to figure out
+ /// whether to rely on break instructions or writing to the result
+ /// pointer for the result instruction.
+ rvalue_rl_count: usize = 0,
+ /// Keeps track of how many break instructions there are. When astgen is finished
+ /// with a block, it can check this against rvalue_rl_count to find out whether
+ /// the break instructions should be downgraded to break_void.
+ break_count: usize = 0,
+ /// Tracks `break :foo bar` instructions so they can possibly be elided later if
+ /// the labeled block ends up not needing a result location pointer.
+ labeled_breaks: std.ArrayListUnmanaged(*zir.Inst.Break) = .{},
+ /// Tracks `store_to_block_ptr` instructions that correspond to break instructions
+ /// so they can possibly be elided later if the labeled block ends up not needing
+ /// a result location pointer.
+ labeled_store_to_block_ptr_list: std.ArrayListUnmanaged(*zir.Inst.BinOp) = .{},
pub const Label = struct {
token: ast.TokenIndex,
@@ -1000,6 +1045,7 @@ fn astgenAndSemaDecl(mod: *Module, decl: *Decl) !bool {
.decl = decl,
.arena = &analysis_arena.allocator,
.parent = &decl.container.base,
+ .force_comptime = true,
};
defer gen_scope.instructions.deinit(self.gpa);
@@ -2121,6 +2167,7 @@ fn allocateNewDecl(
.macho => .{ .macho = link.File.MachO.TextBlock.empty },
.c => .{ .c = link.File.C.DeclBlock.empty },
.wasm => .{ .wasm = {} },
+ .spirv => .{ .spirv = {} },
},
.fn_link = switch (mod.comp.bin_file.tag) {
.coff => .{ .coff = {} },
@@ -2128,6 +2175,7 @@ fn allocateNewDecl(
.macho => .{ .macho = link.File.MachO.SrcFn.empty },
.c => .{ .c = link.File.C.FnBlock.empty },
.wasm => .{ .wasm = null },
+ .spirv => .{ .spirv = .{} },
},
.generation = 0,
.is_pub = false,
@@ -2225,6 +2273,7 @@ pub fn analyzeExport(
.macho => .{ .macho = link.File.MachO.Export{} },
.c => .{ .c = {} },
.wasm => .{ .wasm = {} },
+ .spirv => .{ .spirv = {} },
},
.owner_decl = owner_decl,
.exported_decl = exported_decl,
@@ -2366,7 +2415,7 @@ pub fn addBr(
src: usize,
target_block: *Inst.Block,
operand: *Inst,
-) !*Inst {
+) !*Inst.Br {
const inst = try scope_block.arena.create(Inst.Br);
inst.* = .{
.base = .{
@@ -2378,7 +2427,7 @@ pub fn addBr(
.block = target_block,
};
try scope_block.instructions.append(self.gpa, &inst.base);
- return &inst.base;
+ return inst;
}
pub fn addCondBr(
@@ -2430,7 +2479,7 @@ pub fn addSwitchBr(
self: *Module,
block: *Scope.Block,
src: usize,
- target_ptr: *Inst,
+ target: *Inst,
cases: []Inst.SwitchBr.Case,
else_body: ir.Body,
) !*Inst {
@@ -2441,7 +2490,7 @@ pub fn addSwitchBr(
.ty = Type.initTag(.noreturn),
.src = src,
},
- .target_ptr = target_ptr,
+ .target = target,
.cases = cases,
.else_body = else_body,
};
@@ -3733,18 +3782,18 @@ pub fn addSafetyCheck(mod: *Module, parent_block: *Scope.Block, ok: *Inst, panic
};
const ok_body: ir.Body = .{
- .instructions = try parent_block.arena.alloc(*Inst, 1), // Only need space for the brvoid.
+ .instructions = try parent_block.arena.alloc(*Inst, 1), // Only need space for the br_void.
};
- const brvoid = try parent_block.arena.create(Inst.BrVoid);
- brvoid.* = .{
+ const br_void = try parent_block.arena.create(Inst.BrVoid);
+ br_void.* = .{
.base = .{
- .tag = .brvoid,
+ .tag = .br_void,
.ty = Type.initTag(.noreturn),
.src = ok.src,
},
.block = block_inst,
};
- ok_body.instructions[0] = &brvoid.base;
+ ok_body.instructions[0] = &br_void.base;
var fail_block: Scope.Block = .{
.parent = parent_block,
diff --git a/src/astgen.zig b/src/astgen.zig
index 8b4f1cc93c..ece16d70da 100644
--- a/src/astgen.zig
+++ b/src/astgen.zig
@@ -14,25 +14,45 @@ const InnerError = Module.InnerError;
pub const ResultLoc = union(enum) {
/// The expression is the right-hand side of assignment to `_`. Only the side-effects of the
- /// expression should be generated.
+ /// expression should be generated. The result instruction from the expression must
+ /// be ignored.
discard,
/// The expression has an inferred type, and it will be evaluated as an rvalue.
none,
/// The expression must generate a pointer rather than a value. For example, the left hand side
/// of an assignment uses this kind of result location.
ref,
- /// The expression will be type coerced into this type, but it will be evaluated as an rvalue.
+ /// The expression will be coerced into this type, but it will be evaluated as an rvalue.
ty: *zir.Inst,
- /// The expression must store its result into this typed pointer.
+ /// The expression must store its result into this typed pointer. The result instruction
+ /// from the expression must be ignored.
ptr: *zir.Inst,
/// The expression must store its result into this allocation, which has an inferred type.
+ /// The result instruction from the expression must be ignored.
inferred_ptr: *zir.Inst.Tag.alloc_inferred.Type(),
/// The expression must store its result into this pointer, which is a typed pointer that
/// has been bitcasted to whatever the expression's type is.
+ /// The result instruction from the expression must be ignored.
bitcasted_ptr: *zir.Inst.UnOp,
/// There is a pointer for the expression to store its result into, however, its type
/// is inferred based on peer type resolution for a `zir.Inst.Block`.
- block_ptr: *zir.Inst.Block,
+ /// The result instruction from the expression must be ignored.
+ block_ptr: *Module.Scope.GenZIR,
+
+ pub const Strategy = struct {
+ elide_store_to_block_ptr_instructions: bool,
+ tag: Tag,
+
+ pub const Tag = enum {
+ /// Both branches will use break_void; result location is used to communicate the
+ /// result instruction.
+ break_void,
+ /// Use break statements to pass the block result value, and call rvalue() at
+ /// the end depending on rl. Also elide the store_to_block_ptr instructions
+ /// depending on rl.
+ break_operand,
+ };
+ };
};
pub fn typeExpr(mod: *Module, scope: *Scope, type_node: *ast.Node) InnerError!*zir.Inst {
@@ -179,6 +199,9 @@ fn lvalExpr(mod: *Module, scope: *Scope, node: *ast.Node) InnerError!*zir.Inst {
}
/// Turn Zig AST into untyped ZIR istructions.
+/// When `rl` is discard, ptr, inferred_ptr, bitcasted_ptr, or inferred_ptr, the
+/// result instruction can be used to inspect whether it is isNoReturn() but that is it,
+/// it must otherwise not be used.
pub fn expr(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node) InnerError!*zir.Inst {
switch (node.tag) {
.Root => unreachable, // Top-level declaration.
@@ -197,20 +220,20 @@ pub fn expr(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node) InnerEr
.FieldInitializer => unreachable, // Handled explicitly.
.ContainerField => unreachable, // Handled explicitly.
- .Assign => return rlWrapVoid(mod, scope, rl, node, try assign(mod, scope, node.castTag(.Assign).?)),
- .AssignBitAnd => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignBitAnd).?, .bitand)),
- .AssignBitOr => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignBitOr).?, .bitor)),
- .AssignBitShiftLeft => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignBitShiftLeft).?, .shl)),
- .AssignBitShiftRight => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignBitShiftRight).?, .shr)),
- .AssignBitXor => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignBitXor).?, .xor)),
- .AssignDiv => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignDiv).?, .div)),
- .AssignSub => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignSub).?, .sub)),
- .AssignSubWrap => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignSubWrap).?, .subwrap)),
- .AssignMod => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignMod).?, .mod_rem)),
- .AssignAdd => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignAdd).?, .add)),
- .AssignAddWrap => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignAddWrap).?, .addwrap)),
- .AssignMul => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignMul).?, .mul)),
- .AssignMulWrap => return rlWrapVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignMulWrap).?, .mulwrap)),
+ .Assign => return rvalueVoid(mod, scope, rl, node, try assign(mod, scope, node.castTag(.Assign).?)),
+ .AssignBitAnd => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignBitAnd).?, .bit_and)),
+ .AssignBitOr => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignBitOr).?, .bit_or)),
+ .AssignBitShiftLeft => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignBitShiftLeft).?, .shl)),
+ .AssignBitShiftRight => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignBitShiftRight).?, .shr)),
+ .AssignBitXor => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignBitXor).?, .xor)),
+ .AssignDiv => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignDiv).?, .div)),
+ .AssignSub => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignSub).?, .sub)),
+ .AssignSubWrap => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignSubWrap).?, .subwrap)),
+ .AssignMod => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignMod).?, .mod_rem)),
+ .AssignAdd => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignAdd).?, .add)),
+ .AssignAddWrap => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignAddWrap).?, .addwrap)),
+ .AssignMul => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignMul).?, .mul)),
+ .AssignMulWrap => return rvalueVoid(mod, scope, rl, node, try assignOp(mod, scope, node.castTag(.AssignMulWrap).?, .mulwrap)),
.Add => return simpleBinOp(mod, scope, rl, node.castTag(.Add).?, .add),
.AddWrap => return simpleBinOp(mod, scope, rl, node.castTag(.AddWrap).?, .addwrap),
@@ -220,8 +243,8 @@ pub fn expr(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node) InnerEr
.MulWrap => return simpleBinOp(mod, scope, rl, node.castTag(.MulWrap).?, .mulwrap),
.Div => return simpleBinOp(mod, scope, rl, node.castTag(.Div).?, .div),
.Mod => return simpleBinOp(mod, scope, rl, node.castTag(.Mod).?, .mod_rem),
- .BitAnd => return simpleBinOp(mod, scope, rl, node.castTag(.BitAnd).?, .bitand),
- .BitOr => return simpleBinOp(mod, scope, rl, node.castTag(.BitOr).?, .bitor),
+ .BitAnd => return simpleBinOp(mod, scope, rl, node.castTag(.BitAnd).?, .bit_and),
+ .BitOr => return simpleBinOp(mod, scope, rl, node.castTag(.BitOr).?, .bit_or),
.BitShiftLeft => return simpleBinOp(mod, scope, rl, node.castTag(.BitShiftLeft).?, .shl),
.BitShiftRight => return simpleBinOp(mod, scope, rl, node.castTag(.BitShiftRight).?, .shr),
.BitXor => return simpleBinOp(mod, scope, rl, node.castTag(.BitXor).?, .xor),
@@ -239,15 +262,15 @@ pub fn expr(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node) InnerEr
.BoolAnd => return boolBinOp(mod, scope, rl, node.castTag(.BoolAnd).?),
.BoolOr => return boolBinOp(mod, scope, rl, node.castTag(.BoolOr).?),
- .BoolNot => return rlWrap(mod, scope, rl, try boolNot(mod, scope, node.castTag(.BoolNot).?)),
- .BitNot => return rlWrap(mod, scope, rl, try bitNot(mod, scope, node.castTag(.BitNot).?)),
- .Negation => return rlWrap(mod, scope, rl, try negation(mod, scope, node.castTag(.Negation).?, .sub)),
- .NegationWrap => return rlWrap(mod, scope, rl, try negation(mod, scope, node.castTag(.NegationWrap).?, .subwrap)),
+ .BoolNot => return rvalue(mod, scope, rl, try boolNot(mod, scope, node.castTag(.BoolNot).?)),
+ .BitNot => return rvalue(mod, scope, rl, try bitNot(mod, scope, node.castTag(.BitNot).?)),
+ .Negation => return rvalue(mod, scope, rl, try negation(mod, scope, node.castTag(.Negation).?, .sub)),
+ .NegationWrap => return rvalue(mod, scope, rl, try negation(mod, scope, node.castTag(.NegationWrap).?, .subwrap)),
.Identifier => return try identifier(mod, scope, rl, node.castTag(.Identifier).?),
- .Asm => return rlWrap(mod, scope, rl, try assembly(mod, scope, node.castTag(.Asm).?)),
- .StringLiteral => return rlWrap(mod, scope, rl, try stringLiteral(mod, scope, node.castTag(.StringLiteral).?)),
- .IntegerLiteral => return rlWrap(mod, scope, rl, try integerLiteral(mod, scope, node.castTag(.IntegerLiteral).?)),
+ .Asm => return rvalue(mod, scope, rl, try assembly(mod, scope, node.castTag(.Asm).?)),
+ .StringLiteral => return rvalue(mod, scope, rl, try stringLiteral(mod, scope, node.castTag(.StringLiteral).?)),
+ .IntegerLiteral => return rvalue(mod, scope, rl, try integerLiteral(mod, scope, node.castTag(.IntegerLiteral).?)),
.BuiltinCall => return builtinCall(mod, scope, rl, node.castTag(.BuiltinCall).?),
.Call => return callExpr(mod, scope, rl, node.castTag(.Call).?),
.Unreachable => return unreach(mod, scope, node.castTag(.Unreachable).?),
@@ -255,34 +278,34 @@ pub fn expr(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node) InnerEr
.If => return ifExpr(mod, scope, rl, node.castTag(.If).?),
.While => return whileExpr(mod, scope, rl, node.castTag(.While).?),
.Period => return field(mod, scope, rl, node.castTag(.Period).?),
- .Deref => return rlWrap(mod, scope, rl, try deref(mod, scope, node.castTag(.Deref).?)),
- .AddressOf => return rlWrap(mod, scope, rl, try addressOf(mod, scope, node.castTag(.AddressOf).?)),
- .FloatLiteral => return rlWrap(mod, scope, rl, try floatLiteral(mod, scope, node.castTag(.FloatLiteral).?)),
- .UndefinedLiteral => return rlWrap(mod, scope, rl, try undefLiteral(mod, scope, node.castTag(.UndefinedLiteral).?)),
- .BoolLiteral => return rlWrap(mod, scope, rl, try boolLiteral(mod, scope, node.castTag(.BoolLiteral).?)),
- .NullLiteral => return rlWrap(mod, scope, rl, try nullLiteral(mod, scope, node.castTag(.NullLiteral).?)),
- .OptionalType => return rlWrap(mod, scope, rl, try optionalType(mod, scope, node.castTag(.OptionalType).?)),
+ .Deref => return rvalue(mod, scope, rl, try deref(mod, scope, node.castTag(.Deref).?)),
+ .AddressOf => return rvalue(mod, scope, rl, try addressOf(mod, scope, node.castTag(.AddressOf).?)),
+ .FloatLiteral => return rvalue(mod, scope, rl, try floatLiteral(mod, scope, node.castTag(.FloatLiteral).?)),
+ .UndefinedLiteral => return rvalue(mod, scope, rl, try undefLiteral(mod, scope, node.castTag(.UndefinedLiteral).?)),
+ .BoolLiteral => return rvalue(mod, scope, rl, try boolLiteral(mod, scope, node.castTag(.BoolLiteral).?)),
+ .NullLiteral => return rvalue(mod, scope, rl, try nullLiteral(mod, scope, node.castTag(.NullLiteral).?)),
+ .OptionalType => return rvalue(mod, scope, rl, try optionalType(mod, scope, node.castTag(.OptionalType).?)),
.UnwrapOptional => return unwrapOptional(mod, scope, rl, node.castTag(.UnwrapOptional).?),
- .Block => return rlWrapVoid(mod, scope, rl, node, try blockExpr(mod, scope, node.castTag(.Block).?)),
+ .Block => return rvalueVoid(mod, scope, rl, node, try blockExpr(mod, scope, node.castTag(.Block).?)),
.LabeledBlock => return labeledBlockExpr(mod, scope, rl, node.castTag(.LabeledBlock).?, .block),
- .Break => return rlWrap(mod, scope, rl, try breakExpr(mod, scope, node.castTag(.Break).?)),
- .Continue => return rlWrap(mod, scope, rl, try continueExpr(mod, scope, node.castTag(.Continue).?)),
- .PtrType => return rlWrap(mod, scope, rl, try ptrType(mod, scope, node.castTag(.PtrType).?)),
+ .Break => return rvalue(mod, scope, rl, try breakExpr(mod, scope, node.castTag(.Break).?)),
+ .Continue => return rvalue(mod, scope, rl, try continueExpr(mod, scope, node.castTag(.Continue).?)),
+ .PtrType => return rvalue(mod, scope, rl, try ptrType(mod, scope, node.castTag(.PtrType).?)),
.GroupedExpression => return expr(mod, scope, rl, node.castTag(.GroupedExpression).?.expr),
- .ArrayType => return rlWrap(mod, scope, rl, try arrayType(mod, scope, node.castTag(.ArrayType).?)),
- .ArrayTypeSentinel => return rlWrap(mod, scope, rl, try arrayTypeSentinel(mod, scope, node.castTag(.ArrayTypeSentinel).?)),
- .EnumLiteral => return rlWrap(mod, scope, rl, try enumLiteral(mod, scope, node.castTag(.EnumLiteral).?)),
- .MultilineStringLiteral => return rlWrap(mod, scope, rl, try multilineStrLiteral(mod, scope, node.castTag(.MultilineStringLiteral).?)),
- .CharLiteral => return rlWrap(mod, scope, rl, try charLiteral(mod, scope, node.castTag(.CharLiteral).?)),
- .SliceType => return rlWrap(mod, scope, rl, try sliceType(mod, scope, node.castTag(.SliceType).?)),
- .ErrorUnion => return rlWrap(mod, scope, rl, try typeInixOp(mod, scope, node.castTag(.ErrorUnion).?, .error_union_type)),
- .MergeErrorSets => return rlWrap(mod, scope, rl, try typeInixOp(mod, scope, node.castTag(.MergeErrorSets).?, .merge_error_sets)),
- .AnyFrameType => return rlWrap(mod, scope, rl, try anyFrameType(mod, scope, node.castTag(.AnyFrameType).?)),
- .ErrorSetDecl => return rlWrap(mod, scope, rl, try errorSetDecl(mod, scope, node.castTag(.ErrorSetDecl).?)),
- .ErrorType => return rlWrap(mod, scope, rl, try errorType(mod, scope, node.castTag(.ErrorType).?)),
+ .ArrayType => return rvalue(mod, scope, rl, try arrayType(mod, scope, node.castTag(.ArrayType).?)),
+ .ArrayTypeSentinel => return rvalue(mod, scope, rl, try arrayTypeSentinel(mod, scope, node.castTag(.ArrayTypeSentinel).?)),
+ .EnumLiteral => return rvalue(mod, scope, rl, try enumLiteral(mod, scope, node.castTag(.EnumLiteral).?)),
+ .MultilineStringLiteral => return rvalue(mod, scope, rl, try multilineStrLiteral(mod, scope, node.castTag(.MultilineStringLiteral).?)),
+ .CharLiteral => return rvalue(mod, scope, rl, try charLiteral(mod, scope, node.castTag(.CharLiteral).?)),
+ .SliceType => return rvalue(mod, scope, rl, try sliceType(mod, scope, node.castTag(.SliceType).?)),
+ .ErrorUnion => return rvalue(mod, scope, rl, try typeInixOp(mod, scope, node.castTag(.ErrorUnion).?, .error_union_type)),
+ .MergeErrorSets => return rvalue(mod, scope, rl, try typeInixOp(mod, scope, node.castTag(.MergeErrorSets).?, .merge_error_sets)),
+ .AnyFrameType => return rvalue(mod, scope, rl, try anyFrameType(mod, scope, node.castTag(.AnyFrameType).?)),
+ .ErrorSetDecl => return rvalue(mod, scope, rl, try errorSetDecl(mod, scope, node.castTag(.ErrorSetDecl).?)),
+ .ErrorType => return rvalue(mod, scope, rl, try errorType(mod, scope, node.castTag(.ErrorType).?)),
.For => return forExpr(mod, scope, rl, node.castTag(.For).?),
.ArrayAccess => return arrayAccess(mod, scope, rl, node.castTag(.ArrayAccess).?),
- .Slice => return rlWrap(mod, scope, rl, try sliceExpr(mod, scope, node.castTag(.Slice).?)),
+ .Slice => return rvalue(mod, scope, rl, try sliceExpr(mod, scope, node.castTag(.Slice).?)),
.Catch => return catchExpr(mod, scope, rl, node.castTag(.Catch).?),
.Comptime => return comptimeKeyword(mod, scope, rl, node.castTag(.Comptime).?),
.OrElse => return orelseExpr(mod, scope, rl, node.castTag(.OrElse).?),
@@ -311,11 +334,19 @@ fn comptimeKeyword(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node.C
return comptimeExpr(mod, scope, rl, node.expr);
}
-pub fn comptimeExpr(mod: *Module, parent_scope: *Scope, rl: ResultLoc, node: *ast.Node) InnerError!*zir.Inst {
- const tree = parent_scope.tree();
- const src = tree.token_locs[node.firstToken()].start;
+pub fn comptimeExpr(
+ mod: *Module,
+ parent_scope: *Scope,
+ rl: ResultLoc,
+ node: *ast.Node,
+) InnerError!*zir.Inst {
+ // If we are already in a comptime scope, no need to make another one.
+ if (parent_scope.isComptime()) {
+ return expr(mod, parent_scope, rl, node);
+ }
- // Optimization for labeled blocks: don't need to have 2 layers of blocks, we can reuse the existing one.
+ // Optimization for labeled blocks: don't need to have 2 layers of blocks,
+ // we can reuse the existing one.
if (node.castTag(.LabeledBlock)) |block_node| {
return labeledBlockExpr(mod, parent_scope, rl, block_node, .block_comptime);
}
@@ -325,6 +356,7 @@ pub fn comptimeExpr(mod: *Module, parent_scope: *Scope, rl: ResultLoc, node: *as
.parent = parent_scope,
.decl = parent_scope.ownerDecl().?,
.arena = parent_scope.arena(),
+ .force_comptime = true,
.instructions = .{},
};
defer block_scope.instructions.deinit(mod.gpa);
@@ -333,6 +365,9 @@ pub fn comptimeExpr(mod: *Module, parent_scope: *Scope, rl: ResultLoc, node: *as
// instruction is the block's result value.
_ = try expr(mod, &block_scope.base, rl, node);
+ const tree = parent_scope.tree();
+ const src = tree.token_locs[node.firstToken()].start;
+
const block = try addZIRInstBlock(mod, parent_scope, src, .block_comptime_flat, .{
.instructions = try block_scope.arena.dupe(*zir.Inst, block_scope.instructions.items),
});
@@ -340,7 +375,11 @@ pub fn comptimeExpr(mod: *Module, parent_scope: *Scope, rl: ResultLoc, node: *as
return &block.base;
}
-fn breakExpr(mod: *Module, parent_scope: *Scope, node: *ast.Node.ControlFlowExpression) InnerError!*zir.Inst {
+fn breakExpr(
+ mod: *Module,
+ parent_scope: *Scope,
+ node: *ast.Node.ControlFlowExpression,
+) InnerError!*zir.Inst {
const tree = parent_scope.tree();
const src = tree.token_locs[node.ltoken].start;
@@ -366,25 +405,31 @@ fn breakExpr(mod: *Module, parent_scope: *Scope, node: *ast.Node.ControlFlowExpr
continue;
};
- if (node.getRHS()) |rhs| {
- // Most result location types can be forwarded directly; however
- // if we need to write to a pointer which has an inferred type,
- // proper type inference requires peer type resolution on the block's
- // break operand expressions.
- const branch_rl: ResultLoc = switch (gen_zir.break_result_loc) {
- .discard, .none, .ty, .ptr, .ref => gen_zir.break_result_loc,
- .inferred_ptr, .bitcasted_ptr, .block_ptr => .{ .block_ptr = block_inst },
- };
- const operand = try expr(mod, parent_scope, branch_rl, rhs);
- return try addZIRInst(mod, parent_scope, src, zir.Inst.Break, .{
+ const rhs = node.getRHS() orelse {
+ return addZirInstTag(mod, parent_scope, src, .break_void, .{
.block = block_inst,
- .operand = operand,
- }, .{});
- } else {
- return try addZIRInst(mod, parent_scope, src, zir.Inst.BreakVoid, .{
- .block = block_inst,
- }, .{});
+ });
+ };
+ gen_zir.break_count += 1;
+ const prev_rvalue_rl_count = gen_zir.rvalue_rl_count;
+ const operand = try expr(mod, parent_scope, gen_zir.break_result_loc, rhs);
+ const have_store_to_block = gen_zir.rvalue_rl_count != prev_rvalue_rl_count;
+ const br = try addZirInstTag(mod, parent_scope, src, .@"break", .{
+ .block = block_inst,
+ .operand = operand,
+ });
+ if (gen_zir.break_result_loc == .block_ptr) {
+ try gen_zir.labeled_breaks.append(mod.gpa, br.castTag(.@"break").?);
+
+ if (have_store_to_block) {
+ const inst_list = parent_scope.getGenZIR().instructions.items;
+ const last_inst = inst_list[inst_list.len - 2];
+ const store_inst = last_inst.castTag(.store_to_block_ptr).?;
+ assert(store_inst.positionals.lhs == gen_zir.rl_ptr.?);
+ try gen_zir.labeled_store_to_block_ptr_list.append(mod.gpa, store_inst);
+ }
}
+ return br;
},
.local_val => scope = scope.cast(Scope.LocalVal).?.parent,
.local_ptr => scope = scope.cast(Scope.LocalPtr).?.parent,
@@ -424,9 +469,9 @@ fn continueExpr(mod: *Module, parent_scope: *Scope, node: *ast.Node.ControlFlowE
continue;
}
- return addZIRInst(mod, parent_scope, src, zir.Inst.BreakVoid, .{
+ return addZirInstTag(mod, parent_scope, src, .break_void, .{
.block = continue_block,
- }, .{});
+ });
},
.local_val => scope = scope.cast(Scope.LocalVal).?.parent,
.local_ptr => scope = scope.cast(Scope.LocalPtr).?.parent,
@@ -526,28 +571,65 @@ fn labeledBlockExpr(
.parent = parent_scope,
.decl = parent_scope.ownerDecl().?,
.arena = gen_zir.arena,
+ .force_comptime = parent_scope.isComptime(),
.instructions = .{},
- .break_result_loc = rl,
// TODO @as here is working around a stage1 miscompilation bug :(
.label = @as(?Scope.GenZIR.Label, Scope.GenZIR.Label{
.token = block_node.label,
.block_inst = block_inst,
}),
};
+ setBlockResultLoc(&block_scope, rl);
defer block_scope.instructions.deinit(mod.gpa);
+ defer block_scope.labeled_breaks.deinit(mod.gpa);
+ defer block_scope.labeled_store_to_block_ptr_list.deinit(mod.gpa);
try blockExprStmts(mod, &block_scope.base, &block_node.base, block_node.statements());
+
if (!block_scope.label.?.used) {
return mod.fail(parent_scope, tree.token_locs[block_node.label].start, "unused block label", .{});
}
- block_inst.positionals.body.instructions = try block_scope.arena.dupe(*zir.Inst, block_scope.instructions.items);
try gen_zir.instructions.append(mod.gpa, &block_inst.base);
- return &block_inst.base;
+ const strat = rlStrategy(rl, &block_scope);
+ switch (strat.tag) {
+ .break_void => {
+ // The code took advantage of the result location as a pointer.
+ // Turn the break instructions into break_void instructions.
+ for (block_scope.labeled_breaks.items) |br| {
+ br.base.tag = .break_void;
+ }
+ // TODO technically not needed since we changed the tag to break_void but
+ // would be better still to elide the ones that are in this list.
+ try copyBodyNoEliding(&block_inst.positionals.body, block_scope);
+
+ return &block_inst.base;
+ },
+ .break_operand => {
+ // All break operands are values that did not use the result location pointer.
+ if (strat.elide_store_to_block_ptr_instructions) {
+ for (block_scope.labeled_store_to_block_ptr_list.items) |inst| {
+ inst.base.tag = .void_value;
+ }
+ // TODO technically not needed since we changed the tag to void_value but
+ // would be better still to elide the ones that are in this list.
+ }
+ try copyBodyNoEliding(&block_inst.positionals.body, block_scope);
+ switch (rl) {
+ .ref => return &block_inst.base,
+ else => return rvalue(mod, parent_scope, rl, &block_inst.base),
+ }
+ },
+ }
}
-fn blockExprStmts(mod: *Module, parent_scope: *Scope, node: *ast.Node, statements: []*ast.Node) !void {
+fn blockExprStmts(
+ mod: *Module,
+ parent_scope: *Scope,
+ node: *ast.Node,
+ statements: []*ast.Node,
+) !void {
const tree = parent_scope.tree();
var block_arena = std.heap.ArenaAllocator.init(mod.gpa);
@@ -563,8 +645,8 @@ fn blockExprStmts(mod: *Module, parent_scope: *Scope, node: *ast.Node, statement
scope = try varDecl(mod, scope, var_decl_node, &block_arena.allocator);
},
.Assign => try assign(mod, scope, statement.castTag(.Assign).?),
- .AssignBitAnd => try assignOp(mod, scope, statement.castTag(.AssignBitAnd).?, .bitand),
- .AssignBitOr => try assignOp(mod, scope, statement.castTag(.AssignBitOr).?, .bitor),
+ .AssignBitAnd => try assignOp(mod, scope, statement.castTag(.AssignBitAnd).?, .bit_and),
+ .AssignBitOr => try assignOp(mod, scope, statement.castTag(.AssignBitOr).?, .bit_or),
.AssignBitShiftLeft => try assignOp(mod, scope, statement.castTag(.AssignBitShiftLeft).?, .shl),
.AssignBitShiftRight => try assignOp(mod, scope, statement.castTag(.AssignBitShiftRight).?, .shr),
.AssignBitXor => try assignOp(mod, scope, statement.castTag(.AssignBitXor).?, .xor),
@@ -644,6 +726,7 @@ fn varDecl(
// Namespace vars shadowing detection
if (mod.lookupDeclName(scope, ident_name)) |_| {
+ // TODO add note for other definition
return mod.fail(scope, name_src, "redefinition of '{s}'", .{ident_name});
}
const init_node = node.getInitNode() orelse
@@ -651,36 +734,103 @@ fn varDecl(
switch (tree.token_ids[node.mut_token]) {
.Keyword_const => {
- var resolve_inferred_alloc: ?*zir.Inst = null;
// Depending on the type of AST the initialization expression is, we may need an lvalue
// or an rvalue as a result location. If it is an rvalue, we can use the instruction as
// the variable, no memory location needed.
- const result_loc = if (nodeMayNeedMemoryLocation(init_node, scope)) r: {
- if (node.getTypeNode()) |type_node| {
- const type_inst = try typeExpr(mod, scope, type_node);
- const alloc = try addZIRUnOp(mod, scope, name_src, .alloc, type_inst);
- break :r ResultLoc{ .ptr = alloc };
- } else {
- const alloc = try addZIRNoOpT(mod, scope, name_src, .alloc_inferred);
- resolve_inferred_alloc = &alloc.base;
- break :r ResultLoc{ .inferred_ptr = alloc };
- }
- } else r: {
- if (node.getTypeNode()) |type_node|
- break :r ResultLoc{ .ty = try typeExpr(mod, scope, type_node) }
+ if (!nodeMayNeedMemoryLocation(init_node, scope)) {
+ const result_loc: ResultLoc = if (node.getTypeNode()) |type_node|
+ .{ .ty = try typeExpr(mod, scope, type_node) }
else
- break :r .none;
+ .none;
+ const init_inst = try expr(mod, scope, result_loc, init_node);
+ const sub_scope = try block_arena.create(Scope.LocalVal);
+ sub_scope.* = .{
+ .parent = scope,
+ .gen_zir = scope.getGenZIR(),
+ .name = ident_name,
+ .inst = init_inst,
+ };
+ return &sub_scope.base;
+ }
+
+ // Detect whether the initialization expression actually uses the
+ // result location pointer.
+ var init_scope: Scope.GenZIR = .{
+ .parent = scope,
+ .decl = scope.ownerDecl().?,
+ .arena = scope.arena(),
+ .force_comptime = scope.isComptime(),
+ .instructions = .{},
};
- const init_inst = try expr(mod, scope, result_loc, init_node);
+ defer init_scope.instructions.deinit(mod.gpa);
+
+ var resolve_inferred_alloc: ?*zir.Inst = null;
+ var opt_type_inst: ?*zir.Inst = null;
+ if (node.getTypeNode()) |type_node| {
+ const type_inst = try typeExpr(mod, &init_scope.base, type_node);
+ opt_type_inst = type_inst;
+ init_scope.rl_ptr = try addZIRUnOp(mod, &init_scope.base, name_src, .alloc, type_inst);
+ } else {
+ const alloc = try addZIRNoOpT(mod, &init_scope.base, name_src, .alloc_inferred);
+ resolve_inferred_alloc = &alloc.base;
+ init_scope.rl_ptr = &alloc.base;
+ }
+ const init_result_loc: ResultLoc = .{ .block_ptr = &init_scope };
+ const init_inst = try expr(mod, &init_scope.base, init_result_loc, init_node);
+ const parent_zir = &scope.getGenZIR().instructions;
+ if (init_scope.rvalue_rl_count == 1) {
+ // Result location pointer not used. We don't need an alloc for this
+ // const local, and type inference becomes trivial.
+ // Move the init_scope instructions into the parent scope, eliding
+ // the alloc instruction and the store_to_block_ptr instruction.
+ const expected_len = parent_zir.items.len + init_scope.instructions.items.len - 2;
+ try parent_zir.ensureCapacity(mod.gpa, expected_len);
+ for (init_scope.instructions.items) |src_inst| {
+ if (src_inst == init_scope.rl_ptr.?) continue;
+ if (src_inst.castTag(.store_to_block_ptr)) |store| {
+ if (store.positionals.lhs == init_scope.rl_ptr.?) continue;
+ }
+ parent_zir.appendAssumeCapacity(src_inst);
+ }
+ assert(parent_zir.items.len == expected_len);
+ const casted_init = if (opt_type_inst) |type_inst|
+ try addZIRBinOp(mod, scope, type_inst.src, .as, type_inst, init_inst)
+ else
+ init_inst;
+
+ const sub_scope = try block_arena.create(Scope.LocalVal);
+ sub_scope.* = .{
+ .parent = scope,
+ .gen_zir = scope.getGenZIR(),
+ .name = ident_name,
+ .inst = casted_init,
+ };
+ return &sub_scope.base;
+ }
+ // The initialization expression took advantage of the result location
+ // of the const local. In this case we will create an alloc and a LocalPtr for it.
+ // Move the init_scope instructions into the parent scope, swapping
+ // store_to_block_ptr for store_to_inferred_ptr.
+ const expected_len = parent_zir.items.len + init_scope.instructions.items.len;
+ try parent_zir.ensureCapacity(mod.gpa, expected_len);
+ for (init_scope.instructions.items) |src_inst| {
+ if (src_inst.castTag(.store_to_block_ptr)) |store| {
+ if (store.positionals.lhs == init_scope.rl_ptr.?) {
+ src_inst.tag = .store_to_inferred_ptr;
+ }
+ }
+ parent_zir.appendAssumeCapacity(src_inst);
+ }
+ assert(parent_zir.items.len == expected_len);
if (resolve_inferred_alloc) |inst| {
_ = try addZIRUnOp(mod, scope, name_src, .resolve_inferred_alloc, inst);
}
- const sub_scope = try block_arena.create(Scope.LocalVal);
+ const sub_scope = try block_arena.create(Scope.LocalPtr);
sub_scope.* = .{
.parent = scope,
.gen_zir = scope.getGenZIR(),
.name = ident_name,
- .inst = init_inst,
+ .ptr = init_scope.rl_ptr.?,
};
return &sub_scope.base;
},
@@ -751,14 +901,14 @@ fn boolNot(mod: *Module, scope: *Scope, node: *ast.Node.SimplePrefixOp) InnerErr
.val = Value.initTag(.bool_type),
});
const operand = try expr(mod, scope, .{ .ty = bool_type }, node.rhs);
- return addZIRUnOp(mod, scope, src, .boolnot, operand);
+ return addZIRUnOp(mod, scope, src, .bool_not, operand);
}
fn bitNot(mod: *Module, scope: *Scope, node: *ast.Node.SimplePrefixOp) InnerError!*zir.Inst {
const tree = scope.tree();
const src = tree.token_locs[node.op_token].start;
const operand = try expr(mod, scope, .none, node.rhs);
- return addZIRUnOp(mod, scope, src, .bitnot, operand);
+ return addZIRUnOp(mod, scope, src, .bit_not, operand);
}
fn negation(mod: *Module, scope: *Scope, node: *ast.Node.SimplePrefixOp, op_inst_tag: zir.Inst.Tag) InnerError!*zir.Inst {
@@ -971,6 +1121,7 @@ fn containerDecl(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node.Con
.parent = scope,
.decl = scope.ownerDecl().?,
.arena = scope.arena(),
+ .force_comptime = scope.isComptime(),
.instructions = .{},
};
defer gen_scope.instructions.deinit(mod.gpa);
@@ -1101,7 +1252,7 @@ fn containerDecl(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node.Con
if (rl == .ref) {
return addZIRInst(mod, scope, src, zir.Inst.DeclRef, .{ .decl = decl }, .{});
} else {
- return rlWrap(mod, scope, rl, try addZIRInst(mod, scope, src, zir.Inst.DeclVal, .{
+ return rvalue(mod, scope, rl, try addZIRInst(mod, scope, src, zir.Inst.DeclVal, .{
.decl = decl,
}, .{}));
}
@@ -1207,24 +1358,15 @@ fn orelseCatchExpr(
.parent = scope,
.decl = scope.ownerDecl().?,
.arena = scope.arena(),
+ .force_comptime = scope.isComptime(),
.instructions = .{},
};
+ setBlockResultLoc(&block_scope, rl);
defer block_scope.instructions.deinit(mod.gpa);
- const block = try addZIRInstBlock(mod, scope, src, .block, .{
- .instructions = undefined, // populated below
- });
-
- // Most result location types can be forwarded directly; however
- // if we need to write to a pointer which has an inferred type,
- // proper type inference requires peer type resolution on the if's
- // branches.
- const branch_rl: ResultLoc = switch (rl) {
- .discard, .none, .ty, .ptr, .ref => rl,
- .inferred_ptr, .bitcasted_ptr, .block_ptr => .{ .block_ptr = block },
- };
// This could be a pointer or value depending on the `rl` parameter.
- const operand = try expr(mod, &block_scope.base, branch_rl, lhs);
+ block_scope.break_count += 1;
+ const operand = try expr(mod, &block_scope.base, block_scope.break_result_loc, lhs);
const cond = try addZIRUnOp(mod, &block_scope.base, src, cond_op, operand);
const condbr = try addZIRInstSpecial(mod, &block_scope.base, src, zir.Inst.CondBr, .{
@@ -1233,18 +1375,22 @@ fn orelseCatchExpr(
.else_body = undefined, // populated below
}, .{});
+ const block = try addZIRInstBlock(mod, scope, src, .block, .{
+ .instructions = try block_scope.arena.dupe(*zir.Inst, block_scope.instructions.items),
+ });
+
var then_scope: Scope.GenZIR = .{
.parent = &block_scope.base,
.decl = block_scope.decl,
.arena = block_scope.arena,
+ .force_comptime = block_scope.force_comptime,
.instructions = .{},
};
defer then_scope.instructions.deinit(mod.gpa);
var err_val_scope: Scope.LocalVal = undefined;
const then_sub_scope = blk: {
- const payload = payload_node orelse
- break :blk &then_scope.base;
+ const payload = payload_node orelse break :blk &then_scope.base;
const err_name = tree.tokenSlice(payload.castTag(.Payload).?.error_symbol.firstToken());
if (mem.eql(u8, err_name, "_"))
@@ -1259,32 +1405,113 @@ fn orelseCatchExpr(
break :blk &err_val_scope.base;
};
- _ = try addZIRInst(mod, &then_scope.base, src, zir.Inst.Break, .{
- .block = block,
- .operand = try expr(mod, then_sub_scope, branch_rl, rhs),
- }, .{});
+ block_scope.break_count += 1;
+ const then_result = try expr(mod, then_sub_scope, block_scope.break_result_loc, rhs);
var else_scope: Scope.GenZIR = .{
.parent = &block_scope.base,
.decl = block_scope.decl,
.arena = block_scope.arena,
+ .force_comptime = block_scope.force_comptime,
.instructions = .{},
};
defer else_scope.instructions.deinit(mod.gpa);
// This could be a pointer or value depending on `unwrap_op`.
const unwrapped_payload = try addZIRUnOp(mod, &else_scope.base, src, unwrap_op, operand);
- _ = try addZIRInst(mod, &else_scope.base, src, zir.Inst.Break, .{
- .block = block,
- .operand = unwrapped_payload,
- }, .{});
- // All branches have been generated, add the instructions to the block.
- block.positionals.body.instructions = try block_scope.arena.dupe(*zir.Inst, block_scope.instructions.items);
+ return finishThenElseBlock(
+ mod,
+ scope,
+ rl,
+ &block_scope,
+ &then_scope,
+ &else_scope,
+ &condbr.positionals.then_body,
+ &condbr.positionals.else_body,
+ src,
+ src,
+ then_result,
+ unwrapped_payload,
+ block,
+ block,
+ );
+}
- condbr.positionals.then_body = .{ .instructions = try then_scope.arena.dupe(*zir.Inst, then_scope.instructions.items) };
- condbr.positionals.else_body = .{ .instructions = try else_scope.arena.dupe(*zir.Inst, else_scope.instructions.items) };
- return &block.base;
+fn finishThenElseBlock(
+ mod: *Module,
+ parent_scope: *Scope,
+ rl: ResultLoc,
+ block_scope: *Scope.GenZIR,
+ then_scope: *Scope.GenZIR,
+ else_scope: *Scope.GenZIR,
+ then_body: *zir.Body,
+ else_body: *zir.Body,
+ then_src: usize,
+ else_src: usize,
+ then_result: *zir.Inst,
+ else_result: ?*zir.Inst,
+ main_block: *zir.Inst.Block,
+ then_break_block: *zir.Inst.Block,
+) InnerError!*zir.Inst {
+ // We now have enough information to decide whether the result instruction should
+ // be communicated via result location pointer or break instructions.
+ const strat = rlStrategy(rl, block_scope);
+ switch (strat.tag) {
+ .break_void => {
+ if (!then_result.tag.isNoReturn()) {
+ _ = try addZirInstTag(mod, &then_scope.base, then_src, .break_void, .{
+ .block = then_break_block,
+ });
+ }
+ if (else_result) |inst| {
+ if (!inst.tag.isNoReturn()) {
+ _ = try addZirInstTag(mod, &else_scope.base, else_src, .break_void, .{
+ .block = main_block,
+ });
+ }
+ } else {
+ _ = try addZirInstTag(mod, &else_scope.base, else_src, .break_void, .{
+ .block = main_block,
+ });
+ }
+ assert(!strat.elide_store_to_block_ptr_instructions);
+ try copyBodyNoEliding(then_body, then_scope.*);
+ try copyBodyNoEliding(else_body, else_scope.*);
+ return &main_block.base;
+ },
+ .break_operand => {
+ if (!then_result.tag.isNoReturn()) {
+ _ = try addZirInstTag(mod, &then_scope.base, then_src, .@"break", .{
+ .block = then_break_block,
+ .operand = then_result,
+ });
+ }
+ if (else_result) |inst| {
+ if (!inst.tag.isNoReturn()) {
+ _ = try addZirInstTag(mod, &else_scope.base, else_src, .@"break", .{
+ .block = main_block,
+ .operand = inst,
+ });
+ }
+ } else {
+ _ = try addZirInstTag(mod, &else_scope.base, else_src, .break_void, .{
+ .block = main_block,
+ });
+ }
+ if (strat.elide_store_to_block_ptr_instructions) {
+ try copyBodyWithElidedStoreBlockPtr(then_body, then_scope.*);
+ try copyBodyWithElidedStoreBlockPtr(else_body, else_scope.*);
+ } else {
+ try copyBodyNoEliding(then_body, then_scope.*);
+ try copyBodyNoEliding(else_body, else_scope.*);
+ }
+ switch (rl) {
+ .ref => return &main_block.base,
+ else => return rvalue(mod, parent_scope, rl, &main_block.base),
+ }
+ },
+ }
}
/// Return whether the identifier names of two tokens are equal. Resolves @""
@@ -1308,7 +1535,7 @@ pub fn field(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node.SimpleI
.field_name = field_name,
});
}
- return rlWrap(mod, scope, rl, try addZirInstTag(mod, scope, src, .field_val, .{
+ return rvalue(mod, scope, rl, try addZirInstTag(mod, scope, src, .field_val, .{
.object = try expr(mod, scope, .none, node.lhs),
.field_name = field_name,
}));
@@ -1338,7 +1565,7 @@ fn namedField(
.field_name = try comptimeExpr(mod, scope, string_rl, params[1]),
});
}
- return rlWrap(mod, scope, rl, try addZirInstTag(mod, scope, src, .field_val_named, .{
+ return rvalue(mod, scope, rl, try addZirInstTag(mod, scope, src, .field_val_named, .{
.object = try expr(mod, scope, .none, params[0]),
.field_name = try comptimeExpr(mod, scope, string_rl, params[1]),
}));
@@ -1359,7 +1586,7 @@ fn arrayAccess(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node.Array
.index = try expr(mod, scope, index_rl, node.index_expr),
});
}
- return rlWrap(mod, scope, rl, try addZirInstTag(mod, scope, src, .elem_val, .{
+ return rvalue(mod, scope, rl, try addZirInstTag(mod, scope, src, .elem_val, .{
.array = try expr(mod, scope, .none, node.lhs),
.index = try expr(mod, scope, index_rl, node.index_expr),
}));
@@ -1416,7 +1643,7 @@ fn simpleBinOp(
const rhs = try expr(mod, scope, .none, infix_node.rhs);
const result = try addZIRBinOp(mod, scope, src, op_inst_tag, lhs, rhs);
- return rlWrap(mod, scope, rl, result);
+ return rvalue(mod, scope, rl, result);
}
fn boolBinOp(
@@ -1436,6 +1663,7 @@ fn boolBinOp(
.parent = scope,
.decl = scope.ownerDecl().?,
.arena = scope.arena(),
+ .force_comptime = scope.isComptime(),
.instructions = .{},
};
defer block_scope.instructions.deinit(mod.gpa);
@@ -1455,6 +1683,7 @@ fn boolBinOp(
.parent = scope,
.decl = block_scope.decl,
.arena = block_scope.arena,
+ .force_comptime = block_scope.force_comptime,
.instructions = .{},
};
defer rhs_scope.instructions.deinit(mod.gpa);
@@ -1469,6 +1698,7 @@ fn boolBinOp(
.parent = scope,
.decl = block_scope.decl,
.arena = block_scope.arena,
+ .force_comptime = block_scope.force_comptime,
.instructions = .{},
};
defer const_scope.instructions.deinit(mod.gpa);
@@ -1498,7 +1728,7 @@ fn boolBinOp(
condbr.positionals.else_body = .{ .instructions = try rhs_scope.arena.dupe(*zir.Inst, rhs_scope.instructions.items) };
}
- return rlWrap(mod, scope, rl, &block.base);
+ return rvalue(mod, scope, rl, &block.base);
}
const CondKind = union(enum) {
@@ -1582,8 +1812,10 @@ fn ifExpr(mod: *Module, scope: *Scope, rl: ResultLoc, if_node: *ast.Node.If) Inn
.parent = scope,
.decl = scope.ownerDecl().?,
.arena = scope.arena(),
+ .force_comptime = scope.isComptime(),
.instructions = .{},
};
+ setBlockResultLoc(&block_scope, rl);
defer block_scope.instructions.deinit(mod.gpa);
const tree = scope.tree();
@@ -1605,6 +1837,7 @@ fn ifExpr(mod: *Module, scope: *Scope, rl: ResultLoc, if_node: *ast.Node.If) Inn
.parent = scope,
.decl = block_scope.decl,
.arena = block_scope.arena,
+ .force_comptime = block_scope.force_comptime,
.instructions = .{},
};
defer then_scope.instructions.deinit(mod.gpa);
@@ -1612,62 +1845,81 @@ fn ifExpr(mod: *Module, scope: *Scope, rl: ResultLoc, if_node: *ast.Node.If) Inn
// declare payload to the then_scope
const then_sub_scope = try cond_kind.thenSubScope(mod, &then_scope, then_src, if_node.payload);
- // Most result location types can be forwarded directly; however
- // if we need to write to a pointer which has an inferred type,
- // proper type inference requires peer type resolution on the if's
- // branches.
- const branch_rl: ResultLoc = switch (rl) {
- .discard, .none, .ty, .ptr, .ref => rl,
- .inferred_ptr, .bitcasted_ptr, .block_ptr => .{ .block_ptr = block },
- };
-
- const then_result = try expr(mod, then_sub_scope, branch_rl, if_node.body);
- if (!then_result.tag.isNoReturn()) {
- _ = try addZIRInst(mod, then_sub_scope, then_src, zir.Inst.Break, .{
- .block = block,
- .operand = then_result,
- }, .{});
- }
- condbr.positionals.then_body = .{
- .instructions = try then_scope.arena.dupe(*zir.Inst, then_scope.instructions.items),
- };
+ block_scope.break_count += 1;
+ const then_result = try expr(mod, then_sub_scope, block_scope.break_result_loc, if_node.body);
+ // We hold off on the break instructions as well as copying the then/else
+ // instructions into place until we know whether to keep store_to_block_ptr
+ // instructions or not.
var else_scope: Scope.GenZIR = .{
.parent = scope,
.decl = block_scope.decl,
.arena = block_scope.arena,
+ .force_comptime = block_scope.force_comptime,
.instructions = .{},
};
defer else_scope.instructions.deinit(mod.gpa);
- if (if_node.@"else") |else_node| {
- const else_src = tree.token_locs[else_node.body.lastToken()].start;
+ var else_src: usize = undefined;
+ var else_sub_scope: *Module.Scope = undefined;
+ const else_result: ?*zir.Inst = if (if_node.@"else") |else_node| blk: {
+ else_src = tree.token_locs[else_node.body.lastToken()].start;
// declare payload to the then_scope
- const else_sub_scope = try cond_kind.elseSubScope(mod, &else_scope, else_src, else_node.payload);
+ else_sub_scope = try cond_kind.elseSubScope(mod, &else_scope, else_src, else_node.payload);
- const else_result = try expr(mod, else_sub_scope, branch_rl, else_node.body);
- if (!else_result.tag.isNoReturn()) {
- _ = try addZIRInst(mod, else_sub_scope, else_src, zir.Inst.Break, .{
- .block = block,
- .operand = else_result,
- }, .{});
- }
- } else {
- // TODO Optimization opportunity: we can avoid an allocation and a memcpy here
- // by directly allocating the body for this one instruction.
- const else_src = tree.token_locs[if_node.lastToken()].start;
- _ = try addZIRInst(mod, &else_scope.base, else_src, zir.Inst.BreakVoid, .{
- .block = block,
- }, .{});
- }
- condbr.positionals.else_body = .{
- .instructions = try else_scope.arena.dupe(*zir.Inst, else_scope.instructions.items),
+ block_scope.break_count += 1;
+ break :blk try expr(mod, else_sub_scope, block_scope.break_result_loc, else_node.body);
+ } else blk: {
+ else_src = tree.token_locs[if_node.lastToken()].start;
+ else_sub_scope = &else_scope.base;
+ break :blk null;
};
- return &block.base;
+ return finishThenElseBlock(
+ mod,
+ scope,
+ rl,
+ &block_scope,
+ &then_scope,
+ &else_scope,
+ &condbr.positionals.then_body,
+ &condbr.positionals.else_body,
+ then_src,
+ else_src,
+ then_result,
+ else_result,
+ block,
+ block,
+ );
}
-fn whileExpr(mod: *Module, scope: *Scope, rl: ResultLoc, while_node: *ast.Node.While) InnerError!*zir.Inst {
+/// Expects to find exactly 1 .store_to_block_ptr instruction.
+fn copyBodyWithElidedStoreBlockPtr(body: *zir.Body, scope: Module.Scope.GenZIR) !void {
+ body.* = .{
+ .instructions = try scope.arena.alloc(*zir.Inst, scope.instructions.items.len - 1),
+ };
+ var dst_index: usize = 0;
+ for (scope.instructions.items) |src_inst| {
+ if (src_inst.tag != .store_to_block_ptr) {
+ body.instructions[dst_index] = src_inst;
+ dst_index += 1;
+ }
+ }
+ assert(dst_index == body.instructions.len);
+}
+
+fn copyBodyNoEliding(body: *zir.Body, scope: Module.Scope.GenZIR) !void {
+ body.* = .{
+ .instructions = try scope.arena.dupe(*zir.Inst, scope.instructions.items),
+ };
+}
+
+fn whileExpr(
+ mod: *Module,
+ scope: *Scope,
+ rl: ResultLoc,
+ while_node: *ast.Node.While,
+) InnerError!*zir.Inst {
var cond_kind: CondKind = .bool;
if (while_node.payload) |_| cond_kind = .{ .optional = null };
if (while_node.@"else") |else_node| {
@@ -1683,27 +1935,21 @@ fn whileExpr(mod: *Module, scope: *Scope, rl: ResultLoc, while_node: *ast.Node.W
if (while_node.inline_token) |tok|
return mod.failTok(scope, tok, "TODO inline while", .{});
- var expr_scope: Scope.GenZIR = .{
+ var loop_scope: Scope.GenZIR = .{
.parent = scope,
.decl = scope.ownerDecl().?,
.arena = scope.arena(),
+ .force_comptime = scope.isComptime(),
.instructions = .{},
};
- defer expr_scope.instructions.deinit(mod.gpa);
-
- var loop_scope: Scope.GenZIR = .{
- .parent = &expr_scope.base,
- .decl = expr_scope.decl,
- .arena = expr_scope.arena,
- .instructions = .{},
- .break_result_loc = rl,
- };
+ setBlockResultLoc(&loop_scope, rl);
defer loop_scope.instructions.deinit(mod.gpa);
var continue_scope: Scope.GenZIR = .{
.parent = &loop_scope.base,
.decl = loop_scope.decl,
.arena = loop_scope.arena,
+ .force_comptime = loop_scope.force_comptime,
.instructions = .{},
};
defer continue_scope.instructions.deinit(mod.gpa);
@@ -1731,11 +1977,21 @@ fn whileExpr(mod: *Module, scope: *Scope, rl: ResultLoc, while_node: *ast.Node.W
if (while_node.continue_expr) |cont_expr| {
_ = try expr(mod, &loop_scope.base, .{ .ty = void_type }, cont_expr);
}
- const loop = try addZIRInstLoop(mod, &expr_scope.base, while_src, .{
- .instructions = try expr_scope.arena.dupe(*zir.Inst, loop_scope.instructions.items),
- });
+ const loop = try scope.arena().create(zir.Inst.Loop);
+ loop.* = .{
+ .base = .{
+ .tag = .loop,
+ .src = while_src,
+ },
+ .positionals = .{
+ .body = .{
+ .instructions = try scope.arena().dupe(*zir.Inst, loop_scope.instructions.items),
+ },
+ },
+ .kw_args = .{},
+ };
const while_block = try addZIRInstBlock(mod, scope, while_src, .block, .{
- .instructions = try expr_scope.arena.dupe(*zir.Inst, expr_scope.instructions.items),
+ .instructions = try scope.arena().dupe(*zir.Inst, &[1]*zir.Inst{&loop.base}),
});
loop_scope.break_block = while_block;
loop_scope.continue_block = cond_block;
@@ -1751,6 +2007,7 @@ fn whileExpr(mod: *Module, scope: *Scope, rl: ResultLoc, while_node: *ast.Node.W
.parent = &continue_scope.base,
.decl = continue_scope.decl,
.arena = continue_scope.arena,
+ .force_comptime = continue_scope.force_comptime,
.instructions = .{},
};
defer then_scope.instructions.deinit(mod.gpa);
@@ -1758,61 +2015,51 @@ fn whileExpr(mod: *Module, scope: *Scope, rl: ResultLoc, while_node: *ast.Node.W
// declare payload to the then_scope
const then_sub_scope = try cond_kind.thenSubScope(mod, &then_scope, then_src, while_node.payload);
- // Most result location types can be forwarded directly; however
- // if we need to write to a pointer which has an inferred type,
- // proper type inference requires peer type resolution on the while's
- // branches.
- const branch_rl: ResultLoc = switch (rl) {
- .discard, .none, .ty, .ptr, .ref => rl,
- .inferred_ptr, .bitcasted_ptr, .block_ptr => .{ .block_ptr = while_block },
- };
-
- const then_result = try expr(mod, then_sub_scope, branch_rl, while_node.body);
- if (!then_result.tag.isNoReturn()) {
- _ = try addZIRInst(mod, then_sub_scope, then_src, zir.Inst.Break, .{
- .block = cond_block,
- .operand = then_result,
- }, .{});
- }
- condbr.positionals.then_body = .{
- .instructions = try then_scope.arena.dupe(*zir.Inst, then_scope.instructions.items),
- };
+ loop_scope.break_count += 1;
+ const then_result = try expr(mod, then_sub_scope, loop_scope.break_result_loc, while_node.body);
var else_scope: Scope.GenZIR = .{
.parent = &continue_scope.base,
.decl = continue_scope.decl,
.arena = continue_scope.arena,
+ .force_comptime = continue_scope.force_comptime,
.instructions = .{},
};
defer else_scope.instructions.deinit(mod.gpa);
- if (while_node.@"else") |else_node| {
- const else_src = tree.token_locs[else_node.body.lastToken()].start;
+ var else_src: usize = undefined;
+ const else_result: ?*zir.Inst = if (while_node.@"else") |else_node| blk: {
+ else_src = tree.token_locs[else_node.body.lastToken()].start;
// declare payload to the then_scope
const else_sub_scope = try cond_kind.elseSubScope(mod, &else_scope, else_src, else_node.payload);
- const else_result = try expr(mod, else_sub_scope, branch_rl, else_node.body);
- if (!else_result.tag.isNoReturn()) {
- _ = try addZIRInst(mod, else_sub_scope, else_src, zir.Inst.Break, .{
- .block = while_block,
- .operand = else_result,
- }, .{});
- }
- } else {
- const else_src = tree.token_locs[while_node.lastToken()].start;
- _ = try addZIRInst(mod, &else_scope.base, else_src, zir.Inst.BreakVoid, .{
- .block = while_block,
- }, .{});
- }
- condbr.positionals.else_body = .{
- .instructions = try else_scope.arena.dupe(*zir.Inst, else_scope.instructions.items),
+ loop_scope.break_count += 1;
+ break :blk try expr(mod, else_sub_scope, loop_scope.break_result_loc, else_node.body);
+ } else blk: {
+ else_src = tree.token_locs[while_node.lastToken()].start;
+ break :blk null;
};
if (loop_scope.label) |some| {
if (!some.used) {
return mod.fail(scope, tree.token_locs[some.token].start, "unused while label", .{});
}
}
- return &while_block.base;
+ return finishThenElseBlock(
+ mod,
+ scope,
+ rl,
+ &loop_scope,
+ &then_scope,
+ &else_scope,
+ &condbr.positionals.then_body,
+ &condbr.positionals.else_body,
+ then_src,
+ else_src,
+ then_result,
+ else_result,
+ while_block,
+ cond_block,
+ );
}
fn forExpr(
@@ -1828,48 +2075,42 @@ fn forExpr(
if (for_node.inline_token) |tok|
return mod.failTok(scope, tok, "TODO inline for", .{});
- var for_scope: Scope.GenZIR = .{
- .parent = scope,
- .decl = scope.ownerDecl().?,
- .arena = scope.arena(),
- .instructions = .{},
- };
- defer for_scope.instructions.deinit(mod.gpa);
-
// setup variables and constants
const tree = scope.tree();
const for_src = tree.token_locs[for_node.for_token].start;
const index_ptr = blk: {
- const usize_type = try addZIRInstConst(mod, &for_scope.base, for_src, .{
+ const usize_type = try addZIRInstConst(mod, scope, for_src, .{
.ty = Type.initTag(.type),
.val = Value.initTag(.usize_type),
});
- const index_ptr = try addZIRUnOp(mod, &for_scope.base, for_src, .alloc, usize_type);
+ const index_ptr = try addZIRUnOp(mod, scope, for_src, .alloc, usize_type);
// initialize to zero
- const zero = try addZIRInstConst(mod, &for_scope.base, for_src, .{
+ const zero = try addZIRInstConst(mod, scope, for_src, .{
.ty = Type.initTag(.usize),
.val = Value.initTag(.zero),
});
- _ = try addZIRBinOp(mod, &for_scope.base, for_src, .store, index_ptr, zero);
+ _ = try addZIRBinOp(mod, scope, for_src, .store, index_ptr, zero);
break :blk index_ptr;
};
- const array_ptr = try expr(mod, &for_scope.base, .ref, for_node.array_expr);
+ const array_ptr = try expr(mod, scope, .ref, for_node.array_expr);
const cond_src = tree.token_locs[for_node.array_expr.firstToken()].start;
- const len = try addZIRUnOp(mod, &for_scope.base, cond_src, .indexable_ptr_len, array_ptr);
+ const len = try addZIRUnOp(mod, scope, cond_src, .indexable_ptr_len, array_ptr);
var loop_scope: Scope.GenZIR = .{
- .parent = &for_scope.base,
- .decl = for_scope.decl,
- .arena = for_scope.arena,
+ .parent = scope,
+ .decl = scope.ownerDecl().?,
+ .arena = scope.arena(),
+ .force_comptime = scope.isComptime(),
.instructions = .{},
- .break_result_loc = rl,
};
+ setBlockResultLoc(&loop_scope, rl);
defer loop_scope.instructions.deinit(mod.gpa);
var cond_scope: Scope.GenZIR = .{
.parent = &loop_scope.base,
.decl = loop_scope.decl,
.arena = loop_scope.arena,
+ .force_comptime = loop_scope.force_comptime,
.instructions = .{},
};
defer cond_scope.instructions.deinit(mod.gpa);
@@ -1896,12 +2137,21 @@ fn forExpr(
const index_plus_one = try addZIRBinOp(mod, &loop_scope.base, for_src, .add, index_2, one);
_ = try addZIRBinOp(mod, &loop_scope.base, for_src, .store, index_ptr, index_plus_one);
- // looping stuff
- const loop = try addZIRInstLoop(mod, &for_scope.base, for_src, .{
- .instructions = try for_scope.arena.dupe(*zir.Inst, loop_scope.instructions.items),
- });
+ const loop = try scope.arena().create(zir.Inst.Loop);
+ loop.* = .{
+ .base = .{
+ .tag = .loop,
+ .src = for_src,
+ },
+ .positionals = .{
+ .body = .{
+ .instructions = try scope.arena().dupe(*zir.Inst, loop_scope.instructions.items),
+ },
+ },
+ .kw_args = .{},
+ };
const for_block = try addZIRInstBlock(mod, scope, for_src, .block, .{
- .instructions = try for_scope.arena.dupe(*zir.Inst, for_scope.instructions.items),
+ .instructions = try scope.arena().dupe(*zir.Inst, &[1]*zir.Inst{&loop.base}),
});
loop_scope.break_block = for_block;
loop_scope.continue_block = cond_block;
@@ -1918,19 +2168,11 @@ fn forExpr(
.parent = &cond_scope.base,
.decl = cond_scope.decl,
.arena = cond_scope.arena,
+ .force_comptime = cond_scope.force_comptime,
.instructions = .{},
};
defer then_scope.instructions.deinit(mod.gpa);
- // Most result location types can be forwarded directly; however
- // if we need to write to a pointer which has an inferred type,
- // proper type inference requires peer type resolution on the while's
- // branches.
- const branch_rl: ResultLoc = switch (rl) {
- .discard, .none, .ty, .ptr, .ref => rl,
- .inferred_ptr, .bitcasted_ptr, .block_ptr => .{ .block_ptr = for_block },
- };
-
var index_scope: Scope.LocalPtr = undefined;
const then_sub_scope = blk: {
const payload = for_node.payload.castTag(.PointerIndexPayload).?;
@@ -1959,50 +2201,59 @@ fn forExpr(
break :blk &index_scope.base;
};
- const then_result = try expr(mod, then_sub_scope, branch_rl, for_node.body);
- if (!then_result.tag.isNoReturn()) {
- _ = try addZIRInst(mod, then_sub_scope, then_src, zir.Inst.Break, .{
- .block = cond_block,
- .operand = then_result,
- }, .{});
- }
- condbr.positionals.then_body = .{
- .instructions = try then_scope.arena.dupe(*zir.Inst, then_scope.instructions.items),
- };
+ loop_scope.break_count += 1;
+ const then_result = try expr(mod, then_sub_scope, loop_scope.break_result_loc, for_node.body);
// else branch
var else_scope: Scope.GenZIR = .{
.parent = &cond_scope.base,
.decl = cond_scope.decl,
.arena = cond_scope.arena,
+ .force_comptime = cond_scope.force_comptime,
.instructions = .{},
};
defer else_scope.instructions.deinit(mod.gpa);
- if (for_node.@"else") |else_node| {
- const else_src = tree.token_locs[else_node.body.lastToken()].start;
- const else_result = try expr(mod, &else_scope.base, branch_rl, else_node.body);
- if (!else_result.tag.isNoReturn()) {
- _ = try addZIRInst(mod, &else_scope.base, else_src, zir.Inst.Break, .{
- .block = for_block,
- .operand = else_result,
- }, .{});
- }
- } else {
- const else_src = tree.token_locs[for_node.lastToken()].start;
- _ = try addZIRInst(mod, &else_scope.base, else_src, zir.Inst.BreakVoid, .{
- .block = for_block,
- }, .{});
- }
- condbr.positionals.else_body = .{
- .instructions = try else_scope.arena.dupe(*zir.Inst, else_scope.instructions.items),
+ var else_src: usize = undefined;
+ const else_result: ?*zir.Inst = if (for_node.@"else") |else_node| blk: {
+ else_src = tree.token_locs[else_node.body.lastToken()].start;
+ loop_scope.break_count += 1;
+ break :blk try expr(mod, &else_scope.base, loop_scope.break_result_loc, else_node.body);
+ } else blk: {
+ else_src = tree.token_locs[for_node.lastToken()].start;
+ break :blk null;
};
if (loop_scope.label) |some| {
if (!some.used) {
return mod.fail(scope, tree.token_locs[some.token].start, "unused for label", .{});
}
}
- return &for_block.base;
+ return finishThenElseBlock(
+ mod,
+ scope,
+ rl,
+ &loop_scope,
+ &then_scope,
+ &else_scope,
+ &condbr.positionals.then_body,
+ &condbr.positionals.else_body,
+ then_src,
+ else_src,
+ then_result,
+ else_result,
+ for_block,
+ cond_block,
+ );
+}
+
+fn switchCaseUsesRef(node: *ast.Node.Switch) bool {
+ for (node.cases()) |uncasted_case| {
+ const case = uncasted_case.castTag(.SwitchCase).?;
+ const uncasted_payload = case.payload orelse continue;
+ const payload = uncasted_payload.castTag(.PointerPayload).?;
+ if (payload.ptr_token) |_| return true;
+ }
+ return false;
}
fn getRangeNode(node: *ast.Node) ?*ast.Node.SimpleInfixOp {
@@ -2017,82 +2268,31 @@ fn getRangeNode(node: *ast.Node) ?*ast.Node.SimpleInfixOp {
}
fn switchExpr(mod: *Module, scope: *Scope, rl: ResultLoc, switch_node: *ast.Node.Switch) InnerError!*zir.Inst {
+ const tree = scope.tree();
+ const switch_src = tree.token_locs[switch_node.switch_token].start;
+ const use_ref = switchCaseUsesRef(switch_node);
+
var block_scope: Scope.GenZIR = .{
.parent = scope,
.decl = scope.ownerDecl().?,
.arena = scope.arena(),
+ .force_comptime = scope.isComptime(),
.instructions = .{},
};
+ setBlockResultLoc(&block_scope, rl);
defer block_scope.instructions.deinit(mod.gpa);
- const tree = scope.tree();
- const switch_src = tree.token_locs[switch_node.switch_token].start;
- const target_ptr = try expr(mod, &block_scope.base, .ref, switch_node.expr);
- const target = try addZIRUnOp(mod, &block_scope.base, target_ptr.src, .deref, target_ptr);
- // Add the switch instruction here so that it comes before any range checks.
- const switch_inst = (try addZIRInst(mod, &block_scope.base, switch_src, zir.Inst.SwitchBr, .{
- .target_ptr = target_ptr,
- .cases = undefined, // populated below
- .items = &[_]*zir.Inst{}, // populated below
- .else_body = undefined, // populated below
- }, .{})).castTag(.switchbr).?;
-
var items = std.ArrayList(*zir.Inst).init(mod.gpa);
defer items.deinit();
- var cases = std.ArrayList(zir.Inst.SwitchBr.Case).init(mod.gpa);
- defer cases.deinit();
-
- // Add comptime block containing all prong items first,
- const item_block = try addZIRInstBlock(mod, scope, switch_src, .block_comptime_flat, .{
- .instructions = undefined, // populated below
- });
- // then add block containing the switch.
- const block = try addZIRInstBlock(mod, scope, switch_src, .block, .{
- .instructions = try block_scope.arena.dupe(*zir.Inst, block_scope.instructions.items),
- });
-
- // Most result location types can be forwarded directly; however
- // if we need to write to a pointer which has an inferred type,
- // proper type inference requires peer type resolution on the switch case.
- const case_rl: ResultLoc = switch (rl) {
- .discard, .none, .ty, .ptr, .ref => rl,
- .inferred_ptr, .bitcasted_ptr, .block_ptr => .{ .block_ptr = block },
- };
-
- var item_scope: Scope.GenZIR = .{
- .parent = scope,
- .decl = scope.ownerDecl().?,
- .arena = scope.arena(),
- .instructions = .{},
- };
- defer item_scope.instructions.deinit(mod.gpa);
-
- var case_scope: Scope.GenZIR = .{
- .parent = scope,
- .decl = block_scope.decl,
- .arena = block_scope.arena,
- .instructions = .{},
- };
- defer case_scope.instructions.deinit(mod.gpa);
-
- var else_scope: Scope.GenZIR = .{
- .parent = scope,
- .decl = block_scope.decl,
- .arena = block_scope.arena,
- .instructions = .{},
- };
- defer else_scope.instructions.deinit(mod.gpa);
// first we gather all the switch items and check else/'_' prongs
var else_src: ?usize = null;
var underscore_src: ?usize = null;
var first_range: ?*zir.Inst = null;
- var special_case: ?*ast.Node.SwitchCase = null;
+ var simple_case_count: usize = 0;
for (switch_node.cases()) |uncasted_case| {
const case = uncasted_case.castTag(.SwitchCase).?;
const case_src = tree.token_locs[case.firstToken()].start;
- // reset without freeing to reduce allocations.
- case_scope.instructions.items.len = 0;
assert(case.items_len != 0);
// Check for else/_ prong, those are handled last.
@@ -2112,7 +2312,6 @@ fn switchExpr(mod: *Module, scope: *Scope, rl: ResultLoc, switch_node: *ast.Node
return mod.failWithOwnedErrorMsg(scope, msg);
}
else_src = case_src;
- special_case = case;
continue;
} else if (case.items_len == 1 and case.items()[0].tag == .Identifier and
mem.eql(u8, tree.tokenSlice(case.items()[0].firstToken()), "_"))
@@ -2132,7 +2331,6 @@ fn switchExpr(mod: *Module, scope: *Scope, rl: ResultLoc, switch_node: *ast.Node
return mod.failWithOwnedErrorMsg(scope, msg);
}
underscore_src = case_src;
- special_case = case;
continue;
}
@@ -2154,16 +2352,97 @@ fn switchExpr(mod: *Module, scope: *Scope, rl: ResultLoc, switch_node: *ast.Node
}
}
+ if (case.items_len == 1 and getRangeNode(case.items()[0]) == null) simple_case_count += 1;
+
+ // generate all the switch items as comptime expressions
+ for (case.items()) |item| {
+ if (getRangeNode(item)) |range| {
+ const start = try comptimeExpr(mod, &block_scope.base, .none, range.lhs);
+ const end = try comptimeExpr(mod, &block_scope.base, .none, range.rhs);
+ const range_src = tree.token_locs[range.op_token].start;
+ const range_inst = try addZIRBinOp(mod, &block_scope.base, range_src, .switch_range, start, end);
+ try items.append(range_inst);
+ } else {
+ const item_inst = try comptimeExpr(mod, &block_scope.base, .none, item);
+ try items.append(item_inst);
+ }
+ }
+ }
+
+ var special_prong: zir.Inst.SwitchBr.SpecialProng = .none;
+ if (else_src != null) special_prong = .@"else";
+ if (underscore_src != null) special_prong = .underscore;
+ var cases = try block_scope.arena.alloc(zir.Inst.SwitchBr.Case, simple_case_count);
+
+ const target_ptr = if (use_ref) try expr(mod, &block_scope.base, .ref, switch_node.expr) else null;
+ const target = if (target_ptr) |some|
+ try addZIRUnOp(mod, &block_scope.base, some.src, .deref, some)
+ else
+ try expr(mod, &block_scope.base, .none, switch_node.expr);
+ const switch_inst = try addZIRInst(mod, &block_scope.base, switch_src, zir.Inst.SwitchBr, .{
+ .target = target,
+ .cases = cases,
+ .items = try block_scope.arena.dupe(*zir.Inst, items.items),
+ .else_body = undefined, // populated below
+ }, .{
+ .range = first_range,
+ .special_prong = special_prong,
+ });
+
+ const block = try addZIRInstBlock(mod, scope, switch_src, .block, .{
+ .instructions = try block_scope.arena.dupe(*zir.Inst, block_scope.instructions.items),
+ });
+
+ var case_scope: Scope.GenZIR = .{
+ .parent = scope,
+ .decl = block_scope.decl,
+ .arena = block_scope.arena,
+ .force_comptime = block_scope.force_comptime,
+ .instructions = .{},
+ };
+ defer case_scope.instructions.deinit(mod.gpa);
+
+ var else_scope: Scope.GenZIR = .{
+ .parent = scope,
+ .decl = case_scope.decl,
+ .arena = case_scope.arena,
+ .force_comptime = case_scope.force_comptime,
+ .instructions = .{},
+ };
+ defer else_scope.instructions.deinit(mod.gpa);
+
+ // Now generate all but the special cases
+ var special_case: ?*ast.Node.SwitchCase = null;
+ var items_index: usize = 0;
+ var case_index: usize = 0;
+ for (switch_node.cases()) |uncasted_case| {
+ const case = uncasted_case.castTag(.SwitchCase).?;
+ const case_src = tree.token_locs[case.firstToken()].start;
+ // reset without freeing to reduce allocations.
+ case_scope.instructions.items.len = 0;
+
+ // Check for else/_ prong, those are handled last.
+ if (case.items_len == 1 and case.items()[0].tag == .SwitchElse) {
+ special_case = case;
+ continue;
+ } else if (case.items_len == 1 and case.items()[0].tag == .Identifier and
+ mem.eql(u8, tree.tokenSlice(case.items()[0].firstToken()), "_"))
+ {
+ special_case = case;
+ continue;
+ }
+
// If this is a simple one item prong then it is handled by the switchbr.
if (case.items_len == 1 and getRangeNode(case.items()[0]) == null) {
- const item = try expr(mod, &item_scope.base, .none, case.items()[0]);
- try items.append(item);
- try switchCaseExpr(mod, &case_scope.base, case_rl, block, case);
+ const item = items.items[items_index];
+ items_index += 1;
+ try switchCaseExpr(mod, &case_scope.base, block_scope.break_result_loc, block, case, target, target_ptr);
- try cases.append(.{
+ cases[case_index] = .{
.item = item,
.body = .{ .instructions = try scope.arena().dupe(*zir.Inst, case_scope.instructions.items) },
- });
+ };
+ case_index += 1;
continue;
}
@@ -2176,32 +2455,29 @@ fn switchExpr(mod: *Module, scope: *Scope, rl: ResultLoc, switch_node: *ast.Node
var any_ok: ?*zir.Inst = null;
for (case.items()) |item| {
if (getRangeNode(item)) |range| {
- const start = try expr(mod, &item_scope.base, .none, range.lhs);
- const end = try expr(mod, &item_scope.base, .none, range.rhs);
const range_src = tree.token_locs[range.op_token].start;
- const range_inst = try addZIRBinOp(mod, &item_scope.base, range_src, .switch_range, start, end);
- try items.append(range_inst);
- if (first_range == null) first_range = range_inst;
+ const range_inst = items.items[items_index].castTag(.switch_range).?;
+ items_index += 1;
// target >= start and target <= end
- const range_start_ok = try addZIRBinOp(mod, &else_scope.base, range_src, .cmp_gte, target, start);
- const range_end_ok = try addZIRBinOp(mod, &else_scope.base, range_src, .cmp_lte, target, end);
- const range_ok = try addZIRBinOp(mod, &else_scope.base, range_src, .booland, range_start_ok, range_end_ok);
+ const range_start_ok = try addZIRBinOp(mod, &else_scope.base, range_src, .cmp_gte, target, range_inst.positionals.lhs);
+ const range_end_ok = try addZIRBinOp(mod, &else_scope.base, range_src, .cmp_lte, target, range_inst.positionals.rhs);
+ const range_ok = try addZIRBinOp(mod, &else_scope.base, range_src, .bool_and, range_start_ok, range_end_ok);
if (any_ok) |some| {
- any_ok = try addZIRBinOp(mod, &else_scope.base, range_src, .boolor, some, range_ok);
+ any_ok = try addZIRBinOp(mod, &else_scope.base, range_src, .bool_or, some, range_ok);
} else {
any_ok = range_ok;
}
continue;
}
- const item_inst = try expr(mod, &item_scope.base, .none, item);
- try items.append(item_inst);
+ const item_inst = items.items[items_index];
+ items_index += 1;
const cpm_ok = try addZIRBinOp(mod, &else_scope.base, item_inst.src, .cmp_eq, target, item_inst);
if (any_ok) |some| {
- any_ok = try addZIRBinOp(mod, &else_scope.base, item_inst.src, .boolor, some, cpm_ok);
+ any_ok = try addZIRBinOp(mod, &else_scope.base, item_inst.src, .bool_or, some, cpm_ok);
} else {
any_ok = cpm_ok;
}
@@ -2218,7 +2494,7 @@ fn switchExpr(mod: *Module, scope: *Scope, rl: ResultLoc, switch_node: *ast.Node
// reset cond_scope for then_body
case_scope.instructions.items.len = 0;
- try switchCaseExpr(mod, &case_scope.base, case_rl, block, case);
+ try switchCaseExpr(mod, &case_scope.base, block_scope.break_result_loc, block, case, target, target_ptr);
condbr.positionals.then_body = .{
.instructions = try scope.arena().dupe(*zir.Inst, case_scope.instructions.items),
};
@@ -2233,41 +2509,48 @@ fn switchExpr(mod: *Module, scope: *Scope, rl: ResultLoc, switch_node: *ast.Node
};
}
- // Generate else block or a break last to finish the block.
+ // Finally generate else block or a break.
if (special_case) |case| {
- try switchCaseExpr(mod, &else_scope.base, case_rl, block, case);
+ try switchCaseExpr(mod, &else_scope.base, block_scope.break_result_loc, block, case, target, target_ptr);
} else {
// Not handling all possible cases is a compile error.
- _ = try addZIRNoOp(mod, &else_scope.base, switch_src, .unreach_nocheck);
+ _ = try addZIRNoOp(mod, &else_scope.base, switch_src, .unreachable_unsafe);
}
-
- // All items have been generated, add the instructions to the comptime block.
- item_block.positionals.body = .{
- .instructions = try block_scope.arena.dupe(*zir.Inst, item_scope.instructions.items),
- };
-
- // Actually populate switch instruction values.
- if (else_src != null) switch_inst.kw_args.special_prong = .@"else";
- if (underscore_src != null) switch_inst.kw_args.special_prong = .underscore;
- switch_inst.positionals.cases = try block_scope.arena.dupe(zir.Inst.SwitchBr.Case, cases.items);
- switch_inst.positionals.items = try block_scope.arena.dupe(*zir.Inst, items.items);
- switch_inst.kw_args.range = first_range;
- switch_inst.positionals.else_body = .{
+ switch_inst.castTag(.switchbr).?.positionals.else_body = .{
.instructions = try block_scope.arena.dupe(*zir.Inst, else_scope.instructions.items),
};
+
return &block.base;
}
-fn switchCaseExpr(mod: *Module, scope: *Scope, rl: ResultLoc, block: *zir.Inst.Block, case: *ast.Node.SwitchCase) !void {
+fn switchCaseExpr(
+ mod: *Module,
+ scope: *Scope,
+ rl: ResultLoc,
+ block: *zir.Inst.Block,
+ case: *ast.Node.SwitchCase,
+ target: *zir.Inst,
+ target_ptr: ?*zir.Inst,
+) !void {
const tree = scope.tree();
const case_src = tree.token_locs[case.firstToken()].start;
- if (case.payload != null) {
- return mod.fail(scope, case_src, "TODO switch case payload capture", .{});
- }
+ const sub_scope = blk: {
+ const uncasted_payload = case.payload orelse break :blk scope;
+ const payload = uncasted_payload.castTag(.PointerPayload).?;
+ const is_ptr = payload.ptr_token != null;
+ const value_name = tree.tokenSlice(payload.value_symbol.firstToken());
+ if (mem.eql(u8, value_name, "_")) {
+ if (is_ptr) {
+ return mod.failTok(scope, payload.ptr_token.?, "pointer modifier invalid on discard", .{});
+ }
+ break :blk scope;
+ }
+ return mod.failNode(scope, payload.value_symbol, "TODO implement switch value payload", .{});
+ };
- const case_body = try expr(mod, scope, rl, case.expr);
+ const case_body = try expr(mod, sub_scope, rl, case.expr);
if (!case_body.tag.isNoReturn()) {
- _ = try addZIRInst(mod, scope, case_src, zir.Inst.Break, .{
+ _ = try addZIRInst(mod, sub_scope, case_src, zir.Inst.Break, .{
.block = block,
.operand = case_body,
}, .{});
@@ -2288,7 +2571,7 @@ fn ret(mod: *Module, scope: *Scope, cfe: *ast.Node.ControlFlowExpression) InnerE
return addZIRUnOp(mod, scope, src, .@"return", operand);
}
} else {
- return addZIRNoOp(mod, scope, src, .returnvoid);
+ return addZIRNoOp(mod, scope, src, .return_void);
}
}
@@ -2305,7 +2588,7 @@ fn identifier(mod: *Module, scope: *Scope, rl: ResultLoc, ident: *ast.Node.OneTo
if (getSimplePrimitiveValue(ident_name)) |typed_value| {
const result = try addZIRInstConst(mod, scope, src, typed_value);
- return rlWrap(mod, scope, rl, result);
+ return rvalue(mod, scope, rl, result);
}
if (ident_name.len >= 2) integer: {
@@ -2327,7 +2610,7 @@ fn identifier(mod: *Module, scope: *Scope, rl: ResultLoc, ident: *ast.Node.OneTo
32 => if (is_signed) Value.initTag(.i32_type) else Value.initTag(.u32_type),
64 => if (is_signed) Value.initTag(.i64_type) else Value.initTag(.u64_type),
else => {
- return rlWrap(mod, scope, rl, try addZIRInstConst(mod, scope, src, .{
+ return rvalue(mod, scope, rl, try addZIRInstConst(mod, scope, src, .{
.ty = Type.initTag(.type),
.val = try Value.Tag.int_type.create(scope.arena(), .{
.signed = is_signed,
@@ -2340,7 +2623,7 @@ fn identifier(mod: *Module, scope: *Scope, rl: ResultLoc, ident: *ast.Node.OneTo
.ty = Type.initTag(.type),
.val = val,
});
- return rlWrap(mod, scope, rl, result);
+ return rvalue(mod, scope, rl, result);
}
}
@@ -2351,7 +2634,7 @@ fn identifier(mod: *Module, scope: *Scope, rl: ResultLoc, ident: *ast.Node.OneTo
.local_val => {
const local_val = s.cast(Scope.LocalVal).?;
if (mem.eql(u8, local_val.name, ident_name)) {
- return rlWrap(mod, scope, rl, local_val.inst);
+ return rvalue(mod, scope, rl, local_val.inst);
}
s = local_val.parent;
},
@@ -2360,7 +2643,7 @@ fn identifier(mod: *Module, scope: *Scope, rl: ResultLoc, ident: *ast.Node.OneTo
if (mem.eql(u8, local_ptr.name, ident_name)) {
if (rl == .ref) return local_ptr.ptr;
const loaded = try addZIRUnOp(mod, scope, src, .deref, local_ptr.ptr);
- return rlWrap(mod, scope, rl, loaded);
+ return rvalue(mod, scope, rl, loaded);
}
s = local_ptr.parent;
},
@@ -2373,7 +2656,7 @@ fn identifier(mod: *Module, scope: *Scope, rl: ResultLoc, ident: *ast.Node.OneTo
if (rl == .ref) {
return addZIRInst(mod, scope, src, zir.Inst.DeclRef, .{ .decl = decl }, .{});
} else {
- return rlWrap(mod, scope, rl, try addZIRInst(mod, scope, src, zir.Inst.DeclVal, .{
+ return rvalue(mod, scope, rl, try addZIRInst(mod, scope, src, zir.Inst.DeclVal, .{
.decl = decl,
}, .{}));
}
@@ -2590,7 +2873,7 @@ fn simpleCast(
const dest_type = try typeExpr(mod, scope, params[0]);
const rhs = try expr(mod, scope, .none, params[1]);
const result = try addZIRBinOp(mod, scope, src, inst_tag, dest_type, rhs);
- return rlWrap(mod, scope, rl, result);
+ return rvalue(mod, scope, rl, result);
}
fn ptrToInt(mod: *Module, scope: *Scope, call: *ast.Node.BuiltinCall) InnerError!*zir.Inst {
@@ -2601,31 +2884,30 @@ fn ptrToInt(mod: *Module, scope: *Scope, call: *ast.Node.BuiltinCall) InnerError
return addZIRUnOp(mod, scope, src, .ptrtoint, operand);
}
-fn as(mod: *Module, scope: *Scope, rl: ResultLoc, call: *ast.Node.BuiltinCall) InnerError!*zir.Inst {
+fn as(
+ mod: *Module,
+ scope: *Scope,
+ rl: ResultLoc,
+ call: *ast.Node.BuiltinCall,
+) InnerError!*zir.Inst {
try ensureBuiltinParamCount(mod, scope, call, 2);
const tree = scope.tree();
const src = tree.token_locs[call.builtin_token].start;
const params = call.params();
const dest_type = try typeExpr(mod, scope, params[0]);
switch (rl) {
- .none => return try expr(mod, scope, .{ .ty = dest_type }, params[1]),
- .discard => {
+ .none, .discard, .ref, .ty => {
const result = try expr(mod, scope, .{ .ty = dest_type }, params[1]);
- _ = try addZIRUnOp(mod, scope, result.src, .ensure_result_non_error, result);
- return result;
- },
- .ref => {
- const result = try expr(mod, scope, .{ .ty = dest_type }, params[1]);
- return addZIRUnOp(mod, scope, result.src, .ref, result);
- },
- .ty => |result_ty| {
- const result = try expr(mod, scope, .{ .ty = dest_type }, params[1]);
- return addZIRBinOp(mod, scope, src, .as, result_ty, result);
+ return rvalue(mod, scope, rl, result);
},
+
.ptr => |result_ptr| {
- const casted_result_ptr = try addZIRBinOp(mod, scope, src, .coerce_result_ptr, dest_type, result_ptr);
- return expr(mod, scope, .{ .ptr = casted_result_ptr }, params[1]);
+ return asRlPtr(mod, scope, rl, src, result_ptr, params[1], dest_type);
},
+ .block_ptr => |block_scope| {
+ return asRlPtr(mod, scope, rl, src, block_scope.rl_ptr.?, params[1], dest_type);
+ },
+
.bitcasted_ptr => |bitcasted_ptr| {
// TODO here we should be able to resolve the inference; we now have a type for the result.
return mod.failTok(scope, call.builtin_token, "TODO implement @as with result location @bitCast", .{});
@@ -2634,13 +2916,50 @@ fn as(mod: *Module, scope: *Scope, rl: ResultLoc, call: *ast.Node.BuiltinCall) I
// TODO here we should be able to resolve the inference; we now have a type for the result.
return mod.failTok(scope, call.builtin_token, "TODO implement @as with inferred-type result location pointer", .{});
},
- .block_ptr => |block_ptr| {
- const casted_block_ptr = try addZIRInst(mod, scope, src, zir.Inst.CoerceResultBlockPtr, .{
- .dest_type = dest_type,
- .block = block_ptr,
- }, .{});
- return expr(mod, scope, .{ .ptr = casted_block_ptr }, params[1]);
- },
+ }
+}
+
+fn asRlPtr(
+ mod: *Module,
+ scope: *Scope,
+ rl: ResultLoc,
+ src: usize,
+ result_ptr: *zir.Inst,
+ operand_node: *ast.Node,
+ dest_type: *zir.Inst,
+) InnerError!*zir.Inst {
+ // Detect whether this expr() call goes into rvalue() to store the result into the
+ // result location. If it does, elide the coerce_result_ptr instruction
+ // as well as the store instruction, instead passing the result as an rvalue.
+ var as_scope: Scope.GenZIR = .{
+ .parent = scope,
+ .decl = scope.ownerDecl().?,
+ .arena = scope.arena(),
+ .force_comptime = scope.isComptime(),
+ .instructions = .{},
+ };
+ defer as_scope.instructions.deinit(mod.gpa);
+
+ as_scope.rl_ptr = try addZIRBinOp(mod, &as_scope.base, src, .coerce_result_ptr, dest_type, result_ptr);
+ const result = try expr(mod, &as_scope.base, .{ .block_ptr = &as_scope }, operand_node);
+ const parent_zir = &scope.getGenZIR().instructions;
+ if (as_scope.rvalue_rl_count == 1) {
+ // Busted! This expression didn't actually need a pointer.
+ const expected_len = parent_zir.items.len + as_scope.instructions.items.len - 2;
+ try parent_zir.ensureCapacity(mod.gpa, expected_len);
+ for (as_scope.instructions.items) |src_inst| {
+ if (src_inst == as_scope.rl_ptr.?) continue;
+ if (src_inst.castTag(.store_to_block_ptr)) |store| {
+ if (store.positionals.lhs == as_scope.rl_ptr.?) continue;
+ }
+ parent_zir.appendAssumeCapacity(src_inst);
+ }
+ assert(parent_zir.items.len == expected_len);
+ const casted_result = try addZIRBinOp(mod, scope, dest_type.src, .as, dest_type, result);
+ return rvalue(mod, scope, rl, casted_result);
+ } else {
+ try parent_zir.appendSlice(mod.gpa, as_scope.instructions.items);
+ return result;
}
}
@@ -2703,7 +3022,7 @@ fn compileError(mod: *Module, scope: *Scope, call: *ast.Node.BuiltinCall) InnerE
const src = tree.token_locs[call.builtin_token].start;
const params = call.params();
const target = try expr(mod, scope, .none, params[0]);
- return addZIRUnOp(mod, scope, src, .compileerror, target);
+ return addZIRUnOp(mod, scope, src, .compile_error, target);
}
fn setEvalBranchQuota(mod: *Module, scope: *Scope, call: *ast.Node.BuiltinCall) InnerError!*zir.Inst {
@@ -2728,12 +3047,12 @@ fn typeOf(mod: *Module, scope: *Scope, rl: ResultLoc, call: *ast.Node.BuiltinCal
return mod.failTok(scope, call.builtin_token, "expected at least 1 argument, found 0", .{});
}
if (params.len == 1) {
- return rlWrap(mod, scope, rl, try addZIRUnOp(mod, scope, src, .typeof, try expr(mod, scope, .none, params[0])));
+ return rvalue(mod, scope, rl, try addZIRUnOp(mod, scope, src, .typeof, try expr(mod, scope, .none, params[0])));
}
var items = try arena.alloc(*zir.Inst, params.len);
for (params) |param, param_i|
items[param_i] = try expr(mod, scope, .none, param);
- return rlWrap(mod, scope, rl, try addZIRInst(mod, scope, src, zir.Inst.TypeOfPeer, .{ .items = items }, .{}));
+ return rvalue(mod, scope, rl, try addZIRInst(mod, scope, src, zir.Inst.TypeOfPeer, .{ .items = items }, .{}));
}
fn compileLog(mod: *Module, scope: *Scope, call: *ast.Node.BuiltinCall) InnerError!*zir.Inst {
const tree = scope.tree();
@@ -2756,7 +3075,7 @@ fn builtinCall(mod: *Module, scope: *Scope, rl: ResultLoc, call: *ast.Node.Built
// Also, some builtins have a variable number of parameters.
if (mem.eql(u8, builtin_name, "@ptrToInt")) {
- return rlWrap(mod, scope, rl, try ptrToInt(mod, scope, call));
+ return rvalue(mod, scope, rl, try ptrToInt(mod, scope, call));
} else if (mem.eql(u8, builtin_name, "@as")) {
return as(mod, scope, rl, call);
} else if (mem.eql(u8, builtin_name, "@floatCast")) {
@@ -2769,9 +3088,9 @@ fn builtinCall(mod: *Module, scope: *Scope, rl: ResultLoc, call: *ast.Node.Built
return typeOf(mod, scope, rl, call);
} else if (mem.eql(u8, builtin_name, "@breakpoint")) {
const src = tree.token_locs[call.builtin_token].start;
- return rlWrap(mod, scope, rl, try addZIRNoOp(mod, scope, src, .breakpoint));
+ return rvalue(mod, scope, rl, try addZIRNoOp(mod, scope, src, .breakpoint));
} else if (mem.eql(u8, builtin_name, "@import")) {
- return rlWrap(mod, scope, rl, try import(mod, scope, call));
+ return rvalue(mod, scope, rl, try import(mod, scope, call));
} else if (mem.eql(u8, builtin_name, "@compileError")) {
return compileError(mod, scope, call);
} else if (mem.eql(u8, builtin_name, "@setEvalBranchQuota")) {
@@ -2806,13 +3125,13 @@ fn callExpr(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node.Call) In
.args = args,
}, .{});
// TODO function call with result location
- return rlWrap(mod, scope, rl, result);
+ return rvalue(mod, scope, rl, result);
}
fn unreach(mod: *Module, scope: *Scope, unreach_node: *ast.Node.OneToken) InnerError!*zir.Inst {
const tree = scope.tree();
const src = tree.token_locs[unreach_node.token].start;
- return addZIRNoOp(mod, scope, src, .@"unreachable");
+ return addZIRNoOp(mod, scope, src, .unreachable_safe);
}
fn getSimplePrimitiveValue(name: []const u8) ?TypedValue {
@@ -3077,7 +3396,6 @@ fn nodeMayNeedMemoryLocation(start_node: *ast.Node, scope: *Scope) bool {
.{ "@round", false },
.{ "@subWithOverflow", false },
.{ "@tagName", false },
- .{ "@TagType", false },
.{ "@This", false },
.{ "@truncate", false },
.{ "@Type", false },
@@ -3100,7 +3418,7 @@ fn nodeMayNeedMemoryLocation(start_node: *ast.Node, scope: *Scope) bool {
/// result locations must call this function on their result.
/// As an example, if the `ResultLoc` is `ptr`, it will write the result to the pointer.
/// If the `ResultLoc` is `ty`, it will coerce the result to the type.
-fn rlWrap(mod: *Module, scope: *Scope, rl: ResultLoc, result: *zir.Inst) InnerError!*zir.Inst {
+fn rvalue(mod: *Module, scope: *Scope, rl: ResultLoc, result: *zir.Inst) InnerError!*zir.Inst {
switch (rl) {
.none => return result,
.discard => {
@@ -3114,42 +3432,97 @@ fn rlWrap(mod: *Module, scope: *Scope, rl: ResultLoc, result: *zir.Inst) InnerEr
},
.ty => |ty_inst| return addZIRBinOp(mod, scope, result.src, .as, ty_inst, result),
.ptr => |ptr_inst| {
- const casted_result = try addZIRInst(mod, scope, result.src, zir.Inst.CoerceToPtrElem, .{
- .ptr = ptr_inst,
- .value = result,
- }, .{});
- _ = try addZIRBinOp(mod, scope, result.src, .store, ptr_inst, casted_result);
- return casted_result;
+ _ = try addZIRBinOp(mod, scope, result.src, .store, ptr_inst, result);
+ return result;
},
.bitcasted_ptr => |bitcasted_ptr| {
- return mod.fail(scope, result.src, "TODO implement rlWrap .bitcasted_ptr", .{});
+ return mod.fail(scope, result.src, "TODO implement rvalue .bitcasted_ptr", .{});
},
.inferred_ptr => |alloc| {
_ = try addZIRBinOp(mod, scope, result.src, .store_to_inferred_ptr, &alloc.base, result);
return result;
},
- .block_ptr => |block_ptr| {
- return mod.fail(scope, result.src, "TODO implement rlWrap .block_ptr", .{});
+ .block_ptr => |block_scope| {
+ block_scope.rvalue_rl_count += 1;
+ _ = try addZIRBinOp(mod, scope, result.src, .store_to_block_ptr, block_scope.rl_ptr.?, result);
+ return result;
},
}
}
-fn rlWrapVoid(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node, result: void) InnerError!*zir.Inst {
+fn rvalueVoid(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node, result: void) InnerError!*zir.Inst {
const src = scope.tree().token_locs[node.firstToken()].start;
const void_inst = try addZIRInstConst(mod, scope, src, .{
.ty = Type.initTag(.void),
.val = Value.initTag(.void_value),
});
- return rlWrap(mod, scope, rl, void_inst);
+ return rvalue(mod, scope, rl, void_inst);
}
-/// TODO go over all the callsites and see where we can introduce "by-value" ZIR instructions
-/// to save ZIR memory. For example, see DeclVal vs DeclRef.
-/// Do not add additional callsites to this function.
-fn rlWrapPtr(mod: *Module, scope: *Scope, rl: ResultLoc, ptr: *zir.Inst) InnerError!*zir.Inst {
- if (rl == .ref) return ptr;
+fn rlStrategy(rl: ResultLoc, block_scope: *Scope.GenZIR) ResultLoc.Strategy {
+ var elide_store_to_block_ptr_instructions = false;
+ switch (rl) {
+ // In this branch there will not be any store_to_block_ptr instructions.
+ .discard, .none, .ty, .ref => return .{
+ .tag = .break_operand,
+ .elide_store_to_block_ptr_instructions = false,
+ },
+ // The pointer got passed through to the sub-expressions, so we will use
+ // break_void here.
+ // In this branch there will not be any store_to_block_ptr instructions.
+ .ptr => return .{
+ .tag = .break_void,
+ .elide_store_to_block_ptr_instructions = false,
+ },
+ .inferred_ptr, .bitcasted_ptr, .block_ptr => {
+ if (block_scope.rvalue_rl_count == block_scope.break_count) {
+ // Neither prong of the if consumed the result location, so we can
+ // use break instructions to create an rvalue.
+ return .{
+ .tag = .break_operand,
+ .elide_store_to_block_ptr_instructions = true,
+ };
+ } else {
+ // Allow the store_to_block_ptr instructions to remain so that
+ // semantic analysis can turn them into bitcasts.
+ return .{
+ .tag = .break_void,
+ .elide_store_to_block_ptr_instructions = false,
+ };
+ }
+ },
+ }
+}
- return rlWrap(mod, scope, rl, try addZIRUnOp(mod, scope, ptr.src, .deref, ptr));
+fn setBlockResultLoc(block_scope: *Scope.GenZIR, parent_rl: ResultLoc) void {
+ // Depending on whether the result location is a pointer or value, different
+ // ZIR needs to be generated. In the former case we rely on storing to the
+ // pointer to communicate the result, and use breakvoid; in the latter case
+ // the block break instructions will have the result values.
+ // One more complication: when the result location is a pointer, we detect
+ // the scenario where the result location is not consumed. In this case
+ // we emit ZIR for the block break instructions to have the result values,
+ // and then rvalue() on that to pass the value to the result location.
+ switch (parent_rl) {
+ .discard, .none, .ty, .ptr, .ref => {
+ block_scope.break_result_loc = parent_rl;
+ },
+
+ .inferred_ptr => |ptr| {
+ block_scope.rl_ptr = &ptr.base;
+ block_scope.break_result_loc = .{ .block_ptr = block_scope };
+ },
+
+ .bitcasted_ptr => |ptr| {
+ block_scope.rl_ptr = &ptr.base;
+ block_scope.break_result_loc = .{ .block_ptr = block_scope };
+ },
+
+ .block_ptr => |parent_block_scope| {
+ block_scope.rl_ptr = parent_block_scope.rl_ptr.?;
+ block_scope.break_result_loc = .{ .block_ptr = block_scope };
+ },
+ }
}
pub fn addZirInstTag(
diff --git a/src/clang.zig b/src/clang.zig
index fc7a25fe12..954cfee6b2 100644
--- a/src/clang.zig
+++ b/src/clang.zig
@@ -848,7 +848,10 @@ pub const UnaryOperator = opaque {
extern fn ZigClangUnaryOperator_getBeginLoc(*const UnaryOperator) SourceLocation;
};
-pub const ValueDecl = opaque {};
+pub const ValueDecl = opaque {
+ pub const getType = ZigClangValueDecl_getType;
+ extern fn ZigClangValueDecl_getType(*const ValueDecl) QualType;
+};
pub const VarDecl = opaque {
pub const getLocation = ZigClangVarDecl_getLocation;
diff --git a/src/clang_options_data.zig b/src/clang_options_data.zig
index 4d89308545..0293a5327e 100644
--- a/src/clang_options_data.zig
+++ b/src/clang_options_data.zig
@@ -4305,7 +4305,14 @@ flagpd1("rewrite-macros"),
flagpd1("rewrite-objc"),
flagpd1("rewrite-test"),
sepd1("rpath"),
-flagpd1("s"),
+.{
+ .name = "s",
+ .syntax = .flag,
+ .zig_equivalent = .strip,
+ .pd1 = true,
+ .pd2 = false,
+ .psl = false,
+},
.{
.name = "save-stats",
.syntax = .flag,
diff --git a/src/codegen.zig b/src/codegen.zig
index 1ca2bb2abe..9771386403 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -840,14 +840,15 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
.arg => return self.genArg(inst.castTag(.arg).?),
.assembly => return self.genAsm(inst.castTag(.assembly).?),
.bitcast => return self.genBitCast(inst.castTag(.bitcast).?),
- .bitand => return self.genBitAnd(inst.castTag(.bitand).?),
- .bitor => return self.genBitOr(inst.castTag(.bitor).?),
+ .bit_and => return self.genBitAnd(inst.castTag(.bit_and).?),
+ .bit_or => return self.genBitOr(inst.castTag(.bit_or).?),
.block => return self.genBlock(inst.castTag(.block).?),
.br => return self.genBr(inst.castTag(.br).?),
+ .br_block_flat => return self.genBrBlockFlat(inst.castTag(.br_block_flat).?),
.breakpoint => return self.genBreakpoint(inst.src),
- .brvoid => return self.genBrVoid(inst.castTag(.brvoid).?),
- .booland => return self.genBoolOp(inst.castTag(.booland).?),
- .boolor => return self.genBoolOp(inst.castTag(.boolor).?),
+ .br_void => return self.genBrVoid(inst.castTag(.br_void).?),
+ .bool_and => return self.genBoolOp(inst.castTag(.bool_and).?),
+ .bool_or => return self.genBoolOp(inst.castTag(.bool_or).?),
.call => return self.genCall(inst.castTag(.call).?),
.cmp_lt => return self.genCmp(inst.castTag(.cmp_lt).?, .lt),
.cmp_lte => return self.genCmp(inst.castTag(.cmp_lte).?, .lte),
@@ -1097,7 +1098,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
if (inst.base.isUnused())
return MCValue.dead;
switch (arch) {
- .arm, .armeb => return try self.genArmBinOp(&inst.base, inst.lhs, inst.rhs, .bitand),
+ .arm, .armeb => return try self.genArmBinOp(&inst.base, inst.lhs, inst.rhs, .bit_and),
else => return self.fail(inst.base.src, "TODO implement bitwise and for {}", .{self.target.cpu.arch}),
}
}
@@ -1107,7 +1108,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
if (inst.base.isUnused())
return MCValue.dead;
switch (arch) {
- .arm, .armeb => return try self.genArmBinOp(&inst.base, inst.lhs, inst.rhs, .bitor),
+ .arm, .armeb => return try self.genArmBinOp(&inst.base, inst.lhs, inst.rhs, .bit_or),
else => return self.fail(inst.base.src, "TODO implement bitwise or for {}", .{self.target.cpu.arch}),
}
}
@@ -1294,38 +1295,31 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
const rhs = try self.resolveInst(op_rhs);
// Destination must be a register
- // Source may be register, memory or an immediate
- //
- // So there are two options: (lhs is src and rhs is dest)
- // or (rhs is src and lhs is dest)
- const lhs_is_dest = blk: {
- if (self.reuseOperand(inst, 0, lhs)) {
- break :blk true;
- } else if (self.reuseOperand(inst, 1, rhs)) {
- break :blk false;
- } else {
- break :blk lhs == .register;
- }
- };
-
var dst_mcv: MCValue = undefined;
- var src_mcv: MCValue = undefined;
- var src_inst: *ir.Inst = undefined;
- if (lhs_is_dest) {
+ var lhs_mcv: MCValue = undefined;
+ var rhs_mcv: MCValue = undefined;
+ if (self.reuseOperand(inst, 0, lhs)) {
// LHS is the destination
// RHS is the source
- src_inst = op_rhs;
- src_mcv = rhs;
- dst_mcv = if (lhs != .register) try self.copyToNewRegister(inst, lhs) else lhs;
- } else {
+ lhs_mcv = if (lhs != .register) try self.copyToNewRegister(inst, lhs) else lhs;
+ rhs_mcv = rhs;
+ dst_mcv = lhs_mcv;
+ } else if (self.reuseOperand(inst, 1, rhs)) {
// RHS is the destination
// LHS is the source
- src_inst = op_lhs;
- src_mcv = lhs;
- dst_mcv = if (rhs != .register) try self.copyToNewRegister(inst, rhs) else rhs;
+ lhs_mcv = lhs;
+ rhs_mcv = if (rhs != .register) try self.copyToNewRegister(inst, rhs) else rhs;
+ dst_mcv = rhs_mcv;
+ } else {
+ // TODO save 1 copy instruction by directly allocating the destination register
+ // LHS is the destination
+ // RHS is the source
+ lhs_mcv = try self.copyToNewRegister(inst, lhs);
+ rhs_mcv = rhs;
+ dst_mcv = lhs_mcv;
}
- try self.genArmBinOpCode(inst.src, dst_mcv.register, src_mcv, lhs_is_dest, op);
+ try self.genArmBinOpCode(inst.src, dst_mcv.register, lhs_mcv, rhs_mcv, op);
return dst_mcv;
}
@@ -1333,11 +1327,17 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
self: *Self,
src: usize,
dst_reg: Register,
- src_mcv: MCValue,
- lhs_is_dest: bool,
+ lhs_mcv: MCValue,
+ rhs_mcv: MCValue,
op: ir.Inst.Tag,
) !void {
- const operand = switch (src_mcv) {
+ assert(lhs_mcv == .register or lhs_mcv == .register);
+
+ const swap_lhs_and_rhs = rhs_mcv == .register and lhs_mcv != .register;
+ const op1 = if (swap_lhs_and_rhs) rhs_mcv.register else lhs_mcv.register;
+ const op2 = if (swap_lhs_and_rhs) lhs_mcv else rhs_mcv;
+
+ const operand = switch (op2) {
.none => unreachable,
.undef => unreachable,
.dead, .unreach => unreachable,
@@ -1351,37 +1351,37 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
// Load immediate into register if it doesn't fit
// as an operand
break :blk Instruction.Operand.fromU32(@intCast(u32, imm)) orelse
- Instruction.Operand.reg(try self.copyToTmpRegister(src, src_mcv), Instruction.Operand.Shift.none);
+ Instruction.Operand.reg(try self.copyToTmpRegister(src, op2), Instruction.Operand.Shift.none);
},
- .register => |src_reg| Instruction.Operand.reg(src_reg, Instruction.Operand.Shift.none),
+ .register => |reg| Instruction.Operand.reg(reg, Instruction.Operand.Shift.none),
.stack_offset,
.embedded_in_code,
.memory,
- => Instruction.Operand.reg(try self.copyToTmpRegister(src, src_mcv), Instruction.Operand.Shift.none),
+ => Instruction.Operand.reg(try self.copyToTmpRegister(src, op2), Instruction.Operand.Shift.none),
};
switch (op) {
.add => {
- writeInt(u32, try self.code.addManyAsArray(4), Instruction.add(.al, dst_reg, dst_reg, operand).toU32());
+ writeInt(u32, try self.code.addManyAsArray(4), Instruction.add(.al, dst_reg, op1, operand).toU32());
},
.sub => {
- if (lhs_is_dest) {
- writeInt(u32, try self.code.addManyAsArray(4), Instruction.sub(.al, dst_reg, dst_reg, operand).toU32());
+ if (swap_lhs_and_rhs) {
+ writeInt(u32, try self.code.addManyAsArray(4), Instruction.rsb(.al, dst_reg, op1, operand).toU32());
} else {
- writeInt(u32, try self.code.addManyAsArray(4), Instruction.rsb(.al, dst_reg, dst_reg, operand).toU32());
+ writeInt(u32, try self.code.addManyAsArray(4), Instruction.sub(.al, dst_reg, op1, operand).toU32());
}
},
- .booland, .bitand => {
- writeInt(u32, try self.code.addManyAsArray(4), Instruction.@"and"(.al, dst_reg, dst_reg, operand).toU32());
+ .bool_and, .bit_and => {
+ writeInt(u32, try self.code.addManyAsArray(4), Instruction.@"and"(.al, dst_reg, op1, operand).toU32());
},
- .boolor, .bitor => {
- writeInt(u32, try self.code.addManyAsArray(4), Instruction.orr(.al, dst_reg, dst_reg, operand).toU32());
+ .bool_or, .bit_or => {
+ writeInt(u32, try self.code.addManyAsArray(4), Instruction.orr(.al, dst_reg, op1, operand).toU32());
},
.not, .xor => {
- writeInt(u32, try self.code.addManyAsArray(4), Instruction.eor(.al, dst_reg, dst_reg, operand).toU32());
+ writeInt(u32, try self.code.addManyAsArray(4), Instruction.eor(.al, dst_reg, op1, operand).toU32());
},
.cmp_eq => {
- writeInt(u32, try self.code.addManyAsArray(4), Instruction.cmp(.al, dst_reg, operand).toU32());
+ writeInt(u32, try self.code.addManyAsArray(4), Instruction.cmp(.al, op1, operand).toU32());
},
else => unreachable, // not a binary instruction
}
@@ -1566,6 +1566,59 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
}
}
+ fn genArgDbgInfo(self: *Self, inst: *ir.Inst.Arg, mcv: MCValue) !void {
+ const name_with_null = inst.name[0 .. mem.lenZ(inst.name) + 1];
+
+ switch (mcv) {
+ .register => |reg| {
+ // Copy arg to stack for better debugging
+ const ty = inst.base.ty;
+ const abi_size = math.cast(u32, ty.abiSize(self.target.*)) catch {
+ return self.fail(inst.base.src, "type '{}' too big to fit into stack frame", .{ty});
+ };
+ const abi_align = ty.abiAlignment(self.target.*);
+ const stack_offset = try self.allocMem(&inst.base, abi_size, abi_align);
+ try self.genSetStack(inst.base.src, ty, stack_offset, MCValue{ .register = reg });
+ const adjusted_stack_offset = math.negateCast(stack_offset + abi_size) catch {
+ return self.fail(inst.base.src, "Stack offset too large for arguments", .{});
+ };
+
+ switch (self.debug_output) {
+ .dwarf => |dbg_out| {
+ switch (arch) {
+ .arm, .armeb => {
+ try dbg_out.dbg_info.append(link.File.Elf.abbrev_parameter);
+
+ // Get length of the LEB128 stack offset
+ var counting_writer = std.io.countingWriter(std.io.null_writer);
+ leb128.writeILEB128(counting_writer.writer(), adjusted_stack_offset) catch unreachable;
+
+ // DW.AT_location, DW.FORM_exprloc
+ // ULEB128 dwarf expression length
+ try leb128.writeULEB128(dbg_out.dbg_info.writer(), counting_writer.bytes_written + 1);
+ try dbg_out.dbg_info.append(DW.OP_breg11);
+ try leb128.writeILEB128(dbg_out.dbg_info.writer(), adjusted_stack_offset);
+ },
+ else => {
+ try dbg_out.dbg_info.ensureCapacity(dbg_out.dbg_info.items.len + 3);
+ dbg_out.dbg_info.appendAssumeCapacity(link.File.Elf.abbrev_parameter);
+ dbg_out.dbg_info.appendSliceAssumeCapacity(&[2]u8{ // DW.AT_location, DW.FORM_exprloc
+ 1, // ULEB128 dwarf expression length
+ reg.dwarfLocOp(),
+ });
+ },
+ }
+ try dbg_out.dbg_info.ensureCapacity(dbg_out.dbg_info.items.len + 5 + name_with_null.len);
+ try self.addDbgInfoTypeReloc(inst.base.ty); // DW.AT_type, DW.FORM_ref4
+ dbg_out.dbg_info.appendSliceAssumeCapacity(name_with_null); // DW.AT_name, DW.FORM_string
+ },
+ .none => {},
+ }
+ },
+ else => {},
+ }
+ }
+
fn genArg(self: *Self, inst: *ir.Inst.Arg) !MCValue {
const arg_index = self.arg_index;
self.arg_index += 1;
@@ -1573,32 +1626,17 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
if (FreeRegInt == u0) {
return self.fail(inst.base.src, "TODO implement Register enum for {}", .{self.target.cpu.arch});
}
+
+ const result = self.args[arg_index];
+ try self.genArgDbgInfo(inst, result);
+
if (inst.base.isUnused())
return MCValue.dead;
- try self.registers.ensureCapacity(self.gpa, self.registers.count() + 1);
-
- const result = self.args[arg_index];
-
- const name_with_null = inst.name[0 .. mem.lenZ(inst.name) + 1];
switch (result) {
.register => |reg| {
- self.registers.putAssumeCapacityNoClobber(toCanonicalReg(reg), &inst.base);
+ try self.registers.putNoClobber(self.gpa, toCanonicalReg(reg), &inst.base);
self.markRegUsed(reg);
-
- switch (self.debug_output) {
- .dwarf => |dbg_out| {
- try dbg_out.dbg_info.ensureCapacity(dbg_out.dbg_info.items.len + 8 + name_with_null.len);
- dbg_out.dbg_info.appendAssumeCapacity(link.File.Elf.abbrev_parameter);
- dbg_out.dbg_info.appendSliceAssumeCapacity(&[2]u8{ // DW.AT_location, DW.FORM_exprloc
- 1, // ULEB128 dwarf expression length
- reg.dwarfLocOp(),
- });
- try self.addDbgInfoTypeReloc(inst.base.ty); // DW.AT_type, DW.FORM_ref4
- dbg_out.dbg_info.appendSliceAssumeCapacity(name_with_null); // DW.AT_name, DW.FORM_string
- },
- .none => {},
- }
},
else => {},
}
@@ -2096,7 +2134,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
const src_mcv = rhs;
const dst_mcv = if (lhs != .register) try self.copyToNewRegister(&inst.base, lhs) else lhs;
- try self.genArmBinOpCode(inst.base.src, dst_mcv.register, src_mcv, true, .cmp_eq);
+ try self.genArmBinOpCode(inst.base.src, dst_mcv.register, dst_mcv, src_mcv, .cmp_eq);
const info = inst.lhs.ty.intInfo(self.target.*);
return switch (info.signedness) {
.signed => MCValue{ .compare_flags_signed = op },
@@ -2185,7 +2223,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
writeInt(u32, try self.code.addManyAsArray(4), Instruction.cmp(.al, reg, op).toU32());
break :blk .ne;
},
- else => return self.fail(inst.base.src, "TODO implement condbr {} when condition is {}", .{ self.target.cpu.arch, @tagName(cond) }),
+ else => return self.fail(inst.base.src, "TODO implement condbr {} when condition is {s}", .{ self.target.cpu.arch, @tagName(cond) }),
};
const reloc = Reloc{
@@ -2441,17 +2479,14 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
}
}
+ fn genBrBlockFlat(self: *Self, inst: *ir.Inst.BrBlockFlat) !MCValue {
+ try self.genBody(inst.body);
+ const last = inst.body.instructions[inst.body.instructions.len - 1];
+ return self.br(inst.base.src, inst.block, last);
+ }
+
fn genBr(self: *Self, inst: *ir.Inst.Br) !MCValue {
- if (inst.operand.ty.hasCodeGenBits()) {
- const operand = try self.resolveInst(inst.operand);
- const block_mcv = @bitCast(MCValue, inst.block.codegen.mcv);
- if (block_mcv == .none) {
- inst.block.codegen.mcv = @bitCast(AnyMCValue, operand);
- } else {
- try self.setRegOrMem(inst.base.src, inst.block.base.ty, block_mcv, operand);
- }
- }
- return self.brVoid(inst.base.src, inst.block);
+ return self.br(inst.base.src, inst.block, inst.operand);
}
fn genBrVoid(self: *Self, inst: *ir.Inst.BrVoid) !MCValue {
@@ -2464,20 +2499,33 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
switch (arch) {
.x86_64 => switch (inst.base.tag) {
// lhs AND rhs
- .booland => return try self.genX8664BinMath(&inst.base, inst.lhs, inst.rhs, 4, 0x20),
+ .bool_and => return try self.genX8664BinMath(&inst.base, inst.lhs, inst.rhs, 4, 0x20),
// lhs OR rhs
- .boolor => return try self.genX8664BinMath(&inst.base, inst.lhs, inst.rhs, 1, 0x08),
+ .bool_or => return try self.genX8664BinMath(&inst.base, inst.lhs, inst.rhs, 1, 0x08),
else => unreachable, // Not a boolean operation
},
.arm, .armeb => switch (inst.base.tag) {
- .booland => return try self.genArmBinOp(&inst.base, inst.lhs, inst.rhs, .booland),
- .boolor => return try self.genArmBinOp(&inst.base, inst.lhs, inst.rhs, .boolor),
+ .bool_and => return try self.genArmBinOp(&inst.base, inst.lhs, inst.rhs, .bool_and),
+ .bool_or => return try self.genArmBinOp(&inst.base, inst.lhs, inst.rhs, .bool_or),
else => unreachable, // Not a boolean operation
},
else => return self.fail(inst.base.src, "TODO implement boolean operations for {}", .{self.target.cpu.arch}),
}
}
+ fn br(self: *Self, src: usize, block: *ir.Inst.Block, operand: *ir.Inst) !MCValue {
+ if (operand.ty.hasCodeGenBits()) {
+ const operand_mcv = try self.resolveInst(operand);
+ const block_mcv = @bitCast(MCValue, block.codegen.mcv);
+ if (block_mcv == .none) {
+ block.codegen.mcv = @bitCast(AnyMCValue, operand_mcv);
+ } else {
+ try self.setRegOrMem(src, block.base.ty, block_mcv, operand_mcv);
+ }
+ }
+ return self.brVoid(src, block);
+ }
+
fn brVoid(self: *Self, src: usize, block: *ir.Inst.Block) !MCValue {
// Emit a jump with a relocation. It will be patched up after the block ends.
try block.codegen.relocs.ensureCapacity(self.gpa, block.codegen.relocs.items.len + 1);
@@ -3694,10 +3742,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
var nsaa: u32 = 0; // Next stacked argument address
for (param_types) |ty, i| {
- if (ty.abiAlignment(self.target.*) == 8) {
- // Round up NCRN to the next even number
- ncrn += ncrn % 2;
- }
+ if (ty.abiAlignment(self.target.*) == 8)
+ ncrn = std.mem.alignForwardGeneric(usize, ncrn, 2);
const param_size = @intCast(u32, ty.abiSize(self.target.*));
if (std.math.divCeil(u32, param_size, 4) catch unreachable <= 4 - ncrn) {
@@ -3711,11 +3757,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
return self.fail(src, "TODO MCValues split between registers and stack", .{});
} else {
ncrn = 4;
- if (ty.abiAlignment(self.target.*) == 8) {
- if (nsaa % 8 != 0) {
- nsaa += 8 - (nsaa % 8);
- }
- }
+ if (ty.abiAlignment(self.target.*) == 8)
+ nsaa = std.mem.alignForwardGeneric(u32, nsaa, 8);
result.args[i] = .{ .stack_offset = nsaa };
nsaa += param_size;
diff --git a/src/codegen/arm.zig b/src/codegen/arm.zig
index 94f1ae951d..d538d28c50 100644
--- a/src/codegen/arm.zig
+++ b/src/codegen/arm.zig
@@ -186,7 +186,7 @@ pub const Psr = enum {
spsr,
};
-pub const callee_preserved_regs = [_]Register{ .r0, .r1, .r2, .r3, .r4, .r5, .r6, .r7, .r8, .r10 };
+pub const callee_preserved_regs = [_]Register{ .r4, .r5, .r6, .r7, .r8, .r10 };
pub const c_abi_int_param_regs = [_]Register{ .r0, .r1, .r2, .r3 };
pub const c_abi_int_return_regs = [_]Register{ .r0, .r1 };
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
index b26f753757..cb3271a57f 100644
--- a/src/codegen/c.zig
+++ b/src/codegen/c.zig
@@ -1,12 +1,12 @@
const std = @import("std");
const mem = std.mem;
const log = std.log.scoped(.c);
-const Writer = std.ArrayList(u8).Writer;
const link = @import("../link.zig");
const Module = @import("../Module.zig");
const Compilation = @import("../Compilation.zig");
-const Inst = @import("../ir.zig").Inst;
+const ir = @import("../ir.zig");
+const Inst = ir.Inst;
const Value = @import("../value.zig").Value;
const Type = @import("../type.zig").Type;
const TypedValue = @import("../TypedValue.zig");
@@ -41,6 +41,8 @@ pub const Object = struct {
value_map: CValueMap,
next_arg_index: usize = 0,
next_local_index: usize = 0,
+ next_block_index: usize = 0,
+ indent_writer: std.io.AutoIndentingStream(std.ArrayList(u8).Writer),
fn resolveInst(o: *Object, inst: *Inst) !CValue {
if (inst.value()) |_| {
@@ -57,31 +59,28 @@ pub const Object = struct {
fn allocLocal(o: *Object, ty: Type, mutability: Mutability) !CValue {
const local_value = o.allocLocalValue();
- try o.renderTypeAndName(o.code.writer(), ty, local_value, mutability);
+ try o.renderTypeAndName(o.writer(), ty, local_value, mutability);
return local_value;
}
- fn indent(o: *Object) !void {
- const indent_size = 4;
- const indent_level = 1;
- const indent_amt = indent_size * indent_level;
- try o.code.writer().writeByteNTimes(' ', indent_amt);
+ fn writer(o: *Object) std.io.AutoIndentingStream(std.ArrayList(u8).Writer).Writer {
+ return o.indent_writer.writer();
}
- fn writeCValue(o: *Object, writer: Writer, c_value: CValue) !void {
+ fn writeCValue(o: *Object, w: anytype, c_value: CValue) !void {
switch (c_value) {
.none => unreachable,
- .local => |i| return writer.print("t{d}", .{i}),
- .local_ref => |i| return writer.print("&t{d}", .{i}),
- .constant => |inst| return o.dg.renderValue(writer, inst.ty, inst.value().?),
- .arg => |i| return writer.print("a{d}", .{i}),
- .decl => |decl| return writer.writeAll(mem.span(decl.name)),
+ .local => |i| return w.print("t{d}", .{i}),
+ .local_ref => |i| return w.print("&t{d}", .{i}),
+ .constant => |inst| return o.dg.renderValue(w, inst.ty, inst.value().?),
+ .arg => |i| return w.print("a{d}", .{i}),
+ .decl => |decl| return w.writeAll(mem.span(decl.name)),
}
}
fn renderTypeAndName(
o: *Object,
- writer: Writer,
+ w: anytype,
ty: Type,
name: CValue,
mutability: Mutability,
@@ -97,15 +96,15 @@ pub const Object = struct {
render_ty = render_ty.elemType();
}
- try o.dg.renderType(writer, render_ty);
+ try o.dg.renderType(w, render_ty);
const const_prefix = switch (mutability) {
.Const => "const ",
.Mut => "",
};
- try writer.print(" {s}", .{const_prefix});
- try o.writeCValue(writer, name);
- try writer.writeAll(suffix.items);
+ try w.print(" {s}", .{const_prefix});
+ try o.writeCValue(w, name);
+ try w.writeAll(suffix.items);
}
};
@@ -126,10 +125,13 @@ pub const DeclGen = struct {
fn renderValue(
dg: *DeclGen,
- writer: Writer,
+ writer: anytype,
t: Type,
val: Value,
) error{ OutOfMemory, AnalysisFail }!void {
+ if (val.isUndef()) {
+ return dg.fail(dg.decl.src(), "TODO: C backend: properly handle undefined in all cases (with debug safety?)", .{});
+ }
switch (t.zigTypeTag()) {
.Int => {
if (t.isSignedInt())
@@ -197,13 +199,14 @@ pub const DeclGen = struct {
},
}
},
+ .Bool => return writer.print("{}", .{val.toBool()}),
else => |e| return dg.fail(dg.decl.src(), "TODO: C backend: implement value {s}", .{
@tagName(e),
}),
}
}
- fn renderFunctionSignature(dg: *DeclGen, w: Writer, is_global: bool) !void {
+ fn renderFunctionSignature(dg: *DeclGen, w: anytype, is_global: bool) !void {
if (!is_global) {
try w.writeAll("static ");
}
@@ -227,7 +230,7 @@ pub const DeclGen = struct {
try w.writeByte(')');
}
- fn renderType(dg: *DeclGen, w: Writer, t: Type) error{ OutOfMemory, AnalysisFail }!void {
+ fn renderType(dg: *DeclGen, w: anytype, t: Type) error{ OutOfMemory, AnalysisFail }!void {
switch (t.zigTypeTag()) {
.NoReturn => {
try w.writeAll("zig_noreturn void");
@@ -257,8 +260,8 @@ pub const DeclGen = struct {
.int_signed, .int_unsigned => {
const info = t.intInfo(dg.module.getTarget());
const sign_prefix = switch (info.signedness) {
- .signed => "i",
- .unsigned => "",
+ .signed => "",
+ .unsigned => "u",
};
inline for (.{ 8, 16, 32, 64, 128 }) |nbits| {
if (info.bits <= nbits) {
@@ -290,6 +293,7 @@ pub const DeclGen = struct {
try dg.renderType(w, t.elemType());
try w.writeAll(" *");
},
+ .Null, .Undefined => unreachable, // must be const or comptime
else => |e| return dg.fail(dg.decl.src(), "TODO: C backend: implement type {s}", .{
@tagName(e),
}),
@@ -324,58 +328,20 @@ pub fn genDecl(o: *Object) !void {
try fwd_decl_writer.writeAll(";\n");
const func: *Module.Fn = func_payload.data;
- const instructions = func.body.instructions;
- const writer = o.code.writer();
- try writer.writeAll("\n");
- try o.dg.renderFunctionSignature(writer, is_global);
- if (instructions.len == 0) {
- try writer.writeAll(" {}\n");
- return;
- }
+ try o.indent_writer.insertNewline();
+ try o.dg.renderFunctionSignature(o.writer(), is_global);
- try writer.writeAll(" {");
+ try o.writer().writeByte(' ');
+ try genBody(o, func.body);
- try writer.writeAll("\n");
- for (instructions) |inst| {
- const result_value = switch (inst.tag) {
- .add => try genBinOp(o, inst.castTag(.add).?, " + "),
- .alloc => try genAlloc(o, inst.castTag(.alloc).?),
- .arg => genArg(o),
- .assembly => try genAsm(o, inst.castTag(.assembly).?),
- .block => try genBlock(o, inst.castTag(.block).?),
- .bitcast => try genBitcast(o, inst.castTag(.bitcast).?),
- .breakpoint => try genBreakpoint(o, inst.castTag(.breakpoint).?),
- .call => try genCall(o, inst.castTag(.call).?),
- .cmp_eq => try genBinOp(o, inst.castTag(.cmp_eq).?, " == "),
- .cmp_gt => try genBinOp(o, inst.castTag(.cmp_gt).?, " > "),
- .cmp_gte => try genBinOp(o, inst.castTag(.cmp_gte).?, " >= "),
- .cmp_lt => try genBinOp(o, inst.castTag(.cmp_lt).?, " < "),
- .cmp_lte => try genBinOp(o, inst.castTag(.cmp_lte).?, " <= "),
- .cmp_neq => try genBinOp(o, inst.castTag(.cmp_neq).?, " != "),
- .dbg_stmt => try genDbgStmt(o, inst.castTag(.dbg_stmt).?),
- .intcast => try genIntCast(o, inst.castTag(.intcast).?),
- .load => try genLoad(o, inst.castTag(.load).?),
- .ret => try genRet(o, inst.castTag(.ret).?),
- .retvoid => try genRetVoid(o),
- .store => try genStore(o, inst.castTag(.store).?),
- .sub => try genBinOp(o, inst.castTag(.sub).?, " - "),
- .unreach => try genUnreach(o, inst.castTag(.unreach).?),
- else => |e| return o.dg.fail(o.dg.decl.src(), "TODO: C backend: implement codegen for {}", .{e}),
- };
- switch (result_value) {
- .none => {},
- else => try o.value_map.putNoClobber(inst, result_value),
- }
- }
-
- try writer.writeAll("}\n");
+ try o.indent_writer.insertNewline();
} else if (tv.val.tag() == .extern_fn) {
- const writer = o.code.writer();
+ const writer = o.writer();
try writer.writeAll("ZIG_EXTERN_C ");
try o.dg.renderFunctionSignature(writer, true);
try writer.writeAll(";\n");
} else {
- const writer = o.code.writer();
+ const writer = o.writer();
try writer.writeAll("static ");
// TODO ask the Decl if it is const
@@ -410,11 +376,69 @@ pub fn genHeader(dg: *DeclGen) error{ AnalysisFail, OutOfMemory }!void {
}
}
+pub fn genBody(o: *Object, body: ir.Body) error{ AnalysisFail, OutOfMemory }!void {
+ const writer = o.writer();
+ if (body.instructions.len == 0) {
+ try writer.writeAll("{}");
+ return;
+ }
+
+ try writer.writeAll("{\n");
+ o.indent_writer.pushIndent();
+
+ for (body.instructions) |inst| {
+ const result_value = switch (inst.tag) {
+ .constant => unreachable, // excluded from function bodies
+ .add => try genBinOp(o, inst.castTag(.add).?, " + "),
+ .alloc => try genAlloc(o, inst.castTag(.alloc).?),
+ .arg => genArg(o),
+ .assembly => try genAsm(o, inst.castTag(.assembly).?),
+ .block => try genBlock(o, inst.castTag(.block).?),
+ .bitcast => try genBitcast(o, inst.castTag(.bitcast).?),
+ .breakpoint => try genBreakpoint(o, inst.castTag(.breakpoint).?),
+ .call => try genCall(o, inst.castTag(.call).?),
+ .cmp_eq => try genBinOp(o, inst.castTag(.cmp_eq).?, " == "),
+ .cmp_gt => try genBinOp(o, inst.castTag(.cmp_gt).?, " > "),
+ .cmp_gte => try genBinOp(o, inst.castTag(.cmp_gte).?, " >= "),
+ .cmp_lt => try genBinOp(o, inst.castTag(.cmp_lt).?, " < "),
+ .cmp_lte => try genBinOp(o, inst.castTag(.cmp_lte).?, " <= "),
+ .cmp_neq => try genBinOp(o, inst.castTag(.cmp_neq).?, " != "),
+ .dbg_stmt => try genDbgStmt(o, inst.castTag(.dbg_stmt).?),
+ .intcast => try genIntCast(o, inst.castTag(.intcast).?),
+ .load => try genLoad(o, inst.castTag(.load).?),
+ .ret => try genRet(o, inst.castTag(.ret).?),
+ .retvoid => try genRetVoid(o),
+ .store => try genStore(o, inst.castTag(.store).?),
+ .sub => try genBinOp(o, inst.castTag(.sub).?, " - "),
+ .unreach => try genUnreach(o, inst.castTag(.unreach).?),
+ .loop => try genLoop(o, inst.castTag(.loop).?),
+ .condbr => try genCondBr(o, inst.castTag(.condbr).?),
+ .br => try genBr(o, inst.castTag(.br).?),
+ .br_void => try genBrVoid(o, inst.castTag(.br_void).?.block),
+ .switchbr => try genSwitchBr(o, inst.castTag(.switchbr).?),
+ // bool_and and bool_or are non-short-circuit operations
+ .bool_and => try genBinOp(o, inst.castTag(.bool_and).?, " & "),
+ .bool_or => try genBinOp(o, inst.castTag(.bool_or).?, " | "),
+ .bit_and => try genBinOp(o, inst.castTag(.bit_and).?, " & "),
+ .bit_or => try genBinOp(o, inst.castTag(.bit_or).?, " | "),
+ .xor => try genBinOp(o, inst.castTag(.xor).?, " ^ "),
+ .not => try genUnOp(o, inst.castTag(.not).?, "!"),
+ else => |e| return o.dg.fail(o.dg.decl.src(), "TODO: C backend: implement codegen for {}", .{e}),
+ };
+ switch (result_value) {
+ .none => {},
+ else => try o.value_map.putNoClobber(inst, result_value),
+ }
+ }
+
+ o.indent_writer.popIndent();
+ try writer.writeAll("}");
+}
+
fn genAlloc(o: *Object, alloc: *Inst.NoOp) !CValue {
- const writer = o.code.writer();
+ const writer = o.writer();
// First line: the variable used as data storage.
- try o.indent();
const elem_type = alloc.base.ty.elemType();
const mutability: Mutability = if (alloc.base.ty.isConstPtr()) .Const else .Mut;
const local = try o.allocLocal(elem_type, mutability);
@@ -430,15 +454,13 @@ fn genArg(o: *Object) CValue {
}
fn genRetVoid(o: *Object) !CValue {
- try o.indent();
- try o.code.writer().print("return;\n", .{});
+ try o.writer().print("return;\n", .{});
return CValue.none;
}
fn genLoad(o: *Object, inst: *Inst.UnOp) !CValue {
const operand = try o.resolveInst(inst.operand);
- const writer = o.code.writer();
- try o.indent();
+ const writer = o.writer();
const local = try o.allocLocal(inst.base.ty, .Const);
switch (operand) {
.local_ref => |i| {
@@ -458,8 +480,7 @@ fn genLoad(o: *Object, inst: *Inst.UnOp) !CValue {
fn genRet(o: *Object, inst: *Inst.UnOp) !CValue {
const operand = try o.resolveInst(inst.operand);
- try o.indent();
- const writer = o.code.writer();
+ const writer = o.writer();
try writer.writeAll("return ");
try o.writeCValue(writer, operand);
try writer.writeAll(";\n");
@@ -472,8 +493,7 @@ fn genIntCast(o: *Object, inst: *Inst.UnOp) !CValue {
const from = try o.resolveInst(inst.operand);
- try o.indent();
- const writer = o.code.writer();
+ const writer = o.writer();
const local = try o.allocLocal(inst.base.ty, .Const);
try writer.writeAll(" = (");
try o.dg.renderType(writer, inst.base.ty);
@@ -488,8 +508,7 @@ fn genStore(o: *Object, inst: *Inst.BinOp) !CValue {
const dest_ptr = try o.resolveInst(inst.lhs);
const src_val = try o.resolveInst(inst.rhs);
- try o.indent();
- const writer = o.code.writer();
+ const writer = o.writer();
switch (dest_ptr) {
.local_ref => |i| {
const dest: CValue = .{ .local = i };
@@ -516,8 +535,7 @@ fn genBinOp(o: *Object, inst: *Inst.BinOp, operator: []const u8) !CValue {
const lhs = try o.resolveInst(inst.lhs);
const rhs = try o.resolveInst(inst.rhs);
- try o.indent();
- const writer = o.code.writer();
+ const writer = o.writer();
const local = try o.allocLocal(inst.base.ty, .Const);
try writer.writeAll(" = ");
@@ -529,6 +547,22 @@ fn genBinOp(o: *Object, inst: *Inst.BinOp, operator: []const u8) !CValue {
return local;
}
+fn genUnOp(o: *Object, inst: *Inst.UnOp, operator: []const u8) !CValue {
+ if (inst.base.isUnused())
+ return CValue.none;
+
+ const operand = try o.resolveInst(inst.operand);
+
+ const writer = o.writer();
+ const local = try o.allocLocal(inst.base.ty, .Const);
+
+ try writer.print(" = {s}", .{operator});
+ try o.writeCValue(writer, operand);
+ try writer.writeAll(";\n");
+
+ return local;
+}
+
fn genCall(o: *Object, inst: *Inst.Call) !CValue {
if (inst.func.castTag(.constant)) |func_inst| {
const fn_decl = if (func_inst.val.castTag(.extern_fn)) |extern_fn|
@@ -543,8 +577,7 @@ fn genCall(o: *Object, inst: *Inst.Call) !CValue {
const unused_result = inst.base.isUnused();
var result_local: CValue = .none;
- try o.indent();
- const writer = o.code.writer();
+ const writer = o.writer();
if (unused_result) {
if (ret_ty.hasCodeGenBits()) {
try writer.print("(void)", .{});
@@ -581,14 +614,53 @@ fn genDbgStmt(o: *Object, inst: *Inst.NoOp) !CValue {
}
fn genBlock(o: *Object, inst: *Inst.Block) !CValue {
- return o.dg.fail(o.dg.decl.src(), "TODO: C backend: implement blocks", .{});
+ const block_id: usize = o.next_block_index;
+ o.next_block_index += 1;
+ const writer = o.writer();
+
+ // store the block id in relocs.capacity as it is not used for anything else in the C backend.
+ inst.codegen.relocs.capacity = block_id;
+ const result = if (inst.base.ty.tag() != .void and !inst.base.isUnused()) blk: {
+ // allocate a location for the result
+ const local = try o.allocLocal(inst.base.ty, .Mut);
+ try writer.writeAll(";\n");
+ break :blk local;
+ } else
+ CValue{ .none = {} };
+
+ inst.codegen.mcv = @bitCast(@import("../codegen.zig").AnyMCValue, result);
+ try genBody(o, inst.body);
+ try o.indent_writer.insertNewline();
+ // label must be followed by an expression, add an empty one.
+ try writer.print("zig_block_{d}:;\n", .{block_id});
+ return result;
+}
+
+fn genBr(o: *Object, inst: *Inst.Br) !CValue {
+ const result = @bitCast(CValue, inst.block.codegen.mcv);
+ const writer = o.writer();
+
+ // If result is .none then the value of the block is unused.
+ if (inst.operand.ty.tag() != .void and result != .none) {
+ const operand = try o.resolveInst(inst.operand);
+ try o.writeCValue(writer, result);
+ try writer.writeAll(" = ");
+ try o.writeCValue(writer, operand);
+ try writer.writeAll(";\n");
+ }
+
+ return genBrVoid(o, inst.block);
+}
+
+fn genBrVoid(o: *Object, block: *Inst.Block) !CValue {
+ try o.writer().print("goto zig_block_{d};\n", .{block.codegen.relocs.capacity});
+ return CValue.none;
}
fn genBitcast(o: *Object, inst: *Inst.UnOp) !CValue {
const operand = try o.resolveInst(inst.operand);
- const writer = o.code.writer();
- try o.indent();
+ const writer = o.writer();
if (inst.base.ty.zigTypeTag() == .Pointer and inst.operand.ty.zigTypeTag() == .Pointer) {
const local = try o.allocLocal(inst.base.ty, .Const);
try writer.writeAll(" = (");
@@ -602,7 +674,6 @@ fn genBitcast(o: *Object, inst: *Inst.UnOp) !CValue {
const local = try o.allocLocal(inst.base.ty, .Mut);
try writer.writeAll(";\n");
- try o.indent();
try writer.writeAll("memcpy(&");
try o.writeCValue(writer, local);
@@ -616,14 +687,61 @@ fn genBitcast(o: *Object, inst: *Inst.UnOp) !CValue {
}
fn genBreakpoint(o: *Object, inst: *Inst.NoOp) !CValue {
- try o.indent();
- try o.code.writer().writeAll("zig_breakpoint();\n");
+ try o.writer().writeAll("zig_breakpoint();\n");
return CValue.none;
}
fn genUnreach(o: *Object, inst: *Inst.NoOp) !CValue {
- try o.indent();
- try o.code.writer().writeAll("zig_unreachable();\n");
+ try o.writer().writeAll("zig_unreachable();\n");
+ return CValue.none;
+}
+
+fn genLoop(o: *Object, inst: *Inst.Loop) !CValue {
+ try o.writer().writeAll("while (true) ");
+ try genBody(o, inst.body);
+ try o.indent_writer.insertNewline();
+ return CValue.none;
+}
+
+fn genCondBr(o: *Object, inst: *Inst.CondBr) !CValue {
+ const cond = try o.resolveInst(inst.condition);
+ const writer = o.writer();
+
+ try writer.writeAll("if (");
+ try o.writeCValue(writer, cond);
+ try writer.writeAll(") ");
+ try genBody(o, inst.then_body);
+ try writer.writeAll(" else ");
+ try genBody(o, inst.else_body);
+ try o.indent_writer.insertNewline();
+
+ return CValue.none;
+}
+
+fn genSwitchBr(o: *Object, inst: *Inst.SwitchBr) !CValue {
+ const target = try o.resolveInst(inst.target);
+ const writer = o.writer();
+
+ try writer.writeAll("switch (");
+ try o.writeCValue(writer, target);
+ try writer.writeAll(") {\n");
+ o.indent_writer.pushIndent();
+
+ for (inst.cases) |case| {
+ try writer.writeAll("case ");
+ try o.dg.renderValue(writer, inst.target.ty, case.item);
+ try writer.writeAll(": ");
+ // the case body must be noreturn so we don't need to insert a break
+ try genBody(o, case.body);
+ try o.indent_writer.insertNewline();
+ }
+
+ try writer.writeAll("default: ");
+ try genBody(o, inst.else_body);
+ try o.indent_writer.insertNewline();
+
+ o.indent_writer.popIndent();
+ try writer.writeAll("}\n");
return CValue.none;
}
@@ -631,13 +749,12 @@ fn genAsm(o: *Object, as: *Inst.Assembly) !CValue {
if (as.base.isUnused() and !as.is_volatile)
return CValue.none;
- const writer = o.code.writer();
+ const writer = o.writer();
for (as.inputs) |i, index| {
if (i[0] == '{' and i[i.len - 1] == '}') {
const reg = i[1 .. i.len - 1];
const arg = as.args[index];
const arg_c_value = try o.resolveInst(arg);
- try o.indent();
try writer.writeAll("register ");
try o.dg.renderType(writer, arg.ty);
@@ -648,7 +765,6 @@ fn genAsm(o: *Object, as: *Inst.Assembly) !CValue {
return o.dg.fail(o.dg.decl.src(), "TODO non-explicit inline asm regs", .{});
}
}
- try o.indent();
const volatile_string: []const u8 = if (as.is_volatile) "volatile " else "";
try writer.print("__asm {s}(\"{s}\"", .{ volatile_string, as.asm_source });
if (as.output) |_| {
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index 1edd466d54..df6a58b1e2 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -69,6 +69,8 @@ pub fn targetTriple(allocator: *Allocator, target: std.Target) ![:0]u8 {
.renderscript64 => "renderscript64",
.ve => "ve",
.spu_2 => return error.LLVMBackendDoesNotSupportSPUMarkII,
+ .spirv32 => return error.LLVMBackendDoesNotSupportSPIRV,
+ .spirv64 => return error.LLVMBackendDoesNotSupportSPIRV,
};
// TODO Add a sub-arch for some architectures depending on CPU features.
@@ -109,6 +111,9 @@ pub fn targetTriple(allocator: *Allocator, target: std.Target) ![:0]u8 {
.wasi => "wasi",
.emscripten => "emscripten",
.uefi => "windows",
+ .opencl => return error.LLVMBackendDoesNotSupportOpenCL,
+ .glsl450 => return error.LLVMBackendDoesNotSupportGLSL450,
+ .vulkan => return error.LLVMBackendDoesNotSupportVulkan,
.other => "unknown",
};
diff --git a/src/codegen/spirv.zig b/src/codegen/spirv.zig
new file mode 100644
index 0000000000..5a262de836
--- /dev/null
+++ b/src/codegen/spirv.zig
@@ -0,0 +1,51 @@
+const std = @import("std");
+const Allocator = std.mem.Allocator;
+
+const spec = @import("spirv/spec.zig");
+const Module = @import("../Module.zig");
+const Decl = Module.Decl;
+
+pub fn writeInstruction(code: *std.ArrayList(u32), instr: spec.Opcode, args: []const u32) !void {
+ const word_count = @intCast(u32, args.len + 1);
+ try code.append((word_count << 16) | @enumToInt(instr));
+ try code.appendSlice(args);
+}
+
+pub const SPIRVModule = struct {
+ next_id: u32 = 0,
+ free_id_list: std.ArrayList(u32),
+
+ pub fn init(allocator: *Allocator) SPIRVModule {
+ return .{
+ .free_id_list = std.ArrayList(u32).init(allocator),
+ };
+ }
+
+ pub fn deinit(self: *SPIRVModule) void {
+ self.free_id_list.deinit();
+ }
+
+ pub fn allocId(self: *SPIRVModule) u32 {
+ if (self.free_id_list.popOrNull()) |id| return id;
+
+ defer self.next_id += 1;
+ return self.next_id;
+ }
+
+ pub fn freeId(self: *SPIRVModule, id: u32) void {
+ if (id + 1 == self.next_id) {
+ self.next_id -= 1;
+ } else {
+ // If no more memory to append the id to the free list, just ignore it.
+ self.free_id_list.append(id) catch {};
+ }
+ }
+
+ pub fn idBound(self: *SPIRVModule) u32 {
+ return self.next_id;
+ }
+
+ pub fn genDecl(self: SPIRVModule, id: u32, code: *std.ArrayList(u32), decl: *Decl) !void {
+
+ }
+};
diff --git a/src/codegen/spirv/spec.zig b/src/codegen/spirv/spec.zig
new file mode 100644
index 0000000000..ceb62f1e5d
--- /dev/null
+++ b/src/codegen/spirv/spec.zig
@@ -0,0 +1,1645 @@
+// Copyright (c) 2014-2020 The Khronos Group Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+//
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
+//
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+const Version = @import("builtin").Version;
+pub const version = Version{ .major = 1, .minor = 5, .patch = 4 };
+pub const magic_number: u32 = 0x07230203;
+pub const Opcode = extern enum(u16) {
+ OpNop = 0,
+ OpUndef = 1,
+ OpSourceContinued = 2,
+ OpSource = 3,
+ OpSourceExtension = 4,
+ OpName = 5,
+ OpMemberName = 6,
+ OpString = 7,
+ OpLine = 8,
+ OpExtension = 10,
+ OpExtInstImport = 11,
+ OpExtInst = 12,
+ OpMemoryModel = 14,
+ OpEntryPoint = 15,
+ OpExecutionMode = 16,
+ OpCapability = 17,
+ OpTypeVoid = 19,
+ OpTypeBool = 20,
+ OpTypeInt = 21,
+ OpTypeFloat = 22,
+ OpTypeVector = 23,
+ OpTypeMatrix = 24,
+ OpTypeImage = 25,
+ OpTypeSampler = 26,
+ OpTypeSampledImage = 27,
+ OpTypeArray = 28,
+ OpTypeRuntimeArray = 29,
+ OpTypeStruct = 30,
+ OpTypeOpaque = 31,
+ OpTypePointer = 32,
+ OpTypeFunction = 33,
+ OpTypeEvent = 34,
+ OpTypeDeviceEvent = 35,
+ OpTypeReserveId = 36,
+ OpTypeQueue = 37,
+ OpTypePipe = 38,
+ OpTypeForwardPointer = 39,
+ OpConstantTrue = 41,
+ OpConstantFalse = 42,
+ OpConstant = 43,
+ OpConstantComposite = 44,
+ OpConstantSampler = 45,
+ OpConstantNull = 46,
+ OpSpecConstantTrue = 48,
+ OpSpecConstantFalse = 49,
+ OpSpecConstant = 50,
+ OpSpecConstantComposite = 51,
+ OpSpecConstantOp = 52,
+ OpFunction = 54,
+ OpFunctionParameter = 55,
+ OpFunctionEnd = 56,
+ OpFunctionCall = 57,
+ OpVariable = 59,
+ OpImageTexelPointer = 60,
+ OpLoad = 61,
+ OpStore = 62,
+ OpCopyMemory = 63,
+ OpCopyMemorySized = 64,
+ OpAccessChain = 65,
+ OpInBoundsAccessChain = 66,
+ OpPtrAccessChain = 67,
+ OpArrayLength = 68,
+ OpGenericPtrMemSemantics = 69,
+ OpInBoundsPtrAccessChain = 70,
+ OpDecorate = 71,
+ OpMemberDecorate = 72,
+ OpDecorationGroup = 73,
+ OpGroupDecorate = 74,
+ OpGroupMemberDecorate = 75,
+ OpVectorExtractDynamic = 77,
+ OpVectorInsertDynamic = 78,
+ OpVectorShuffle = 79,
+ OpCompositeConstruct = 80,
+ OpCompositeExtract = 81,
+ OpCompositeInsert = 82,
+ OpCopyObject = 83,
+ OpTranspose = 84,
+ OpSampledImage = 86,
+ OpImageSampleImplicitLod = 87,
+ OpImageSampleExplicitLod = 88,
+ OpImageSampleDrefImplicitLod = 89,
+ OpImageSampleDrefExplicitLod = 90,
+ OpImageSampleProjImplicitLod = 91,
+ OpImageSampleProjExplicitLod = 92,
+ OpImageSampleProjDrefImplicitLod = 93,
+ OpImageSampleProjDrefExplicitLod = 94,
+ OpImageFetch = 95,
+ OpImageGather = 96,
+ OpImageDrefGather = 97,
+ OpImageRead = 98,
+ OpImageWrite = 99,
+ OpImage = 100,
+ OpImageQueryFormat = 101,
+ OpImageQueryOrder = 102,
+ OpImageQuerySizeLod = 103,
+ OpImageQuerySize = 104,
+ OpImageQueryLod = 105,
+ OpImageQueryLevels = 106,
+ OpImageQuerySamples = 107,
+ OpConvertFToU = 109,
+ OpConvertFToS = 110,
+ OpConvertSToF = 111,
+ OpConvertUToF = 112,
+ OpUConvert = 113,
+ OpSConvert = 114,
+ OpFConvert = 115,
+ OpQuantizeToF16 = 116,
+ OpConvertPtrToU = 117,
+ OpSatConvertSToU = 118,
+ OpSatConvertUToS = 119,
+ OpConvertUToPtr = 120,
+ OpPtrCastToGeneric = 121,
+ OpGenericCastToPtr = 122,
+ OpGenericCastToPtrExplicit = 123,
+ OpBitcast = 124,
+ OpSNegate = 126,
+ OpFNegate = 127,
+ OpIAdd = 128,
+ OpFAdd = 129,
+ OpISub = 130,
+ OpFSub = 131,
+ OpIMul = 132,
+ OpFMul = 133,
+ OpUDiv = 134,
+ OpSDiv = 135,
+ OpFDiv = 136,
+ OpUMod = 137,
+ OpSRem = 138,
+ OpSMod = 139,
+ OpFRem = 140,
+ OpFMod = 141,
+ OpVectorTimesScalar = 142,
+ OpMatrixTimesScalar = 143,
+ OpVectorTimesMatrix = 144,
+ OpMatrixTimesVector = 145,
+ OpMatrixTimesMatrix = 146,
+ OpOuterProduct = 147,
+ OpDot = 148,
+ OpIAddCarry = 149,
+ OpISubBorrow = 150,
+ OpUMulExtended = 151,
+ OpSMulExtended = 152,
+ OpAny = 154,
+ OpAll = 155,
+ OpIsNan = 156,
+ OpIsInf = 157,
+ OpIsFinite = 158,
+ OpIsNormal = 159,
+ OpSignBitSet = 160,
+ OpLessOrGreater = 161,
+ OpOrdered = 162,
+ OpUnordered = 163,
+ OpLogicalEqual = 164,
+ OpLogicalNotEqual = 165,
+ OpLogicalOr = 166,
+ OpLogicalAnd = 167,
+ OpLogicalNot = 168,
+ OpSelect = 169,
+ OpIEqual = 170,
+ OpINotEqual = 171,
+ OpUGreaterThan = 172,
+ OpSGreaterThan = 173,
+ OpUGreaterThanEqual = 174,
+ OpSGreaterThanEqual = 175,
+ OpULessThan = 176,
+ OpSLessThan = 177,
+ OpULessThanEqual = 178,
+ OpSLessThanEqual = 179,
+ OpFOrdEqual = 180,
+ OpFUnordEqual = 181,
+ OpFOrdNotEqual = 182,
+ OpFUnordNotEqual = 183,
+ OpFOrdLessThan = 184,
+ OpFUnordLessThan = 185,
+ OpFOrdGreaterThan = 186,
+ OpFUnordGreaterThan = 187,
+ OpFOrdLessThanEqual = 188,
+ OpFUnordLessThanEqual = 189,
+ OpFOrdGreaterThanEqual = 190,
+ OpFUnordGreaterThanEqual = 191,
+ OpShiftRightLogical = 194,
+ OpShiftRightArithmetic = 195,
+ OpShiftLeftLogical = 196,
+ OpBitwiseOr = 197,
+ OpBitwiseXor = 198,
+ OpBitwiseAnd = 199,
+ OpNot = 200,
+ OpBitFieldInsert = 201,
+ OpBitFieldSExtract = 202,
+ OpBitFieldUExtract = 203,
+ OpBitReverse = 204,
+ OpBitCount = 205,
+ OpDPdx = 207,
+ OpDPdy = 208,
+ OpFwidth = 209,
+ OpDPdxFine = 210,
+ OpDPdyFine = 211,
+ OpFwidthFine = 212,
+ OpDPdxCoarse = 213,
+ OpDPdyCoarse = 214,
+ OpFwidthCoarse = 215,
+ OpEmitVertex = 218,
+ OpEndPrimitive = 219,
+ OpEmitStreamVertex = 220,
+ OpEndStreamPrimitive = 221,
+ OpControlBarrier = 224,
+ OpMemoryBarrier = 225,
+ OpAtomicLoad = 227,
+ OpAtomicStore = 228,
+ OpAtomicExchange = 229,
+ OpAtomicCompareExchange = 230,
+ OpAtomicCompareExchangeWeak = 231,
+ OpAtomicIIncrement = 232,
+ OpAtomicIDecrement = 233,
+ OpAtomicIAdd = 234,
+ OpAtomicISub = 235,
+ OpAtomicSMin = 236,
+ OpAtomicUMin = 237,
+ OpAtomicSMax = 238,
+ OpAtomicUMax = 239,
+ OpAtomicAnd = 240,
+ OpAtomicOr = 241,
+ OpAtomicXor = 242,
+ OpPhi = 245,
+ OpLoopMerge = 246,
+ OpSelectionMerge = 247,
+ OpLabel = 248,
+ OpBranch = 249,
+ OpBranchConditional = 250,
+ OpSwitch = 251,
+ OpKill = 252,
+ OpReturn = 253,
+ OpReturnValue = 254,
+ OpUnreachable = 255,
+ OpLifetimeStart = 256,
+ OpLifetimeStop = 257,
+ OpGroupAsyncCopy = 259,
+ OpGroupWaitEvents = 260,
+ OpGroupAll = 261,
+ OpGroupAny = 262,
+ OpGroupBroadcast = 263,
+ OpGroupIAdd = 264,
+ OpGroupFAdd = 265,
+ OpGroupFMin = 266,
+ OpGroupUMin = 267,
+ OpGroupSMin = 268,
+ OpGroupFMax = 269,
+ OpGroupUMax = 270,
+ OpGroupSMax = 271,
+ OpReadPipe = 274,
+ OpWritePipe = 275,
+ OpReservedReadPipe = 276,
+ OpReservedWritePipe = 277,
+ OpReserveReadPipePackets = 278,
+ OpReserveWritePipePackets = 279,
+ OpCommitReadPipe = 280,
+ OpCommitWritePipe = 281,
+ OpIsValidReserveId = 282,
+ OpGetNumPipePackets = 283,
+ OpGetMaxPipePackets = 284,
+ OpGroupReserveReadPipePackets = 285,
+ OpGroupReserveWritePipePackets = 286,
+ OpGroupCommitReadPipe = 287,
+ OpGroupCommitWritePipe = 288,
+ OpEnqueueMarker = 291,
+ OpEnqueueKernel = 292,
+ OpGetKernelNDrangeSubGroupCount = 293,
+ OpGetKernelNDrangeMaxSubGroupSize = 294,
+ OpGetKernelWorkGroupSize = 295,
+ OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+ OpRetainEvent = 297,
+ OpReleaseEvent = 298,
+ OpCreateUserEvent = 299,
+ OpIsValidEvent = 300,
+ OpSetUserEventStatus = 301,
+ OpCaptureEventProfilingInfo = 302,
+ OpGetDefaultQueue = 303,
+ OpBuildNDRange = 304,
+ OpImageSparseSampleImplicitLod = 305,
+ OpImageSparseSampleExplicitLod = 306,
+ OpImageSparseSampleDrefImplicitLod = 307,
+ OpImageSparseSampleDrefExplicitLod = 308,
+ OpImageSparseSampleProjImplicitLod = 309,
+ OpImageSparseSampleProjExplicitLod = 310,
+ OpImageSparseSampleProjDrefImplicitLod = 311,
+ OpImageSparseSampleProjDrefExplicitLod = 312,
+ OpImageSparseFetch = 313,
+ OpImageSparseGather = 314,
+ OpImageSparseDrefGather = 315,
+ OpImageSparseTexelsResident = 316,
+ OpNoLine = 317,
+ OpAtomicFlagTestAndSet = 318,
+ OpAtomicFlagClear = 319,
+ OpImageSparseRead = 320,
+ OpSizeOf = 321,
+ OpTypePipeStorage = 322,
+ OpConstantPipeStorage = 323,
+ OpCreatePipeFromPipeStorage = 324,
+ OpGetKernelLocalSizeForSubgroupCount = 325,
+ OpGetKernelMaxNumSubgroups = 326,
+ OpTypeNamedBarrier = 327,
+ OpNamedBarrierInitialize = 328,
+ OpMemoryNamedBarrier = 329,
+ OpModuleProcessed = 330,
+ OpExecutionModeId = 331,
+ OpDecorateId = 332,
+ OpGroupNonUniformElect = 333,
+ OpGroupNonUniformAll = 334,
+ OpGroupNonUniformAny = 335,
+ OpGroupNonUniformAllEqual = 336,
+ OpGroupNonUniformBroadcast = 337,
+ OpGroupNonUniformBroadcastFirst = 338,
+ OpGroupNonUniformBallot = 339,
+ OpGroupNonUniformInverseBallot = 340,
+ OpGroupNonUniformBallotBitExtract = 341,
+ OpGroupNonUniformBallotBitCount = 342,
+ OpGroupNonUniformBallotFindLSB = 343,
+ OpGroupNonUniformBallotFindMSB = 344,
+ OpGroupNonUniformShuffle = 345,
+ OpGroupNonUniformShuffleXor = 346,
+ OpGroupNonUniformShuffleUp = 347,
+ OpGroupNonUniformShuffleDown = 348,
+ OpGroupNonUniformIAdd = 349,
+ OpGroupNonUniformFAdd = 350,
+ OpGroupNonUniformIMul = 351,
+ OpGroupNonUniformFMul = 352,
+ OpGroupNonUniformSMin = 353,
+ OpGroupNonUniformUMin = 354,
+ OpGroupNonUniformFMin = 355,
+ OpGroupNonUniformSMax = 356,
+ OpGroupNonUniformUMax = 357,
+ OpGroupNonUniformFMax = 358,
+ OpGroupNonUniformBitwiseAnd = 359,
+ OpGroupNonUniformBitwiseOr = 360,
+ OpGroupNonUniformBitwiseXor = 361,
+ OpGroupNonUniformLogicalAnd = 362,
+ OpGroupNonUniformLogicalOr = 363,
+ OpGroupNonUniformLogicalXor = 364,
+ OpGroupNonUniformQuadBroadcast = 365,
+ OpGroupNonUniformQuadSwap = 366,
+ OpCopyLogical = 400,
+ OpPtrEqual = 401,
+ OpPtrNotEqual = 402,
+ OpPtrDiff = 403,
+ OpTerminateInvocation = 4416,
+ OpSubgroupBallotKHR = 4421,
+ OpSubgroupFirstInvocationKHR = 4422,
+ OpSubgroupAllKHR = 4428,
+ OpSubgroupAnyKHR = 4429,
+ OpSubgroupAllEqualKHR = 4430,
+ OpSubgroupReadInvocationKHR = 4432,
+ OpTraceRayKHR = 4445,
+ OpExecuteCallableKHR = 4446,
+ OpConvertUToAccelerationStructureKHR = 4447,
+ OpIgnoreIntersectionKHR = 4448,
+ OpTerminateRayKHR = 4449,
+ OpTypeRayQueryKHR = 4472,
+ OpRayQueryInitializeKHR = 4473,
+ OpRayQueryTerminateKHR = 4474,
+ OpRayQueryGenerateIntersectionKHR = 4475,
+ OpRayQueryConfirmIntersectionKHR = 4476,
+ OpRayQueryProceedKHR = 4477,
+ OpRayQueryGetIntersectionTypeKHR = 4479,
+ OpGroupIAddNonUniformAMD = 5000,
+ OpGroupFAddNonUniformAMD = 5001,
+ OpGroupFMinNonUniformAMD = 5002,
+ OpGroupUMinNonUniformAMD = 5003,
+ OpGroupSMinNonUniformAMD = 5004,
+ OpGroupFMaxNonUniformAMD = 5005,
+ OpGroupUMaxNonUniformAMD = 5006,
+ OpGroupSMaxNonUniformAMD = 5007,
+ OpFragmentMaskFetchAMD = 5011,
+ OpFragmentFetchAMD = 5012,
+ OpReadClockKHR = 5056,
+ OpImageSampleFootprintNV = 5283,
+ OpGroupNonUniformPartitionNV = 5296,
+ OpWritePackedPrimitiveIndices4x8NV = 5299,
+ OpReportIntersectionNV = 5334,
+ OpReportIntersectionKHR = 5334,
+ OpIgnoreIntersectionNV = 5335,
+ OpTerminateRayNV = 5336,
+ OpTraceNV = 5337,
+ OpTypeAccelerationStructureNV = 5341,
+ OpTypeAccelerationStructureKHR = 5341,
+ OpExecuteCallableNV = 5344,
+ OpTypeCooperativeMatrixNV = 5358,
+ OpCooperativeMatrixLoadNV = 5359,
+ OpCooperativeMatrixStoreNV = 5360,
+ OpCooperativeMatrixMulAddNV = 5361,
+ OpCooperativeMatrixLengthNV = 5362,
+ OpBeginInvocationInterlockEXT = 5364,
+ OpEndInvocationInterlockEXT = 5365,
+ OpDemoteToHelperInvocationEXT = 5380,
+ OpIsHelperInvocationEXT = 5381,
+ OpSubgroupShuffleINTEL = 5571,
+ OpSubgroupShuffleDownINTEL = 5572,
+ OpSubgroupShuffleUpINTEL = 5573,
+ OpSubgroupShuffleXorINTEL = 5574,
+ OpSubgroupBlockReadINTEL = 5575,
+ OpSubgroupBlockWriteINTEL = 5576,
+ OpSubgroupImageBlockReadINTEL = 5577,
+ OpSubgroupImageBlockWriteINTEL = 5578,
+ OpSubgroupImageMediaBlockReadINTEL = 5580,
+ OpSubgroupImageMediaBlockWriteINTEL = 5581,
+ OpUCountLeadingZerosINTEL = 5585,
+ OpUCountTrailingZerosINTEL = 5586,
+ OpAbsISubINTEL = 5587,
+ OpAbsUSubINTEL = 5588,
+ OpIAddSatINTEL = 5589,
+ OpUAddSatINTEL = 5590,
+ OpIAverageINTEL = 5591,
+ OpUAverageINTEL = 5592,
+ OpIAverageRoundedINTEL = 5593,
+ OpUAverageRoundedINTEL = 5594,
+ OpISubSatINTEL = 5595,
+ OpUSubSatINTEL = 5596,
+ OpIMul32x16INTEL = 5597,
+ OpUMul32x16INTEL = 5598,
+ OpFunctionPointerINTEL = 5600,
+ OpFunctionPointerCallINTEL = 5601,
+ OpDecorateString = 5632,
+ OpDecorateStringGOOGLE = 5632,
+ OpMemberDecorateString = 5633,
+ OpMemberDecorateStringGOOGLE = 5633,
+ OpVmeImageINTEL = 5699,
+ OpTypeVmeImageINTEL = 5700,
+ OpTypeAvcImePayloadINTEL = 5701,
+ OpTypeAvcRefPayloadINTEL = 5702,
+ OpTypeAvcSicPayloadINTEL = 5703,
+ OpTypeAvcMcePayloadINTEL = 5704,
+ OpTypeAvcMceResultINTEL = 5705,
+ OpTypeAvcImeResultINTEL = 5706,
+ OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
+ OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
+ OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
+ OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
+ OpTypeAvcRefResultINTEL = 5711,
+ OpTypeAvcSicResultINTEL = 5712,
+ OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
+ OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
+ OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
+ OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
+ OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
+ OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
+ OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
+ OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
+ OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
+ OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
+ OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
+ OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
+ OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
+ OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
+ OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
+ OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
+ OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
+ OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
+ OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
+ OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
+ OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
+ OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
+ OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
+ OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
+ OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
+ OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
+ OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
+ OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
+ OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
+ OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
+ OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
+ OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
+ OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
+ OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
+ OpSubgroupAvcImeInitializeINTEL = 5747,
+ OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
+ OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
+ OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
+ OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
+ OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
+ OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
+ OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
+ OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
+ OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
+ OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
+ OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
+ OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
+ OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
+ OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
+ OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
+ OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
+ OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
+ OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
+ OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
+ OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
+ OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
+ OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
+ OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
+ OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
+ OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
+ OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
+ OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
+ OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
+ OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
+ OpSubgroupAvcFmeInitializeINTEL = 5781,
+ OpSubgroupAvcBmeInitializeINTEL = 5782,
+ OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
+ OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
+ OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
+ OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
+ OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
+ OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
+ OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
+ OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
+ OpSubgroupAvcSicInitializeINTEL = 5791,
+ OpSubgroupAvcSicConfigureSkcINTEL = 5792,
+ OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
+ OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
+ OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
+ OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
+ OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
+ OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
+ OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
+ OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
+ OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
+ OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
+ OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
+ OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
+ OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
+ OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
+ OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
+ OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
+ OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
+ OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
+ OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
+ OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
+ OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
+ OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
+ OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
+ OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+ OpLoopControlINTEL = 5887,
+ OpReadPipeBlockingINTEL = 5946,
+ OpWritePipeBlockingINTEL = 5947,
+ OpFPGARegINTEL = 5949,
+ OpRayQueryGetRayTMinKHR = 6016,
+ OpRayQueryGetRayFlagsKHR = 6017,
+ OpRayQueryGetIntersectionTKHR = 6018,
+ OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
+ OpRayQueryGetIntersectionInstanceIdKHR = 6020,
+ OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
+ OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
+ OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
+ OpRayQueryGetIntersectionBarycentricsKHR = 6024,
+ OpRayQueryGetIntersectionFrontFaceKHR = 6025,
+ OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
+ OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
+ OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
+ OpRayQueryGetWorldRayDirectionKHR = 6029,
+ OpRayQueryGetWorldRayOriginKHR = 6030,
+ OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
+ OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
+ OpAtomicFAddEXT = 6035,
+ _,
+};
+pub const ImageOperands = packed struct {
+ Bias: bool align(@alignOf(u32)) = false,
+ Lod: bool = false,
+ Grad: bool = false,
+ ConstOffset: bool = false,
+ Offset: bool = false,
+ ConstOffsets: bool = false,
+ Sample: bool = false,
+ MinLod: bool = false,
+ MakeTexelAvailable: bool = false,
+ MakeTexelVisible: bool = false,
+ NonPrivateTexel: bool = false,
+ VolatileTexel: bool = false,
+ SignExtend: bool = false,
+ ZeroExtend: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+};
+pub const FPFastMathMode = packed struct {
+ NotNaN: bool align(@alignOf(u32)) = false,
+ NotInf: bool = false,
+ NSZ: bool = false,
+ AllowRecip: bool = false,
+ Fast: bool = false,
+ _reserved_bit_5: bool = false,
+ _reserved_bit_6: bool = false,
+ _reserved_bit_7: bool = false,
+ _reserved_bit_8: bool = false,
+ _reserved_bit_9: bool = false,
+ _reserved_bit_10: bool = false,
+ _reserved_bit_11: bool = false,
+ _reserved_bit_12: bool = false,
+ _reserved_bit_13: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+};
+pub const SelectionControl = packed struct {
+ Flatten: bool align(@alignOf(u32)) = false,
+ DontFlatten: bool = false,
+ _reserved_bit_2: bool = false,
+ _reserved_bit_3: bool = false,
+ _reserved_bit_4: bool = false,
+ _reserved_bit_5: bool = false,
+ _reserved_bit_6: bool = false,
+ _reserved_bit_7: bool = false,
+ _reserved_bit_8: bool = false,
+ _reserved_bit_9: bool = false,
+ _reserved_bit_10: bool = false,
+ _reserved_bit_11: bool = false,
+ _reserved_bit_12: bool = false,
+ _reserved_bit_13: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+};
+pub const LoopControl = packed struct {
+ Unroll: bool align(@alignOf(u32)) = false,
+ DontUnroll: bool = false,
+ DependencyInfinite: bool = false,
+ DependencyLength: bool = false,
+ MinIterations: bool = false,
+ MaxIterations: bool = false,
+ IterationMultiple: bool = false,
+ PeelCount: bool = false,
+ PartialCount: bool = false,
+ _reserved_bit_9: bool = false,
+ _reserved_bit_10: bool = false,
+ _reserved_bit_11: bool = false,
+ _reserved_bit_12: bool = false,
+ _reserved_bit_13: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ InitiationIntervalINTEL: bool = false,
+ MaxConcurrencyINTEL: bool = false,
+ DependencyArrayINTEL: bool = false,
+ PipelineEnableINTEL: bool = false,
+ LoopCoalesceINTEL: bool = false,
+ MaxInterleavingINTEL: bool = false,
+ SpeculatedIterationsINTEL: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+};
+pub const FunctionControl = packed struct {
+ Inline: bool align(@alignOf(u32)) = false,
+ DontInline: bool = false,
+ Pure: bool = false,
+ Const: bool = false,
+ _reserved_bit_4: bool = false,
+ _reserved_bit_5: bool = false,
+ _reserved_bit_6: bool = false,
+ _reserved_bit_7: bool = false,
+ _reserved_bit_8: bool = false,
+ _reserved_bit_9: bool = false,
+ _reserved_bit_10: bool = false,
+ _reserved_bit_11: bool = false,
+ _reserved_bit_12: bool = false,
+ _reserved_bit_13: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+};
+pub const MemorySemantics = packed struct {
+ _reserved_bit_0: bool align(@alignOf(u32)) = false,
+ Acquire: bool = false,
+ Release: bool = false,
+ AcquireRelease: bool = false,
+ SequentiallyConsistent: bool = false,
+ _reserved_bit_5: bool = false,
+ UniformMemory: bool = false,
+ SubgroupMemory: bool = false,
+ WorkgroupMemory: bool = false,
+ CrossWorkgroupMemory: bool = false,
+ AtomicCounterMemory: bool = false,
+ ImageMemory: bool = false,
+ OutputMemory: bool = false,
+ MakeAvailable: bool = false,
+ MakeVisible: bool = false,
+ Volatile: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+};
+pub const MemoryAccess = packed struct {
+ Volatile: bool align(@alignOf(u32)) = false,
+ Aligned: bool = false,
+ Nontemporal: bool = false,
+ MakePointerAvailable: bool = false,
+ MakePointerVisible: bool = false,
+ NonPrivatePointer: bool = false,
+ _reserved_bit_6: bool = false,
+ _reserved_bit_7: bool = false,
+ _reserved_bit_8: bool = false,
+ _reserved_bit_9: bool = false,
+ _reserved_bit_10: bool = false,
+ _reserved_bit_11: bool = false,
+ _reserved_bit_12: bool = false,
+ _reserved_bit_13: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+};
+pub const KernelProfilingInfo = packed struct {
+ CmdExecTime: bool align(@alignOf(u32)) = false,
+ _reserved_bit_1: bool = false,
+ _reserved_bit_2: bool = false,
+ _reserved_bit_3: bool = false,
+ _reserved_bit_4: bool = false,
+ _reserved_bit_5: bool = false,
+ _reserved_bit_6: bool = false,
+ _reserved_bit_7: bool = false,
+ _reserved_bit_8: bool = false,
+ _reserved_bit_9: bool = false,
+ _reserved_bit_10: bool = false,
+ _reserved_bit_11: bool = false,
+ _reserved_bit_12: bool = false,
+ _reserved_bit_13: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+};
+pub const RayFlags = packed struct {
+ OpaqueKHR: bool align(@alignOf(u32)) = false,
+ NoOpaqueKHR: bool = false,
+ TerminateOnFirstHitKHR: bool = false,
+ SkipClosestHitShaderKHR: bool = false,
+ CullBackFacingTrianglesKHR: bool = false,
+ CullFrontFacingTrianglesKHR: bool = false,
+ CullOpaqueKHR: bool = false,
+ CullNoOpaqueKHR: bool = false,
+ SkipTrianglesKHR: bool = false,
+ SkipAABBsKHR: bool = false,
+ _reserved_bit_10: bool = false,
+ _reserved_bit_11: bool = false,
+ _reserved_bit_12: bool = false,
+ _reserved_bit_13: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+};
+pub const FragmentShadingRate = packed struct {
+ Vertical2Pixels: bool align(@alignOf(u32)) = false,
+ Vertical4Pixels: bool = false,
+ Horizontal2Pixels: bool = false,
+ Horizontal4Pixels: bool = false,
+ _reserved_bit_4: bool = false,
+ _reserved_bit_5: bool = false,
+ _reserved_bit_6: bool = false,
+ _reserved_bit_7: bool = false,
+ _reserved_bit_8: bool = false,
+ _reserved_bit_9: bool = false,
+ _reserved_bit_10: bool = false,
+ _reserved_bit_11: bool = false,
+ _reserved_bit_12: bool = false,
+ _reserved_bit_13: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+};
+pub const SourceLanguage = extern enum(u32) {
+ Unknown = 0,
+ ESSL = 1,
+ GLSL = 2,
+ OpenCL_C = 3,
+ OpenCL_CPP = 4,
+ HLSL = 5,
+ _,
+};
+pub const ExecutionModel = extern enum(u32) {
+ Vertex = 0,
+ TessellationControl = 1,
+ TessellationEvaluation = 2,
+ Geometry = 3,
+ Fragment = 4,
+ GLCompute = 5,
+ Kernel = 6,
+ TaskNV = 5267,
+ MeshNV = 5268,
+ RayGenerationNV = 5313,
+ RayGenerationKHR = 5313,
+ IntersectionNV = 5314,
+ IntersectionKHR = 5314,
+ AnyHitNV = 5315,
+ AnyHitKHR = 5315,
+ ClosestHitNV = 5316,
+ ClosestHitKHR = 5316,
+ MissNV = 5317,
+ MissKHR = 5317,
+ CallableNV = 5318,
+ CallableKHR = 5318,
+ _,
+};
+pub const AddressingModel = extern enum(u32) {
+ Logical = 0,
+ Physical32 = 1,
+ Physical64 = 2,
+ PhysicalStorageBuffer64 = 5348,
+ PhysicalStorageBuffer64EXT = 5348,
+ _,
+};
+pub const MemoryModel = extern enum(u32) {
+ Simple = 0,
+ GLSL450 = 1,
+ OpenCL = 2,
+ Vulkan = 3,
+ VulkanKHR = 3,
+ _,
+};
+pub const ExecutionMode = extern enum(u32) {
+ Invocations = 0,
+ SpacingEqual = 1,
+ SpacingFractionalEven = 2,
+ SpacingFractionalOdd = 3,
+ VertexOrderCw = 4,
+ VertexOrderCcw = 5,
+ PixelCenterInteger = 6,
+ OriginUpperLeft = 7,
+ OriginLowerLeft = 8,
+ EarlyFragmentTests = 9,
+ PointMode = 10,
+ Xfb = 11,
+ DepthReplacing = 12,
+ DepthGreater = 14,
+ DepthLess = 15,
+ DepthUnchanged = 16,
+ LocalSize = 17,
+ LocalSizeHint = 18,
+ InputPoints = 19,
+ InputLines = 20,
+ InputLinesAdjacency = 21,
+ Triangles = 22,
+ InputTrianglesAdjacency = 23,
+ Quads = 24,
+ Isolines = 25,
+ OutputVertices = 26,
+ OutputPoints = 27,
+ OutputLineStrip = 28,
+ OutputTriangleStrip = 29,
+ VecTypeHint = 30,
+ ContractionOff = 31,
+ Initializer = 33,
+ Finalizer = 34,
+ SubgroupSize = 35,
+ SubgroupsPerWorkgroup = 36,
+ SubgroupsPerWorkgroupId = 37,
+ LocalSizeId = 38,
+ LocalSizeHintId = 39,
+ PostDepthCoverage = 4446,
+ DenormPreserve = 4459,
+ DenormFlushToZero = 4460,
+ SignedZeroInfNanPreserve = 4461,
+ RoundingModeRTE = 4462,
+ RoundingModeRTZ = 4463,
+ StencilRefReplacingEXT = 5027,
+ OutputLinesNV = 5269,
+ OutputPrimitivesNV = 5270,
+ DerivativeGroupQuadsNV = 5289,
+ DerivativeGroupLinearNV = 5290,
+ OutputTrianglesNV = 5298,
+ PixelInterlockOrderedEXT = 5366,
+ PixelInterlockUnorderedEXT = 5367,
+ SampleInterlockOrderedEXT = 5368,
+ SampleInterlockUnorderedEXT = 5369,
+ ShadingRateInterlockOrderedEXT = 5370,
+ ShadingRateInterlockUnorderedEXT = 5371,
+ MaxWorkgroupSizeINTEL = 5893,
+ MaxWorkDimINTEL = 5894,
+ NoGlobalOffsetINTEL = 5895,
+ NumSIMDWorkitemsINTEL = 5896,
+ _,
+};
+pub const StorageClass = extern enum(u32) {
+ UniformConstant = 0,
+ Input = 1,
+ Uniform = 2,
+ Output = 3,
+ Workgroup = 4,
+ CrossWorkgroup = 5,
+ Private = 6,
+ Function = 7,
+ Generic = 8,
+ PushConstant = 9,
+ AtomicCounter = 10,
+ Image = 11,
+ StorageBuffer = 12,
+ CallableDataNV = 5328,
+ CallableDataKHR = 5328,
+ IncomingCallableDataNV = 5329,
+ IncomingCallableDataKHR = 5329,
+ RayPayloadNV = 5338,
+ RayPayloadKHR = 5338,
+ HitAttributeNV = 5339,
+ HitAttributeKHR = 5339,
+ IncomingRayPayloadNV = 5342,
+ IncomingRayPayloadKHR = 5342,
+ ShaderRecordBufferNV = 5343,
+ ShaderRecordBufferKHR = 5343,
+ PhysicalStorageBuffer = 5349,
+ PhysicalStorageBufferEXT = 5349,
+ CodeSectionINTEL = 5605,
+ _,
+};
+pub const Dim = extern enum(u32) {
+ @"1D" = 0,
+ @"2D" = 1,
+ @"3D" = 2,
+ Cube = 3,
+ Rect = 4,
+ Buffer = 5,
+ SubpassData = 6,
+ _,
+};
+pub const SamplerAddressingMode = extern enum(u32) {
+ None = 0,
+ ClampToEdge = 1,
+ Clamp = 2,
+ Repeat = 3,
+ RepeatMirrored = 4,
+ _,
+};
+pub const SamplerFilterMode = extern enum(u32) {
+ Nearest = 0,
+ Linear = 1,
+ _,
+};
+pub const ImageFormat = extern enum(u32) {
+ Unknown = 0,
+ Rgba32f = 1,
+ Rgba16f = 2,
+ R32f = 3,
+ Rgba8 = 4,
+ Rgba8Snorm = 5,
+ Rg32f = 6,
+ Rg16f = 7,
+ R11fG11fB10f = 8,
+ R16f = 9,
+ Rgba16 = 10,
+ Rgb10A2 = 11,
+ Rg16 = 12,
+ Rg8 = 13,
+ R16 = 14,
+ R8 = 15,
+ Rgba16Snorm = 16,
+ Rg16Snorm = 17,
+ Rg8Snorm = 18,
+ R16Snorm = 19,
+ R8Snorm = 20,
+ Rgba32i = 21,
+ Rgba16i = 22,
+ Rgba8i = 23,
+ R32i = 24,
+ Rg32i = 25,
+ Rg16i = 26,
+ Rg8i = 27,
+ R16i = 28,
+ R8i = 29,
+ Rgba32ui = 30,
+ Rgba16ui = 31,
+ Rgba8ui = 32,
+ R32ui = 33,
+ Rgb10a2ui = 34,
+ Rg32ui = 35,
+ Rg16ui = 36,
+ Rg8ui = 37,
+ R16ui = 38,
+ R8ui = 39,
+ R64ui = 40,
+ R64i = 41,
+ _,
+};
+pub const ImageChannelOrder = extern enum(u32) {
+ R = 0,
+ A = 1,
+ RG = 2,
+ RA = 3,
+ RGB = 4,
+ RGBA = 5,
+ BGRA = 6,
+ ARGB = 7,
+ Intensity = 8,
+ Luminance = 9,
+ Rx = 10,
+ RGx = 11,
+ RGBx = 12,
+ Depth = 13,
+ DepthStencil = 14,
+ sRGB = 15,
+ sRGBx = 16,
+ sRGBA = 17,
+ sBGRA = 18,
+ ABGR = 19,
+ _,
+};
+pub const ImageChannelDataType = extern enum(u32) {
+ SnormInt8 = 0,
+ SnormInt16 = 1,
+ UnormInt8 = 2,
+ UnormInt16 = 3,
+ UnormShort565 = 4,
+ UnormShort555 = 5,
+ UnormInt101010 = 6,
+ SignedInt8 = 7,
+ SignedInt16 = 8,
+ SignedInt32 = 9,
+ UnsignedInt8 = 10,
+ UnsignedInt16 = 11,
+ UnsignedInt32 = 12,
+ HalfFloat = 13,
+ Float = 14,
+ UnormInt24 = 15,
+ UnormInt101010_2 = 16,
+ _,
+};
+pub const FPRoundingMode = extern enum(u32) {
+ RTE = 0,
+ RTZ = 1,
+ RTP = 2,
+ RTN = 3,
+ _,
+};
+pub const LinkageType = extern enum(u32) {
+ Export = 0,
+ Import = 1,
+ _,
+};
+pub const AccessQualifier = extern enum(u32) {
+ ReadOnly = 0,
+ WriteOnly = 1,
+ ReadWrite = 2,
+ _,
+};
+pub const FunctionParameterAttribute = extern enum(u32) {
+ Zext = 0,
+ Sext = 1,
+ ByVal = 2,
+ Sret = 3,
+ NoAlias = 4,
+ NoCapture = 5,
+ NoWrite = 6,
+ NoReadWrite = 7,
+ _,
+};
+pub const Decoration = extern enum(u32) {
+ RelaxedPrecision = 0,
+ SpecId = 1,
+ Block = 2,
+ BufferBlock = 3,
+ RowMajor = 4,
+ ColMajor = 5,
+ ArrayStride = 6,
+ MatrixStride = 7,
+ GLSLShared = 8,
+ GLSLPacked = 9,
+ CPacked = 10,
+ BuiltIn = 11,
+ NoPerspective = 13,
+ Flat = 14,
+ Patch = 15,
+ Centroid = 16,
+ Sample = 17,
+ Invariant = 18,
+ Restrict = 19,
+ Aliased = 20,
+ Volatile = 21,
+ Constant = 22,
+ Coherent = 23,
+ NonWritable = 24,
+ NonReadable = 25,
+ Uniform = 26,
+ UniformId = 27,
+ SaturatedConversion = 28,
+ Stream = 29,
+ Location = 30,
+ Component = 31,
+ Index = 32,
+ Binding = 33,
+ DescriptorSet = 34,
+ Offset = 35,
+ XfbBuffer = 36,
+ XfbStride = 37,
+ FuncParamAttr = 38,
+ FPRoundingMode = 39,
+ FPFastMathMode = 40,
+ LinkageAttributes = 41,
+ NoContraction = 42,
+ InputAttachmentIndex = 43,
+ Alignment = 44,
+ MaxByteOffset = 45,
+ AlignmentId = 46,
+ MaxByteOffsetId = 47,
+ NoSignedWrap = 4469,
+ NoUnsignedWrap = 4470,
+ ExplicitInterpAMD = 4999,
+ OverrideCoverageNV = 5248,
+ PassthroughNV = 5250,
+ ViewportRelativeNV = 5252,
+ SecondaryViewportRelativeNV = 5256,
+ PerPrimitiveNV = 5271,
+ PerViewNV = 5272,
+ PerTaskNV = 5273,
+ PerVertexNV = 5285,
+ NonUniform = 5300,
+ NonUniformEXT = 5300,
+ RestrictPointer = 5355,
+ RestrictPointerEXT = 5355,
+ AliasedPointer = 5356,
+ AliasedPointerEXT = 5356,
+ ReferencedIndirectlyINTEL = 5602,
+ CounterBuffer = 5634,
+ HlslCounterBufferGOOGLE = 5634,
+ UserSemantic = 5635,
+ HlslSemanticGOOGLE = 5635,
+ UserTypeGOOGLE = 5636,
+ RegisterINTEL = 5825,
+ MemoryINTEL = 5826,
+ NumbanksINTEL = 5827,
+ BankwidthINTEL = 5828,
+ MaxPrivateCopiesINTEL = 5829,
+ SinglepumpINTEL = 5830,
+ DoublepumpINTEL = 5831,
+ MaxReplicatesINTEL = 5832,
+ SimpleDualPortINTEL = 5833,
+ MergeINTEL = 5834,
+ BankBitsINTEL = 5835,
+ ForcePow2DepthINTEL = 5836,
+ _,
+};
+pub const BuiltIn = extern enum(u32) {
+ Position = 0,
+ PointSize = 1,
+ ClipDistance = 3,
+ CullDistance = 4,
+ VertexId = 5,
+ InstanceId = 6,
+ PrimitiveId = 7,
+ InvocationId = 8,
+ Layer = 9,
+ ViewportIndex = 10,
+ TessLevelOuter = 11,
+ TessLevelInner = 12,
+ TessCoord = 13,
+ PatchVertices = 14,
+ FragCoord = 15,
+ PointCoord = 16,
+ FrontFacing = 17,
+ SampleId = 18,
+ SamplePosition = 19,
+ SampleMask = 20,
+ FragDepth = 22,
+ HelperInvocation = 23,
+ NumWorkgroups = 24,
+ WorkgroupSize = 25,
+ WorkgroupId = 26,
+ LocalInvocationId = 27,
+ GlobalInvocationId = 28,
+ LocalInvocationIndex = 29,
+ WorkDim = 30,
+ GlobalSize = 31,
+ EnqueuedWorkgroupSize = 32,
+ GlobalOffset = 33,
+ GlobalLinearId = 34,
+ SubgroupSize = 36,
+ SubgroupMaxSize = 37,
+ NumSubgroups = 38,
+ NumEnqueuedSubgroups = 39,
+ SubgroupId = 40,
+ SubgroupLocalInvocationId = 41,
+ VertexIndex = 42,
+ InstanceIndex = 43,
+ SubgroupEqMask = 4416,
+ SubgroupGeMask = 4417,
+ SubgroupGtMask = 4418,
+ SubgroupLeMask = 4419,
+ SubgroupLtMask = 4420,
+ SubgroupEqMaskKHR = 4416,
+ SubgroupGeMaskKHR = 4417,
+ SubgroupGtMaskKHR = 4418,
+ SubgroupLeMaskKHR = 4419,
+ SubgroupLtMaskKHR = 4420,
+ BaseVertex = 4424,
+ BaseInstance = 4425,
+ DrawIndex = 4426,
+ PrimitiveShadingRateKHR = 4432,
+ DeviceIndex = 4438,
+ ViewIndex = 4440,
+ ShadingRateKHR = 4444,
+ BaryCoordNoPerspAMD = 4992,
+ BaryCoordNoPerspCentroidAMD = 4993,
+ BaryCoordNoPerspSampleAMD = 4994,
+ BaryCoordSmoothAMD = 4995,
+ BaryCoordSmoothCentroidAMD = 4996,
+ BaryCoordSmoothSampleAMD = 4997,
+ BaryCoordPullModelAMD = 4998,
+ FragStencilRefEXT = 5014,
+ ViewportMaskNV = 5253,
+ SecondaryPositionNV = 5257,
+ SecondaryViewportMaskNV = 5258,
+ PositionPerViewNV = 5261,
+ ViewportMaskPerViewNV = 5262,
+ FullyCoveredEXT = 5264,
+ TaskCountNV = 5274,
+ PrimitiveCountNV = 5275,
+ PrimitiveIndicesNV = 5276,
+ ClipDistancePerViewNV = 5277,
+ CullDistancePerViewNV = 5278,
+ LayerPerViewNV = 5279,
+ MeshViewCountNV = 5280,
+ MeshViewIndicesNV = 5281,
+ BaryCoordNV = 5286,
+ BaryCoordNoPerspNV = 5287,
+ FragSizeEXT = 5292,
+ FragmentSizeNV = 5292,
+ FragInvocationCountEXT = 5293,
+ InvocationsPerPixelNV = 5293,
+ LaunchIdNV = 5319,
+ LaunchIdKHR = 5319,
+ LaunchSizeNV = 5320,
+ LaunchSizeKHR = 5320,
+ WorldRayOriginNV = 5321,
+ WorldRayOriginKHR = 5321,
+ WorldRayDirectionNV = 5322,
+ WorldRayDirectionKHR = 5322,
+ ObjectRayOriginNV = 5323,
+ ObjectRayOriginKHR = 5323,
+ ObjectRayDirectionNV = 5324,
+ ObjectRayDirectionKHR = 5324,
+ RayTminNV = 5325,
+ RayTminKHR = 5325,
+ RayTmaxNV = 5326,
+ RayTmaxKHR = 5326,
+ InstanceCustomIndexNV = 5327,
+ InstanceCustomIndexKHR = 5327,
+ ObjectToWorldNV = 5330,
+ ObjectToWorldKHR = 5330,
+ WorldToObjectNV = 5331,
+ WorldToObjectKHR = 5331,
+ HitTNV = 5332,
+ HitKindNV = 5333,
+ HitKindKHR = 5333,
+ IncomingRayFlagsNV = 5351,
+ IncomingRayFlagsKHR = 5351,
+ RayGeometryIndexKHR = 5352,
+ WarpsPerSMNV = 5374,
+ SMCountNV = 5375,
+ WarpIDNV = 5376,
+ SMIDNV = 5377,
+ _,
+};
+pub const Scope = extern enum(u32) {
+ CrossDevice = 0,
+ Device = 1,
+ Workgroup = 2,
+ Subgroup = 3,
+ Invocation = 4,
+ QueueFamily = 5,
+ QueueFamilyKHR = 5,
+ ShaderCallKHR = 6,
+ _,
+};
+pub const GroupOperation = extern enum(u32) {
+ Reduce = 0,
+ InclusiveScan = 1,
+ ExclusiveScan = 2,
+ ClusteredReduce = 3,
+ PartitionedReduceNV = 6,
+ PartitionedInclusiveScanNV = 7,
+ PartitionedExclusiveScanNV = 8,
+ _,
+};
+pub const KernelEnqueueFlags = extern enum(u32) {
+ NoWait = 0,
+ WaitKernel = 1,
+ WaitWorkGroup = 2,
+ _,
+};
+pub const Capability = extern enum(u32) {
+ Matrix = 0,
+ Shader = 1,
+ Geometry = 2,
+ Tessellation = 3,
+ Addresses = 4,
+ Linkage = 5,
+ Kernel = 6,
+ Vector16 = 7,
+ Float16Buffer = 8,
+ Float16 = 9,
+ Float64 = 10,
+ Int64 = 11,
+ Int64Atomics = 12,
+ ImageBasic = 13,
+ ImageReadWrite = 14,
+ ImageMipmap = 15,
+ Pipes = 17,
+ Groups = 18,
+ DeviceEnqueue = 19,
+ LiteralSampler = 20,
+ AtomicStorage = 21,
+ Int16 = 22,
+ TessellationPointSize = 23,
+ GeometryPointSize = 24,
+ ImageGatherExtended = 25,
+ StorageImageMultisample = 27,
+ UniformBufferArrayDynamicIndexing = 28,
+ SampledImageArrayDynamicIndexing = 29,
+ StorageBufferArrayDynamicIndexing = 30,
+ StorageImageArrayDynamicIndexing = 31,
+ ClipDistance = 32,
+ CullDistance = 33,
+ ImageCubeArray = 34,
+ SampleRateShading = 35,
+ ImageRect = 36,
+ SampledRect = 37,
+ GenericPointer = 38,
+ Int8 = 39,
+ InputAttachment = 40,
+ SparseResidency = 41,
+ MinLod = 42,
+ Sampled1D = 43,
+ Image1D = 44,
+ SampledCubeArray = 45,
+ SampledBuffer = 46,
+ ImageBuffer = 47,
+ ImageMSArray = 48,
+ StorageImageExtendedFormats = 49,
+ ImageQuery = 50,
+ DerivativeControl = 51,
+ InterpolationFunction = 52,
+ TransformFeedback = 53,
+ GeometryStreams = 54,
+ StorageImageReadWithoutFormat = 55,
+ StorageImageWriteWithoutFormat = 56,
+ MultiViewport = 57,
+ SubgroupDispatch = 58,
+ NamedBarrier = 59,
+ PipeStorage = 60,
+ GroupNonUniform = 61,
+ GroupNonUniformVote = 62,
+ GroupNonUniformArithmetic = 63,
+ GroupNonUniformBallot = 64,
+ GroupNonUniformShuffle = 65,
+ GroupNonUniformShuffleRelative = 66,
+ GroupNonUniformClustered = 67,
+ GroupNonUniformQuad = 68,
+ ShaderLayer = 69,
+ ShaderViewportIndex = 70,
+ FragmentShadingRateKHR = 4422,
+ SubgroupBallotKHR = 4423,
+ DrawParameters = 4427,
+ SubgroupVoteKHR = 4431,
+ StorageBuffer16BitAccess = 4433,
+ StorageUniformBufferBlock16 = 4433,
+ UniformAndStorageBuffer16BitAccess = 4434,
+ StorageUniform16 = 4434,
+ StoragePushConstant16 = 4435,
+ StorageInputOutput16 = 4436,
+ DeviceGroup = 4437,
+ MultiView = 4439,
+ VariablePointersStorageBuffer = 4441,
+ VariablePointers = 4442,
+ AtomicStorageOps = 4445,
+ SampleMaskPostDepthCoverage = 4447,
+ StorageBuffer8BitAccess = 4448,
+ UniformAndStorageBuffer8BitAccess = 4449,
+ StoragePushConstant8 = 4450,
+ DenormPreserve = 4464,
+ DenormFlushToZero = 4465,
+ SignedZeroInfNanPreserve = 4466,
+ RoundingModeRTE = 4467,
+ RoundingModeRTZ = 4468,
+ RayQueryProvisionalKHR = 4471,
+ RayQueryKHR = 4472,
+ RayTraversalPrimitiveCullingKHR = 4478,
+ RayTracingKHR = 4479,
+ Float16ImageAMD = 5008,
+ ImageGatherBiasLodAMD = 5009,
+ FragmentMaskAMD = 5010,
+ StencilExportEXT = 5013,
+ ImageReadWriteLodAMD = 5015,
+ Int64ImageEXT = 5016,
+ ShaderClockKHR = 5055,
+ SampleMaskOverrideCoverageNV = 5249,
+ GeometryShaderPassthroughNV = 5251,
+ ShaderViewportIndexLayerEXT = 5254,
+ ShaderViewportIndexLayerNV = 5254,
+ ShaderViewportMaskNV = 5255,
+ ShaderStereoViewNV = 5259,
+ PerViewAttributesNV = 5260,
+ FragmentFullyCoveredEXT = 5265,
+ MeshShadingNV = 5266,
+ ImageFootprintNV = 5282,
+ FragmentBarycentricNV = 5284,
+ ComputeDerivativeGroupQuadsNV = 5288,
+ FragmentDensityEXT = 5291,
+ ShadingRateNV = 5291,
+ GroupNonUniformPartitionedNV = 5297,
+ ShaderNonUniform = 5301,
+ ShaderNonUniformEXT = 5301,
+ RuntimeDescriptorArray = 5302,
+ RuntimeDescriptorArrayEXT = 5302,
+ InputAttachmentArrayDynamicIndexing = 5303,
+ InputAttachmentArrayDynamicIndexingEXT = 5303,
+ UniformTexelBufferArrayDynamicIndexing = 5304,
+ UniformTexelBufferArrayDynamicIndexingEXT = 5304,
+ StorageTexelBufferArrayDynamicIndexing = 5305,
+ StorageTexelBufferArrayDynamicIndexingEXT = 5305,
+ UniformBufferArrayNonUniformIndexing = 5306,
+ UniformBufferArrayNonUniformIndexingEXT = 5306,
+ SampledImageArrayNonUniformIndexing = 5307,
+ SampledImageArrayNonUniformIndexingEXT = 5307,
+ StorageBufferArrayNonUniformIndexing = 5308,
+ StorageBufferArrayNonUniformIndexingEXT = 5308,
+ StorageImageArrayNonUniformIndexing = 5309,
+ StorageImageArrayNonUniformIndexingEXT = 5309,
+ InputAttachmentArrayNonUniformIndexing = 5310,
+ InputAttachmentArrayNonUniformIndexingEXT = 5310,
+ UniformTexelBufferArrayNonUniformIndexing = 5311,
+ UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
+ StorageTexelBufferArrayNonUniformIndexing = 5312,
+ StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
+ RayTracingNV = 5340,
+ VulkanMemoryModel = 5345,
+ VulkanMemoryModelKHR = 5345,
+ VulkanMemoryModelDeviceScope = 5346,
+ VulkanMemoryModelDeviceScopeKHR = 5346,
+ PhysicalStorageBufferAddresses = 5347,
+ PhysicalStorageBufferAddressesEXT = 5347,
+ ComputeDerivativeGroupLinearNV = 5350,
+ RayTracingProvisionalKHR = 5353,
+ CooperativeMatrixNV = 5357,
+ FragmentShaderSampleInterlockEXT = 5363,
+ FragmentShaderShadingRateInterlockEXT = 5372,
+ ShaderSMBuiltinsNV = 5373,
+ FragmentShaderPixelInterlockEXT = 5378,
+ DemoteToHelperInvocationEXT = 5379,
+ SubgroupShuffleINTEL = 5568,
+ SubgroupBufferBlockIOINTEL = 5569,
+ SubgroupImageBlockIOINTEL = 5570,
+ SubgroupImageMediaBlockIOINTEL = 5579,
+ IntegerFunctions2INTEL = 5584,
+ FunctionPointersINTEL = 5603,
+ IndirectReferencesINTEL = 5604,
+ SubgroupAvcMotionEstimationINTEL = 5696,
+ SubgroupAvcMotionEstimationIntraINTEL = 5697,
+ SubgroupAvcMotionEstimationChromaINTEL = 5698,
+ FPGAMemoryAttributesINTEL = 5824,
+ UnstructuredLoopControlsINTEL = 5886,
+ FPGALoopControlsINTEL = 5888,
+ KernelAttributesINTEL = 5892,
+ FPGAKernelAttributesINTEL = 5897,
+ BlockingPipesINTEL = 5945,
+ FPGARegINTEL = 5948,
+ AtomicFloat32AddEXT = 6033,
+ AtomicFloat64AddEXT = 6034,
+ _,
+};
+pub const RayQueryIntersection = extern enum(u32) {
+ RayQueryCandidateIntersectionKHR = 0,
+ RayQueryCommittedIntersectionKHR = 1,
+ _,
+};
+pub const RayQueryCommittedIntersectionType = extern enum(u32) {
+ RayQueryCommittedIntersectionNoneKHR = 0,
+ RayQueryCommittedIntersectionTriangleKHR = 1,
+ RayQueryCommittedIntersectionGeneratedKHR = 2,
+ _,
+};
+pub const RayQueryCandidateIntersectionType = extern enum(u32) {
+ RayQueryCandidateIntersectionTriangleKHR = 0,
+ RayQueryCandidateIntersectionAABBKHR = 1,
+ _,
+};
diff --git a/src/codegen/wasm.zig b/src/codegen/wasm.zig
index cbb2a42189..abc411b551 100644
--- a/src/codegen/wasm.zig
+++ b/src/codegen/wasm.zig
@@ -4,6 +4,7 @@ const ArrayList = std.ArrayList;
const assert = std.debug.assert;
const leb = std.leb;
const mem = std.mem;
+const wasm = std.wasm;
const Module = @import("../Module.zig");
const Decl = Module.Decl;
@@ -12,6 +13,7 @@ const Inst = ir.Inst;
const Type = @import("../type.zig").Type;
const Value = @import("../value.zig").Value;
const Compilation = @import("../Compilation.zig");
+const AnyMCValue = @import("../codegen.zig").AnyMCValue;
/// Wasm Value, created when generating an instruction
const WValue = union(enum) {
@@ -20,23 +22,14 @@ const WValue = union(enum) {
local: u32,
/// Instruction holding a constant `Value`
constant: *Inst,
- /// Block label
+ /// Offset position in the list of bytecode instructions
+ code_offset: usize,
+ /// The label of the block, used by breaks to find its relative distance
block_idx: u32,
};
/// Hashmap to store generated `WValue` for each `Inst`
-pub const ValueTable = std.AutoHashMap(*Inst, WValue);
-
-/// Using a given `Type`, returns the corresponding wasm value type
-fn genValtype(ty: Type) ?u8 {
- return switch (ty.tag()) {
- .f32 => 0x7D,
- .f64 => 0x7C,
- .u32, .i32 => 0x7F,
- .u64, .i64 => 0x7E,
- else => null,
- };
-}
+pub const ValueTable = std.AutoHashMapUnmanaged(*Inst, WValue);
/// Code represents the `Code` section of wasm that
/// belongs to a function
@@ -58,13 +51,25 @@ pub const Context = struct {
local_index: u32 = 0,
/// If codegen fails, an error messages will be allocated and saved in `err_msg`
err_msg: *Module.ErrorMsg,
+ /// Current block depth. Used to calculate the relative difference between a break
+ /// and block
+ block_depth: u32 = 0,
+ /// List of all locals' types generated throughout this declaration
+ /// used to emit locals count at start of 'code' section.
+ locals: std.ArrayListUnmanaged(u8),
const InnerError = error{
OutOfMemory,
CodegenFail,
};
- /// Sets `err_msg` on `Context` and returns `error.CodegenFail` which is caught in link/Wasm.zig
+ pub fn deinit(self: *Context) void {
+ self.values.deinit(self.gpa);
+ self.locals.deinit(self.gpa);
+ self.* = undefined;
+ }
+
+ /// Sets `err_msg` on `Context` and returns `error.CodegemFail` which is caught in link/Wasm.zig
fn fail(self: *Context, src: usize, comptime fmt: []const u8, args: anytype) InnerError {
self.err_msg = try Module.ErrorMsg.create(self.gpa, .{
.file_scope = self.decl.getFileScope(),
@@ -85,13 +90,35 @@ pub const Context = struct {
return self.values.get(inst).?; // Instruction does not dominate all uses!
}
+ /// Using a given `Type`, returns the corresponding wasm value type
+ fn genValtype(self: *Context, src: usize, ty: Type) InnerError!u8 {
+ return switch (ty.tag()) {
+ .f32 => wasm.valtype(.f32),
+ .f64 => wasm.valtype(.f64),
+ .u32, .i32 => wasm.valtype(.i32),
+ .u64, .i64 => wasm.valtype(.i64),
+ else => self.fail(src, "TODO - Wasm genValtype for type '{s}'", .{ty.tag()}),
+ };
+ }
+
+ /// Using a given `Type`, returns the corresponding wasm value type
+ /// Differently from `genValtype` this also allows `void` to create a block
+ /// with no return type
+ fn genBlockType(self: *Context, src: usize, ty: Type) InnerError!u8 {
+ return switch (ty.tag()) {
+ .void, .noreturn => wasm.block_empty,
+ else => self.genValtype(src, ty),
+ };
+ }
+
/// Writes the bytecode depending on the given `WValue` in `val`
fn emitWValue(self: *Context, val: WValue) InnerError!void {
const writer = self.code.writer();
switch (val) {
- .none, .block_idx => {},
+ .block_idx => unreachable,
+ .none, .code_offset => {},
.local => |idx| {
- try writer.writeByte(0x20); // local.get
+ try writer.writeByte(wasm.opcode(.local_get));
try leb.writeULEB128(writer, idx);
},
.constant => |inst| try self.emitConstant(inst.castTag(.constant).?), // creates a new constant onto the stack
@@ -102,8 +129,7 @@ pub const Context = struct {
const ty = self.decl.typed_value.most_recent.typed_value.ty;
const writer = self.func_type_data.writer();
- // functype magic
- try writer.writeByte(0x60);
+ try writer.writeByte(wasm.function_type);
// param types
try leb.writeULEB128(writer, @intCast(u32, ty.fnParamLen()));
@@ -112,8 +138,8 @@ pub const Context = struct {
defer self.gpa.free(params);
ty.fnParamTypes(params);
for (params) |param_type| {
- const val_type = genValtype(param_type) orelse
- return self.fail(self.decl.src(), "TODO: Wasm codegen - arg type value for type '{s}'", .{param_type.tag()});
+ // Can we maybe get the source index of each param?
+ const val_type = try self.genValtype(self.decl.src(), param_type);
try writer.writeByte(val_type);
}
}
@@ -124,8 +150,8 @@ pub const Context = struct {
.void, .noreturn => try leb.writeULEB128(writer, @as(u32, 0)),
else => |ret_type| {
try leb.writeULEB128(writer, @as(u32, 1));
- const val_type = genValtype(return_type) orelse
- return self.fail(self.decl.src(), "TODO: Wasm codegen - return type value for type '{s}'", .{ret_type});
+ // Can we maybe get the source index of the return type?
+ const val_type = try self.genValtype(self.decl.src(), return_type);
try writer.writeByte(val_type);
},
}
@@ -137,40 +163,33 @@ pub const Context = struct {
try self.genFunctype();
const writer = self.code.writer();
- // Reserve space to write the size after generating the code
- try self.code.resize(5);
+ // Reserve space to write the size after generating the code as well as space for locals count
+ try self.code.resize(10);
// Write instructions
// TODO: check for and handle death of instructions
const tv = self.decl.typed_value.most_recent.typed_value;
const mod_fn = tv.val.castTag(.function).?.data;
-
- var locals = std.ArrayList(u8).init(self.gpa);
- defer locals.deinit();
-
- for (mod_fn.body.instructions) |inst| {
- if (inst.tag != .alloc) continue;
-
- const alloc: *Inst.NoOp = inst.castTag(.alloc).?;
- const elem_type = alloc.base.ty.elemType();
-
- const wasm_type = genValtype(elem_type) orelse
- return self.fail(inst.src, "TODO: Wasm codegen - valtype for type '{s}'", .{elem_type.tag()});
-
- try locals.append(wasm_type);
- }
-
- try leb.writeULEB128(writer, @intCast(u32, locals.items.len));
-
- // emit the actual locals amount
- for (locals.items) |local| {
- try leb.writeULEB128(writer, @as(u32, 1));
- try leb.writeULEB128(writer, local); // valtype
- }
-
try self.genBody(mod_fn.body);
- try writer.writeByte(0x0B); // end
+ // finally, write our local types at the 'offset' position
+ {
+ leb.writeUnsignedFixed(5, self.code.items[5..10], @intCast(u32, self.locals.items.len));
+
+ // offset into 'code' section where we will put our locals types
+ var local_offset: usize = 10;
+
+ // emit the actual locals amount
+ for (self.locals.items) |local| {
+ var buf: [6]u8 = undefined;
+ leb.writeUnsignedFixed(5, buf[0..5], @as(u32, 1));
+ buf[5] = local;
+ try self.code.insertSlice(local_offset, &buf);
+ local_offset += 6;
+ }
+ }
+
+ try writer.writeByte(wasm.opcode(.end));
// Fill in the size of the generated code to the reserved space at the
// beginning of the buffer.
@@ -183,10 +202,20 @@ pub const Context = struct {
.add => self.genAdd(inst.castTag(.add).?),
.alloc => self.genAlloc(inst.castTag(.alloc).?),
.arg => self.genArg(inst.castTag(.arg).?),
+ .block => self.genBlock(inst.castTag(.block).?),
+ .br => self.genBr(inst.castTag(.br).?),
.call => self.genCall(inst.castTag(.call).?),
+ .cmp_eq => self.genCmp(inst.castTag(.cmp_eq).?, .eq),
+ .cmp_gte => self.genCmp(inst.castTag(.cmp_gte).?, .gte),
+ .cmp_gt => self.genCmp(inst.castTag(.cmp_gt).?, .gt),
+ .cmp_lte => self.genCmp(inst.castTag(.cmp_lte).?, .lte),
+ .cmp_lt => self.genCmp(inst.castTag(.cmp_lt).?, .lt),
+ .cmp_neq => self.genCmp(inst.castTag(.cmp_neq).?, .neq),
+ .condbr => self.genCondBr(inst.castTag(.condbr).?),
.constant => unreachable,
.dbg_stmt => WValue.none,
.load => self.genLoad(inst.castTag(.load).?),
+ .loop => self.genLoop(inst.castTag(.loop).?),
.ret => self.genRet(inst.castTag(.ret).?),
.retvoid => WValue.none,
.store => self.genStore(inst.castTag(.store).?),
@@ -197,7 +226,7 @@ pub const Context = struct {
fn genBody(self: *Context, body: ir.Body) InnerError!void {
for (body.instructions) |inst| {
const result = try self.genInst(inst);
- try self.values.putNoClobber(inst, result);
+ try self.values.putNoClobber(self.gpa, inst, result);
}
}
@@ -205,7 +234,7 @@ pub const Context = struct {
// TODO: Implement tail calls
const operand = self.resolveInst(inst.operand);
try self.emitWValue(operand);
- return WValue.none;
+ return .none;
}
fn genCall(self: *Context, inst: *Inst.Call) InnerError!WValue {
@@ -219,7 +248,7 @@ pub const Context = struct {
try self.emitWValue(arg_val);
}
- try self.code.append(0x10); // call
+ try self.code.append(wasm.opcode(.call));
// The function index immediate argument will be filled in using this data
// in link.Wasm.flush().
@@ -228,10 +257,14 @@ pub const Context = struct {
.decl = target,
});
- return WValue.none;
+ return .none;
}
fn genAlloc(self: *Context, inst: *Inst.NoOp) InnerError!WValue {
+ const elem_type = inst.base.ty.elemType();
+ const valtype = try self.genValtype(inst.base.src, elem_type);
+ try self.locals.append(self.gpa, valtype);
+
defer self.local_index += 1;
return WValue{ .local = self.local_index };
}
@@ -243,15 +276,13 @@ pub const Context = struct {
const rhs = self.resolveInst(inst.rhs);
try self.emitWValue(rhs);
- try writer.writeByte(0x21); // local.set
+ try writer.writeByte(wasm.opcode(.local_set));
try leb.writeULEB128(writer, lhs.local);
- return WValue.none;
+ return .none;
}
fn genLoad(self: *Context, inst: *Inst.UnOp) InnerError!WValue {
- const operand = self.resolveInst(inst.operand);
- try self.emitWValue(operand);
- return WValue.none;
+ return self.resolveInst(inst.operand);
}
fn genArg(self: *Context, inst: *Inst.Arg) InnerError!WValue {
@@ -267,44 +298,44 @@ pub const Context = struct {
try self.emitWValue(lhs);
try self.emitWValue(rhs);
- const opcode: u8 = switch (inst.base.ty.tag()) {
- .u32, .i32 => 0x6A, //i32.add
- .u64, .i64 => 0x7C, //i64.add
- .f32 => 0x92, //f32.add
- .f64 => 0xA0, //f64.add
+ const opcode: wasm.Opcode = switch (inst.base.ty.tag()) {
+ .u32, .i32 => .i32_add,
+ .u64, .i64 => .i64_add,
+ .f32 => .f32_add,
+ .f64 => .f64_add,
else => return self.fail(inst.base.src, "TODO - Implement wasm genAdd for type '{s}'", .{inst.base.ty.tag()}),
};
- try self.code.append(opcode);
- return WValue.none;
+ try self.code.append(wasm.opcode(opcode));
+ return .none;
}
fn emitConstant(self: *Context, inst: *Inst.Constant) InnerError!void {
const writer = self.code.writer();
switch (inst.base.ty.tag()) {
.u32 => {
- try writer.writeByte(0x41); // i32.const
+ try writer.writeByte(wasm.opcode(.i32_const));
try leb.writeILEB128(writer, inst.val.toUnsignedInt());
},
.i32 => {
- try writer.writeByte(0x41); // i32.const
+ try writer.writeByte(wasm.opcode(.i32_const));
try leb.writeILEB128(writer, inst.val.toSignedInt());
},
.u64 => {
- try writer.writeByte(0x42); // i64.const
+ try writer.writeByte(wasm.opcode(.i64_const));
try leb.writeILEB128(writer, inst.val.toUnsignedInt());
},
.i64 => {
- try writer.writeByte(0x42); // i64.const
+ try writer.writeByte(wasm.opcode(.i64_const));
try leb.writeILEB128(writer, inst.val.toSignedInt());
},
.f32 => {
- try writer.writeByte(0x43); // f32.const
+ try writer.writeByte(wasm.opcode(.f32_const));
// TODO: enforce LE byte order
try writer.writeAll(mem.asBytes(&inst.val.toFloat(f32)));
},
.f64 => {
- try writer.writeByte(0x44); // f64.const
+ try writer.writeByte(wasm.opcode(.f64_const));
// TODO: enforce LE byte order
try writer.writeAll(mem.asBytes(&inst.val.toFloat(f64)));
},
@@ -312,4 +343,172 @@ pub const Context = struct {
else => |ty| return self.fail(inst.base.src, "Wasm TODO: emitConstant for type {s}", .{ty}),
}
}
+
+ fn genBlock(self: *Context, block: *Inst.Block) InnerError!WValue {
+ const block_ty = try self.genBlockType(block.base.src, block.base.ty);
+
+ try self.startBlock(.block, block_ty, null);
+ block.codegen = .{
+ // we don't use relocs, so using `relocs` is illegal behaviour.
+ .relocs = undefined,
+ // Here we set the current block idx, so breaks know the depth to jump
+ // to when breaking out.
+ .mcv = @bitCast(AnyMCValue, WValue{ .block_idx = self.block_depth }),
+ };
+ try self.genBody(block.body);
+ try self.endBlock();
+
+ return .none;
+ }
+
+ /// appends a new wasm block to the code section and increases the `block_depth` by 1
+ fn startBlock(self: *Context, block_type: wasm.Opcode, valtype: u8, with_offset: ?usize) !void {
+ self.block_depth += 1;
+ if (with_offset) |offset| {
+ try self.code.insert(offset, wasm.opcode(block_type));
+ try self.code.insert(offset + 1, valtype);
+ } else {
+ try self.code.append(wasm.opcode(block_type));
+ try self.code.append(valtype);
+ }
+ }
+
+ /// Ends the current wasm block and decreases the `block_depth` by 1
+ fn endBlock(self: *Context) !void {
+ try self.code.append(wasm.opcode(.end));
+ self.block_depth -= 1;
+ }
+
+ fn genLoop(self: *Context, loop: *Inst.Loop) InnerError!WValue {
+ const loop_ty = try self.genBlockType(loop.base.src, loop.base.ty);
+
+ try self.startBlock(.loop, loop_ty, null);
+ try self.genBody(loop.body);
+
+ // breaking to the index of a loop block will continue the loop instead
+ try self.code.append(wasm.opcode(.br));
+ try leb.writeULEB128(self.code.writer(), @as(u32, 0));
+
+ try self.endBlock();
+
+ return .none;
+ }
+
+ fn genCondBr(self: *Context, condbr: *Inst.CondBr) InnerError!WValue {
+ const condition = self.resolveInst(condbr.condition);
+ const writer = self.code.writer();
+
+ // TODO: Handle death instructions for then and else body
+
+ // insert blocks at the position of `offset` so
+ // the condition can jump to it
+ const offset = condition.code_offset;
+ const block_ty = try self.genBlockType(condbr.base.src, condbr.base.ty);
+ try self.startBlock(.block, block_ty, offset);
+
+ // we inserted the block in front of the condition
+ // so now check if condition matches. If not, break outside this block
+ // and continue with the then codepath
+ try writer.writeByte(wasm.opcode(.br_if));
+ try leb.writeULEB128(writer, @as(u32, 0));
+
+ try self.genBody(condbr.else_body);
+ try self.endBlock();
+
+ // Outer block that matches the condition
+ try self.genBody(condbr.then_body);
+
+ return .none;
+ }
+
+ fn genCmp(self: *Context, inst: *Inst.BinOp, op: std.math.CompareOperator) InnerError!WValue {
+ const ty = inst.lhs.ty.tag();
+
+ // save offset, so potential conditions can insert blocks in front of
+ // the comparison that we can later jump back to
+ const offset = self.code.items.len;
+
+ const lhs = self.resolveInst(inst.lhs);
+ const rhs = self.resolveInst(inst.rhs);
+
+ try self.emitWValue(lhs);
+ try self.emitWValue(rhs);
+
+ const opcode_maybe: ?wasm.Opcode = switch (op) {
+ .lt => @as(?wasm.Opcode, switch (ty) {
+ .i32 => .i32_lt_s,
+ .u32 => .i32_lt_u,
+ .i64 => .i64_lt_s,
+ .u64 => .i64_lt_u,
+ .f32 => .f32_lt,
+ .f64 => .f64_lt,
+ else => null,
+ }),
+ .lte => @as(?wasm.Opcode, switch (ty) {
+ .i32 => .i32_le_s,
+ .u32 => .i32_le_u,
+ .i64 => .i64_le_s,
+ .u64 => .i64_le_u,
+ .f32 => .f32_le,
+ .f64 => .f64_le,
+ else => null,
+ }),
+ .eq => @as(?wasm.Opcode, switch (ty) {
+ .i32, .u32 => .i32_eq,
+ .i64, .u64 => .i64_eq,
+ .f32 => .f32_eq,
+ .f64 => .f64_eq,
+ else => null,
+ }),
+ .gte => @as(?wasm.Opcode, switch (ty) {
+ .i32 => .i32_ge_s,
+ .u32 => .i32_ge_u,
+ .i64 => .i64_ge_s,
+ .u64 => .i64_ge_u,
+ .f32 => .f32_ge,
+ .f64 => .f64_ge,
+ else => null,
+ }),
+ .gt => @as(?wasm.Opcode, switch (ty) {
+ .i32 => .i32_gt_s,
+ .u32 => .i32_gt_u,
+ .i64 => .i64_gt_s,
+ .u64 => .i64_gt_u,
+ .f32 => .f32_gt,
+ .f64 => .f64_gt,
+ else => null,
+ }),
+ .neq => @as(?wasm.Opcode, switch (ty) {
+ .i32, .u32 => .i32_ne,
+ .i64, .u64 => .i64_ne,
+ .f32 => .f32_ne,
+ .f64 => .f64_ne,
+ else => null,
+ }),
+ };
+
+ const opcode = opcode_maybe orelse
+ return self.fail(inst.base.src, "TODO - Wasm genCmp for type '{s}' and operator '{s}'", .{ ty, @tagName(op) });
+
+ try self.code.append(wasm.opcode(opcode));
+ return WValue{ .code_offset = offset };
+ }
+
+ fn genBr(self: *Context, br: *Inst.Br) InnerError!WValue {
+ // of operand has codegen bits we should break with a value
+ if (br.operand.ty.hasCodeGenBits()) {
+ const operand = self.resolveInst(br.operand);
+ try self.emitWValue(operand);
+ }
+
+ // every block contains a `WValue` with its block index.
+ // We then determine how far we have to jump to it by substracting it from current block depth
+ const wvalue = @bitCast(WValue, br.block.codegen.mcv);
+ const idx: u32 = self.block_depth - wvalue.block_idx;
+ const writer = self.code.writer();
+ try writer.writeByte(wasm.opcode(.br));
+ try leb.writeULEB128(writer, idx);
+
+ return .none;
+ }
};
diff --git a/src/ir.zig b/src/ir.zig
index 89698bdd84..0e83dbfd56 100644
--- a/src/ir.zig
+++ b/src/ir.zig
@@ -56,13 +56,20 @@ pub const Inst = struct {
alloc,
arg,
assembly,
- bitand,
+ bit_and,
bitcast,
- bitor,
+ bit_or,
block,
br,
+ /// Same as `br` except the operand is a list of instructions to be treated as
+ /// a flat block; that is there is only 1 break instruction from the block, and
+ /// it is implied to be after the last instruction, and the last instruction is
+ /// the break operand.
+ /// This instruction exists for late-stage semantic analysis patch ups, to
+ /// replace one br operand with multiple instructions, without moving anything else around.
+ br_block_flat,
breakpoint,
- brvoid,
+ br_void,
call,
cmp_lt,
cmp_lte,
@@ -85,8 +92,8 @@ pub const Inst = struct {
is_err,
// *E!T => bool
is_err_ptr,
- booland,
- boolor,
+ bool_and,
+ bool_or,
/// Read a value from a pointer.
load,
loop,
@@ -147,10 +154,10 @@ pub const Inst = struct {
.cmp_gt,
.cmp_neq,
.store,
- .booland,
- .boolor,
- .bitand,
- .bitor,
+ .bool_and,
+ .bool_or,
+ .bit_and,
+ .bit_or,
.xor,
=> BinOp,
@@ -158,7 +165,8 @@ pub const Inst = struct {
.assembly => Assembly,
.block => Block,
.br => Br,
- .brvoid => BrVoid,
+ .br_block_flat => BrBlockFlat,
+ .br_void => BrVoid,
.call => Call,
.condbr => CondBr,
.constant => Constant,
@@ -251,7 +259,8 @@ pub const Inst = struct {
pub fn breakBlock(base: *Inst) ?*Block {
return switch (base.tag) {
.br => base.castTag(.br).?.block,
- .brvoid => base.castTag(.brvoid).?.block,
+ .br_void => base.castTag(.br_void).?.block,
+ .br_block_flat => base.castTag(.br_block_flat).?.block,
else => null,
};
}
@@ -355,6 +364,27 @@ pub const Inst = struct {
}
};
+ pub const convertable_br_size = std.math.max(@sizeOf(BrBlockFlat), @sizeOf(Br));
+ pub const convertable_br_align = std.math.max(@alignOf(BrBlockFlat), @alignOf(Br));
+ comptime {
+ assert(@byteOffsetOf(BrBlockFlat, "base") == @byteOffsetOf(Br, "base"));
+ }
+
+ pub const BrBlockFlat = struct {
+ pub const base_tag = Tag.br_block_flat;
+
+ base: Inst,
+ block: *Block,
+ body: Body,
+
+ pub fn operandCount(self: *const BrBlockFlat) usize {
+ return 0;
+ }
+ pub fn getOperand(self: *const BrBlockFlat, index: usize) ?*Inst {
+ return null;
+ }
+ };
+
pub const Br = struct {
pub const base_tag = Tag.br;
@@ -363,7 +393,7 @@ pub const Inst = struct {
operand: *Inst,
pub fn operandCount(self: *const Br) usize {
- return 0;
+ return 1;
}
pub fn getOperand(self: *const Br, index: usize) ?*Inst {
if (index == 0)
@@ -373,7 +403,7 @@ pub const Inst = struct {
};
pub const BrVoid = struct {
- pub const base_tag = Tag.brvoid;
+ pub const base_tag = Tag.br_void;
base: Inst,
block: *Block,
@@ -491,7 +521,7 @@ pub const Inst = struct {
pub const base_tag = Tag.switchbr;
base: Inst,
- target_ptr: *Inst,
+ target: *Inst,
cases: []Case,
/// Set of instructions whose lifetimes end at the start of one of the cases.
/// In same order as cases, deaths[0..case_0_count, case_0_count .. case_1_count, ... ].
@@ -514,7 +544,7 @@ pub const Inst = struct {
var i = index;
if (i < 1)
- return self.target_ptr;
+ return self.target;
i -= 1;
return null;
diff --git a/src/link.zig b/src/link.zig
index 82ff0bb3f8..3d0a54f416 100644
--- a/src/link.zig
+++ b/src/link.zig
@@ -139,6 +139,7 @@ pub const File = struct {
macho: MachO.TextBlock,
c: C.DeclBlock,
wasm: void,
+ spirv: void,
};
pub const LinkFn = union {
@@ -147,6 +148,7 @@ pub const File = struct {
macho: MachO.SrcFn,
c: C.FnBlock,
wasm: ?Wasm.FnData,
+ spirv: SpirV.FnData,
};
pub const Export = union {
@@ -155,6 +157,7 @@ pub const File = struct {
macho: MachO.Export,
c: void,
wasm: void,
+ spirv: void,
};
/// For DWARF .debug_info.
@@ -183,6 +186,7 @@ pub const File = struct {
.macho => &(try MachO.createEmpty(allocator, options)).base,
.wasm => &(try Wasm.createEmpty(allocator, options)).base,
.c => unreachable, // Reported error earlier.
+ .spirv => &(try SpirV.createEmpty(allocator, options)).base,
.hex => return error.HexObjectFormatUnimplemented,
.raw => return error.RawObjectFormatUnimplemented,
};
@@ -198,6 +202,7 @@ pub const File = struct {
.macho => &(try MachO.createEmpty(allocator, options)).base,
.wasm => &(try Wasm.createEmpty(allocator, options)).base,
.c => unreachable, // Reported error earlier.
+ .spirv => &(try SpirV.createEmpty(allocator, options)).base,
.hex => return error.HexObjectFormatUnimplemented,
.raw => return error.RawObjectFormatUnimplemented,
};
@@ -213,6 +218,7 @@ pub const File = struct {
.macho => &(try MachO.openPath(allocator, sub_path, options)).base,
.wasm => &(try Wasm.openPath(allocator, sub_path, options)).base,
.c => &(try C.openPath(allocator, sub_path, options)).base,
+ .spirv => &(try SpirV.openPath(allocator, sub_path, options)).base,
.hex => return error.HexObjectFormatUnimplemented,
.raw => return error.RawObjectFormatUnimplemented,
};
@@ -242,7 +248,7 @@ pub const File = struct {
.mode = determineMode(base.options),
});
},
- .c, .wasm => {},
+ .c, .wasm, .spirv => {},
}
}
@@ -287,7 +293,7 @@ pub const File = struct {
f.close();
base.file = null;
},
- .c, .wasm => {},
+ .c, .wasm, .spirv => {},
}
}
@@ -300,6 +306,7 @@ pub const File = struct {
.macho => return @fieldParentPtr(MachO, "base", base).updateDecl(module, decl),
.c => return @fieldParentPtr(C, "base", base).updateDecl(module, decl),
.wasm => return @fieldParentPtr(Wasm, "base", base).updateDecl(module, decl),
+ .spirv => return @fieldParentPtr(SpirV, "base", base).updateDecl(module, decl),
}
}
@@ -309,7 +316,7 @@ pub const File = struct {
.elf => return @fieldParentPtr(Elf, "base", base).updateDeclLineNumber(module, decl),
.macho => return @fieldParentPtr(MachO, "base", base).updateDeclLineNumber(module, decl),
.c => return @fieldParentPtr(C, "base", base).updateDeclLineNumber(module, decl),
- .wasm => {},
+ .wasm, .spirv => {},
}
}
@@ -321,7 +328,7 @@ pub const File = struct {
.elf => return @fieldParentPtr(Elf, "base", base).allocateDeclIndexes(decl),
.macho => return @fieldParentPtr(MachO, "base", base).allocateDeclIndexes(decl),
.c => return @fieldParentPtr(C, "base", base).allocateDeclIndexes(decl),
- .wasm => {},
+ .wasm, .spirv => {},
}
}
@@ -368,6 +375,11 @@ pub const File = struct {
parent.deinit();
base.allocator.destroy(parent);
},
+ .spirv => {
+ const parent = @fieldParentPtr(SpirV, "base", base);
+ parent.deinit();
+ base.allocator.destroy(parent);
+ },
}
}
@@ -401,6 +413,7 @@ pub const File = struct {
.macho => return @fieldParentPtr(MachO, "base", base).flush(comp),
.c => return @fieldParentPtr(C, "base", base).flush(comp),
.wasm => return @fieldParentPtr(Wasm, "base", base).flush(comp),
+ .spirv => return @fieldParentPtr(SpirV, "base", base).flush(comp),
}
}
@@ -413,6 +426,7 @@ pub const File = struct {
.macho => return @fieldParentPtr(MachO, "base", base).flushModule(comp),
.c => return @fieldParentPtr(C, "base", base).flushModule(comp),
.wasm => return @fieldParentPtr(Wasm, "base", base).flushModule(comp),
+ .spirv => return @fieldParentPtr(SpirV, "base", base).flushModule(comp),
}
}
@@ -424,6 +438,7 @@ pub const File = struct {
.macho => @fieldParentPtr(MachO, "base", base).freeDecl(decl),
.c => @fieldParentPtr(C, "base", base).freeDecl(decl),
.wasm => @fieldParentPtr(Wasm, "base", base).freeDecl(decl),
+ .spirv => @fieldParentPtr(SpirV, "base", base).freeDecl(decl),
}
}
@@ -433,7 +448,7 @@ pub const File = struct {
.elf => return @fieldParentPtr(Elf, "base", base).error_flags,
.macho => return @fieldParentPtr(MachO, "base", base).error_flags,
.c => return .{ .no_entry_point_found = false },
- .wasm => return ErrorFlags{},
+ .wasm, .spirv => return ErrorFlags{},
}
}
@@ -451,6 +466,7 @@ pub const File = struct {
.macho => return @fieldParentPtr(MachO, "base", base).updateDeclExports(module, decl, exports),
.c => return @fieldParentPtr(C, "base", base).updateDeclExports(module, decl, exports),
.wasm => return @fieldParentPtr(Wasm, "base", base).updateDeclExports(module, decl, exports),
+ .spirv => return @fieldParentPtr(SpirV, "base", base).updateDeclExports(module, decl, exports),
}
}
@@ -461,6 +477,7 @@ pub const File = struct {
.macho => return @fieldParentPtr(MachO, "base", base).getDeclVAddr(decl),
.c => unreachable,
.wasm => unreachable,
+ .spirv => unreachable,
}
}
@@ -601,6 +618,7 @@ pub const File = struct {
macho,
c,
wasm,
+ spirv,
};
pub const ErrorFlags = struct {
@@ -611,6 +629,7 @@ pub const File = struct {
pub const Coff = @import("link/Coff.zig");
pub const Elf = @import("link/Elf.zig");
pub const MachO = @import("link/MachO.zig");
+ pub const SpirV = @import("link/SpirV.zig");
pub const Wasm = @import("link/Wasm.zig");
};
diff --git a/src/link/C.zig b/src/link/C.zig
index a60d0efd8e..765249cd7d 100644
--- a/src/link/C.zig
+++ b/src/link/C.zig
@@ -95,7 +95,9 @@ pub fn updateDecl(self: *C, module: *Module, decl: *Module.Decl) !void {
.gpa = module.gpa,
.code = code.toManaged(module.gpa),
.value_map = codegen.CValueMap.init(module.gpa),
+ .indent_writer = undefined, // set later so we can get a pointer to object.code
};
+ object.indent_writer = std.io.autoIndentingStream(4, object.code.writer());
defer object.value_map.deinit();
defer object.code.deinit();
defer object.dg.fwd_decl.deinit();
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index eee5841903..fd1c53cb67 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -2366,7 +2366,7 @@ fn allocatedSizeLinkedit(self: *MachO, start: u64) u64 {
return min_pos - start;
}
-inline fn checkForCollision(start: u64, end: u64, off: u64, size: u64) ?u64 {
+fn checkForCollision(start: u64, end: u64, off: u64, size: u64) callconv(.Inline) ?u64 {
const increased_size = padToIdeal(size);
const test_end = off + increased_size;
if (end > off and start < test_end) {
diff --git a/src/link/MachO/commands.zig b/src/link/MachO/commands.zig
index baea36b4e6..67b808d856 100644
--- a/src/link/MachO/commands.zig
+++ b/src/link/MachO/commands.zig
@@ -140,7 +140,7 @@ pub const LoadCommand = union(enum) {
}
fn eql(self: LoadCommand, other: LoadCommand) bool {
- if (@as(@TagType(LoadCommand), self) != @as(@TagType(LoadCommand), other)) return false;
+ if (@as(meta.Tag(LoadCommand), self) != @as(meta.Tag(LoadCommand), other)) return false;
return switch (self) {
.DyldInfoOnly => |x| meta.eql(x, other.DyldInfoOnly),
.Symtab => |x| meta.eql(x, other.Symtab),
diff --git a/src/link/SpirV.zig b/src/link/SpirV.zig
new file mode 100644
index 0000000000..bde1eae391
--- /dev/null
+++ b/src/link/SpirV.zig
@@ -0,0 +1,234 @@
+const SpirV = @This();
+
+const std = @import("std");
+const Allocator = std.mem.Allocator;
+const assert = std.debug.assert;
+
+const Module = @import("../Module.zig");
+const Compilation = @import("../Compilation.zig");
+const link = @import("../link.zig");
+const codegen = @import("../codegen/spirv.zig");
+const trace = @import("../tracy.zig").trace;
+const build_options = @import("build_options");
+const spec = @import("../codegen/spirv/spec.zig");
+
+//! SPIR-V Spec documentation: https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html
+//! According to above documentation, a SPIR-V module has the following logical layout:
+//! Header.
+//! OpCapability instructions.
+//! OpExtension instructions.
+//! OpExtInstImport instructions.
+//! A single OpMemoryModel instruction.
+//! All entry points, declared with OpEntryPoint instructions.
+//! All execution-mode declarators; OpExecutionMode and OpExecutionModeId instructions.
+//! Debug instructions:
+//! - First, OpString, OpSourceExtension, OpSource, OpSourceContinued (no forward references).
+//! - OpName and OpMemberName instructions.
+//! - OpModuleProcessed instructions.
+//! All annotation (decoration) instructions.
+//! All type declaration instructions, constant instructions, global variable declarations, (preferrably) OpUndef instructions.
+//! All function declarations without a body (extern functions presumably).
+//! All regular functions.
+
+pub const FnData = struct {
+ id: ?u32 = null,
+ code: std.ArrayListUnmanaged(u32) = .{},
+};
+
+base: link.File,
+
+// TODO: Does this file need to support multiple independent modules?
+spirv_module: codegen.SPIRVModule,
+
+pub fn createEmpty(gpa: *Allocator, options: link.Options) !*SpirV {
+ const spirv = try gpa.create(SpirV);
+ spirv.* = .{
+ .base = .{
+ .tag = .spirv,
+ .options = options,
+ .file = null,
+ .allocator = gpa,
+ },
+ .spirv_module = codegen.SPIRVModule.init(gpa),
+ };
+
+ // TODO: Figure out where to put all of these
+ switch (options.target.cpu.arch) {
+ .spirv32, .spirv64 => {},
+ else => return error.TODOArchNotSupported,
+ }
+
+ switch (options.target.os.tag) {
+ .opencl, .glsl450, .vulkan => {},
+ else => return error.TODOOsNotSupported,
+ }
+
+ if (options.target.abi != .none) {
+ return error.TODOAbiNotSupported;
+ }
+
+ return spirv;
+}
+
+pub fn openPath(allocator: *Allocator, sub_path: []const u8, options: link.Options) !*SpirV {
+ assert(options.object_format == .spirv);
+
+ if (options.use_llvm) return error.LLVM_BackendIsTODO_ForSpirV; // TODO: LLVM Doesn't support SpirV at all.
+ if (options.use_lld) return error.LLD_LinkingIsTODO_ForSpirV; // TODO: LLD Doesn't support SpirV at all.
+
+ // TODO: read the file and keep vaild parts instead of truncating
+ const file = try options.emit.?.directory.handle.createFile(sub_path, .{ .truncate = true, .read = true });
+ errdefer file.close();
+
+ const spirv = try createEmpty(allocator, options);
+ errdefer spirv.base.destroy();
+
+ spirv.base.file = file;
+ return spirv;
+}
+
+pub fn deinit(self: *SpirV) void {
+ self.spirv_module.deinit();
+}
+
+pub fn updateDecl(self: *SpirV, module: *Module, decl: *Module.Decl) !void {
+ const tracy = trace(@src());
+ defer tracy.end();
+
+ const fn_data = &decl.fn_link.spirv;
+ if (fn_data.id == null) {
+ fn_data.id = self.spirv_module.allocId();
+ }
+
+ var managed_code = fn_data.code.toManaged(self.base.allocator);
+ managed_code.items.len = 0;
+
+ try self.spirv_module.genDecl(fn_data.id.?, &managed_code, decl);
+ fn_data.code = managed_code.toUnmanaged();
+
+ // Free excess allocated memory for this Decl.
+ fn_data.code.shrinkAndFree(self.base.allocator, fn_data.code.items.len);
+}
+
+pub fn updateDeclExports(
+ self: *SpirV,
+ module: *Module,
+ decl: *const Module.Decl,
+ exports: []const *Module.Export,
+) !void {}
+
+pub fn freeDecl(self: *SpirV, decl: *Module.Decl) void {
+ var fn_data = decl.fn_link.spirv;
+ fn_data.code.deinit(self.base.allocator);
+ if (fn_data.id) |id| self.spirv_module.freeId(id);
+ decl.fn_link.spirv = undefined;
+}
+
+pub fn flush(self: *SpirV, comp: *Compilation) !void {
+ if (build_options.have_llvm and self.base.options.use_lld) {
+ return error.LLD_LinkingIsTODO_ForSpirV; // TODO: LLD Doesn't support SpirV at all.
+ } else {
+ return self.flushModule(comp);
+ }
+}
+
+pub fn flushModule(self: *SpirV, comp: *Compilation) !void {
+ const tracy = trace(@src());
+ defer tracy.end();
+
+ const module = self.base.options.module.?;
+ const target = comp.getTarget();
+
+ var binary = std.ArrayList(u32).init(self.base.allocator);
+ defer binary.deinit();
+
+ // Note: The order of adding sections to the final binary
+ // follows the SPIR-V logical module format!
+
+ try binary.appendSlice(&[_]u32{
+ spec.magic_number,
+ (spec.version.major << 16) | (spec.version.minor << 8),
+ 0, // TODO: Register Zig compiler magic number.
+ self.spirv_module.idBound(),
+ 0, // Schema (currently reserved for future use in the SPIR-V spec).
+ });
+
+ try writeCapabilities(&binary, target);
+ try writeMemoryModel(&binary, target);
+
+ // Collect list of buffers to write.
+ // SPIR-V files support both little and big endian words. The actual format is
+ // disambiguated by the magic number, and so theoretically we don't need to worry
+ // about endian-ness when writing the final binary.
+ var all_buffers = std.ArrayList(std.os.iovec_const).init(self.base.allocator);
+ defer all_buffers.deinit();
+
+ // Pre-allocate enough for the binary info + all functions
+ try all_buffers.ensureCapacity(module.decl_table.count() + 1);
+
+ all_buffers.appendAssumeCapacity(wordsToIovConst(binary.items));
+
+ for (module.decl_table.items()) |entry| {
+ const decl = entry.value;
+ switch (decl.typed_value) {
+ .most_recent => |tvm| {
+ const fn_data = &decl.fn_link.spirv;
+ all_buffers.appendAssumeCapacity(wordsToIovConst(fn_data.code.items));
+ },
+ .never_succeeded => continue,
+ }
+ }
+
+ var file_size: u64 = 0;
+ for (all_buffers.items) |iov| {
+ file_size += iov.iov_len;
+ }
+
+ const file = self.base.file.?;
+ try file.seekTo(0);
+ try file.setEndPos(file_size);
+ try file.pwritevAll(all_buffers.items, 0);
+}
+
+fn writeCapabilities(binary: *std.ArrayList(u32), target: std.Target) !void {
+ // TODO: Integrate with a hypothetical feature system
+ const cap: spec.Capability = switch (target.os.tag) {
+ .opencl => .Kernel,
+ .glsl450 => .Shader,
+ .vulkan => .VulkanMemoryModel,
+ else => unreachable, // TODO
+ };
+
+ try codegen.writeInstruction(binary, .OpCapability, &[_]u32{ @enumToInt(cap) });
+}
+
+fn writeMemoryModel(binary: *std.ArrayList(u32), target: std.Target) !void {
+ const addressing_model = switch (target.os.tag) {
+ .opencl => switch (target.cpu.arch) {
+ .spirv32 => spec.AddressingModel.Physical32,
+ .spirv64 => spec.AddressingModel.Physical64,
+ else => unreachable, // TODO
+ },
+ .glsl450, .vulkan => spec.AddressingModel.Logical,
+ else => unreachable, // TODO
+ };
+
+ const memory_model: spec.MemoryModel = switch (target.os.tag) {
+ .opencl => .OpenCL,
+ .glsl450 => .GLSL450,
+ .vulkan => .Vulkan,
+ else => unreachable,
+ };
+
+ try codegen.writeInstruction(binary, .OpMemoryModel, &[_]u32{
+ @enumToInt(addressing_model), @enumToInt(memory_model)
+ });
+}
+
+fn wordsToIovConst(words: []const u32) std.os.iovec_const {
+ const bytes = std.mem.sliceAsBytes(words);
+ return .{
+ .iov_base = bytes.ptr,
+ .iov_len = bytes.len,
+ };
+}
diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig
index fb356ad1aa..547ab2a012 100644
--- a/src/link/Wasm.zig
+++ b/src/link/Wasm.zig
@@ -7,6 +7,7 @@ const assert = std.debug.assert;
const fs = std.fs;
const leb = std.leb;
const log = std.log.scoped(.link);
+const wasm = std.wasm;
const Module = @import("../Module.zig");
const Compilation = @import("../Compilation.zig");
@@ -16,25 +17,6 @@ const trace = @import("../tracy.zig").trace;
const build_options = @import("build_options");
const Cache = @import("../Cache.zig");
-/// Various magic numbers defined by the wasm spec
-const spec = struct {
- const magic = [_]u8{ 0x00, 0x61, 0x73, 0x6D }; // \0asm
- const version = [_]u8{ 0x01, 0x00, 0x00, 0x00 }; // version 1
-
- const custom_id = 0;
- const types_id = 1;
- const imports_id = 2;
- const funcs_id = 3;
- const tables_id = 4;
- const memories_id = 5;
- const globals_id = 6;
- const exports_id = 7;
- const start_id = 8;
- const elements_id = 9;
- const code_id = 10;
- const data_id = 11;
-};
-
pub const base_tag = link.File.Tag.wasm;
pub const FnData = struct {
@@ -65,19 +47,19 @@ pub fn openPath(allocator: *Allocator, sub_path: []const u8, options: link.Optio
const file = try options.emit.?.directory.handle.createFile(sub_path, .{ .truncate = true, .read = true });
errdefer file.close();
- const wasm = try createEmpty(allocator, options);
- errdefer wasm.base.destroy();
+ const wasm_bin = try createEmpty(allocator, options);
+ errdefer wasm_bin.base.destroy();
- wasm.base.file = file;
+ wasm_bin.base.file = file;
- try file.writeAll(&(spec.magic ++ spec.version));
+ try file.writeAll(&(wasm.magic ++ wasm.version));
- return wasm;
+ return wasm_bin;
}
pub fn createEmpty(gpa: *Allocator, options: link.Options) !*Wasm {
- const wasm = try gpa.create(Wasm);
- wasm.* = .{
+ const wasm_bin = try gpa.create(Wasm);
+ wasm_bin.* = .{
.base = .{
.tag = .wasm,
.options = options,
@@ -85,7 +67,7 @@ pub fn createEmpty(gpa: *Allocator, options: link.Options) !*Wasm {
.allocator = gpa,
},
};
- return wasm;
+ return wasm_bin;
}
pub fn deinit(self: *Wasm) void {
@@ -121,13 +103,14 @@ pub fn updateDecl(self: *Wasm, module: *Module, decl: *Module.Decl) !void {
var context = codegen.Context{
.gpa = self.base.allocator,
- .values = codegen.ValueTable.init(self.base.allocator),
+ .values = .{},
.code = managed_code,
.func_type_data = managed_functype,
.decl = decl,
.err_msg = undefined,
+ .locals = .{},
};
- defer context.values.deinit();
+ defer context.deinit();
// generate the 'code' section for the function declaration
context.gen() catch |err| switch (err) {
@@ -139,6 +122,13 @@ pub fn updateDecl(self: *Wasm, module: *Module, decl: *Module.Decl) !void {
else => |e| return err,
};
+ // as locals are patched afterwards, the offsets of funcidx's are off,
+ // here we update them to correct them
+ for (decl.fn_link.wasm.?.idx_refs.items) |*func| {
+ // For each local, add 6 bytes (count + type)
+ func.offset += @intCast(u32, context.locals.items.len * 6);
+ }
+
fn_data.functype = context.func_type_data.toUnmanaged();
fn_data.code = context.code.toUnmanaged();
}
@@ -176,8 +166,8 @@ pub fn flushModule(self: *Wasm, comp: *Compilation) !void {
const header_size = 5 + 1;
// No need to rewrite the magic/version header
- try file.setEndPos(@sizeOf(@TypeOf(spec.magic ++ spec.version)));
- try file.seekTo(@sizeOf(@TypeOf(spec.magic ++ spec.version)));
+ try file.setEndPos(@sizeOf(@TypeOf(wasm.magic ++ wasm.version)));
+ try file.seekTo(@sizeOf(@TypeOf(wasm.magic ++ wasm.version)));
// Type section
{
@@ -188,7 +178,7 @@ pub fn flushModule(self: *Wasm, comp: *Compilation) !void {
try writeVecSectionHeader(
file,
header_offset,
- spec.types_id,
+ .type,
@intCast(u32, (try file.getPos()) - header_offset - header_size),
@intCast(u32, self.funcs.items.len),
);
@@ -202,7 +192,7 @@ pub fn flushModule(self: *Wasm, comp: *Compilation) !void {
try writeVecSectionHeader(
file,
header_offset,
- spec.funcs_id,
+ .function,
@intCast(u32, (try file.getPos()) - header_offset - header_size),
@intCast(u32, self.funcs.items.len),
);
@@ -235,7 +225,7 @@ pub fn flushModule(self: *Wasm, comp: *Compilation) !void {
try writeVecSectionHeader(
file,
header_offset,
- spec.exports_id,
+ .@"export",
@intCast(u32, (try file.getPos()) - header_offset - header_size),
count,
);
@@ -255,7 +245,7 @@ pub fn flushModule(self: *Wasm, comp: *Compilation) !void {
try writer.writeAll(fn_data.code.items[current..idx_ref.offset]);
current = idx_ref.offset;
// Use a fixed width here to make calculating the code size
- // in codegen.wasm.genCode() simpler.
+ // in codegen.wasm.gen() simpler.
var buf: [5]u8 = undefined;
leb.writeUnsignedFixed(5, &buf, self.getFuncidx(idx_ref.decl).?);
try writer.writeAll(&buf);
@@ -266,7 +256,7 @@ pub fn flushModule(self: *Wasm, comp: *Compilation) !void {
try writeVecSectionHeader(
file,
header_offset,
- spec.code_id,
+ .code,
@intCast(u32, (try file.getPos()) - header_offset - header_size),
@intCast(u32, self.funcs.items.len),
);
@@ -549,9 +539,9 @@ fn reserveVecSectionHeader(file: fs.File) !u64 {
return (try file.getPos()) - header_size;
}
-fn writeVecSectionHeader(file: fs.File, offset: u64, section: u8, size: u32, items: u32) !void {
+fn writeVecSectionHeader(file: fs.File, offset: u64, section: wasm.Section, size: u32, items: u32) !void {
var buf: [1 + 5 + 5]u8 = undefined;
- buf[0] = section;
+ buf[0] = @enumToInt(section);
leb.writeUnsignedFixed(5, buf[1..6], size);
leb.writeUnsignedFixed(5, buf[6..], items);
try file.pwriteAll(&buf, offset);
diff --git a/src/main.zig b/src/main.zig
index 2ae87fa56c..c0ac41d9bf 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -312,6 +312,7 @@ const usage_build_generic =
\\ pe Portable Executable (Windows)
\\ coff Common Object File Format (Windows)
\\ macho macOS relocatables
+ \\ spirv Standard, Portable Intermediate Representation V (SPIR-V)
\\ hex (planned) Intel IHEX
\\ raw (planned) Dump machine code directly
\\ -dirafter [dir] Add directory to AFTER include search path
@@ -1185,6 +1186,7 @@ fn buildOutputType(
.framework_dir => try framework_dirs.append(it.only_arg),
.framework => try frameworks.append(it.only_arg),
.nostdlibinc => want_native_include_dirs = false,
+ .strip => strip = true,
}
}
// Parse linker args.
@@ -1535,8 +1537,9 @@ fn buildOutputType(
}
const has_sysroot = if (comptime std.Target.current.isDarwin()) outer: {
- const at_least_big_sur = target_info.target.os.getVersionRange().semver.min.major >= 11;
- if (at_least_big_sur) {
+ const min = target_info.target.os.getVersionRange().semver.min;
+ const at_least_catalina = min.major >= 11 or (min.major >= 10 and min.minor >= 15);
+ if (at_least_catalina) {
const sdk_path = try std.zig.system.getSDKPath(arena);
try clang_argv.ensureCapacity(clang_argv.items.len + 2);
clang_argv.appendAssumeCapacity("-isysroot");
@@ -1588,6 +1591,8 @@ fn buildOutputType(
break :blk .hex;
} else if (mem.eql(u8, ofmt, "raw")) {
break :blk .raw;
+ } else if (mem.eql(u8, ofmt, "spirv")) {
+ break :blk .spirv;
} else {
fatal("unsupported object format: {s}", .{ofmt});
}
@@ -3047,6 +3052,7 @@ pub const ClangArgIterator = struct {
nostdlibinc,
red_zone,
no_red_zone,
+ strip,
};
const Args = struct {
diff --git a/src/musl.zig b/src/musl.zig
index 0cb6983e28..0f0e3b271a 100644
--- a/src/musl.zig
+++ b/src/musl.zig
@@ -522,6 +522,7 @@ const src_files = [_][]const u8{
"musl/src/errno/strerror.c",
"musl/src/exit/_Exit.c",
"musl/src/exit/abort.c",
+ "musl/src/exit/abort_lock.c",
"musl/src/exit/arm/__aeabi_atexit.c",
"musl/src/exit/assert.c",
"musl/src/exit/at_quick_exit.c",
@@ -658,6 +659,7 @@ const src_files = [_][]const u8{
"musl/src/linux/flock.c",
"musl/src/linux/getdents.c",
"musl/src/linux/getrandom.c",
+ "musl/src/linux/gettid.c",
"musl/src/linux/inotify.c",
"musl/src/linux/ioperm.c",
"musl/src/linux/iopl.c",
@@ -731,6 +733,8 @@ const src_files = [_][]const u8{
"musl/src/locale/wcscoll.c",
"musl/src/locale/wcsxfrm.c",
"musl/src/malloc/calloc.c",
+ "musl/src/malloc/free.c",
+ "musl/src/malloc/libc_calloc.c",
"musl/src/malloc/lite_malloc.c",
"musl/src/malloc/mallocng/aligned_alloc.c",
"musl/src/malloc/mallocng/donate.c",
@@ -739,7 +743,12 @@ const src_files = [_][]const u8{
"musl/src/malloc/mallocng/malloc_usable_size.c",
"musl/src/malloc/mallocng/realloc.c",
"musl/src/malloc/memalign.c",
+ "musl/src/malloc/oldmalloc/aligned_alloc.c",
+ "musl/src/malloc/oldmalloc/malloc.c",
+ "musl/src/malloc/oldmalloc/malloc_usable_size.c",
"musl/src/malloc/posix_memalign.c",
+ "musl/src/malloc/realloc.c",
+ "musl/src/malloc/reallocarray.c",
"musl/src/malloc/replaced.c",
"musl/src/math/__cos.c",
"musl/src/math/__cosdf.c",
@@ -754,6 +763,7 @@ const src_files = [_][]const u8{
"musl/src/math/__math_divzerof.c",
"musl/src/math/__math_invalid.c",
"musl/src/math/__math_invalidf.c",
+ "musl/src/math/__math_invalidl.c",
"musl/src/math/__math_oflow.c",
"musl/src/math/__math_oflowf.c",
"musl/src/math/__math_uflow.c",
@@ -1137,6 +1147,7 @@ const src_files = [_][]const u8{
"musl/src/math/sinhl.c",
"musl/src/math/sinl.c",
"musl/src/math/sqrt.c",
+ "musl/src/math/sqrt_data.c",
"musl/src/math/sqrtf.c",
"musl/src/math/sqrtl.c",
"musl/src/math/tan.c",
@@ -1406,6 +1417,7 @@ const src_files = [_][]const u8{
"musl/src/prng/random.c",
"musl/src/prng/seed48.c",
"musl/src/prng/srand48.c",
+ "musl/src/process/_Fork.c",
"musl/src/process/arm/vfork.s",
"musl/src/process/execl.c",
"musl/src/process/execle.c",
@@ -1833,8 +1845,10 @@ const src_files = [_][]const u8{
"musl/src/termios/tcflush.c",
"musl/src/termios/tcgetattr.c",
"musl/src/termios/tcgetsid.c",
+ "musl/src/termios/tcgetwinsize.c",
"musl/src/termios/tcsendbreak.c",
"musl/src/termios/tcsetattr.c",
+ "musl/src/termios/tcsetwinsize.c",
"musl/src/thread/__lock.c",
"musl/src/thread/__set_thread_area.c",
"musl/src/thread/__syscall_cp.c",
diff --git a/src/stage1/all_types.hpp b/src/stage1/all_types.hpp
index 196010ebca..7ad585a524 100644
--- a/src/stage1/all_types.hpp
+++ b/src/stage1/all_types.hpp
@@ -74,6 +74,7 @@ enum CallingConvention {
CallingConventionC,
CallingConventionNaked,
CallingConventionAsync,
+ CallingConventionInline,
CallingConventionInterrupt,
CallingConventionSignal,
CallingConventionStdcall,
@@ -703,12 +704,6 @@ enum NodeType {
NodeTypeAnyTypeField,
};
-enum FnInline {
- FnInlineAuto,
- FnInlineAlways,
- FnInlineNever,
-};
-
struct AstNodeFnProto {
Buf *name;
ZigList params;
@@ -725,13 +720,12 @@ struct AstNodeFnProto {
AstNode *callconv_expr;
Buf doc_comments;
- FnInline fn_inline;
-
VisibMod visib_mod;
bool auto_err_set;
bool is_var_args;
bool is_extern;
bool is_export;
+ bool is_noinline;
};
struct AstNodeFnDef {
@@ -1719,7 +1713,6 @@ struct ZigFn {
LLVMValueRef valgrind_client_request_array;
- FnInline fn_inline;
FnAnalState anal_state;
uint32_t align_bytes;
@@ -1728,6 +1721,7 @@ struct ZigFn {
bool calls_or_awaits_errorable_fn;
bool is_cold;
bool is_test;
+ bool is_noinline;
};
uint32_t fn_table_entry_hash(ZigFn*);
@@ -1811,7 +1805,6 @@ enum BuiltinFnId {
BuiltinFnIdIntToPtr,
BuiltinFnIdPtrToInt,
BuiltinFnIdTagName,
- BuiltinFnIdTagType,
BuiltinFnIdFieldParentPtr,
BuiltinFnIdByteOffsetOf,
BuiltinFnIdBitOffsetOf,
@@ -2623,7 +2616,6 @@ enum IrInstSrcId {
IrInstSrcIdDeclRef,
IrInstSrcIdPanic,
IrInstSrcIdTagName,
- IrInstSrcIdTagType,
IrInstSrcIdFieldParentPtr,
IrInstSrcIdByteOffsetOf,
IrInstSrcIdBitOffsetOf,
@@ -4074,12 +4066,6 @@ struct IrInstGenTagName {
IrInstGen *target;
};
-struct IrInstSrcTagType {
- IrInstSrc base;
-
- IrInstSrc *target;
-};
-
struct IrInstSrcFieldParentPtr {
IrInstSrc base;
diff --git a/src/stage1/analyze.cpp b/src/stage1/analyze.cpp
index faf66f59f3..a4e368288e 100644
--- a/src/stage1/analyze.cpp
+++ b/src/stage1/analyze.cpp
@@ -973,6 +973,7 @@ const char *calling_convention_name(CallingConvention cc) {
case CallingConventionAPCS: return "APCS";
case CallingConventionAAPCS: return "AAPCS";
case CallingConventionAAPCSVFP: return "AAPCSVFP";
+ case CallingConventionInline: return "Inline";
}
zig_unreachable();
}
@@ -981,6 +982,7 @@ bool calling_convention_allows_zig_types(CallingConvention cc) {
switch (cc) {
case CallingConventionUnspecified:
case CallingConventionAsync:
+ case CallingConventionInline:
return true;
case CallingConventionC:
case CallingConventionNaked:
@@ -1007,7 +1009,8 @@ ZigType *get_stack_trace_type(CodeGen *g) {
}
bool want_first_arg_sret(CodeGen *g, FnTypeId *fn_type_id) {
- if (fn_type_id->cc == CallingConventionUnspecified) {
+ if (fn_type_id->cc == CallingConventionUnspecified
+ || fn_type_id->cc == CallingConventionInline) {
return handle_is_ptr(g, fn_type_id->return_type);
}
if (fn_type_id->cc != CallingConventionC) {
@@ -1888,6 +1891,7 @@ Error emit_error_unless_callconv_allowed_for_target(CodeGen *g, AstNode *source_
case CallingConventionC:
case CallingConventionNaked:
case CallingConventionAsync:
+ case CallingConventionInline:
break;
case CallingConventionInterrupt:
if (g->zig_target->arch != ZigLLVM_x86
@@ -3267,7 +3271,7 @@ static Error resolve_union_zero_bits(CodeGen *g, ZigType *union_type) {
tag_type = new_type_table_entry(ZigTypeIdEnum);
buf_resize(&tag_type->name, 0);
- buf_appendf(&tag_type->name, "@TagType(%s)", buf_ptr(&union_type->name));
+ buf_appendf(&tag_type->name, "@typeInfo(%s).Union.tag_type.?", buf_ptr(&union_type->name));
tag_type->llvm_type = tag_int_type->llvm_type;
tag_type->llvm_di_type = tag_int_type->llvm_di_type;
tag_type->abi_size = tag_int_type->abi_size;
@@ -3587,7 +3591,7 @@ static void get_fully_qualified_decl_name(CodeGen *g, Buf *buf, Tld *tld, bool i
}
}
-static ZigFn *create_fn_raw(CodeGen *g, FnInline inline_value) {
+static ZigFn *create_fn_raw(CodeGen *g, bool is_noinline) {
ZigFn *fn_entry = heap::c_allocator.create();
fn_entry->ir_executable = heap::c_allocator.create();
@@ -3597,7 +3601,7 @@ static ZigFn *create_fn_raw(CodeGen *g, FnInline inline_value) {
fn_entry->analyzed_executable.backward_branch_quota = &fn_entry->prealloc_backward_branch_quota;
fn_entry->analyzed_executable.fn_entry = fn_entry;
fn_entry->ir_executable->fn_entry = fn_entry;
- fn_entry->fn_inline = inline_value;
+ fn_entry->is_noinline = is_noinline;
return fn_entry;
}
@@ -3606,7 +3610,7 @@ ZigFn *create_fn(CodeGen *g, AstNode *proto_node) {
assert(proto_node->type == NodeTypeFnProto);
AstNodeFnProto *fn_proto = &proto_node->data.fn_proto;
- ZigFn *fn_entry = create_fn_raw(g, fn_proto->fn_inline);
+ ZigFn *fn_entry = create_fn_raw(g, fn_proto->is_noinline);
fn_entry->proto_node = proto_node;
fn_entry->body_node = (proto_node->data.fn_proto.fn_def_node == nullptr) ? nullptr :
@@ -3739,6 +3743,12 @@ static void resolve_decl_fn(CodeGen *g, TldFn *tld_fn) {
fn_table_entry->type_entry = g->builtin_types.entry_invalid;
tld_fn->base.resolution = TldResolutionInvalid;
return;
+ case CallingConventionInline:
+ add_node_error(g, fn_def_node,
+ buf_sprintf("exported function cannot be inline"));
+ fn_table_entry->type_entry = g->builtin_types.entry_invalid;
+ tld_fn->base.resolution = TldResolutionInvalid;
+ return;
case CallingConventionC:
case CallingConventionNaked:
case CallingConventionInterrupt:
@@ -3774,7 +3784,7 @@ static void resolve_decl_fn(CodeGen *g, TldFn *tld_fn) {
fn_table_entry->inferred_async_node = fn_table_entry->proto_node;
}
} else if (source_node->type == NodeTypeTestDecl) {
- ZigFn *fn_table_entry = create_fn_raw(g, FnInlineAuto);
+ ZigFn *fn_table_entry = create_fn_raw(g, false);
get_fully_qualified_decl_name(g, &fn_table_entry->symbol_name, &tld_fn->base, true);
diff --git a/src/stage1/ast_render.cpp b/src/stage1/ast_render.cpp
index e3f9d11404..9aebac1d28 100644
--- a/src/stage1/ast_render.cpp
+++ b/src/stage1/ast_render.cpp
@@ -123,13 +123,8 @@ static const char *export_string(bool is_export) {
// zig_unreachable();
//}
-static const char *inline_string(FnInline fn_inline) {
- switch (fn_inline) {
- case FnInlineAlways: return "inline ";
- case FnInlineNever: return "noinline ";
- case FnInlineAuto: return "";
- }
- zig_unreachable();
+static const char *inline_string(bool is_inline) {
+ return is_inline ? "inline" : "";
}
static const char *const_or_var_string(bool is_const) {
@@ -446,7 +441,7 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
const char *pub_str = visib_mod_string(node->data.fn_proto.visib_mod);
const char *extern_str = extern_string(node->data.fn_proto.is_extern);
const char *export_str = export_string(node->data.fn_proto.is_export);
- const char *inline_str = inline_string(node->data.fn_proto.fn_inline);
+ const char *inline_str = inline_string(node->data.fn_proto.is_noinline);
fprintf(ar->f, "%s%s%s%sfn ", pub_str, inline_str, export_str, extern_str);
if (node->data.fn_proto.name != nullptr) {
print_symbol(ar, node->data.fn_proto.name);
diff --git a/src/stage1/codegen.cpp b/src/stage1/codegen.cpp
index d850b3ee31..7f8b1884bd 100644
--- a/src/stage1/codegen.cpp
+++ b/src/stage1/codegen.cpp
@@ -159,6 +159,7 @@ static const char *get_mangled_name(CodeGen *g, const char *original_name) {
static ZigLLVM_CallingConv get_llvm_cc(CodeGen *g, CallingConvention cc) {
switch (cc) {
case CallingConventionUnspecified:
+ case CallingConventionInline:
return ZigLLVM_Fast;
case CallingConventionC:
return ZigLLVM_C;
@@ -350,6 +351,7 @@ static bool cc_want_sret_attr(CallingConvention cc) {
return true;
case CallingConventionAsync:
case CallingConventionUnspecified:
+ case CallingConventionInline:
return false;
}
zig_unreachable();
@@ -452,20 +454,11 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) {
}
}
- switch (fn->fn_inline) {
- case FnInlineAlways:
- addLLVMFnAttr(llvm_fn, "alwaysinline");
- g->inline_fns.append(fn);
- break;
- case FnInlineNever:
- addLLVMFnAttr(llvm_fn, "noinline");
- break;
- case FnInlineAuto:
- if (fn->alignstack_value != 0) {
- addLLVMFnAttr(llvm_fn, "noinline");
- }
- break;
- }
+ if (cc == CallingConventionInline)
+ addLLVMFnAttr(llvm_fn, "alwaysinline");
+
+ if (fn->is_noinline || (cc != CallingConventionInline && fn->alignstack_value != 0))
+ addLLVMFnAttr(llvm_fn, "noinline");
if (cc == CallingConventionNaked) {
addLLVMFnAttr(llvm_fn, "naked");
@@ -532,7 +525,7 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) {
addLLVMFnAttr(llvm_fn, "nounwind");
add_uwtable_attr(g, llvm_fn);
addLLVMFnAttr(llvm_fn, "nobuiltin");
- if (codegen_have_frame_pointer(g) && fn->fn_inline != FnInlineAlways) {
+ if (codegen_have_frame_pointer(g) && cc != CallingConventionInline) {
ZigLLVMAddFunctionAttr(llvm_fn, "frame-pointer", "all");
}
if (fn->section_name) {
@@ -8842,7 +8835,6 @@ static void define_builtin_fns(CodeGen *g) {
create_builtin_fn(g, BuiltinFnIdIntToPtr, "intToPtr", 2);
create_builtin_fn(g, BuiltinFnIdPtrToInt, "ptrToInt", 1);
create_builtin_fn(g, BuiltinFnIdTagName, "tagName", 1);
- create_builtin_fn(g, BuiltinFnIdTagType, "TagType", 1);
create_builtin_fn(g, BuiltinFnIdFieldParentPtr, "fieldParentPtr", 3);
create_builtin_fn(g, BuiltinFnIdByteOffsetOf, "byteOffsetOf", 2);
create_builtin_fn(g, BuiltinFnIdBitOffsetOf, "bitOffsetOf", 2);
@@ -9044,19 +9036,16 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
static_assert(CallingConventionC == 1, "");
static_assert(CallingConventionNaked == 2, "");
static_assert(CallingConventionAsync == 3, "");
- static_assert(CallingConventionInterrupt == 4, "");
- static_assert(CallingConventionSignal == 5, "");
- static_assert(CallingConventionStdcall == 6, "");
- static_assert(CallingConventionFastcall == 7, "");
- static_assert(CallingConventionVectorcall == 8, "");
- static_assert(CallingConventionThiscall == 9, "");
- static_assert(CallingConventionAPCS == 10, "");
- static_assert(CallingConventionAAPCS == 11, "");
- static_assert(CallingConventionAAPCSVFP == 12, "");
-
- static_assert(FnInlineAuto == 0, "");
- static_assert(FnInlineAlways == 1, "");
- static_assert(FnInlineNever == 2, "");
+ static_assert(CallingConventionInline == 4, "");
+ static_assert(CallingConventionInterrupt == 5, "");
+ static_assert(CallingConventionSignal == 6, "");
+ static_assert(CallingConventionStdcall == 7, "");
+ static_assert(CallingConventionFastcall == 8, "");
+ static_assert(CallingConventionVectorcall == 9, "");
+ static_assert(CallingConventionThiscall == 10, "");
+ static_assert(CallingConventionAPCS == 11, "");
+ static_assert(CallingConventionAAPCS == 12, "");
+ static_assert(CallingConventionAAPCSVFP == 13, "");
static_assert(BuiltinPtrSizeOne == 0, "");
static_assert(BuiltinPtrSizeMany == 1, "");
diff --git a/src/stage1/ir.cpp b/src/stage1/ir.cpp
index e39e44c3fd..7906df3b0d 100644
--- a/src/stage1/ir.cpp
+++ b/src/stage1/ir.cpp
@@ -516,8 +516,6 @@ static void destroy_instruction_src(IrInstSrc *inst) {
return heap::c_allocator.destroy(reinterpret_cast(inst));
case IrInstSrcIdArgType:
return heap::c_allocator.destroy(reinterpret_cast(inst));
- case IrInstSrcIdTagType:
- return heap::c_allocator.destroy(reinterpret_cast(inst));
case IrInstSrcIdExport:
return heap::c_allocator.destroy(reinterpret_cast(inst));
case IrInstSrcIdExtern:
@@ -1496,10 +1494,6 @@ static constexpr IrInstSrcId ir_inst_id(IrInstSrcTagName *) {
return IrInstSrcIdTagName;
}
-static constexpr IrInstSrcId ir_inst_id(IrInstSrcTagType *) {
- return IrInstSrcIdTagType;
-}
-
static constexpr IrInstSrcId ir_inst_id(IrInstSrcFieldParentPtr *) {
return IrInstSrcIdFieldParentPtr;
}
@@ -4450,17 +4444,6 @@ static IrInstGen *ir_build_tag_name_gen(IrAnalyze *ira, IrInst *source_instr, Ir
return &instruction->base;
}
-static IrInstSrc *ir_build_tag_type(IrBuilderSrc *irb, Scope *scope, AstNode *source_node,
- IrInstSrc *target)
-{
- IrInstSrcTagType *instruction = ir_build_instruction(irb, scope, source_node);
- instruction->target = target;
-
- ir_ref_instruction(target, irb->current_basic_block);
-
- return &instruction->base;
-}
-
static IrInstSrc *ir_build_field_parent_ptr_src(IrBuilderSrc *irb, Scope *scope, AstNode *source_node,
IrInstSrc *type_value, IrInstSrc *field_name, IrInstSrc *field_ptr)
{
@@ -7202,16 +7185,6 @@ static IrInstSrc *ir_gen_builtin_fn_call(IrBuilderSrc *irb, Scope *scope, AstNod
IrInstSrc *tag_name = ir_build_tag_name_src(irb, scope, node, arg0_value);
return ir_lval_wrap(irb, scope, tag_name, lval, result_loc);
}
- case BuiltinFnIdTagType:
- {
- AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(irb, arg0_node, scope);
- if (arg0_value == irb->codegen->invalid_inst_src)
- return arg0_value;
-
- IrInstSrc *tag_type = ir_build_tag_type(irb, scope, node, arg0_value);
- return ir_lval_wrap(irb, scope, tag_type, lval, result_loc);
- }
case BuiltinFnIdFieldParentPtr:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
@@ -19027,7 +19000,7 @@ static IrInstGen *ir_analyze_instruction_decl_var(IrAnalyze *ira, IrInstSrcDeclV
} else if (init_val->type->id == ZigTypeIdFn &&
init_val->special != ConstValSpecialUndef &&
init_val->data.x_ptr.special == ConstPtrSpecialFunction &&
- init_val->data.x_ptr.data.fn.fn_entry->fn_inline == FnInlineAlways)
+ init_val->data.x_ptr.data.fn.fn_entry->type_entry->data.fn.fn_type_id.cc == CallingConventionInline)
{
var_class_requires_const = true;
if (!var->src_is_const && !is_comptime_var) {
@@ -19209,6 +19182,11 @@ static IrInstGen *ir_analyze_instruction_export(IrAnalyze *ira, IrInstSrcExport
buf_sprintf("exported function cannot be async"));
add_error_note(ira->codegen, msg, fn_entry->proto_node, buf_sprintf("declared here"));
} break;
+ case CallingConventionInline: {
+ ErrorMsg *msg = ir_add_error(ira, &target->base,
+ buf_sprintf("exported function cannot be inline"));
+ add_error_note(ira->codegen, msg, fn_entry->proto_node, buf_sprintf("declared here"));
+ } break;
case CallingConventionC:
case CallingConventionNaked:
case CallingConventionInterrupt:
@@ -21147,7 +21125,7 @@ static IrInstGen *ir_analyze_fn_call(IrAnalyze *ira, IrInst* source_instr,
if (type_is_invalid(return_type))
return ira->codegen->invalid_inst_gen;
- if (fn_entry != nullptr && fn_entry->fn_inline == FnInlineAlways && modifier == CallModifierNeverInline) {
+ if (fn_entry != nullptr && fn_type_id->cc == CallingConventionInline && modifier == CallModifierNeverInline) {
ir_add_error(ira, source_instr,
buf_sprintf("no-inline call of inline function"));
return ira->codegen->invalid_inst_gen;
@@ -22655,9 +22633,10 @@ static IrInstGen *ir_analyze_instruction_elem_ptr(IrAnalyze *ira, IrInstSrcElemP
if (ptr_field->data.x_ptr.data.base_array.array_val->data.x_array.special !=
ConstArraySpecialBuf)
{
- ir_assert(new_index <
- ptr_field->data.x_ptr.data.base_array.array_val->type->data.array.len,
- &elem_ptr_instruction->base.base);
+ if (new_index >= ptr_field->data.x_ptr.data.base_array.array_val->type->data.array.len) {
+ ir_add_error(ira, &elem_ptr_instruction->base.base, buf_sprintf("out of bounds slice"));
+ return ira->codegen->invalid_inst_gen;
+ }
}
out_val->data.x_ptr.special = ConstPtrSpecialBaseArray;
out_val->data.x_ptr.data.base_array.array_val =
@@ -25245,10 +25224,6 @@ static Error ir_make_type_info_decls(IrAnalyze *ira, IrInst* source_instr, ZigVa
if ((err = type_resolve(ira->codegen, type_info_fn_decl_type, ResolveStatusSizeKnown)))
return err;
- ZigType *type_info_fn_decl_inline_type = ir_type_info_get_type(ira, "Inline", type_info_fn_decl_type);
- if ((err = type_resolve(ira->codegen, type_info_fn_decl_inline_type, ResolveStatusSizeKnown)))
- return err;
-
resolve_container_usingnamespace_decls(ira->codegen, decls_scope);
// The unresolved declarations are collected in a separate queue to avoid
@@ -25391,11 +25366,11 @@ static Error ir_make_type_info_decls(IrAnalyze *ira, IrInst* source_instr, ZigVa
fn_decl_fields[0]->special = ConstValSpecialStatic;
fn_decl_fields[0]->type = ira->codegen->builtin_types.entry_type;
fn_decl_fields[0]->data.x_type = fn_entry->type_entry;
- // inline_type: Data.FnDecl.Inline
- ensure_field_index(fn_decl_val->type, "inline_type", 1);
+ // is_noinline: bool
+ ensure_field_index(fn_decl_val->type, "is_noinline", 1);
fn_decl_fields[1]->special = ConstValSpecialStatic;
- fn_decl_fields[1]->type = type_info_fn_decl_inline_type;
- bigint_init_unsigned(&fn_decl_fields[1]->data.x_enum_tag, fn_entry->fn_inline);
+ fn_decl_fields[1]->type = ira->codegen->builtin_types.entry_bool;
+ fn_decl_fields[1]->data.x_bool = fn_entry->is_noinline;
// is_var_args: bool
ensure_field_index(fn_decl_val->type, "is_var_args", 2);
bool is_varargs = fn_node->is_var_args;
@@ -30983,7 +30958,7 @@ static IrInstGen *ir_analyze_instruction_set_align_stack(IrAnalyze *ira, IrInstS
return ira->codegen->invalid_inst_gen;
}
- if (fn_entry->fn_inline == FnInlineAlways) {
+ if (fn_entry->type_entry->data.fn.fn_type_id.cc == CallingConventionInline) {
ir_add_error(ira, &instruction->base.base, buf_sprintf("@setAlignStack in inline function"));
return ira->codegen->invalid_inst_gen;
}
@@ -31050,30 +31025,6 @@ static IrInstGen *ir_analyze_instruction_arg_type(IrAnalyze *ira, IrInstSrcArgTy
return ir_const_type(ira, &instruction->base.base, result_type);
}
-static IrInstGen *ir_analyze_instruction_tag_type(IrAnalyze *ira, IrInstSrcTagType *instruction) {
- Error err;
- IrInstGen *target_inst = instruction->target->child;
- ZigType *enum_type = ir_resolve_type(ira, target_inst);
- if (type_is_invalid(enum_type))
- return ira->codegen->invalid_inst_gen;
-
- if (enum_type->id == ZigTypeIdEnum) {
- if ((err = type_resolve(ira->codegen, enum_type, ResolveStatusSizeKnown)))
- return ira->codegen->invalid_inst_gen;
-
- return ir_const_type(ira, &instruction->base.base, enum_type->data.enumeration.tag_int_type);
- } else if (enum_type->id == ZigTypeIdUnion) {
- ZigType *tag_type = ir_resolve_union_tag_type(ira, instruction->target->base.source_node, enum_type);
- if (type_is_invalid(tag_type))
- return ira->codegen->invalid_inst_gen;
- return ir_const_type(ira, &instruction->base.base, tag_type);
- } else {
- ir_add_error(ira, &target_inst->base, buf_sprintf("expected enum or union, found '%s'",
- buf_ptr(&enum_type->name)));
- return ira->codegen->invalid_inst_gen;
- }
-}
-
static ZigType *ir_resolve_atomic_operand_type(IrAnalyze *ira, IrInstGen *op) {
ZigType *operand_type = ir_resolve_type(ira, op);
if (type_is_invalid(operand_type))
@@ -32434,8 +32385,6 @@ static IrInstGen *ir_analyze_instruction_base(IrAnalyze *ira, IrInstSrc *instruc
return ir_analyze_instruction_set_align_stack(ira, (IrInstSrcSetAlignStack *)instruction);
case IrInstSrcIdArgType:
return ir_analyze_instruction_arg_type(ira, (IrInstSrcArgType *)instruction);
- case IrInstSrcIdTagType:
- return ir_analyze_instruction_tag_type(ira, (IrInstSrcTagType *)instruction);
case IrInstSrcIdExport:
return ir_analyze_instruction_export(ira, (IrInstSrcExport *)instruction);
case IrInstSrcIdExtern:
@@ -32878,7 +32827,6 @@ bool ir_inst_src_has_side_effects(IrInstSrc *instruction) {
case IrInstSrcIdImplicitCast:
case IrInstSrcIdResolveResult:
case IrInstSrcIdArgType:
- case IrInstSrcIdTagType:
case IrInstSrcIdErrorReturnTrace:
case IrInstSrcIdErrorUnion:
case IrInstSrcIdFloatOp:
diff --git a/src/stage1/ir_print.cpp b/src/stage1/ir_print.cpp
index 572551e615..98d349012e 100644
--- a/src/stage1/ir_print.cpp
+++ b/src/stage1/ir_print.cpp
@@ -282,8 +282,6 @@ const char* ir_inst_src_type_str(IrInstSrcId id) {
return "SrcPanic";
case IrInstSrcIdTagName:
return "SrcTagName";
- case IrInstSrcIdTagType:
- return "SrcTagType";
case IrInstSrcIdFieldParentPtr:
return "SrcFieldParentPtr";
case IrInstSrcIdByteOffsetOf:
@@ -2354,12 +2352,6 @@ static void ir_print_arg_type(IrPrintSrc *irp, IrInstSrcArgType *instruction) {
fprintf(irp->f, ")");
}
-static void ir_print_enum_tag_type(IrPrintSrc *irp, IrInstSrcTagType *instruction) {
- fprintf(irp->f, "@TagType(");
- ir_print_other_inst_src(irp, instruction->target);
- fprintf(irp->f, ")");
-}
-
static void ir_print_export(IrPrintSrc *irp, IrInstSrcExport *instruction) {
fprintf(irp->f, "@export(");
ir_print_other_inst_src(irp, instruction->target);
@@ -2953,9 +2945,6 @@ static void ir_print_inst_src(IrPrintSrc *irp, IrInstSrc *instruction, bool trai
case IrInstSrcIdArgType:
ir_print_arg_type(irp, (IrInstSrcArgType *)instruction);
break;
- case IrInstSrcIdTagType:
- ir_print_enum_tag_type(irp, (IrInstSrcTagType *)instruction);
- break;
case IrInstSrcIdExport:
ir_print_export(irp, (IrInstSrcExport *)instruction);
break;
diff --git a/src/stage1/parser.cpp b/src/stage1/parser.cpp
index 3fe85adbf5..c37b3ffefb 100644
--- a/src/stage1/parser.cpp
+++ b/src/stage1/parser.cpp
@@ -693,8 +693,6 @@ static AstNode *ast_parse_top_level_decl(ParseContext *pc, VisibMod visib_mod, B
Token *first = eat_token_if(pc, TokenIdKeywordExport);
if (first == nullptr)
first = eat_token_if(pc, TokenIdKeywordExtern);
- if (first == nullptr)
- first = eat_token_if(pc, TokenIdKeywordInline);
if (first == nullptr)
first = eat_token_if(pc, TokenIdKeywordNoInline);
if (first != nullptr) {
@@ -702,7 +700,7 @@ static AstNode *ast_parse_top_level_decl(ParseContext *pc, VisibMod visib_mod, B
if (first->id == TokenIdKeywordExtern)
lib_name = eat_token_if(pc, TokenIdStringLiteral);
- if (first->id != TokenIdKeywordInline && first->id != TokenIdKeywordNoInline) {
+ if (first->id != TokenIdKeywordNoInline) {
Token *thread_local_kw = eat_token_if(pc, TokenIdKeywordThreadLocal);
AstNode *var_decl = ast_parse_var_decl(pc);
if (var_decl != nullptr) {
@@ -739,17 +737,8 @@ static AstNode *ast_parse_top_level_decl(ParseContext *pc, VisibMod visib_mod, B
if (!fn_proto->data.fn_proto.is_extern)
fn_proto->data.fn_proto.is_extern = first->id == TokenIdKeywordExtern;
fn_proto->data.fn_proto.is_export = first->id == TokenIdKeywordExport;
- switch (first->id) {
- case TokenIdKeywordInline:
- fn_proto->data.fn_proto.fn_inline = FnInlineAlways;
- break;
- case TokenIdKeywordNoInline:
- fn_proto->data.fn_proto.fn_inline = FnInlineNever;
- break;
- default:
- fn_proto->data.fn_proto.fn_inline = FnInlineAuto;
- break;
- }
+ if (first->id == TokenIdKeywordNoInline)
+ fn_proto->data.fn_proto.is_noinline = true;
fn_proto->data.fn_proto.lib_name = token_buf(lib_name);
AstNode *res = fn_proto;
diff --git a/src/target.zig b/src/target.zig
index e95149d7e0..5a884271cc 100644
--- a/src/target.zig
+++ b/src/target.zig
@@ -189,7 +189,7 @@ pub fn supportsStackProbing(target: std.Target) bool {
pub fn osToLLVM(os_tag: std.Target.Os.Tag) llvm.OSType {
return switch (os_tag) {
- .freestanding, .other => .UnknownOS,
+ .freestanding, .other, .opencl, .glsl450, .vulkan => .UnknownOS,
.windows, .uefi => .Win32,
.ananas => .Ananas,
.cloudabi => .CloudABI,
@@ -280,7 +280,7 @@ pub fn archToLLVM(arch_tag: std.Target.Cpu.Arch) llvm.ArchType {
.renderscript32 => .renderscript32,
.renderscript64 => .renderscript64,
.ve => .ve,
- .spu_2 => .UnknownArch,
+ .spu_2, .spirv32, .spirv64 => .UnknownArch,
};
}
diff --git a/src/test.zig b/src/test.zig
index 150b6496c1..07eb001e14 100644
--- a/src/test.zig
+++ b/src/test.zig
@@ -750,7 +750,7 @@ pub const TestContext = struct {
for (actual_errors.list) |actual_error| {
for (case_error_list) |case_msg, i| {
- const ex_tag: @TagType(@TypeOf(case_msg)) = case_msg;
+ const ex_tag: std.meta.Tag(@TypeOf(case_msg)) = case_msg;
switch (actual_error) {
.src => |actual_msg| {
for (actual_msg.notes) |*note| {
@@ -789,7 +789,7 @@ pub const TestContext = struct {
}
while (notes_to_check.popOrNull()) |note| {
for (case_error_list) |case_msg, i| {
- const ex_tag: @TagType(@TypeOf(case_msg)) = case_msg;
+ const ex_tag: std.meta.Tag(@TypeOf(case_msg)) = case_msg;
switch (note.*) {
.src => |actual_msg| {
for (actual_msg.notes) |*sub_note| {
diff --git a/src/tracy.zig b/src/tracy.zig
index 6f56a87ce6..3f6cf56588 100644
--- a/src/tracy.zig
+++ b/src/tracy.zig
@@ -31,7 +31,7 @@ pub const Ctx = if (enable) ___tracy_c_zone_context else struct {
pub fn end(self: Ctx) void {}
};
-pub inline fn trace(comptime src: std.builtin.SourceLocation) Ctx {
+pub fn trace(comptime src: std.builtin.SourceLocation) callconv(.Inline) Ctx {
if (!enable) return .{};
const loc: ___tracy_source_location_data = .{
diff --git a/src/translate_c.zig b/src/translate_c.zig
index c37355298a..a7d79e655a 100644
--- a/src/translate_c.zig
+++ b/src/translate_c.zig
@@ -78,6 +78,10 @@ const Scope = struct {
mangle_count: u32 = 0,
lbrace: ast.TokenIndex,
+ /// When the block corresponds to a function, keep track of the return type
+ /// so that the return expression can be cast, if necessary
+ return_type: ?clang.QualType = null,
+
fn init(c: *Context, parent: *Scope, labeled: bool) !Block {
var blk = Block{
.base = .{
@@ -209,6 +213,21 @@ const Scope = struct {
}
}
+ fn findBlockReturnType(inner: *Scope, c: *Context) ?clang.QualType {
+ var scope = inner;
+ while (true) {
+ switch (scope.id) {
+ .Root => return null,
+ .Block => {
+ const block = @fieldParentPtr(Block, "base", scope);
+ if (block.return_type) |qt| return qt;
+ scope = scope.parent.?;
+ },
+ else => scope = scope.parent.?,
+ }
+ }
+ }
+
fn getAlias(scope: *Scope, name: []const u8) []const u8 {
return switch (scope.id) {
.Root => return name,
@@ -588,6 +607,8 @@ fn visitFnDecl(c: *Context, fn_decl: *const clang.FunctionDecl) Error!void {
else => break fn_type,
}
} else unreachable;
+ const fn_ty = @ptrCast(*const clang.FunctionType, fn_type);
+ const return_qt = fn_ty.getReturnType();
const proto_node = switch (fn_type.getTypeClass()) {
.FunctionProto => blk: {
@@ -625,7 +646,9 @@ fn visitFnDecl(c: *Context, fn_decl: *const clang.FunctionDecl) Error!void {
// actual function definition with body
const body_stmt = fn_decl.getBody();
var block_scope = try Scope.Block.init(rp.c, &c.global_scope.base, false);
+ block_scope.return_type = return_qt;
defer block_scope.deinit();
+
var scope = &block_scope.base;
var param_id: c_uint = 0;
@@ -675,10 +698,7 @@ fn visitFnDecl(c: *Context, fn_decl: *const clang.FunctionDecl) Error!void {
};
// add return statement if the function didn't have one
blk: {
- const fn_ty = @ptrCast(*const clang.FunctionType, fn_type);
-
if (fn_ty.getNoReturnAttr()) break :blk;
- const return_qt = fn_ty.getReturnType();
if (isCVoid(return_qt)) break :blk;
if (block_scope.statements.items.len > 0) {
@@ -788,7 +808,7 @@ fn visitVarDecl(c: *Context, var_decl: *const clang.VarDecl, mangled_name: ?[]co
eq_tok = try appendToken(c, .Equal, "=");
if (decl_init) |expr| {
const node_or_error = if (expr.getStmtClass() == .StringLiteralClass)
- transStringLiteralAsArray(rp, &c.global_scope.base, @ptrCast(*const clang.StringLiteral, expr), type_node)
+ transStringLiteralAsArray(rp, &c.global_scope.base, @ptrCast(*const clang.StringLiteral, expr), zigArraySize(rp.c, type_node) catch 0)
else
transExprCoercing(rp, scope, expr, .used, .r_value);
init_node = node_or_error catch |err| switch (err) {
@@ -1426,30 +1446,25 @@ fn transBinaryOperator(
switch (op) {
.Assign => return try transCreateNodeAssign(rp, scope, result_used, stmt.getLHS(), stmt.getRHS()),
.Comma => {
- const block_scope = try scope.findBlockScope(rp.c);
- const expr = block_scope.base.parent == scope;
- const lparen = if (expr) try appendToken(rp.c, .LParen, "(") else undefined;
+ var block_scope = try Scope.Block.init(rp.c, scope, true);
+ const lparen = try appendToken(rp.c, .LParen, "(");
const lhs = try transExpr(rp, &block_scope.base, stmt.getLHS(), .unused, .r_value);
try block_scope.statements.append(lhs);
const rhs = try transExpr(rp, &block_scope.base, stmt.getRHS(), .used, .r_value);
- if (expr) {
- _ = try appendToken(rp.c, .Semicolon, ";");
- const break_node = try transCreateNodeBreak(rp.c, block_scope.label, rhs);
- try block_scope.statements.append(&break_node.base);
- const block_node = try block_scope.complete(rp.c);
- const rparen = try appendToken(rp.c, .RParen, ")");
- const grouped_expr = try rp.c.arena.create(ast.Node.GroupedExpression);
- grouped_expr.* = .{
- .lparen = lparen,
- .expr = block_node,
- .rparen = rparen,
- };
- return maybeSuppressResult(rp, scope, result_used, &grouped_expr.base);
- } else {
- return maybeSuppressResult(rp, scope, result_used, rhs);
- }
+ _ = try appendToken(rp.c, .Semicolon, ";");
+ const break_node = try transCreateNodeBreak(rp.c, block_scope.label, rhs);
+ try block_scope.statements.append(&break_node.base);
+ const block_node = try block_scope.complete(rp.c);
+ const rparen = try appendToken(rp.c, .RParen, ")");
+ const grouped_expr = try rp.c.arena.create(ast.Node.GroupedExpression);
+ grouped_expr.* = .{
+ .lparen = lparen,
+ .expr = block_node,
+ .rparen = rparen,
+ };
+ return maybeSuppressResult(rp, scope, result_used, &grouped_expr.base);
},
.Div => {
if (cIsSignedInteger(qt)) {
@@ -1670,7 +1685,7 @@ fn transDeclStmtOne(
const eq_token = try appendToken(c, .Equal, "=");
var init_node = if (decl_init) |expr|
if (expr.getStmtClass() == .StringLiteralClass)
- try transStringLiteralAsArray(rp, scope, @ptrCast(*const clang.StringLiteral, expr), type_node)
+ try transStringLiteralAsArray(rp, scope, @ptrCast(*const clang.StringLiteral, expr), try zigArraySize(rp.c, type_node))
else
try transExprCoercing(rp, scope, expr, .used, .r_value)
else
@@ -2026,16 +2041,32 @@ fn transIntegerLiteral(
return maybeSuppressResult(rp, scope, result_used, &as_node.base);
}
+/// In C if a function has return type `int` and the return value is a boolean
+/// expression, there is no implicit cast. So the translated Zig will need to
+/// call @boolToInt
+fn zigShouldCastBooleanReturnToInt(node: ?*ast.Node, qt: ?clang.QualType) bool {
+ if (node == null or qt == null) return false;
+ return isBoolRes(node.?) and cIsNativeInt(qt.?);
+}
+
fn transReturnStmt(
rp: RestorePoint,
scope: *Scope,
expr: *const clang.ReturnStmt,
) TransError!*ast.Node {
const return_kw = try appendToken(rp.c, .Keyword_return, "return");
- const rhs: ?*ast.Node = if (expr.getRetValue()) |val_expr|
+ var rhs: ?*ast.Node = if (expr.getRetValue()) |val_expr|
try transExprCoercing(rp, scope, val_expr, .used, .r_value)
else
null;
+ const return_qt = scope.findBlockReturnType(rp.c);
+ if (zigShouldCastBooleanReturnToInt(rhs, return_qt)) {
+ const bool_to_int_node = try rp.c.createBuiltinCall("@boolToInt", 1);
+ bool_to_int_node.params()[0] = rhs.?;
+ bool_to_int_node.rparen_token = try appendToken(rp.c, .RParen, ")");
+
+ rhs = &bool_to_int_node.base;
+ }
const return_expr = try ast.Node.ControlFlowExpression.create(rp.c.arena, .{
.ltoken = return_kw,
.tag = .Return,
@@ -2067,16 +2098,41 @@ fn transStringLiteral(
};
return maybeSuppressResult(rp, scope, result_used, &node.base);
},
- .UTF16, .UTF32, .Wide => return revertAndWarn(
- rp,
- error.UnsupportedTranslation,
- @ptrCast(*const clang.Stmt, stmt).getBeginLoc(),
- "TODO: support string literal kind {s}",
- .{kind},
- ),
+ .UTF16, .UTF32, .Wide => {
+ const node = try transWideStringLiteral(rp, scope, stmt);
+ return maybeSuppressResult(rp, scope, result_used, node);
+ },
}
}
+/// Translates a wide string literal as a global "anonymous" array of the relevant-sized
+/// integer type + null terminator, and returns an identifier node for it
+fn transWideStringLiteral(rp: RestorePoint, scope: *Scope, stmt: *const clang.StringLiteral) TransError!*ast.Node {
+ const str_type = @tagName(stmt.getKind());
+ const mangle = rp.c.getMangle();
+ const name = try std.fmt.allocPrint(rp.c.arena, "zig.{s}_string_{d}", .{ str_type, mangle });
+
+ const const_tok = try appendToken(rp.c, .Keyword_const, "const");
+ const name_tok = try appendIdentifier(rp.c, name);
+ const eq_tok = try appendToken(rp.c, .Equal, "=");
+ var semi_tok: ast.TokenIndex = undefined;
+
+ const lit_array = try transStringLiteralAsArray(rp, scope, stmt, stmt.getLength() + 1);
+
+ semi_tok = try appendToken(rp.c, .Semicolon, ";");
+ const var_decl_node = try ast.Node.VarDecl.create(rp.c.arena, .{
+ .name_token = name_tok,
+ .mut_token = const_tok,
+ .semicolon_token = semi_tok,
+ }, .{
+ .visib_token = null,
+ .eq_token = eq_tok,
+ .init_node = lit_array,
+ });
+ try addTopLevelDecl(rp.c, name, &var_decl_node.base);
+ return transCreateNodeIdentifier(rp.c, name);
+}
+
/// Parse the size of an array back out from an ast Node.
fn zigArraySize(c: *Context, node: *ast.Node) TransError!usize {
if (node.castTag(.ArrayType)) |array| {
@@ -2089,17 +2145,18 @@ fn zigArraySize(c: *Context, node: *ast.Node) TransError!usize {
}
/// Translate a string literal to an array of integers. Used when an
-/// array is initialized from a string literal. `target_node` is the
-/// array being initialized. If the string literal is larger than the
-/// array, truncate the string. If the array is larger than the string
-/// literal, pad the array with 0's
+/// array is initialized from a string literal. `array_size` is the
+/// size of the array being initialized. If the string literal is larger
+/// than the array, truncate the string. If the array is larger than the
+/// string literal, pad the array with 0's
fn transStringLiteralAsArray(
rp: RestorePoint,
scope: *Scope,
stmt: *const clang.StringLiteral,
- target_node: *ast.Node,
+ array_size: usize,
) TransError!*ast.Node {
- const array_size = try zigArraySize(rp.c, target_node);
+ if (array_size == 0) return error.UnsupportedType;
+
const str_length = stmt.getLength();
const expr_base = @ptrCast(*const clang.Expr, stmt);
@@ -3190,6 +3247,38 @@ fn transArrayAccess(rp: RestorePoint, scope: *Scope, stmt: *const clang.ArraySub
return maybeSuppressResult(rp, scope, result_used, &node.base);
}
+/// Check if an expression is ultimately a reference to a function declaration
+/// (which means it should not be unwrapped with `.?` in translated code)
+fn cIsFunctionDeclRef(expr: *const clang.Expr) bool {
+ switch (expr.getStmtClass()) {
+ .ParenExprClass => {
+ const op_expr = @ptrCast(*const clang.ParenExpr, expr).getSubExpr();
+ return cIsFunctionDeclRef(op_expr);
+ },
+ .DeclRefExprClass => {
+ const decl_ref = @ptrCast(*const clang.DeclRefExpr, expr);
+ const value_decl = decl_ref.getDecl();
+ const qt = value_decl.getType();
+ return qualTypeChildIsFnProto(qt);
+ },
+ .ImplicitCastExprClass => {
+ const implicit_cast = @ptrCast(*const clang.ImplicitCastExpr, expr);
+ const cast_kind = implicit_cast.getCastKind();
+ if (cast_kind == .BuiltinFnToFnPtr) return true;
+ if (cast_kind == .FunctionToPointerDecay) {
+ return cIsFunctionDeclRef(implicit_cast.getSubExpr());
+ }
+ return false;
+ },
+ .UnaryOperatorClass => {
+ const un_op = @ptrCast(*const clang.UnaryOperator, expr);
+ const opcode = un_op.getOpcode();
+ return (opcode == .AddrOf or opcode == .Deref) and cIsFunctionDeclRef(un_op.getSubExpr());
+ },
+ else => return false,
+ }
+}
+
fn transCallExpr(rp: RestorePoint, scope: *Scope, stmt: *const clang.CallExpr, result_used: ResultUsed) TransError!*ast.Node {
const callee = stmt.getCallee();
var raw_fn_expr = try transExpr(rp, scope, callee, .used, .r_value);
@@ -3197,24 +3286,9 @@ fn transCallExpr(rp: RestorePoint, scope: *Scope, stmt: *const clang.CallExpr, r
var is_ptr = false;
const fn_ty = qualTypeGetFnProto(callee.getType(), &is_ptr);
- const fn_expr = if (is_ptr and fn_ty != null) blk: {
- if (callee.getStmtClass() == .ImplicitCastExprClass) {
- const implicit_cast = @ptrCast(*const clang.ImplicitCastExpr, callee);
- const cast_kind = implicit_cast.getCastKind();
- if (cast_kind == .BuiltinFnToFnPtr) break :blk raw_fn_expr;
- if (cast_kind == .FunctionToPointerDecay) {
- const subexpr = implicit_cast.getSubExpr();
- if (subexpr.getStmtClass() == .DeclRefExprClass) {
- const decl_ref = @ptrCast(*const clang.DeclRefExpr, subexpr);
- const named_decl = decl_ref.getFoundDecl();
- if (@ptrCast(*const clang.Decl, named_decl).getKind() == .Function) {
- break :blk raw_fn_expr;
- }
- }
- }
- }
- break :blk try transCreateNodeUnwrapNull(rp.c, raw_fn_expr);
- } else
+ const fn_expr = if (is_ptr and fn_ty != null and !cIsFunctionDeclRef(callee))
+ try transCreateNodeUnwrapNull(rp.c, raw_fn_expr)
+ else
raw_fn_expr;
const num_args = stmt.getNumArgs();
@@ -3270,7 +3344,7 @@ const ClangFunctionType = union(enum) {
NoProto: *const clang.FunctionType,
fn getReturnType(self: @This()) clang.QualType {
- switch (@as(@TagType(@This()), self)) {
+ switch (@as(std.meta.Tag(@This()), self)) {
.Proto => return self.Proto.getReturnType(),
.NoProto => return self.NoProto.getReturnType(),
}
@@ -3361,6 +3435,9 @@ fn transUnaryOperator(rp: RestorePoint, scope: *Scope, stmt: *const clang.UnaryO
else
return transCreatePreCrement(rp, scope, stmt, .AssignSub, .MinusEqual, "-=", used),
.AddrOf => {
+ if (cIsFunctionDeclRef(op_expr)) {
+ return transExpr(rp, scope, op_expr, used, .r_value);
+ }
const op_node = try transCreateNodeSimplePrefixOp(rp.c, .AddressOf, .Ampersand, "&");
op_node.rhs = try transExpr(rp, scope, op_expr, used, .r_value);
return &op_node.base;
@@ -4647,7 +4724,6 @@ fn transCreateNodeMacroFn(c: *Context, name: []const u8, ref: *ast.Node, proto_a
const scope = &c.global_scope.base;
const pub_tok = try appendToken(c, .Keyword_pub, "pub");
- const inline_tok = try appendToken(c, .Keyword_inline, "inline");
const fn_tok = try appendToken(c, .Keyword_fn, "fn");
const name_tok = try appendIdentifier(c, name);
_ = try appendToken(c, .LParen, "(");
@@ -4675,6 +4751,11 @@ fn transCreateNodeMacroFn(c: *Context, name: []const u8, ref: *ast.Node, proto_a
_ = try appendToken(c, .RParen, ")");
+ _ = try appendToken(c, .Keyword_callconv, "callconv");
+ _ = try appendToken(c, .LParen, "(");
+ const callconv_expr = try transCreateNodeEnumLiteral(c, "Inline");
+ _ = try appendToken(c, .RParen, ")");
+
const block_lbrace = try appendToken(c, .LBrace, "{");
const return_kw = try appendToken(c, .Keyword_return, "return");
@@ -4714,8 +4795,8 @@ fn transCreateNodeMacroFn(c: *Context, name: []const u8, ref: *ast.Node, proto_a
}, .{
.visib_token = pub_tok,
.name_token = name_tok,
- .extern_export_inline_token = inline_tok,
.body_node = &block.base,
+ .callconv_expr = callconv_expr,
});
mem.copy(ast.Node.FnProto.ParamDecl, fn_proto.params(), fn_params.items);
return &fn_proto.base;
@@ -5665,7 +5746,6 @@ fn transMacroFnDefine(c: *Context, m: *MacroCtx) ParseError!void {
const scope = &block_scope.base;
const pub_tok = try appendToken(c, .Keyword_pub, "pub");
- const inline_tok = try appendToken(c, .Keyword_inline, "inline");
const fn_tok = try appendToken(c, .Keyword_fn, "fn");
const name_tok = try appendIdentifier(c, m.name);
_ = try appendToken(c, .LParen, "(");
@@ -5710,6 +5790,11 @@ fn transMacroFnDefine(c: *Context, m: *MacroCtx) ParseError!void {
_ = try appendToken(c, .RParen, ")");
+ _ = try appendToken(c, .Keyword_callconv, "callconv");
+ _ = try appendToken(c, .LParen, "(");
+ const callconv_expr = try transCreateNodeEnumLiteral(c, "Inline");
+ _ = try appendToken(c, .RParen, ")");
+
const type_of = try c.createBuiltinCall("@TypeOf", 1);
const return_kw = try appendToken(c, .Keyword_return, "return");
@@ -5741,9 +5826,9 @@ fn transMacroFnDefine(c: *Context, m: *MacroCtx) ParseError!void {
.return_type = .{ .Explicit = &type_of.base },
}, .{
.visib_token = pub_tok,
- .extern_export_inline_token = inline_tok,
.name_token = name_tok,
.body_node = block_node,
+ .callconv_expr = callconv_expr,
});
mem.copy(ast.Node.FnProto.ParamDecl, fn_proto.params(), fn_params.items);
diff --git a/src/type.zig b/src/type.zig
index be61f57c1d..e1006e554c 100644
--- a/src/type.zig
+++ b/src/type.zig
@@ -110,7 +110,7 @@ pub const Type = extern union {
pub fn tag(self: Type) Tag {
if (self.tag_if_small_enough < Tag.no_payload_count) {
- return @intToEnum(Tag, @intCast(@TagType(Tag), self.tag_if_small_enough));
+ return @intToEnum(Tag, @intCast(std.meta.Tag(Tag), self.tag_if_small_enough));
} else {
return self.ptr_otherwise.tag;
}
@@ -552,7 +552,9 @@ pub const Type = extern union {
if (i != 0) try out_stream.writeAll(", ");
try param_type.format("", .{}, out_stream);
}
- try out_stream.writeAll(") ");
+ try out_stream.writeAll(") callconv(.");
+ try out_stream.writeAll(@tagName(payload.cc));
+ try out_stream.writeAll(")");
ty = payload.return_type;
continue;
},
@@ -3597,6 +3599,9 @@ pub const CType = enum {
.amdpal,
.hermit,
.hurd,
+ .opencl,
+ .glsl450,
+ .vulkan,
=> @panic("TODO specify the C integer and float type sizes for this OS"),
}
}
diff --git a/src/value.zig b/src/value.zig
index 5b0563ca98..50298da682 100644
--- a/src/value.zig
+++ b/src/value.zig
@@ -223,7 +223,7 @@ pub const Value = extern union {
pub fn tag(self: Value) Tag {
if (self.tag_if_small_enough < Tag.no_payload_count) {
- return @intToEnum(Tag, @intCast(@TagType(Tag), self.tag_if_small_enough));
+ return @intToEnum(Tag, @intCast(std.meta.Tag(Tag), self.tag_if_small_enough));
} else {
return self.ptr_otherwise.tag;
}
diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp
index 9bd68859e8..8dc6a0823b 100644
--- a/src/zig_clang.cpp
+++ b/src/zig_clang.cpp
@@ -2773,6 +2773,11 @@ struct ZigClangSourceLocation ZigClangUnaryOperator_getBeginLoc(const struct Zig
return bitcast(casted->getBeginLoc());
}
+struct ZigClangQualType ZigClangValueDecl_getType(const struct ZigClangValueDecl *self) {
+ auto casted = reinterpret_cast(self);
+ return bitcast(casted->getType());
+}
+
const struct ZigClangExpr *ZigClangWhileStmt_getCond(const struct ZigClangWhileStmt *self) {
auto casted = reinterpret_cast(self);
return reinterpret_cast(casted->getCond());
diff --git a/src/zig_clang.h b/src/zig_clang.h
index 42587b1719..6fe1da0bc1 100644
--- a/src/zig_clang.h
+++ b/src/zig_clang.h
@@ -1200,6 +1200,8 @@ ZIG_EXTERN_C struct ZigClangQualType ZigClangUnaryOperator_getType(const struct
ZIG_EXTERN_C const struct ZigClangExpr *ZigClangUnaryOperator_getSubExpr(const struct ZigClangUnaryOperator *);
ZIG_EXTERN_C struct ZigClangSourceLocation ZigClangUnaryOperator_getBeginLoc(const struct ZigClangUnaryOperator *);
+ZIG_EXTERN_C struct ZigClangQualType ZigClangValueDecl_getType(const struct ZigClangValueDecl *);
+
ZIG_EXTERN_C const struct ZigClangExpr *ZigClangWhileStmt_getCond(const struct ZigClangWhileStmt *);
ZIG_EXTERN_C const struct ZigClangStmt *ZigClangWhileStmt_getBody(const struct ZigClangWhileStmt *);
diff --git a/src/zir.zig b/src/zir.zig
index 5b683c7fbf..d8ac023562 100644
--- a/src/zir.zig
+++ b/src/zir.zig
@@ -59,7 +59,7 @@ pub const Inst = struct {
/// Inline assembly.
@"asm",
/// Bitwise AND. `&`
- bitand,
+ bit_and,
/// TODO delete this instruction, it has no purpose.
bitcast,
/// An arbitrary typed pointer is pointer-casted to a new Pointer.
@@ -71,9 +71,9 @@ pub const Inst = struct {
/// The new result location pointer has an inferred type.
bitcast_result_ptr,
/// Bitwise NOT. `~`
- bitnot,
+ bit_not,
/// Bitwise OR. `|`
- bitor,
+ bit_or,
/// A labeled block of code, which can return a value.
block,
/// A block of code, which can return a value. There are no instructions that break out of
@@ -83,17 +83,17 @@ pub const Inst = struct {
block_comptime,
/// Same as `block_flat` but additionally makes the inner instructions execute at comptime.
block_comptime_flat,
- /// Boolean AND. See also `bitand`.
- booland,
- /// Boolean NOT. See also `bitnot`.
- boolnot,
- /// Boolean OR. See also `bitor`.
- boolor,
+ /// Boolean AND. See also `bit_and`.
+ bool_and,
+ /// Boolean NOT. See also `bit_not`.
+ bool_not,
+ /// Boolean OR. See also `bit_or`.
+ bool_or,
/// Return a value from a `Block`.
@"break",
breakpoint,
/// Same as `break` but without an operand; the operand is assumed to be the void value.
- breakvoid,
+ break_void,
/// Function call.
call,
/// `<`
@@ -112,16 +112,10 @@ pub const Inst = struct {
/// as type coercion from the new element type to the old element type.
/// LHS is destination element type, RHS is result pointer.
coerce_result_ptr,
- /// This instruction does a `coerce_result_ptr` operation on a `Block`'s
- /// result location pointer, whose type is inferred by peer type resolution on the
- /// `Block`'s corresponding `break` instructions.
- coerce_result_block_ptr,
- /// Equivalent to `as(ptr_child_type(typeof(ptr)), value)`.
- coerce_to_ptr_elem,
/// Emit an error message and fail compilation.
- compileerror,
+ compile_error,
/// Log compile time variables and emit an error message.
- compilelog,
+ compile_log,
/// Conditional branch. Splits control flow based on a boolean condition value.
condbr,
/// Special case, has no textual representation.
@@ -135,11 +129,11 @@ pub const Inst = struct {
/// Declares the beginning of a statement. Used for debug info.
dbg_stmt,
/// Represents a pointer to a global decl.
- declref,
+ decl_ref,
/// Represents a pointer to a global decl by string name.
- declref_str,
- /// Equivalent to a declref followed by deref.
- declval,
+ decl_ref_str,
+ /// Equivalent to a decl_ref followed by deref.
+ decl_val,
/// Load the value from a pointer.
deref,
/// Arithmetic division. Asserts no integer overflow.
@@ -185,7 +179,7 @@ pub const Inst = struct {
/// can hold the same mathematical value.
intcast,
/// Make an integer type out of signedness and bit count.
- inttype,
+ int_type,
/// Return a boolean false if an optional is null. `x != null`
is_non_null,
/// Return a boolean true if an optional is null. `x == null`
@@ -232,7 +226,7 @@ pub const Inst = struct {
/// Sends control flow back to the function's callee. Takes an operand as the return value.
@"return",
/// Same as `return` but there is no operand; the operand is implicitly the void value.
- returnvoid,
+ return_void,
/// Changes the maximum number of backwards branches that compile-time
/// code execution can use before giving up and making a compile error.
set_eval_branch_quota,
@@ -270,6 +264,9 @@ pub const Inst = struct {
/// Write a value to a pointer. For loading, see `deref`.
store,
/// Same as `store` but the type of the value being stored will be used to infer
+ /// the block type. The LHS is the pointer to store to.
+ store_to_block_ptr,
+ /// Same as `store` but the type of the value being stored will be used to infer
/// the pointer type.
store_to_inferred_ptr,
/// String Literal. Makes an anonymous Decl and then takes a pointer to it.
@@ -286,11 +283,11 @@ pub const Inst = struct {
typeof_peer,
/// Asserts control-flow will not reach this instruction. Not safety checked - the compiler
/// will assume the correctness of this instruction.
- unreach_nocheck,
+ unreachable_unsafe,
/// Asserts control-flow will not reach this instruction. In safety-checked modes,
/// this will generate a call to the panic function unless it can be proven unreachable
/// by the compiler.
- @"unreachable",
+ unreachable_safe,
/// Bitwise XOR. `^`
xor,
/// Create an optional type '?T'
@@ -339,6 +336,8 @@ pub const Inst = struct {
enum_literal,
/// Create an enum type.
enum_type,
+ /// Does nothing; returns a void value.
+ void_value,
/// A switch expression.
switchbr,
/// A range in a switch case, `lhs...rhs`.
@@ -352,18 +351,19 @@ pub const Inst = struct {
.alloc_inferred_mut,
.breakpoint,
.dbg_stmt,
- .returnvoid,
+ .return_void,
.ret_ptr,
.ret_type,
.unreach_nocheck,
.@"unreachable",
.arg,
+ .void_value,
=> NoOp,
.alloc,
.alloc_mut,
- .boolnot,
- .compileerror,
+ .bool_not,
+ .compile_error,
.deref,
.@"return",
.is_null,
@@ -401,7 +401,7 @@ pub const Inst = struct {
.err_union_code_ptr,
.ensure_err_payload_void,
.anyframe_type,
- .bitnot,
+ .bit_not,
.import,
.set_eval_branch_quota,
.indexable_ptr_len,
@@ -412,10 +412,10 @@ pub const Inst = struct {
.array_cat,
.array_mul,
.array_type,
- .bitand,
- .bitor,
- .booland,
- .boolor,
+ .bit_and,
+ .bit_or,
+ .bool_and,
+ .bool_or,
.div,
.mod_rem,
.mul,
@@ -423,6 +423,7 @@ pub const Inst = struct {
.shl,
.shr,
.store,
+ .store_to_block_ptr,
.store_to_inferred_ptr,
.sub,
.subwrap,
@@ -452,19 +453,17 @@ pub const Inst = struct {
.array_type_sentinel => ArrayTypeSentinel,
.@"break" => Break,
- .breakvoid => BreakVoid,
+ .break_void => BreakVoid,
.call => Call,
- .coerce_to_ptr_elem => CoerceToPtrElem,
- .declref => DeclRef,
- .declref_str => DeclRefStr,
- .declval => DeclVal,
- .coerce_result_block_ptr => CoerceResultBlockPtr,
- .compilelog => CompileLog,
+ .decl_ref => DeclRef,
+ .decl_ref_str => DeclRefStr,
+ .decl_val => DeclVal,
+ .compile_log => CompileLog,
.loop => Loop,
.@"const" => Const,
.str => Str,
.int => Int,
- .inttype => IntType,
+ .int_type => IntType,
.field_ptr, .field_val => Field,
.field_ptr_named, .field_val_named => FieldNamed,
.@"asm" => Asm,
@@ -479,7 +478,6 @@ pub const Inst = struct {
.enum_literal => EnumLiteral,
.error_set => ErrorSet,
.slice => Slice,
- .switchbr => SwitchBr,
.typeof_peer => TypeOfPeer,
.container_field_named => ContainerFieldNamed,
.container_field_typed => ContainerFieldTyped,
@@ -487,6 +485,7 @@ pub const Inst = struct {
.enum_type => EnumType,
.union_type => UnionType,
.struct_type => StructType,
+ .switchbr => SwitchBr,
};
}
@@ -508,18 +507,18 @@ pub const Inst = struct {
.arg,
.as,
.@"asm",
- .bitand,
+ .bit_and,
.bitcast,
.bitcast_ref,
.bitcast_result_ptr,
- .bitor,
+ .bit_or,
.block,
.block_flat,
.block_comptime,
.block_comptime_flat,
- .boolnot,
- .booland,
- .boolor,
+ .bool_not,
+ .bool_and,
+ .bool_or,
.breakpoint,
.call,
.cmp_lt,
@@ -529,13 +528,11 @@ pub const Inst = struct {
.cmp_gt,
.cmp_neq,
.coerce_result_ptr,
- .coerce_result_block_ptr,
- .coerce_to_ptr_elem,
.@"const",
.dbg_stmt,
- .declref,
- .declref_str,
- .declval,
+ .decl_ref,
+ .decl_ref_str,
+ .decl_val,
.deref,
.div,
.elem_ptr,
@@ -552,7 +549,7 @@ pub const Inst = struct {
.fntype,
.int,
.intcast,
- .inttype,
+ .int_type,
.is_non_null,
.is_null,
.is_non_null_ptr,
@@ -579,6 +576,7 @@ pub const Inst = struct {
.mut_slice_type,
.const_slice_type,
.store,
+ .store_to_block_ptr,
.store_to_inferred_ptr,
.str,
.sub,
@@ -602,31 +600,32 @@ pub const Inst = struct {
.merge_error_sets,
.anyframe_type,
.error_union_type,
- .bitnot,
+ .bit_not,
.error_set,
.slice,
.slice_start,
.import,
- .switch_range,
.typeof_peer,
.resolve_inferred_alloc,
.set_eval_branch_quota,
- .compilelog,
+ .compile_log,
.enum_type,
.union_type,
.struct_type,
+ .void_value,
+ .switch_range,
+ .switchbr,
=> false,
.@"break",
- .breakvoid,
+ .break_void,
.condbr,
- .compileerror,
+ .compile_error,
.@"return",
- .returnvoid,
- .unreach_nocheck,
- .@"unreachable",
+ .return_void,
+ .unreachable_unsafe,
+ .unreachable_safe,
.loop,
- .switchbr,
.container_field_named,
.container_field_typed,
.container_field,
@@ -707,7 +706,7 @@ pub const Inst = struct {
};
pub const BreakVoid = struct {
- pub const base_tag = Tag.breakvoid;
+ pub const base_tag = Tag.break_void;
base: Inst,
positionals: struct {
@@ -729,19 +728,8 @@ pub const Inst = struct {
},
};
- pub const CoerceToPtrElem = struct {
- pub const base_tag = Tag.coerce_to_ptr_elem;
- base: Inst,
-
- positionals: struct {
- ptr: *Inst,
- value: *Inst,
- },
- kw_args: struct {},
- };
-
pub const DeclRef = struct {
- pub const base_tag = Tag.declref;
+ pub const base_tag = Tag.decl_ref;
base: Inst,
positionals: struct {
@@ -751,7 +739,7 @@ pub const Inst = struct {
};
pub const DeclRefStr = struct {
- pub const base_tag = Tag.declref_str;
+ pub const base_tag = Tag.decl_ref_str;
base: Inst,
positionals: struct {
@@ -761,7 +749,7 @@ pub const Inst = struct {
};
pub const DeclVal = struct {
- pub const base_tag = Tag.declval;
+ pub const base_tag = Tag.decl_val;
base: Inst,
positionals: struct {
@@ -770,19 +758,8 @@ pub const Inst = struct {
kw_args: struct {},
};
- pub const CoerceResultBlockPtr = struct {
- pub const base_tag = Tag.coerce_result_block_ptr;
- base: Inst,
-
- positionals: struct {
- dest_type: *Inst,
- block: *Block,
- },
- kw_args: struct {},
- };
-
pub const CompileLog = struct {
- pub const base_tag = Tag.compilelog;
+ pub const base_tag = Tag.compile_log;
base: Inst,
positionals: struct {
@@ -876,9 +853,7 @@ pub const Inst = struct {
fn_type: *Inst,
body: Body,
},
- kw_args: struct {
- is_inline: bool = false,
- },
+ kw_args: struct {},
};
pub const FnType = struct {
@@ -888,14 +863,13 @@ pub const Inst = struct {
positionals: struct {
param_types: []*Inst,
return_type: *Inst,
+ cc: *Inst,
},
- kw_args: struct {
- cc: std.builtin.CallingConvention = .Unspecified,
- },
+ kw_args: struct {},
};
pub const IntType = struct {
- pub const base_tag = Tag.inttype;
+ pub const base_tag = Tag.int_type;
base: Inst,
positionals: struct {
@@ -1104,32 +1078,6 @@ pub const Inst = struct {
},
};
- pub const SwitchBr = struct {
- pub const base_tag = Tag.switchbr;
- base: Inst,
-
- positionals: struct {
- target_ptr: *Inst,
- /// List of all individual items and ranges
- items: []*Inst,
- cases: []Case,
- else_body: Body,
- },
- kw_args: struct {
- /// Pointer to first range if such exists.
- range: ?*Inst = null,
- special_prong: enum {
- none,
- @"else",
- underscore,
- } = .none,
- },
-
- pub const Case = struct {
- item: *Inst,
- body: Body,
- };
- };
pub const TypeOfPeer = struct {
pub const base_tag = .typeof_peer;
base: Inst,
@@ -1220,6 +1168,36 @@ pub const Inst = struct {
none,
};
};
+
+ pub const SwitchBr = struct {
+ pub const base_tag = Tag.switchbr;
+ base: Inst,
+
+ positionals: struct {
+ target: *Inst,
+ /// List of all individual items and ranges
+ items: []*Inst,
+ cases: []Case,
+ else_body: Body,
+ },
+ kw_args: struct {
+ /// Pointer to first range if such exists.
+ range: ?*Inst = null,
+ special_prong: SpecialProng = .none,
+ },
+
+ // Not anonymous due to stage1 limitations
+ pub const SpecialProng = enum {
+ none,
+ @"else",
+ underscore,
+ };
+
+ pub const Case = struct {
+ item: *Inst,
+ body: Body,
+ };
+ };
};
pub const ErrorMsg = struct {
@@ -1463,7 +1441,7 @@ const Writer = struct {
TypedValue => return stream.print("TypedValue{{ .ty = {}, .val = {}}}", .{ param.ty, param.val }),
*IrModule.Decl => return stream.print("Decl({s})", .{param.name}),
*Inst.Block => {
- const name = self.block_table.get(param).?;
+ const name = self.block_table.get(param) orelse "!BADREF!";
return stream.print("\"{}\"", .{std.zig.fmtEscapes(name)});
},
*Inst.Loop => {
@@ -1632,10 +1610,10 @@ const DumpTzir = struct {
.cmp_gt,
.cmp_neq,
.store,
- .booland,
- .boolor,
- .bitand,
- .bitor,
+ .bool_and,
+ .bool_or,
+ .bit_and,
+ .bit_or,
.xor,
=> {
const bin_op = inst.cast(ir.Inst.BinOp).?;
@@ -1649,9 +1627,15 @@ const DumpTzir = struct {
try dtz.findConst(br.operand);
},
- .brvoid => {
- const brvoid = inst.castTag(.brvoid).?;
- try dtz.findConst(&brvoid.block.base);
+ .br_block_flat => {
+ const br_block_flat = inst.castTag(.br_block_flat).?;
+ try dtz.findConst(&br_block_flat.block.base);
+ try dtz.fetchInstsAndResolveConsts(br_block_flat.body);
+ },
+
+ .br_void => {
+ const br_void = inst.castTag(.br_void).?;
+ try dtz.findConst(&br_void.block.base);
},
.block => {
@@ -1742,10 +1726,10 @@ const DumpTzir = struct {
.cmp_gt,
.cmp_neq,
.store,
- .booland,
- .boolor,
- .bitand,
- .bitor,
+ .bool_and,
+ .bool_or,
+ .bit_and,
+ .bit_or,
.xor,
=> {
const bin_op = inst.cast(ir.Inst.BinOp).?;
@@ -1794,9 +1778,27 @@ const DumpTzir = struct {
}
},
- .brvoid => {
- const brvoid = inst.castTag(.brvoid).?;
- const kinky = try dtz.writeInst(writer, &brvoid.block.base);
+ .br_block_flat => {
+ const br_block_flat = inst.castTag(.br_block_flat).?;
+ const block_kinky = try dtz.writeInst(writer, &br_block_flat.block.base);
+ if (block_kinky != null) {
+ try writer.writeAll(", { // Instruction does not dominate all uses!\n");
+ } else {
+ try writer.writeAll(", {\n");
+ }
+
+ const old_indent = dtz.indent;
+ dtz.indent += 2;
+ try dtz.dumpBody(br_block_flat.body, writer);
+ dtz.indent = old_indent;
+
+ try writer.writeByteNTimes(' ', dtz.indent);
+ try writer.writeAll("})\n");
+ },
+
+ .br_void => {
+ const br_void = inst.castTag(.br_void).?;
+ const kinky = try dtz.writeInst(writer, &br_void.block.base);
if (kinky) |_| {
try writer.writeAll(") // Instruction does not dominate all uses!\n");
} else {
@@ -1807,7 +1809,7 @@ const DumpTzir = struct {
.block => {
const block = inst.castTag(.block).?;
- try writer.writeAll("\n");
+ try writer.writeAll("{\n");
const old_indent = dtz.indent;
dtz.indent += 2;
@@ -1815,7 +1817,7 @@ const DumpTzir = struct {
dtz.indent = old_indent;
try writer.writeByteNTimes(' ', dtz.indent);
- try writer.writeAll(")\n");
+ try writer.writeAll("})\n");
},
.condbr => {
@@ -1845,7 +1847,7 @@ const DumpTzir = struct {
.loop => {
const loop = inst.castTag(.loop).?;
- try writer.writeAll("\n");
+ try writer.writeAll("{\n");
const old_indent = dtz.indent;
dtz.indent += 2;
@@ -1853,7 +1855,7 @@ const DumpTzir = struct {
dtz.indent = old_indent;
try writer.writeByteNTimes(' ', dtz.indent);
- try writer.writeAll(")\n");
+ try writer.writeAll("})\n");
},
.call => {
diff --git a/src/zir_sema.zig b/src/zir_sema.zig
index 0caaa2a03f..480e0b4c33 100644
--- a/src/zir_sema.zig
+++ b/src/zir_sema.zig
@@ -28,144 +28,134 @@ const Decl = Module.Decl;
pub fn analyzeInst(mod: *Module, scope: *Scope, old_inst: *zir.Inst) InnerError!*Inst {
switch (old_inst.tag) {
- .alloc => return analyzeInstAlloc(mod, scope, old_inst.castTag(.alloc).?),
- .alloc_mut => return analyzeInstAllocMut(mod, scope, old_inst.castTag(.alloc_mut).?),
- .alloc_inferred => return analyzeInstAllocInferred(
- mod,
- scope,
- old_inst.castTag(.alloc_inferred).?,
- .inferred_alloc_const,
- ),
- .alloc_inferred_mut => return analyzeInstAllocInferred(
- mod,
- scope,
- old_inst.castTag(.alloc_inferred_mut).?,
- .inferred_alloc_mut,
- ),
- .arg => return analyzeInstArg(mod, scope, old_inst.castTag(.arg).?),
- .bitcast_ref => return bitCastRef(mod, scope, old_inst.castTag(.bitcast_ref).?),
- .bitcast_result_ptr => return bitCastResultPtr(mod, scope, old_inst.castTag(.bitcast_result_ptr).?),
- .block => return analyzeInstBlock(mod, scope, old_inst.castTag(.block).?, false),
- .block_comptime => return analyzeInstBlock(mod, scope, old_inst.castTag(.block_comptime).?, true),
- .block_flat => return analyzeInstBlockFlat(mod, scope, old_inst.castTag(.block_flat).?, false),
- .block_comptime_flat => return analyzeInstBlockFlat(mod, scope, old_inst.castTag(.block_comptime_flat).?, true),
- .@"break" => return analyzeInstBreak(mod, scope, old_inst.castTag(.@"break").?),
- .breakpoint => return analyzeInstBreakpoint(mod, scope, old_inst.castTag(.breakpoint).?),
- .breakvoid => return analyzeInstBreakVoid(mod, scope, old_inst.castTag(.breakvoid).?),
- .call => return call(mod, scope, old_inst.castTag(.call).?),
- .coerce_result_block_ptr => return analyzeInstCoerceResultBlockPtr(mod, scope, old_inst.castTag(.coerce_result_block_ptr).?),
- .coerce_result_ptr => return analyzeInstCoerceResultPtr(mod, scope, old_inst.castTag(.coerce_result_ptr).?),
- .coerce_to_ptr_elem => return analyzeInstCoerceToPtrElem(mod, scope, old_inst.castTag(.coerce_to_ptr_elem).?),
- .compileerror => return analyzeInstCompileError(mod, scope, old_inst.castTag(.compileerror).?),
- .compilelog => return analyzeInstCompileLog(mod, scope, old_inst.castTag(.compilelog).?),
- .@"const" => return analyzeInstConst(mod, scope, old_inst.castTag(.@"const").?),
- .dbg_stmt => return analyzeInstDbgStmt(mod, scope, old_inst.castTag(.dbg_stmt).?),
- .declref => return declRef(mod, scope, old_inst.castTag(.declref).?),
- .declref_str => return analyzeInstDeclRefStr(mod, scope, old_inst.castTag(.declref_str).?),
- .declval => return declVal(mod, scope, old_inst.castTag(.declval).?),
- .ensure_result_used => return analyzeInstEnsureResultUsed(mod, scope, old_inst.castTag(.ensure_result_used).?),
- .ensure_result_non_error => return analyzeInstEnsureResultNonError(mod, scope, old_inst.castTag(.ensure_result_non_error).?),
- .indexable_ptr_len => return indexablePtrLen(mod, scope, old_inst.castTag(.indexable_ptr_len).?),
- .ref => return ref(mod, scope, old_inst.castTag(.ref).?),
- .resolve_inferred_alloc => return analyzeInstResolveInferredAlloc(mod, scope, old_inst.castTag(.resolve_inferred_alloc).?),
- .ret_ptr => return analyzeInstRetPtr(mod, scope, old_inst.castTag(.ret_ptr).?),
- .ret_type => return analyzeInstRetType(mod, scope, old_inst.castTag(.ret_type).?),
- .store_to_inferred_ptr => return analyzeInstStoreToInferredPtr(mod, scope, old_inst.castTag(.store_to_inferred_ptr).?),
- .single_const_ptr_type => return analyzeInstSimplePtrType(mod, scope, old_inst.castTag(.single_const_ptr_type).?, false, .One),
- .single_mut_ptr_type => return analyzeInstSimplePtrType(mod, scope, old_inst.castTag(.single_mut_ptr_type).?, true, .One),
- .many_const_ptr_type => return analyzeInstSimplePtrType(mod, scope, old_inst.castTag(.many_const_ptr_type).?, false, .Many),
- .many_mut_ptr_type => return analyzeInstSimplePtrType(mod, scope, old_inst.castTag(.many_mut_ptr_type).?, true, .Many),
- .c_const_ptr_type => return analyzeInstSimplePtrType(mod, scope, old_inst.castTag(.c_const_ptr_type).?, false, .C),
- .c_mut_ptr_type => return analyzeInstSimplePtrType(mod, scope, old_inst.castTag(.c_mut_ptr_type).?, true, .C),
- .const_slice_type => return analyzeInstSimplePtrType(mod, scope, old_inst.castTag(.const_slice_type).?, false, .Slice),
- .mut_slice_type => return analyzeInstSimplePtrType(mod, scope, old_inst.castTag(.mut_slice_type).?, true, .Slice),
- .ptr_type => return analyzeInstPtrType(mod, scope, old_inst.castTag(.ptr_type).?),
- .store => return analyzeInstStore(mod, scope, old_inst.castTag(.store).?),
- .set_eval_branch_quota => return analyzeInstSetEvalBranchQuota(mod, scope, old_inst.castTag(.set_eval_branch_quota).?),
- .str => return analyzeInstStr(mod, scope, old_inst.castTag(.str).?),
- .int => return analyzeInstInt(mod, scope, old_inst.castTag(.int).?),
- .inttype => return analyzeInstIntType(mod, scope, old_inst.castTag(.inttype).?),
- .loop => return analyzeInstLoop(mod, scope, old_inst.castTag(.loop).?),
- .param_type => return analyzeInstParamType(mod, scope, old_inst.castTag(.param_type).?),
- .ptrtoint => return analyzeInstPtrToInt(mod, scope, old_inst.castTag(.ptrtoint).?),
- .field_ptr => return fieldPtr(mod, scope, old_inst.castTag(.field_ptr).?),
- .field_val => return fieldVal(mod, scope, old_inst.castTag(.field_val).?),
- .field_ptr_named => return fieldPtrNamed(mod, scope, old_inst.castTag(.field_ptr_named).?),
- .field_val_named => return fieldValNamed(mod, scope, old_inst.castTag(.field_val_named).?),
- .deref => return analyzeInstDeref(mod, scope, old_inst.castTag(.deref).?),
- .as => return analyzeInstAs(mod, scope, old_inst.castTag(.as).?),
- .@"asm" => return analyzeInstAsm(mod, scope, old_inst.castTag(.@"asm").?),
- .@"unreachable" => return analyzeInstUnreachable(mod, scope, old_inst.castTag(.@"unreachable").?, true),
- .unreach_nocheck => return analyzeInstUnreachable(mod, scope, old_inst.castTag(.unreach_nocheck).?, false),
- .@"return" => return analyzeInstRet(mod, scope, old_inst.castTag(.@"return").?),
- .returnvoid => return analyzeInstRetVoid(mod, scope, old_inst.castTag(.returnvoid).?),
- .@"fn" => return analyzeInstFn(mod, scope, old_inst.castTag(.@"fn").?),
- .@"export" => return analyzeInstExport(mod, scope, old_inst.castTag(.@"export").?),
- .primitive => return analyzeInstPrimitive(mod, scope, old_inst.castTag(.primitive).?),
- .fntype => return analyzeInstFnType(mod, scope, old_inst.castTag(.fntype).?),
- .intcast => return analyzeInstIntCast(mod, scope, old_inst.castTag(.intcast).?),
- .bitcast => return analyzeInstBitCast(mod, scope, old_inst.castTag(.bitcast).?),
- .floatcast => return analyzeInstFloatCast(mod, scope, old_inst.castTag(.floatcast).?),
- .elem_ptr => return elemPtr(mod, scope, old_inst.castTag(.elem_ptr).?),
- .elem_val => return elemVal(mod, scope, old_inst.castTag(.elem_val).?),
- .add => return analyzeInstArithmetic(mod, scope, old_inst.castTag(.add).?),
- .addwrap => return analyzeInstArithmetic(mod, scope, old_inst.castTag(.addwrap).?),
- .sub => return analyzeInstArithmetic(mod, scope, old_inst.castTag(.sub).?),
- .subwrap => return analyzeInstArithmetic(mod, scope, old_inst.castTag(.subwrap).?),
- .mul => return analyzeInstArithmetic(mod, scope, old_inst.castTag(.mul).?),
- .mulwrap => return analyzeInstArithmetic(mod, scope, old_inst.castTag(.mulwrap).?),
- .div => return analyzeInstArithmetic(mod, scope, old_inst.castTag(.div).?),
- .mod_rem => return analyzeInstArithmetic(mod, scope, old_inst.castTag(.mod_rem).?),
- .array_cat => return analyzeInstArrayCat(mod, scope, old_inst.castTag(.array_cat).?),
- .array_mul => return analyzeInstArrayMul(mod, scope, old_inst.castTag(.array_mul).?),
- .bitand => return analyzeInstBitwise(mod, scope, old_inst.castTag(.bitand).?),
- .bitnot => return analyzeInstBitNot(mod, scope, old_inst.castTag(.bitnot).?),
- .bitor => return analyzeInstBitwise(mod, scope, old_inst.castTag(.bitor).?),
- .xor => return analyzeInstBitwise(mod, scope, old_inst.castTag(.xor).?),
- .shl => return analyzeInstShl(mod, scope, old_inst.castTag(.shl).?),
- .shr => return analyzeInstShr(mod, scope, old_inst.castTag(.shr).?),
- .cmp_lt => return analyzeInstCmp(mod, scope, old_inst.castTag(.cmp_lt).?, .lt),
- .cmp_lte => return analyzeInstCmp(mod, scope, old_inst.castTag(.cmp_lte).?, .lte),
- .cmp_eq => return analyzeInstCmp(mod, scope, old_inst.castTag(.cmp_eq).?, .eq),
- .cmp_gte => return analyzeInstCmp(mod, scope, old_inst.castTag(.cmp_gte).?, .gte),
- .cmp_gt => return analyzeInstCmp(mod, scope, old_inst.castTag(.cmp_gt).?, .gt),
- .cmp_neq => return analyzeInstCmp(mod, scope, old_inst.castTag(.cmp_neq).?, .neq),
- .condbr => return analyzeInstCondBr(mod, scope, old_inst.castTag(.condbr).?),
- .is_null => return isNull(mod, scope, old_inst.castTag(.is_null).?, false),
- .is_non_null => return isNull(mod, scope, old_inst.castTag(.is_non_null).?, true),
- .is_null_ptr => return isNullPtr(mod, scope, old_inst.castTag(.is_null_ptr).?, false),
- .is_non_null_ptr => return isNullPtr(mod, scope, old_inst.castTag(.is_non_null_ptr).?, true),
- .is_err => return isErr(mod, scope, old_inst.castTag(.is_err).?),
- .is_err_ptr => return isErrPtr(mod, scope, old_inst.castTag(.is_err_ptr).?),
- .boolnot => return analyzeInstBoolNot(mod, scope, old_inst.castTag(.boolnot).?),
- .typeof => return analyzeInstTypeOf(mod, scope, old_inst.castTag(.typeof).?),
- .typeof_peer => return analyzeInstTypeOfPeer(mod, scope, old_inst.castTag(.typeof_peer).?),
- .optional_type => return analyzeInstOptionalType(mod, scope, old_inst.castTag(.optional_type).?),
- .optional_payload_safe => return optionalPayload(mod, scope, old_inst.castTag(.optional_payload_safe).?, true),
- .optional_payload_unsafe => return optionalPayload(mod, scope, old_inst.castTag(.optional_payload_unsafe).?, false),
- .optional_payload_safe_ptr => return optionalPayloadPtr(mod, scope, old_inst.castTag(.optional_payload_safe_ptr).?, true),
- .optional_payload_unsafe_ptr => return optionalPayloadPtr(mod, scope, old_inst.castTag(.optional_payload_unsafe_ptr).?, false),
- .err_union_payload_safe => return errorUnionPayload(mod, scope, old_inst.castTag(.err_union_payload_safe).?, true),
- .err_union_payload_unsafe => return errorUnionPayload(mod, scope, old_inst.castTag(.err_union_payload_unsafe).?, false),
- .err_union_payload_safe_ptr => return errorUnionPayloadPtr(mod, scope, old_inst.castTag(.err_union_payload_safe_ptr).?, true),
- .err_union_payload_unsafe_ptr => return errorUnionPayloadPtr(mod, scope, old_inst.castTag(.err_union_payload_unsafe_ptr).?, false),
- .err_union_code => return errorUnionCode(mod, scope, old_inst.castTag(.err_union_code).?),
- .err_union_code_ptr => return errorUnionCodePtr(mod, scope, old_inst.castTag(.err_union_code_ptr).?),
- .ensure_err_payload_void => return analyzeInstEnsureErrPayloadVoid(mod, scope, old_inst.castTag(.ensure_err_payload_void).?),
- .array_type => return analyzeInstArrayType(mod, scope, old_inst.castTag(.array_type).?),
- .array_type_sentinel => return analyzeInstArrayTypeSentinel(mod, scope, old_inst.castTag(.array_type_sentinel).?),
- .enum_literal => return analyzeInstEnumLiteral(mod, scope, old_inst.castTag(.enum_literal).?),
- .merge_error_sets => return analyzeInstMergeErrorSets(mod, scope, old_inst.castTag(.merge_error_sets).?),
- .error_union_type => return analyzeInstErrorUnionType(mod, scope, old_inst.castTag(.error_union_type).?),
- .anyframe_type => return analyzeInstAnyframeType(mod, scope, old_inst.castTag(.anyframe_type).?),
- .error_set => return analyzeInstErrorSet(mod, scope, old_inst.castTag(.error_set).?),
- .slice => return analyzeInstSlice(mod, scope, old_inst.castTag(.slice).?),
- .slice_start => return analyzeInstSliceStart(mod, scope, old_inst.castTag(.slice_start).?),
- .import => return analyzeInstImport(mod, scope, old_inst.castTag(.import).?),
- .switchbr => return analyzeInstSwitchBr(mod, scope, old_inst.castTag(.switchbr).?),
- .switch_range => return analyzeInstSwitchRange(mod, scope, old_inst.castTag(.switch_range).?),
- .booland => return analyzeInstBoolOp(mod, scope, old_inst.castTag(.booland).?),
- .boolor => return analyzeInstBoolOp(mod, scope, old_inst.castTag(.boolor).?),
+ .alloc => return zirAlloc(mod, scope, old_inst.castTag(.alloc).?),
+ .alloc_mut => return zirAllocMut(mod, scope, old_inst.castTag(.alloc_mut).?),
+ .alloc_inferred => return zirAllocInferred(mod, scope, old_inst.castTag(.alloc_inferred).?, .inferred_alloc_const),
+ .alloc_inferred_mut => return zirAllocInferred(mod, scope, old_inst.castTag(.alloc_inferred_mut).?, .inferred_alloc_mut),
+ .arg => return zirArg(mod, scope, old_inst.castTag(.arg).?),
+ .bitcast_ref => return zirBitcastRef(mod, scope, old_inst.castTag(.bitcast_ref).?),
+ .bitcast_result_ptr => return zirBitcastResultPtr(mod, scope, old_inst.castTag(.bitcast_result_ptr).?),
+ .block => return zirBlock(mod, scope, old_inst.castTag(.block).?, false),
+ .block_comptime => return zirBlock(mod, scope, old_inst.castTag(.block_comptime).?, true),
+ .block_flat => return zirBlockFlat(mod, scope, old_inst.castTag(.block_flat).?, false),
+ .block_comptime_flat => return zirBlockFlat(mod, scope, old_inst.castTag(.block_comptime_flat).?, true),
+ .@"break" => return zirBreak(mod, scope, old_inst.castTag(.@"break").?),
+ .breakpoint => return zirBreakpoint(mod, scope, old_inst.castTag(.breakpoint).?),
+ .break_void => return zirBreakVoid(mod, scope, old_inst.castTag(.break_void).?),
+ .call => return zirCall(mod, scope, old_inst.castTag(.call).?),
+ .coerce_result_ptr => return zirCoerceResultPtr(mod, scope, old_inst.castTag(.coerce_result_ptr).?),
+ .compile_error => return zirCompileError(mod, scope, old_inst.castTag(.compile_error).?),
+ .compile_log => return zirCompileLog(mod, scope, old_inst.castTag(.compile_log).?),
+ .@"const" => return zirConst(mod, scope, old_inst.castTag(.@"const").?),
+ .dbg_stmt => return zirDbgStmt(mod, scope, old_inst.castTag(.dbg_stmt).?),
+ .decl_ref => return zirDeclRef(mod, scope, old_inst.castTag(.decl_ref).?),
+ .decl_ref_str => return zirDeclRefStr(mod, scope, old_inst.castTag(.decl_ref_str).?),
+ .decl_val => return zirDeclVal(mod, scope, old_inst.castTag(.decl_val).?),
+ .ensure_result_used => return zirEnsureResultUsed(mod, scope, old_inst.castTag(.ensure_result_used).?),
+ .ensure_result_non_error => return zirEnsureResultNonError(mod, scope, old_inst.castTag(.ensure_result_non_error).?),
+ .indexable_ptr_len => return zirIndexablePtrLen(mod, scope, old_inst.castTag(.indexable_ptr_len).?),
+ .ref => return zirRef(mod, scope, old_inst.castTag(.ref).?),
+ .resolve_inferred_alloc => return zirResolveInferredAlloc(mod, scope, old_inst.castTag(.resolve_inferred_alloc).?),
+ .ret_ptr => return zirRetPtr(mod, scope, old_inst.castTag(.ret_ptr).?),
+ .ret_type => return zirRetType(mod, scope, old_inst.castTag(.ret_type).?),
+ .store_to_block_ptr => return zirStoreToBlockPtr(mod, scope, old_inst.castTag(.store_to_block_ptr).?),
+ .store_to_inferred_ptr => return zirStoreToInferredPtr(mod, scope, old_inst.castTag(.store_to_inferred_ptr).?),
+ .single_const_ptr_type => return zirSimplePtrType(mod, scope, old_inst.castTag(.single_const_ptr_type).?, false, .One),
+ .single_mut_ptr_type => return zirSimplePtrType(mod, scope, old_inst.castTag(.single_mut_ptr_type).?, true, .One),
+ .many_const_ptr_type => return zirSimplePtrType(mod, scope, old_inst.castTag(.many_const_ptr_type).?, false, .Many),
+ .many_mut_ptr_type => return zirSimplePtrType(mod, scope, old_inst.castTag(.many_mut_ptr_type).?, true, .Many),
+ .c_const_ptr_type => return zirSimplePtrType(mod, scope, old_inst.castTag(.c_const_ptr_type).?, false, .C),
+ .c_mut_ptr_type => return zirSimplePtrType(mod, scope, old_inst.castTag(.c_mut_ptr_type).?, true, .C),
+ .const_slice_type => return zirSimplePtrType(mod, scope, old_inst.castTag(.const_slice_type).?, false, .Slice),
+ .mut_slice_type => return zirSimplePtrType(mod, scope, old_inst.castTag(.mut_slice_type).?, true, .Slice),
+ .ptr_type => return zirPtrType(mod, scope, old_inst.castTag(.ptr_type).?),
+ .store => return zirStore(mod, scope, old_inst.castTag(.store).?),
+ .set_eval_branch_quota => return zirSetEvalBranchQuota(mod, scope, old_inst.castTag(.set_eval_branch_quota).?),
+ .str => return zirStr(mod, scope, old_inst.castTag(.str).?),
+ .int => return zirInt(mod, scope, old_inst.castTag(.int).?),
+ .int_type => return zirIntType(mod, scope, old_inst.castTag(.int_type).?),
+ .loop => return zirLoop(mod, scope, old_inst.castTag(.loop).?),
+ .param_type => return zirParamType(mod, scope, old_inst.castTag(.param_type).?),
+ .ptrtoint => return zirPtrtoint(mod, scope, old_inst.castTag(.ptrtoint).?),
+ .field_ptr => return zirFieldPtr(mod, scope, old_inst.castTag(.field_ptr).?),
+ .field_val => return zirFieldVal(mod, scope, old_inst.castTag(.field_val).?),
+ .field_ptr_named => return zirFieldPtrNamed(mod, scope, old_inst.castTag(.field_ptr_named).?),
+ .field_val_named => return zirFieldValNamed(mod, scope, old_inst.castTag(.field_val_named).?),
+ .deref => return zirDeref(mod, scope, old_inst.castTag(.deref).?),
+ .as => return zirAs(mod, scope, old_inst.castTag(.as).?),
+ .@"asm" => return zirAsm(mod, scope, old_inst.castTag(.@"asm").?),
+ .unreachable_safe => return zirUnreachable(mod, scope, old_inst.castTag(.unreachable_safe).?, true),
+ .unreachable_unsafe => return zirUnreachable(mod, scope, old_inst.castTag(.unreachable_unsafe).?, false),
+ .@"return" => return zirReturn(mod, scope, old_inst.castTag(.@"return").?),
+ .return_void => return zirReturnVoid(mod, scope, old_inst.castTag(.return_void).?),
+ .@"fn" => return zirFn(mod, scope, old_inst.castTag(.@"fn").?),
+ .@"export" => return zirExport(mod, scope, old_inst.castTag(.@"export").?),
+ .primitive => return zirPrimitive(mod, scope, old_inst.castTag(.primitive).?),
+ .fntype => return zirFnType(mod, scope, old_inst.castTag(.fntype).?),
+ .intcast => return zirIntcast(mod, scope, old_inst.castTag(.intcast).?),
+ .bitcast => return zirBitcast(mod, scope, old_inst.castTag(.bitcast).?),
+ .floatcast => return zirFloatcast(mod, scope, old_inst.castTag(.floatcast).?),
+ .elem_ptr => return zirElemPtr(mod, scope, old_inst.castTag(.elem_ptr).?),
+ .elem_val => return zirElemVal(mod, scope, old_inst.castTag(.elem_val).?),
+ .add => return zirArithmetic(mod, scope, old_inst.castTag(.add).?),
+ .addwrap => return zirArithmetic(mod, scope, old_inst.castTag(.addwrap).?),
+ .sub => return zirArithmetic(mod, scope, old_inst.castTag(.sub).?),
+ .subwrap => return zirArithmetic(mod, scope, old_inst.castTag(.subwrap).?),
+ .mul => return zirArithmetic(mod, scope, old_inst.castTag(.mul).?),
+ .mulwrap => return zirArithmetic(mod, scope, old_inst.castTag(.mulwrap).?),
+ .div => return zirArithmetic(mod, scope, old_inst.castTag(.div).?),
+ .mod_rem => return zirArithmetic(mod, scope, old_inst.castTag(.mod_rem).?),
+ .array_cat => return zirArrayCat(mod, scope, old_inst.castTag(.array_cat).?),
+ .array_mul => return zirArrayMul(mod, scope, old_inst.castTag(.array_mul).?),
+ .bit_and => return zirBitwise(mod, scope, old_inst.castTag(.bit_and).?),
+ .bit_not => return zirBitNot(mod, scope, old_inst.castTag(.bit_not).?),
+ .bit_or => return zirBitwise(mod, scope, old_inst.castTag(.bit_or).?),
+ .xor => return zirBitwise(mod, scope, old_inst.castTag(.xor).?),
+ .shl => return zirShl(mod, scope, old_inst.castTag(.shl).?),
+ .shr => return zirShr(mod, scope, old_inst.castTag(.shr).?),
+ .cmp_lt => return zirCmp(mod, scope, old_inst.castTag(.cmp_lt).?, .lt),
+ .cmp_lte => return zirCmp(mod, scope, old_inst.castTag(.cmp_lte).?, .lte),
+ .cmp_eq => return zirCmp(mod, scope, old_inst.castTag(.cmp_eq).?, .eq),
+ .cmp_gte => return zirCmp(mod, scope, old_inst.castTag(.cmp_gte).?, .gte),
+ .cmp_gt => return zirCmp(mod, scope, old_inst.castTag(.cmp_gt).?, .gt),
+ .cmp_neq => return zirCmp(mod, scope, old_inst.castTag(.cmp_neq).?, .neq),
+ .condbr => return zirCondbr(mod, scope, old_inst.castTag(.condbr).?),
+ .is_null => return zirIsNull(mod, scope, old_inst.castTag(.is_null).?, false),
+ .is_non_null => return zirIsNull(mod, scope, old_inst.castTag(.is_non_null).?, true),
+ .is_null_ptr => return zirIsNullPtr(mod, scope, old_inst.castTag(.is_null_ptr).?, false),
+ .is_non_null_ptr => return zirIsNullPtr(mod, scope, old_inst.castTag(.is_non_null_ptr).?, true),
+ .is_err => return zirIsErr(mod, scope, old_inst.castTag(.is_err).?),
+ .is_err_ptr => return zirIsErrPtr(mod, scope, old_inst.castTag(.is_err_ptr).?),
+ .bool_not => return zirBoolNot(mod, scope, old_inst.castTag(.bool_not).?),
+ .typeof => return zirTypeof(mod, scope, old_inst.castTag(.typeof).?),
+ .typeof_peer => return zirTypeofPeer(mod, scope, old_inst.castTag(.typeof_peer).?),
+ .optional_type => return zirOptionalType(mod, scope, old_inst.castTag(.optional_type).?),
+ .optional_payload_safe => return zirOptionalPayload(mod, scope, old_inst.castTag(.optional_payload_safe).?, true),
+ .optional_payload_unsafe => return zirOptionalPayload(mod, scope, old_inst.castTag(.optional_payload_unsafe).?, false),
+ .optional_payload_safe_ptr => return zirOptionalPayloadPtr(mod, scope, old_inst.castTag(.optional_payload_safe_ptr).?, true),
+ .optional_payload_unsafe_ptr => return zirOptionalPayloadPtr(mod, scope, old_inst.castTag(.optional_payload_unsafe_ptr).?, false),
+ .err_union_payload_safe => return zirErrUnionPayload(mod, scope, old_inst.castTag(.err_union_payload_safe).?, true),
+ .err_union_payload_unsafe => return zirErrUnionPayload(mod, scope, old_inst.castTag(.err_union_payload_unsafe).?, false),
+ .err_union_payload_safe_ptr => return zirErrUnionPayloadPtr(mod, scope, old_inst.castTag(.err_union_payload_safe_ptr).?, true),
+ .err_union_payload_unsafe_ptr => return zirErrUnionPayloadPtr(mod, scope, old_inst.castTag(.err_union_payload_unsafe_ptr).?, false),
+ .err_union_code => return zirErrUnionCode(mod, scope, old_inst.castTag(.err_union_code).?),
+ .err_union_code_ptr => return zirErrUnionCodePtr(mod, scope, old_inst.castTag(.err_union_code_ptr).?),
+ .ensure_err_payload_void => return zirEnsureErrPayloadVoid(mod, scope, old_inst.castTag(.ensure_err_payload_void).?),
+ .array_type => return zirArrayType(mod, scope, old_inst.castTag(.array_type).?),
+ .array_type_sentinel => return zirArrayTypeSentinel(mod, scope, old_inst.castTag(.array_type_sentinel).?),
+ .enum_literal => return zirEnumLiteral(mod, scope, old_inst.castTag(.enum_literal).?),
+ .merge_error_sets => return zirMergeErrorSets(mod, scope, old_inst.castTag(.merge_error_sets).?),
+ .error_union_type => return zirErrorUnionType(mod, scope, old_inst.castTag(.error_union_type).?),
+ .anyframe_type => return zirAnyframeType(mod, scope, old_inst.castTag(.anyframe_type).?),
+ .error_set => return zirErrorSet(mod, scope, old_inst.castTag(.error_set).?),
+ .slice => return zirSlice(mod, scope, old_inst.castTag(.slice).?),
+ .slice_start => return zirSliceStart(mod, scope, old_inst.castTag(.slice_start).?),
+ .import => return zirImport(mod, scope, old_inst.castTag(.import).?),
+ .bool_and => return zirBoolOp(mod, scope, old_inst.castTag(.bool_and).?),
+ .bool_or => return zirBoolOp(mod, scope, old_inst.castTag(.bool_or).?),
+ .void_value => return mod.constVoid(scope, old_inst.src),
+ .switchbr => return zirSwitchBr(mod, scope, old_inst.castTag(.switchbr).?),
+ .switch_range => return zirSwitchRange(mod, scope, old_inst.castTag(.switch_range).?),
.container_field_named,
.container_field_typed,
@@ -258,7 +248,7 @@ pub fn resolveInstConst(mod: *Module, scope: *Scope, old_inst: *zir.Inst) InnerE
};
}
-fn analyzeInstConst(mod: *Module, scope: *Scope, const_inst: *zir.Inst.Const) InnerError!*Inst {
+fn zirConst(mod: *Module, scope: *Scope, const_inst: *zir.Inst.Const) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
// Move the TypedValue from old memory to new memory. This allows freeing the ZIR instructions
@@ -275,44 +265,25 @@ fn analyzeConstInst(mod: *Module, scope: *Scope, old_inst: *zir.Inst) InnerError
};
}
-fn analyzeInstCoerceResultBlockPtr(
- mod: *Module,
- scope: *Scope,
- inst: *zir.Inst.CoerceResultBlockPtr,
-) InnerError!*Inst {
+fn zirBitcastRef(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, inst.base.src, "TODO implement analyzeInstCoerceResultBlockPtr", .{});
+ return mod.fail(scope, inst.base.src, "TODO implement zir_sema.zirBitcastRef", .{});
}
-fn bitCastRef(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirBitcastResultPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, inst.base.src, "TODO implement zir_sema.bitCastRef", .{});
+ return mod.fail(scope, inst.base.src, "TODO implement zir_sema.zirBitcastResultPtr", .{});
}
-fn bitCastResultPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirCoerceResultPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, inst.base.src, "TODO implement zir_sema.bitCastResultPtr", .{});
+ return mod.fail(scope, inst.base.src, "TODO implement zirCoerceResultPtr", .{});
}
-fn analyzeInstCoerceResultPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
- const tracy = trace(@src());
- defer tracy.end();
- return mod.fail(scope, inst.base.src, "TODO implement analyzeInstCoerceResultPtr", .{});
-}
-
-/// Equivalent to `as(ptr_child_type(typeof(ptr)), value)`.
-fn analyzeInstCoerceToPtrElem(mod: *Module, scope: *Scope, inst: *zir.Inst.CoerceToPtrElem) InnerError!*Inst {
- const tracy = trace(@src());
- defer tracy.end();
- const ptr = try resolveInst(mod, scope, inst.positionals.ptr);
- const operand = try resolveInst(mod, scope, inst.positionals.value);
- return mod.coerce(scope, ptr.ty.elemType(), operand);
-}
-
-fn analyzeInstRetPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerError!*Inst {
+fn zirRetPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const b = try mod.requireFunctionBlock(scope, inst.base.src);
@@ -322,7 +293,7 @@ fn analyzeInstRetPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerErr
return mod.addNoOp(b, inst.base.src, ptr_type, .alloc);
}
-fn ref(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirRef(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -330,7 +301,7 @@ fn ref(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
return mod.analyzeRef(scope, inst.base.src, operand);
}
-fn analyzeInstRetType(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerError!*Inst {
+fn zirRetType(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const b = try mod.requireFunctionBlock(scope, inst.base.src);
@@ -339,7 +310,7 @@ fn analyzeInstRetType(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerEr
return mod.constType(scope, inst.base.src, ret_type);
}
-fn analyzeInstEnsureResultUsed(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirEnsureResultUsed(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const operand = try resolveInst(mod, scope, inst.positionals.operand);
@@ -349,7 +320,7 @@ fn analyzeInstEnsureResultUsed(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp
}
}
-fn analyzeInstEnsureResultNonError(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirEnsureResultNonError(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const operand = try resolveInst(mod, scope, inst.positionals.operand);
@@ -359,7 +330,7 @@ fn analyzeInstEnsureResultNonError(mod: *Module, scope: *Scope, inst: *zir.Inst.
}
}
-fn indexablePtrLen(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirIndexablePtrLen(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -389,7 +360,7 @@ fn indexablePtrLen(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError
return mod.analyzeDeref(scope, inst.base.src, result_ptr, result_ptr.src);
}
-fn analyzeInstAlloc(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirAlloc(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const var_type = try resolveType(mod, scope, inst.positionals.operand);
@@ -398,7 +369,7 @@ fn analyzeInstAlloc(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerErro
return mod.addNoOp(b, inst.base.src, ptr_type, .alloc);
}
-fn analyzeInstAllocMut(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirAllocMut(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const var_type = try resolveType(mod, scope, inst.positionals.operand);
@@ -408,7 +379,7 @@ fn analyzeInstAllocMut(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerE
return mod.addNoOp(b, inst.base.src, ptr_type, .alloc);
}
-fn analyzeInstAllocInferred(
+fn zirAllocInferred(
mod: *Module,
scope: *Scope,
inst: *zir.Inst.NoOp,
@@ -437,7 +408,7 @@ fn analyzeInstAllocInferred(
return result;
}
-fn analyzeInstResolveInferredAlloc(
+fn zirResolveInferredAlloc(
mod: *Module,
scope: *Scope,
inst: *zir.Inst.UnOp,
@@ -466,28 +437,46 @@ fn analyzeInstResolveInferredAlloc(
return mod.constVoid(scope, inst.base.src);
}
-fn analyzeInstStoreToInferredPtr(
+fn zirStoreToBlockPtr(
mod: *Module,
scope: *Scope,
inst: *zir.Inst.BinOp,
) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
+
+ const ptr = try resolveInst(mod, scope, inst.positionals.lhs);
+ const value = try resolveInst(mod, scope, inst.positionals.rhs);
+ const ptr_ty = try mod.simplePtrType(scope, inst.base.src, value.ty, true, .One);
+ // TODO detect when this store should be done at compile-time. For example,
+ // if expressions should force it when the condition is compile-time known.
+ const b = try mod.requireRuntimeBlock(scope, inst.base.src);
+ const bitcasted_ptr = try mod.addUnOp(b, inst.base.src, ptr_ty, .bitcast, ptr);
+ return mod.storePtr(scope, inst.base.src, bitcasted_ptr, value);
+}
+
+fn zirStoreToInferredPtr(
+ mod: *Module,
+ scope: *Scope,
+ inst: *zir.Inst.BinOp,
+) InnerError!*Inst {
+ const tracy = trace(@src());
+ defer tracy.end();
+
const ptr = try resolveInst(mod, scope, inst.positionals.lhs);
const value = try resolveInst(mod, scope, inst.positionals.rhs);
const inferred_alloc = ptr.castTag(.constant).?.val.castTag(.inferred_alloc).?;
// Add the stored instruction to the set we will use to resolve peer types
// for the inferred allocation.
try inferred_alloc.data.stored_inst_list.append(scope.arena(), value);
- // Create a new alloc with exactly the type the pointer wants.
- // Later it gets cleaned up by aliasing the alloc we are supposed to be storing to.
+ // Create a runtime bitcast instruction with exactly the type the pointer wants.
const ptr_ty = try mod.simplePtrType(scope, inst.base.src, value.ty, true, .One);
const b = try mod.requireRuntimeBlock(scope, inst.base.src);
const bitcasted_ptr = try mod.addUnOp(b, inst.base.src, ptr_ty, .bitcast, ptr);
return mod.storePtr(scope, inst.base.src, bitcasted_ptr, value);
}
-fn analyzeInstSetEvalBranchQuota(
+fn zirSetEvalBranchQuota(
mod: *Module,
scope: *Scope,
inst: *zir.Inst.UnOp,
@@ -499,15 +488,16 @@ fn analyzeInstSetEvalBranchQuota(
return mod.constVoid(scope, inst.base.src);
}
-fn analyzeInstStore(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirStore(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
+
const ptr = try resolveInst(mod, scope, inst.positionals.lhs);
const value = try resolveInst(mod, scope, inst.positionals.rhs);
return mod.storePtr(scope, inst.base.src, ptr, value);
}
-fn analyzeInstParamType(mod: *Module, scope: *Scope, inst: *zir.Inst.ParamType) InnerError!*Inst {
+fn zirParamType(mod: *Module, scope: *Scope, inst: *zir.Inst.ParamType) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const fn_inst = try resolveInst(mod, scope, inst.positionals.func);
@@ -516,7 +506,7 @@ fn analyzeInstParamType(mod: *Module, scope: *Scope, inst: *zir.Inst.ParamType)
const fn_ty: Type = switch (fn_inst.ty.zigTypeTag()) {
.Fn => fn_inst.ty,
.BoundFn => {
- return mod.fail(scope, fn_inst.src, "TODO implement analyzeInstParamType for method call syntax", .{});
+ return mod.fail(scope, fn_inst.src, "TODO implement zirParamType for method call syntax", .{});
},
else => {
return mod.fail(scope, fn_inst.src, "expected function, found '{}'", .{fn_inst.ty});
@@ -538,7 +528,7 @@ fn analyzeInstParamType(mod: *Module, scope: *Scope, inst: *zir.Inst.ParamType)
return mod.constType(scope, inst.base.src, param_type);
}
-fn analyzeInstStr(mod: *Module, scope: *Scope, str_inst: *zir.Inst.Str) InnerError!*Inst {
+fn zirStr(mod: *Module, scope: *Scope, str_inst: *zir.Inst.Str) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
// The bytes references memory inside the ZIR module, which can get deallocated
@@ -557,14 +547,14 @@ fn analyzeInstStr(mod: *Module, scope: *Scope, str_inst: *zir.Inst.Str) InnerErr
return mod.analyzeDeclRef(scope, str_inst.base.src, new_decl);
}
-fn analyzeInstInt(mod: *Module, scope: *Scope, inst: *zir.Inst.Int) InnerError!*Inst {
+fn zirInt(mod: *Module, scope: *Scope, inst: *zir.Inst.Int) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
return mod.constIntBig(scope, inst.base.src, Type.initTag(.comptime_int), inst.positionals.int);
}
-fn analyzeInstExport(mod: *Module, scope: *Scope, export_inst: *zir.Inst.Export) InnerError!*Inst {
+fn zirExport(mod: *Module, scope: *Scope, export_inst: *zir.Inst.Export) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const symbol_name = try resolveConstString(mod, scope, export_inst.positionals.symbol_name);
@@ -574,14 +564,14 @@ fn analyzeInstExport(mod: *Module, scope: *Scope, export_inst: *zir.Inst.Export)
return mod.constVoid(scope, export_inst.base.src);
}
-fn analyzeInstCompileError(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirCompileError(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const msg = try resolveConstString(mod, scope, inst.positionals.operand);
return mod.fail(scope, inst.base.src, "{s}", .{msg});
}
-fn analyzeInstCompileLog(mod: *Module, scope: *Scope, inst: *zir.Inst.CompileLog) InnerError!*Inst {
+fn zirCompileLog(mod: *Module, scope: *Scope, inst: *zir.Inst.CompileLog) InnerError!*Inst {
var managed = mod.compile_log_text.toManaged(mod.gpa);
defer mod.compile_log_text = managed.moveToUnmanaged();
const writer = managed.writer();
@@ -608,7 +598,7 @@ fn analyzeInstCompileLog(mod: *Module, scope: *Scope, inst: *zir.Inst.CompileLog
return mod.constVoid(scope, inst.base.src);
}
-fn analyzeInstArg(mod: *Module, scope: *Scope, inst: *zir.Inst.Arg) InnerError!*Inst {
+fn zirArg(mod: *Module, scope: *Scope, inst: *zir.Inst.Arg) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const b = try mod.requireFunctionBlock(scope, inst.base.src);
@@ -631,7 +621,7 @@ fn analyzeInstArg(mod: *Module, scope: *Scope, inst: *zir.Inst.Arg) InnerError!*
return mod.addArg(b, inst.base.src, param_type, name);
}
-fn analyzeInstLoop(mod: *Module, scope: *Scope, inst: *zir.Inst.Loop) InnerError!*Inst {
+fn zirLoop(mod: *Module, scope: *Scope, inst: *zir.Inst.Loop) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const parent_block = scope.cast(Scope.Block).?;
@@ -672,25 +662,14 @@ fn analyzeInstLoop(mod: *Module, scope: *Scope, inst: *zir.Inst.Loop) InnerError
return &loop_inst.base;
}
-fn analyzeInstBlockFlat(mod: *Module, scope: *Scope, inst: *zir.Inst.Block, is_comptime: bool) InnerError!*Inst {
+fn zirBlockFlat(mod: *Module, scope: *Scope, inst: *zir.Inst.Block, is_comptime: bool) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const parent_block = scope.cast(Scope.Block).?;
- var child_block: Scope.Block = .{
- .parent = parent_block,
- .inst_table = parent_block.inst_table,
- .func = parent_block.func,
- .owner_decl = parent_block.owner_decl,
- .src_decl = parent_block.src_decl,
- .instructions = .{},
- .arena = parent_block.arena,
- .label = null,
- .inlining = parent_block.inlining,
- .is_comptime = parent_block.is_comptime or is_comptime,
- .branch_quota = parent_block.branch_quota,
- };
+ var child_block = parent_block.makeSubBlock();
defer child_block.instructions.deinit(mod.gpa);
+ child_block.is_comptime = child_block.is_comptime or is_comptime;
try analyzeBody(mod, &child_block, inst.positionals.body);
@@ -704,9 +683,15 @@ fn analyzeInstBlockFlat(mod: *Module, scope: *Scope, inst: *zir.Inst.Block, is_c
return resolveInst(mod, scope, last_zir_inst);
}
-fn analyzeInstBlock(mod: *Module, scope: *Scope, inst: *zir.Inst.Block, is_comptime: bool) InnerError!*Inst {
+fn zirBlock(
+ mod: *Module,
+ scope: *Scope,
+ inst: *zir.Inst.Block,
+ is_comptime: bool,
+) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
+
const parent_block = scope.cast(Scope.Block).?;
// Reserve space for a Block instruction so that generated Break instructions can
@@ -735,6 +720,7 @@ fn analyzeInstBlock(mod: *Module, scope: *Scope, inst: *zir.Inst.Block, is_compt
.zir_block = inst,
.merges = .{
.results = .{},
+ .br_list = .{},
.block_inst = block_inst,
},
}),
@@ -746,6 +732,7 @@ fn analyzeInstBlock(mod: *Module, scope: *Scope, inst: *zir.Inst.Block, is_compt
defer child_block.instructions.deinit(mod.gpa);
defer merges.results.deinit(mod.gpa);
+ defer merges.br_list.deinit(mod.gpa);
try analyzeBody(mod, &child_block, inst.positionals.body);
@@ -779,49 +766,127 @@ fn analyzeBlockBody(
const last_inst = child_block.instructions.items[last_inst_index];
if (last_inst.breakBlock()) |br_block| {
if (br_block == merges.block_inst) {
- // No need for a block instruction. We can put the new instructions directly into the parent block.
- // Here we omit the break instruction.
+ // No need for a block instruction. We can put the new instructions directly
+ // into the parent block. Here we omit the break instruction.
const copied_instructions = try parent_block.arena.dupe(*Inst, child_block.instructions.items[0..last_inst_index]);
try parent_block.instructions.appendSlice(mod.gpa, copied_instructions);
return merges.results.items[0];
}
}
}
- // It should be impossible to have the number of results be > 1 in a comptime scope.
- assert(!child_block.is_comptime); // We should have already got a compile error in the condbr condition.
+ // It is impossible to have the number of results be > 1 in a comptime scope.
+ assert(!child_block.is_comptime); // Should already got a compile error in the condbr condition.
// Need to set the type and emit the Block instruction. This allows machine code generation
// to emit a jump instruction to after the block when it encounters the break.
try parent_block.instructions.append(mod.gpa, &merges.block_inst.base);
- merges.block_inst.base.ty = try mod.resolvePeerTypes(scope, merges.results.items);
- merges.block_inst.body = .{ .instructions = try parent_block.arena.dupe(*Inst, child_block.instructions.items) };
+ const resolved_ty = try mod.resolvePeerTypes(scope, merges.results.items);
+ merges.block_inst.base.ty = resolved_ty;
+ merges.block_inst.body = .{
+ .instructions = try parent_block.arena.dupe(*Inst, child_block.instructions.items),
+ };
+ // Now that the block has its type resolved, we need to go back into all the break
+ // instructions, and insert type coercion on the operands.
+ for (merges.br_list.items) |br| {
+ if (br.operand.ty.eql(resolved_ty)) {
+ // No type coercion needed.
+ continue;
+ }
+ var coerce_block = parent_block.makeSubBlock();
+ defer coerce_block.instructions.deinit(mod.gpa);
+ const coerced_operand = try mod.coerce(&coerce_block.base, resolved_ty, br.operand);
+ // If no instructions were produced, such as in the case of a coercion of a
+ // constant value to a new type, we can simply point the br operand to it.
+ if (coerce_block.instructions.items.len == 0) {
+ br.operand = coerced_operand;
+ continue;
+ }
+ assert(coerce_block.instructions.items[coerce_block.instructions.items.len - 1] == coerced_operand);
+ // Here we depend on the br instruction having been over-allocated (if necessary)
+ // inide analyzeBreak so that it can be converted into a br_block_flat instruction.
+ const br_src = br.base.src;
+ const br_ty = br.base.ty;
+ const br_block_flat = @ptrCast(*Inst.BrBlockFlat, br);
+ br_block_flat.* = .{
+ .base = .{
+ .src = br_src,
+ .ty = br_ty,
+ .tag = .br_block_flat,
+ },
+ .block = merges.block_inst,
+ .body = .{
+ .instructions = try parent_block.arena.dupe(*Inst, coerce_block.instructions.items),
+ },
+ };
+ }
return &merges.block_inst.base;
}
-fn analyzeInstBreakpoint(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerError!*Inst {
+fn zirBreakpoint(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const b = try mod.requireRuntimeBlock(scope, inst.base.src);
return mod.addNoOp(b, inst.base.src, Type.initTag(.void), .breakpoint);
}
-fn analyzeInstBreak(mod: *Module, scope: *Scope, inst: *zir.Inst.Break) InnerError!*Inst {
+fn zirBreak(mod: *Module, scope: *Scope, inst: *zir.Inst.Break) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
+
const operand = try resolveInst(mod, scope, inst.positionals.operand);
const block = inst.positionals.block;
return analyzeBreak(mod, scope, inst.base.src, block, operand);
}
-fn analyzeInstBreakVoid(mod: *Module, scope: *Scope, inst: *zir.Inst.BreakVoid) InnerError!*Inst {
+fn zirBreakVoid(mod: *Module, scope: *Scope, inst: *zir.Inst.BreakVoid) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
+
const block = inst.positionals.block;
const void_inst = try mod.constVoid(scope, inst.base.src);
return analyzeBreak(mod, scope, inst.base.src, block, void_inst);
}
-fn analyzeInstDbgStmt(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerError!*Inst {
+fn analyzeBreak(
+ mod: *Module,
+ scope: *Scope,
+ src: usize,
+ zir_block: *zir.Inst.Block,
+ operand: *Inst,
+) InnerError!*Inst {
+ var opt_block = scope.cast(Scope.Block);
+ while (opt_block) |block| {
+ if (block.label) |*label| {
+ if (label.zir_block == zir_block) {
+ const b = try mod.requireFunctionBlock(scope, src);
+ // Here we add a br instruction, but we over-allocate a little bit
+ // (if necessary) to make it possible to convert the instruction into
+ // a br_block_flat instruction later.
+ const br = @ptrCast(*Inst.Br, try b.arena.alignedAlloc(
+ u8,
+ Inst.convertable_br_align,
+ Inst.convertable_br_size,
+ ));
+ br.* = .{
+ .base = .{
+ .tag = .br,
+ .ty = Type.initTag(.noreturn),
+ .src = src,
+ },
+ .operand = operand,
+ .block = label.merges.block_inst,
+ };
+ try b.instructions.append(mod.gpa, &br.base);
+ try label.merges.results.append(mod.gpa, operand);
+ try label.merges.br_list.append(mod.gpa, br);
+ return &br.base;
+ }
+ }
+ opt_block = block.parent;
+ } else unreachable;
+}
+
+fn zirDbgStmt(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
if (scope.cast(Scope.Block)) |b| {
@@ -832,26 +897,26 @@ fn analyzeInstDbgStmt(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerEr
return mod.constVoid(scope, inst.base.src);
}
-fn analyzeInstDeclRefStr(mod: *Module, scope: *Scope, inst: *zir.Inst.DeclRefStr) InnerError!*Inst {
+fn zirDeclRefStr(mod: *Module, scope: *Scope, inst: *zir.Inst.DeclRefStr) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const decl_name = try resolveConstString(mod, scope, inst.positionals.name);
return mod.analyzeDeclRefByName(scope, inst.base.src, decl_name);
}
-fn declRef(mod: *Module, scope: *Scope, inst: *zir.Inst.DeclRef) InnerError!*Inst {
+fn zirDeclRef(mod: *Module, scope: *Scope, inst: *zir.Inst.DeclRef) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
return mod.analyzeDeclRef(scope, inst.base.src, inst.positionals.decl);
}
-fn declVal(mod: *Module, scope: *Scope, inst: *zir.Inst.DeclVal) InnerError!*Inst {
+fn zirDeclVal(mod: *Module, scope: *Scope, inst: *zir.Inst.DeclVal) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
return mod.analyzeDeclVal(scope, inst.base.src, inst.positionals.decl);
}
-fn call(mod: *Module, scope: *Scope, inst: *zir.Inst.Call) InnerError!*Inst {
+fn zirCall(mod: *Module, scope: *Scope, inst: *zir.Inst.Call) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -915,18 +980,8 @@ fn call(mod: *Module, scope: *Scope, inst: *zir.Inst.Call) InnerError!*Inst {
const b = try mod.requireFunctionBlock(scope, inst.base.src);
const is_comptime_call = b.is_comptime or inst.kw_args.modifier == .compile_time;
- const is_inline_call = is_comptime_call or inst.kw_args.modifier == .always_inline or blk: {
- // This logic will get simplified by
- // https://github.com/ziglang/zig/issues/6429
- if (try mod.resolveDefinedValue(scope, func)) |func_val| {
- const module_fn = switch (func_val.tag()) {
- .function => func_val.castTag(.function).?.data,
- else => break :blk false,
- };
- break :blk module_fn.state == .inline_only;
- }
- break :blk false;
- };
+ const is_inline_call = is_comptime_call or inst.kw_args.modifier == .always_inline or
+ func.ty.fnCallingConvention() == .Inline;
if (is_inline_call) {
const func_val = try mod.resolveConstValue(scope, func);
const module_fn = switch (func_val.tag()) {
@@ -965,6 +1020,7 @@ fn call(mod: *Module, scope: *Scope, inst: *zir.Inst.Call) InnerError!*Inst {
.casted_args = casted_args,
.merges = .{
.results = .{},
+ .br_list = .{},
.block_inst = block_inst,
},
};
@@ -989,6 +1045,7 @@ fn call(mod: *Module, scope: *Scope, inst: *zir.Inst.Call) InnerError!*Inst {
defer child_block.instructions.deinit(mod.gpa);
defer merges.results.deinit(mod.gpa);
+ defer merges.br_list.deinit(mod.gpa);
try mod.emitBackwardBranch(&child_block, inst.base.src);
@@ -1002,13 +1059,13 @@ fn call(mod: *Module, scope: *Scope, inst: *zir.Inst.Call) InnerError!*Inst {
return mod.addCall(b, inst.base.src, ret_type, func, casted_args);
}
-fn analyzeInstFn(mod: *Module, scope: *Scope, fn_inst: *zir.Inst.Fn) InnerError!*Inst {
+fn zirFn(mod: *Module, scope: *Scope, fn_inst: *zir.Inst.Fn) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const fn_type = try resolveType(mod, scope, fn_inst.positionals.fn_type);
const new_func = try scope.arena().create(Module.Fn);
new_func.* = .{
- .state = if (fn_inst.kw_args.is_inline) .inline_only else .queued,
+ .state = if (fn_type.fnCallingConvention() == .Inline) .inline_only else .queued,
.zir = fn_inst.positionals.body,
.body = undefined,
.owner_decl = scope.ownerDecl().?,
@@ -1019,13 +1076,13 @@ fn analyzeInstFn(mod: *Module, scope: *Scope, fn_inst: *zir.Inst.Fn) InnerError!
});
}
-fn analyzeInstIntType(mod: *Module, scope: *Scope, inttype: *zir.Inst.IntType) InnerError!*Inst {
+fn zirIntType(mod: *Module, scope: *Scope, inttype: *zir.Inst.IntType) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
return mod.fail(scope, inttype.base.src, "TODO implement inttype", .{});
}
-fn analyzeInstOptionalType(mod: *Module, scope: *Scope, optional: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirOptionalType(mod: *Module, scope: *Scope, optional: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const child_type = try resolveType(mod, scope, optional.positionals.operand);
@@ -1033,7 +1090,7 @@ fn analyzeInstOptionalType(mod: *Module, scope: *Scope, optional: *zir.Inst.UnOp
return mod.constType(scope, optional.base.src, try mod.optionalType(scope, child_type));
}
-fn analyzeInstArrayType(mod: *Module, scope: *Scope, array: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirArrayType(mod: *Module, scope: *Scope, array: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
// TODO these should be lazily evaluated
@@ -1043,7 +1100,7 @@ fn analyzeInstArrayType(mod: *Module, scope: *Scope, array: *zir.Inst.BinOp) Inn
return mod.constType(scope, array.base.src, try mod.arrayType(scope, len.val.toUnsignedInt(), null, elem_type));
}
-fn analyzeInstArrayTypeSentinel(mod: *Module, scope: *Scope, array: *zir.Inst.ArrayTypeSentinel) InnerError!*Inst {
+fn zirArrayTypeSentinel(mod: *Module, scope: *Scope, array: *zir.Inst.ArrayTypeSentinel) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
// TODO these should be lazily evaluated
@@ -1054,7 +1111,7 @@ fn analyzeInstArrayTypeSentinel(mod: *Module, scope: *Scope, array: *zir.Inst.Ar
return mod.constType(scope, array.base.src, try mod.arrayType(scope, len.val.toUnsignedInt(), sentinel.val, elem_type));
}
-fn analyzeInstErrorUnionType(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirErrorUnionType(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const error_union = try resolveType(mod, scope, inst.positionals.lhs);
@@ -1067,7 +1124,7 @@ fn analyzeInstErrorUnionType(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp)
return mod.constType(scope, inst.base.src, try mod.errorUnionType(scope, error_union, payload));
}
-fn analyzeInstAnyframeType(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirAnyframeType(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const return_type = try resolveType(mod, scope, inst.positionals.operand);
@@ -1075,7 +1132,7 @@ fn analyzeInstAnyframeType(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) In
return mod.constType(scope, inst.base.src, try mod.anyframeType(scope, return_type));
}
-fn analyzeInstErrorSet(mod: *Module, scope: *Scope, inst: *zir.Inst.ErrorSet) InnerError!*Inst {
+fn zirErrorSet(mod: *Module, scope: *Scope, inst: *zir.Inst.ErrorSet) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
// The declarations arena will store the hashmap.
@@ -1107,13 +1164,13 @@ fn analyzeInstErrorSet(mod: *Module, scope: *Scope, inst: *zir.Inst.ErrorSet) In
return mod.analyzeDeclVal(scope, inst.base.src, new_decl);
}
-fn analyzeInstMergeErrorSets(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirMergeErrorSets(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
return mod.fail(scope, inst.base.src, "TODO implement merge_error_sets", .{});
}
-fn analyzeInstEnumLiteral(mod: *Module, scope: *Scope, inst: *zir.Inst.EnumLiteral) InnerError!*Inst {
+fn zirEnumLiteral(mod: *Module, scope: *Scope, inst: *zir.Inst.EnumLiteral) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const duped_name = try scope.arena().dupe(u8, inst.positionals.name);
@@ -1124,7 +1181,7 @@ fn analyzeInstEnumLiteral(mod: *Module, scope: *Scope, inst: *zir.Inst.EnumLiter
}
/// Pointer in, pointer out.
-fn optionalPayloadPtr(
+fn zirOptionalPayloadPtr(
mod: *Module,
scope: *Scope,
unwrap: *zir.Inst.UnOp,
@@ -1165,7 +1222,7 @@ fn optionalPayloadPtr(
}
/// Value in, value out.
-fn optionalPayload(
+fn zirOptionalPayload(
mod: *Module,
scope: *Scope,
unwrap: *zir.Inst.UnOp,
@@ -1201,59 +1258,63 @@ fn optionalPayload(
}
/// Value in, value out
-fn errorUnionPayload(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp, safety_check: bool) InnerError!*Inst {
+fn zirErrUnionPayload(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp, safety_check: bool) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, unwrap.base.src, "TODO implement zir_sema.errorUnionPayload", .{});
+ return mod.fail(scope, unwrap.base.src, "TODO implement zir_sema.zirErrUnionPayload", .{});
}
/// Pointer in, pointer out
-fn errorUnionPayloadPtr(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp, safety_check: bool) InnerError!*Inst {
+fn zirErrUnionPayloadPtr(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp, safety_check: bool) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, unwrap.base.src, "TODO implement zir_sema.errorUnionPayloadPtr", .{});
+ return mod.fail(scope, unwrap.base.src, "TODO implement zir_sema.zirErrUnionPayloadPtr", .{});
}
/// Value in, value out
-fn errorUnionCode(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirErrUnionCode(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, unwrap.base.src, "TODO implement zir_sema.errorUnionCode", .{});
+ return mod.fail(scope, unwrap.base.src, "TODO implement zir_sema.zirErrUnionCode", .{});
}
/// Pointer in, value out
-fn errorUnionCodePtr(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirErrUnionCodePtr(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, unwrap.base.src, "TODO implement zir_sema.errorUnionCodePtr", .{});
+ return mod.fail(scope, unwrap.base.src, "TODO implement zir_sema.zirErrUnionCodePtr", .{});
}
-fn analyzeInstEnsureErrPayloadVoid(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirEnsureErrPayloadVoid(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, unwrap.base.src, "TODO implement analyzeInstEnsureErrPayloadVoid", .{});
+ return mod.fail(scope, unwrap.base.src, "TODO implement zirEnsureErrPayloadVoid", .{});
}
-fn analyzeInstFnType(mod: *Module, scope: *Scope, fntype: *zir.Inst.FnType) InnerError!*Inst {
+fn zirFnType(mod: *Module, scope: *Scope, fntype: *zir.Inst.FnType) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const return_type = try resolveType(mod, scope, fntype.positionals.return_type);
+ const cc_tv = try resolveInstConst(mod, scope, fntype.positionals.cc);
+ const cc_str = cc_tv.val.castTag(.enum_literal).?.data;
+ const cc = std.meta.stringToEnum(std.builtin.CallingConvention, cc_str) orelse
+ return mod.fail(scope, fntype.positionals.cc.src, "Unknown calling convention {s}", .{cc_str});
// Hot path for some common function types.
if (fntype.positionals.param_types.len == 0) {
- if (return_type.zigTypeTag() == .NoReturn and fntype.kw_args.cc == .Unspecified) {
+ if (return_type.zigTypeTag() == .NoReturn and cc == .Unspecified) {
return mod.constType(scope, fntype.base.src, Type.initTag(.fn_noreturn_no_args));
}
- if (return_type.zigTypeTag() == .Void and fntype.kw_args.cc == .Unspecified) {
+ if (return_type.zigTypeTag() == .Void and cc == .Unspecified) {
return mod.constType(scope, fntype.base.src, Type.initTag(.fn_void_no_args));
}
- if (return_type.zigTypeTag() == .NoReturn and fntype.kw_args.cc == .Naked) {
+ if (return_type.zigTypeTag() == .NoReturn and cc == .Naked) {
return mod.constType(scope, fntype.base.src, Type.initTag(.fn_naked_noreturn_no_args));
}
- if (return_type.zigTypeTag() == .Void and fntype.kw_args.cc == .C) {
+ if (return_type.zigTypeTag() == .Void and cc == .C) {
return mod.constType(scope, fntype.base.src, Type.initTag(.fn_ccc_void_no_args));
}
}
@@ -1270,20 +1331,20 @@ fn analyzeInstFnType(mod: *Module, scope: *Scope, fntype: *zir.Inst.FnType) Inne
}
const fn_ty = try Type.Tag.function.create(arena, .{
- .cc = fntype.kw_args.cc,
- .return_type = return_type,
.param_types = param_types,
+ .return_type = return_type,
+ .cc = cc,
});
return mod.constType(scope, fntype.base.src, fn_ty);
}
-fn analyzeInstPrimitive(mod: *Module, scope: *Scope, primitive: *zir.Inst.Primitive) InnerError!*Inst {
+fn zirPrimitive(mod: *Module, scope: *Scope, primitive: *zir.Inst.Primitive) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
return mod.constInst(scope, primitive.base.src, primitive.positionals.tag.toTypedValue());
}
-fn analyzeInstAs(mod: *Module, scope: *Scope, as: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirAs(mod: *Module, scope: *Scope, as: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const dest_type = try resolveType(mod, scope, as.positionals.lhs);
@@ -1291,7 +1352,7 @@ fn analyzeInstAs(mod: *Module, scope: *Scope, as: *zir.Inst.BinOp) InnerError!*I
return mod.coerce(scope, dest_type, new_inst);
}
-fn analyzeInstPtrToInt(mod: *Module, scope: *Scope, ptrtoint: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirPtrtoint(mod: *Module, scope: *Scope, ptrtoint: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const ptr = try resolveInst(mod, scope, ptrtoint.positionals.operand);
@@ -1304,7 +1365,7 @@ fn analyzeInstPtrToInt(mod: *Module, scope: *Scope, ptrtoint: *zir.Inst.UnOp) In
return mod.addUnOp(b, ptrtoint.base.src, ty, .ptrtoint, ptr);
}
-fn fieldVal(mod: *Module, scope: *Scope, inst: *zir.Inst.Field) InnerError!*Inst {
+fn zirFieldVal(mod: *Module, scope: *Scope, inst: *zir.Inst.Field) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -1315,7 +1376,7 @@ fn fieldVal(mod: *Module, scope: *Scope, inst: *zir.Inst.Field) InnerError!*Inst
return mod.analyzeDeref(scope, inst.base.src, result_ptr, result_ptr.src);
}
-fn fieldPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.Field) InnerError!*Inst {
+fn zirFieldPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.Field) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -1324,7 +1385,7 @@ fn fieldPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.Field) InnerError!*Inst
return mod.namedFieldPtr(scope, inst.base.src, object_ptr, field_name, inst.base.src);
}
-fn fieldValNamed(mod: *Module, scope: *Scope, inst: *zir.Inst.FieldNamed) InnerError!*Inst {
+fn zirFieldValNamed(mod: *Module, scope: *Scope, inst: *zir.Inst.FieldNamed) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -1336,7 +1397,7 @@ fn fieldValNamed(mod: *Module, scope: *Scope, inst: *zir.Inst.FieldNamed) InnerE
return mod.analyzeDeref(scope, inst.base.src, result_ptr, result_ptr.src);
}
-fn fieldPtrNamed(mod: *Module, scope: *Scope, inst: *zir.Inst.FieldNamed) InnerError!*Inst {
+fn zirFieldPtrNamed(mod: *Module, scope: *Scope, inst: *zir.Inst.FieldNamed) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -1346,7 +1407,7 @@ fn fieldPtrNamed(mod: *Module, scope: *Scope, inst: *zir.Inst.FieldNamed) InnerE
return mod.namedFieldPtr(scope, inst.base.src, object_ptr, field_name, fsrc);
}
-fn analyzeInstIntCast(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirIntcast(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const dest_type = try resolveType(mod, scope, inst.positionals.lhs);
@@ -1384,7 +1445,7 @@ fn analyzeInstIntCast(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerE
return mod.fail(scope, inst.base.src, "TODO implement analyze widen or shorten int", .{});
}
-fn analyzeInstBitCast(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirBitcast(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const dest_type = try resolveType(mod, scope, inst.positionals.lhs);
@@ -1392,7 +1453,7 @@ fn analyzeInstBitCast(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerE
return mod.bitcast(scope, dest_type, operand);
}
-fn analyzeInstFloatCast(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirFloatcast(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const dest_type = try resolveType(mod, scope, inst.positionals.lhs);
@@ -1430,7 +1491,7 @@ fn analyzeInstFloatCast(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) Inne
return mod.fail(scope, inst.base.src, "TODO implement analyze widen or shorten float", .{});
}
-fn elemVal(mod: *Module, scope: *Scope, inst: *zir.Inst.Elem) InnerError!*Inst {
+fn zirElemVal(mod: *Module, scope: *Scope, inst: *zir.Inst.Elem) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -1441,7 +1502,7 @@ fn elemVal(mod: *Module, scope: *Scope, inst: *zir.Inst.Elem) InnerError!*Inst {
return mod.analyzeDeref(scope, inst.base.src, result_ptr, result_ptr.src);
}
-fn elemPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.Elem) InnerError!*Inst {
+fn zirElemPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.Elem) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -1450,7 +1511,7 @@ fn elemPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.Elem) InnerError!*Inst {
return mod.elemPtr(scope, inst.base.src, array_ptr, elem_index);
}
-fn analyzeInstSlice(mod: *Module, scope: *Scope, inst: *zir.Inst.Slice) InnerError!*Inst {
+fn zirSlice(mod: *Module, scope: *Scope, inst: *zir.Inst.Slice) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const array_ptr = try resolveInst(mod, scope, inst.positionals.array_ptr);
@@ -1461,7 +1522,7 @@ fn analyzeInstSlice(mod: *Module, scope: *Scope, inst: *zir.Inst.Slice) InnerErr
return mod.analyzeSlice(scope, inst.base.src, array_ptr, start, end, sentinel);
}
-fn analyzeInstSliceStart(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirSliceStart(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const array_ptr = try resolveInst(mod, scope, inst.positionals.lhs);
@@ -1470,7 +1531,7 @@ fn analyzeInstSliceStart(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) Inn
return mod.analyzeSlice(scope, inst.base.src, array_ptr, start, null, null);
}
-fn analyzeInstSwitchRange(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirSwitchRange(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const start = try resolveInst(mod, scope, inst.positionals.lhs);
@@ -1484,21 +1545,19 @@ fn analyzeInstSwitchRange(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) In
.Int, .ComptimeInt => {},
else => return mod.constVoid(scope, inst.base.src),
}
- if (start.value()) |start_val| {
- if (end.value()) |end_val| {
- if (start_val.compare(.gte, end_val)) {
- return mod.fail(scope, inst.base.src, "range start value must be smaller than the end value", .{});
- }
- }
+ // .switch_range must be inside a comptime scope
+ const start_val = start.value().?;
+ const end_val = end.value().?;
+ if (start_val.compare(.gte, end_val)) {
+ return mod.fail(scope, inst.base.src, "range start value must be smaller than the end value", .{});
}
return mod.constVoid(scope, inst.base.src);
}
-fn analyzeInstSwitchBr(mod: *Module, scope: *Scope, inst: *zir.Inst.SwitchBr) InnerError!*Inst {
+fn zirSwitchBr(mod: *Module, scope: *Scope, inst: *zir.Inst.SwitchBr) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- const target_ptr = try resolveInst(mod, scope, inst.positionals.target_ptr);
- const target = try mod.analyzeDeref(scope, inst.base.src, target_ptr, inst.positionals.target_ptr.src);
+ const target = try resolveInst(mod, scope, inst.positionals.target);
try validateSwitch(mod, scope, target, inst);
if (try mod.resolveDefinedValue(scope, target)) |target_val| {
@@ -1562,7 +1621,7 @@ fn analyzeInstSwitchBr(mod: *Module, scope: *Scope, inst: *zir.Inst.SwitchBr) In
.instructions = try parent_block.arena.dupe(*Inst, case_block.instructions.items),
};
- return mod.addSwitchBr(parent_block, inst.base.src, target_ptr, cases, else_body);
+ return mod.addSwitchBr(parent_block, inst.base.src, target, cases, else_body);
}
fn validateSwitch(mod: *Module, scope: *Scope, target: *Inst, inst: *zir.Inst.SwitchBr) InnerError!void {
@@ -1698,7 +1757,7 @@ fn validateSwitch(mod: *Module, scope: *Scope, target: *Inst, inst: *zir.Inst.Sw
}
}
-fn analyzeInstImport(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirImport(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const operand = try resolveConstString(mod, scope, inst.positionals.operand);
@@ -1718,19 +1777,19 @@ fn analyzeInstImport(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerErr
return mod.constType(scope, inst.base.src, file_scope.root_container.ty);
}
-fn analyzeInstShl(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirShl(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, inst.base.src, "TODO implement analyzeInstShl", .{});
+ return mod.fail(scope, inst.base.src, "TODO implement zirShl", .{});
}
-fn analyzeInstShr(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirShr(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, inst.base.src, "TODO implement analyzeInstShr", .{});
+ return mod.fail(scope, inst.base.src, "TODO implement zirShr", .{});
}
-fn analyzeInstBitwise(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirBitwise(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -1767,7 +1826,7 @@ fn analyzeInstBitwise(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerE
const is_int = scalar_tag == .Int or scalar_tag == .ComptimeInt;
if (!is_int) {
- return mod.fail(scope, inst.base.src, "invalid operands to binary bitwise expression: '{}' and '{}'", .{ @tagName(lhs.ty.zigTypeTag()), @tagName(rhs.ty.zigTypeTag()) });
+ return mod.fail(scope, inst.base.src, "invalid operands to binary bitwise expression: '{s}' and '{s}'", .{ @tagName(lhs.ty.zigTypeTag()), @tagName(rhs.ty.zigTypeTag()) });
}
if (casted_lhs.value()) |lhs_val| {
@@ -1784,8 +1843,8 @@ fn analyzeInstBitwise(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerE
const b = try mod.requireRuntimeBlock(scope, inst.base.src);
const ir_tag = switch (inst.base.tag) {
- .bitand => Inst.Tag.bitand,
- .bitor => Inst.Tag.bitor,
+ .bit_and => Inst.Tag.bit_and,
+ .bit_or => Inst.Tag.bit_or,
.xor => Inst.Tag.xor,
else => unreachable,
};
@@ -1793,25 +1852,25 @@ fn analyzeInstBitwise(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerE
return mod.addBinOp(b, inst.base.src, scalar_type, ir_tag, casted_lhs, casted_rhs);
}
-fn analyzeInstBitNot(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirBitNot(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, inst.base.src, "TODO implement analyzeInstBitNot", .{});
+ return mod.fail(scope, inst.base.src, "TODO implement zirBitNot", .{});
}
-fn analyzeInstArrayCat(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirArrayCat(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, inst.base.src, "TODO implement analyzeInstArrayCat", .{});
+ return mod.fail(scope, inst.base.src, "TODO implement zirArrayCat", .{});
}
-fn analyzeInstArrayMul(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirArrayMul(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
- return mod.fail(scope, inst.base.src, "TODO implement analyzeInstArrayMul", .{});
+ return mod.fail(scope, inst.base.src, "TODO implement zirArrayMul", .{});
}
-fn analyzeInstArithmetic(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirArithmetic(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
@@ -1912,14 +1971,14 @@ fn analyzeInstComptimeOp(mod: *Module, scope: *Scope, res_type: Type, inst: *zir
});
}
-fn analyzeInstDeref(mod: *Module, scope: *Scope, deref: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirDeref(mod: *Module, scope: *Scope, deref: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const ptr = try resolveInst(mod, scope, deref.positionals.operand);
return mod.analyzeDeref(scope, deref.base.src, ptr, deref.positionals.operand.src);
}
-fn analyzeInstAsm(mod: *Module, scope: *Scope, assembly: *zir.Inst.Asm) InnerError!*Inst {
+fn zirAsm(mod: *Module, scope: *Scope, assembly: *zir.Inst.Asm) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const return_type = try resolveType(mod, scope, assembly.positionals.return_type);
@@ -1960,7 +2019,7 @@ fn analyzeInstAsm(mod: *Module, scope: *Scope, assembly: *zir.Inst.Asm) InnerErr
return &inst.base;
}
-fn analyzeInstCmp(
+fn zirCmp(
mod: *Module,
scope: *Scope,
inst: *zir.Inst.BinOp,
@@ -2018,14 +2077,14 @@ fn analyzeInstCmp(
return mod.fail(scope, inst.base.src, "TODO implement more cmp analysis", .{});
}
-fn analyzeInstTypeOf(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirTypeof(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const operand = try resolveInst(mod, scope, inst.positionals.operand);
return mod.constType(scope, inst.base.src, operand.ty);
}
-fn analyzeInstTypeOfPeer(mod: *Module, scope: *Scope, inst: *zir.Inst.TypeOfPeer) InnerError!*Inst {
+fn zirTypeofPeer(mod: *Module, scope: *Scope, inst: *zir.Inst.TypeOfPeer) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
var insts_to_res = try mod.gpa.alloc(*ir.Inst, inst.positionals.items.len);
@@ -2037,7 +2096,7 @@ fn analyzeInstTypeOfPeer(mod: *Module, scope: *Scope, inst: *zir.Inst.TypeOfPeer
return mod.constType(scope, inst.base.src, pt_res);
}
-fn analyzeInstBoolNot(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirBoolNot(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const uncasted_operand = try resolveInst(mod, scope, inst.positionals.operand);
@@ -2050,7 +2109,7 @@ fn analyzeInstBoolNot(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerEr
return mod.addUnOp(b, inst.base.src, bool_type, .not, operand);
}
-fn analyzeInstBoolOp(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
+fn zirBoolOp(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const bool_type = Type.initTag(.bool);
@@ -2059,7 +2118,7 @@ fn analyzeInstBoolOp(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerEr
const uncasted_rhs = try resolveInst(mod, scope, inst.positionals.rhs);
const rhs = try mod.coerce(scope, bool_type, uncasted_rhs);
- const is_bool_or = inst.base.tag == .boolor;
+ const is_bool_or = inst.base.tag == .bool_or;
if (lhs.value()) |lhs_val| {
if (rhs.value()) |rhs_val| {
@@ -2071,17 +2130,17 @@ fn analyzeInstBoolOp(mod: *Module, scope: *Scope, inst: *zir.Inst.BinOp) InnerEr
}
}
const b = try mod.requireRuntimeBlock(scope, inst.base.src);
- return mod.addBinOp(b, inst.base.src, bool_type, if (is_bool_or) .boolor else .booland, lhs, rhs);
+ return mod.addBinOp(b, inst.base.src, bool_type, if (is_bool_or) .bool_or else .bool_and, lhs, rhs);
}
-fn isNull(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, invert_logic: bool) InnerError!*Inst {
+fn zirIsNull(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, invert_logic: bool) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const operand = try resolveInst(mod, scope, inst.positionals.operand);
return mod.analyzeIsNull(scope, inst.base.src, operand, invert_logic);
}
-fn isNullPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, invert_logic: bool) InnerError!*Inst {
+fn zirIsNullPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, invert_logic: bool) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const ptr = try resolveInst(mod, scope, inst.positionals.operand);
@@ -2089,14 +2148,14 @@ fn isNullPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, invert_logic: bo
return mod.analyzeIsNull(scope, inst.base.src, loaded, invert_logic);
}
-fn isErr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirIsErr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const operand = try resolveInst(mod, scope, inst.positionals.operand);
return mod.analyzeIsErr(scope, inst.base.src, operand);
}
-fn isErrPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirIsErrPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const ptr = try resolveInst(mod, scope, inst.positionals.operand);
@@ -2104,7 +2163,7 @@ fn isErrPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst
return mod.analyzeIsErr(scope, inst.base.src, loaded);
}
-fn analyzeInstCondBr(mod: *Module, scope: *Scope, inst: *zir.Inst.CondBr) InnerError!*Inst {
+fn zirCondbr(mod: *Module, scope: *Scope, inst: *zir.Inst.CondBr) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const uncasted_cond = try resolveInst(mod, scope, inst.positionals.condition);
@@ -2153,7 +2212,7 @@ fn analyzeInstCondBr(mod: *Module, scope: *Scope, inst: *zir.Inst.CondBr) InnerE
return mod.addCondBr(parent_block, inst.base.src, cond, then_body, else_body);
}
-fn analyzeInstUnreachable(
+fn zirUnreachable(
mod: *Module,
scope: *Scope,
unreach: *zir.Inst.NoOp,
@@ -2170,7 +2229,7 @@ fn analyzeInstUnreachable(
}
}
-fn analyzeInstRet(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
+fn zirReturn(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const operand = try resolveInst(mod, scope, inst.positionals.operand);
@@ -2179,13 +2238,14 @@ fn analyzeInstRet(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!
if (b.inlining) |inlining| {
// We are inlining a function call; rewrite the `ret` as a `break`.
try inlining.merges.results.append(mod.gpa, operand);
- return mod.addBr(b, inst.base.src, inlining.merges.block_inst, operand);
+ const br = try mod.addBr(b, inst.base.src, inlining.merges.block_inst, operand);
+ return &br.base;
}
return mod.addUnOp(b, inst.base.src, Type.initTag(.noreturn), .ret, operand);
}
-fn analyzeInstRetVoid(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerError!*Inst {
+fn zirReturnVoid(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const b = try mod.requireFunctionBlock(scope, inst.base.src);
@@ -2193,7 +2253,8 @@ fn analyzeInstRetVoid(mod: *Module, scope: *Scope, inst: *zir.Inst.NoOp) InnerEr
// We are inlining a function call; rewrite the `retvoid` as a `breakvoid`.
const void_inst = try mod.constVoid(scope, inst.base.src);
try inlining.merges.results.append(mod.gpa, void_inst);
- return mod.addBr(b, inst.base.src, inlining.merges.block_inst, void_inst);
+ const br = try mod.addBr(b, inst.base.src, inlining.merges.block_inst, void_inst);
+ return &br.base;
}
if (b.func) |func| {
@@ -2216,27 +2277,7 @@ fn floatOpAllowed(tag: zir.Inst.Tag) bool {
};
}
-fn analyzeBreak(
- mod: *Module,
- scope: *Scope,
- src: usize,
- zir_block: *zir.Inst.Block,
- operand: *Inst,
-) InnerError!*Inst {
- var opt_block = scope.cast(Scope.Block);
- while (opt_block) |block| {
- if (block.label) |*label| {
- if (label.zir_block == zir_block) {
- try label.merges.results.append(mod.gpa, operand);
- const b = try mod.requireFunctionBlock(scope, src);
- return mod.addBr(b, src, label.merges.block_inst, operand);
- }
- }
- opt_block = block.parent;
- } else unreachable;
-}
-
-fn analyzeInstSimplePtrType(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, mutable: bool, size: std.builtin.TypeInfo.Pointer.Size) InnerError!*Inst {
+fn zirSimplePtrType(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, mutable: bool, size: std.builtin.TypeInfo.Pointer.Size) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
const elem_type = try resolveType(mod, scope, inst.positionals.operand);
@@ -2244,7 +2285,7 @@ fn analyzeInstSimplePtrType(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, m
return mod.constType(scope, inst.base.src, ty);
}
-fn analyzeInstPtrType(mod: *Module, scope: *Scope, inst: *zir.Inst.PtrType) InnerError!*Inst {
+fn zirPtrType(mod: *Module, scope: *Scope, inst: *zir.Inst.PtrType) InnerError!*Inst {
const tracy = trace(@src());
defer tracy.end();
// TODO lazy values
diff --git a/test/cli.zig b/test/cli.zig
index 33dbc2d62b..c0702fa54c 100644
--- a/test/cli.zig
+++ b/test/cli.zig
@@ -51,9 +51,9 @@ fn unwrapArg(arg: UnwrapArgError![]u8) UnwrapArgError![]u8 {
}
fn printCmd(cwd: []const u8, argv: []const []const u8) void {
- std.debug.warn("cd {} && ", .{cwd});
+ std.debug.warn("cd {s} && ", .{cwd});
for (argv) |arg| {
- std.debug.warn("{} ", .{arg});
+ std.debug.warn("{s} ", .{arg});
}
std.debug.warn("\n", .{});
}
@@ -75,14 +75,14 @@ fn exec(cwd: []const u8, expect_0: bool, argv: []const []const u8) !ChildProcess
if ((code != 0) == expect_0) {
std.debug.warn("The following command exited with error code {}:\n", .{code});
printCmd(cwd, argv);
- std.debug.warn("stderr:\n{}\n", .{result.stderr});
+ std.debug.warn("stderr:\n{s}\n", .{result.stderr});
return error.CommandFailed;
}
},
else => {
std.debug.warn("The following command terminated unexpectedly:\n", .{});
printCmd(cwd, argv);
- std.debug.warn("stderr:\n{}\n", .{result.stderr});
+ std.debug.warn("stderr:\n{s}\n", .{result.stderr});
return error.CommandFailed;
},
}
@@ -113,7 +113,7 @@ fn testGodboltApi(zig_exe: []const u8, dir_path: []const u8) anyerror!void {
\\ return num * num;
\\}
\\extern fn zig_panic() noreturn;
- \\pub inline fn panic(msg: []const u8, error_return_trace: ?*@import("builtin").StackTrace) noreturn {
+ \\pub fn panic(msg: []const u8, error_return_trace: ?*@import("builtin").StackTrace) noreturn {
\\ zig_panic();
\\}
);
diff --git a/test/compile_errors.zig b/test/compile_errors.zig
index f936eb49a7..2fb4c36ed4 100644
--- a/test/compile_errors.zig
+++ b/test/compile_errors.zig
@@ -323,7 +323,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
\\ e: E,
\\};
\\export fn entry() void {
- \\ if (@TagType(E) != u8) @compileError("did not infer u8 tag type");
+ \\ if (@typeInfo(E).Enum.tag_type != u8) @compileError("did not infer u8 tag type");
\\ const s: S = undefined;
\\}
, &[_][]const u8{
@@ -1648,7 +1648,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
\\ @call(.{ .modifier = .compile_time }, baz, .{});
\\}
\\fn foo() void {}
- \\inline fn bar() void {}
+ \\fn bar() callconv(.Inline) void {}
\\fn baz1() void {}
\\fn baz2() void {}
, &[_][]const u8{
@@ -2728,7 +2728,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
\\const InvalidToken = struct {};
\\const ExpectedVarDeclOrFn = struct {};
, &[_][]const u8{
- "tmp.zig:4:9: error: expected type '@TagType(Error)', found 'type'",
+ "tmp.zig:4:9: error: expected type '@typeInfo(Error).Union.tag_type.?', found 'type'",
});
cases.addTest("binary OR operator on error sets",
@@ -3944,7 +3944,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
\\export fn entry() void {
\\ var a = b;
\\}
- \\inline fn b() void { }
+ \\fn b() callconv(.Inline) void { }
, &[_][]const u8{
"tmp.zig:2:5: error: functions marked inline must be stored in const or comptime var",
"tmp.zig:4:1: note: declared here",
@@ -6782,11 +6782,11 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
// \\export fn foo() void {
// \\ bar();
// \\}
- // \\inline fn bar() void {
+ // \\fn bar() callconv(.Inline) void {
// \\ baz();
// \\ quux();
// \\}
- // \\inline fn baz() void {
+ // \\fn baz() callconv(.Inline) void {
// \\ bar();
// \\ quux();
// \\}
@@ -6799,7 +6799,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
// \\export fn foo() void {
// \\ quux(@ptrToInt(bar));
// \\}
- // \\inline fn bar() void { }
+ // \\fn bar() callconv(.Inline) void { }
// \\extern fn quux(usize) void;
//, &[_][]const u8{
// "tmp.zig:4:1: error: unable to inline function",
@@ -7207,7 +7207,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
\\export fn entry() void {
\\ foo();
\\}
- \\inline fn foo() void {
+ \\fn foo() callconv(.Inline) void {
\\ @setAlignStack(16);
\\}
, &[_][]const u8{
@@ -7462,24 +7462,12 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
"tmp.zig:4:5: note: declared here",
});
- cases.add("@TagType when union has no attached enum",
- \\const Foo = union {
- \\ A: i32,
- \\};
- \\export fn entry() void {
- \\ const x = @TagType(Foo);
- \\}
- , &[_][]const u8{
- "tmp.zig:5:24: error: union 'Foo' has no tag",
- "tmp.zig:1:13: note: consider 'union(enum)' here",
- });
-
cases.add("non-integer tag type to automatic union enum",
\\const Foo = union(enum(f32)) {
\\ A: i32,
\\};
\\export fn entry() void {
- \\ const x = @TagType(Foo);
+ \\ const x = @typeInfo(Foo).Union.tag_type.?;
\\}
, &[_][]const u8{
"tmp.zig:1:24: error: expected integer tag type, found 'f32'",
@@ -7490,7 +7478,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
\\ A: i32,
\\};
\\export fn entry() void {
- \\ const x = @TagType(Foo);
+ \\ const x = @typeInfo(Foo).Union.tag_type.?;
\\}
, &[_][]const u8{
"tmp.zig:1:19: error: expected enum tag type, found 'u32'",
@@ -7981,6 +7969,20 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
"tmp.zig:7:37: note: referenced here",
});
+ // issue #7810
+ cases.add("comptime slice-len increment beyond bounds",
+ \\export fn foo_slice_len_increment_beyond_bounds() void {
+ \\ comptime {
+ \\ var buf_storage: [8]u8 = undefined;
+ \\ var buf: []const u8 = buf_storage[0..];
+ \\ buf.len += 1;
+ \\ buf[8] = 42;
+ \\ }
+ \\}
+ , &[_][]const u8{
+ ":6:12: error: out of bounds slice",
+ });
+
cases.add("comptime slice-sentinel is out of bounds (unterminated)",
\\export fn foo_array() void {
\\ comptime {
diff --git a/test/run_translated_c.zig b/test/run_translated_c.zig
index e3f9d6b132..b8af201e36 100644
--- a/test/run_translated_c.zig
+++ b/test/run_translated_c.zig
@@ -794,4 +794,132 @@ pub fn addCases(cases: *tests.RunTranslatedCContext) void {
\\ return 0;
\\}
, "");
+
+ cases.add("Wide, UTF-16, and UTF-32 string literals",
+ \\#include
+ \\#include
+ \\#include
+ \\int main(void) {
+ \\ const wchar_t *wide_str = L"wide";
+ \\ const wchar_t wide_hello[] = L"hello";
+ \\ if (wcslen(wide_str) != 4) abort();
+ \\ if (wcslen(L"literal") != 7) abort();
+ \\ if (wcscmp(wide_hello, L"hello") != 0) abort();
+ \\
+ \\ const uint16_t *u16_str = u"wide";
+ \\ const uint16_t u16_hello[] = u"hello";
+ \\ if (u16_str[3] != u'e' || u16_str[4] != 0) abort();
+ \\ if (u16_hello[4] != u'o' || u16_hello[5] != 0) abort();
+ \\
+ \\ const uint32_t *u32_str = U"wide";
+ \\ const uint32_t u32_hello[] = U"hello";
+ \\ if (u32_str[3] != U'e' || u32_str[4] != 0) abort();
+ \\ if (u32_hello[4] != U'o' || u32_hello[5] != 0) abort();
+ \\ return 0;
+ \\}
+ , "");
+
+ cases.add("Address of function is no-op",
+ \\#include
+ \\#include
+ \\typedef int (*myfunc)(int);
+ \\int a(int arg) { return arg + 1;}
+ \\int b(int arg) { return arg + 2;}
+ \\int caller(myfunc fn, int arg) {
+ \\ return fn(arg);
+ \\}
+ \\int main() {
+ \\ myfunc arr[3] = {&a, &b, a};
+ \\ myfunc foo = a;
+ \\ myfunc bar = &(a);
+ \\ if (foo != bar) abort();
+ \\ if (arr[0] == arr[1]) abort();
+ \\ if (arr[0] != arr[2]) abort();
+ \\ if (caller(b, 40) != 42) abort();
+ \\ if (caller(&b, 40) != 42) abort();
+ \\ return 0;
+ \\}
+ , "");
+
+ cases.add("Obscure ways of calling functions; issue #4124",
+ \\#include
+ \\static int add(int a, int b) {
+ \\ return a + b;
+ \\}
+ \\typedef int (*adder)(int, int);
+ \\typedef void (*funcptr)(void);
+ \\int main() {
+ \\ if ((add)(1, 2) != 3) abort();
+ \\ if ((&add)(1, 2) != 3) abort();
+ \\ if (add(3, 1) != 4) abort();
+ \\ if ((*add)(2, 3) != 5) abort();
+ \\ if ((**add)(7, -1) != 6) abort();
+ \\ if ((***add)(-2, 9) != 7) abort();
+ \\
+ \\ int (*ptr)(int a, int b);
+ \\ ptr = add;
+ \\
+ \\ if (ptr(1, 2) != 3) abort();
+ \\ if ((*ptr)(3, 1) != 4) abort();
+ \\ if ((**ptr)(2, 3) != 5) abort();
+ \\ if ((***ptr)(7, -1) != 6) abort();
+ \\ if ((****ptr)(-2, 9) != 7) abort();
+ \\
+ \\ funcptr addr1 = (funcptr)(add);
+ \\ funcptr addr2 = (funcptr)(&add);
+ \\
+ \\ if (addr1 != addr2) abort();
+ \\ if (((int(*)(int, int))addr1)(1, 2) != 3) abort();
+ \\ if (((adder)addr2)(1, 2) != 3) abort();
+ \\ return 0;
+ \\}
+ , "");
+
+ cases.add("Return boolean expression as int; issue #6215",
+ \\#include
+ \\#include
+ \\bool actual_bool(void) { return 4 - 1 < 4;}
+ \\char char_bool_ret(void) { return 0 || 1; }
+ \\short short_bool_ret(void) { return 0 < 1; }
+ \\int int_bool_ret(void) { return 1 && 1; }
+ \\long long_bool_ret(void) { return !(0 > 1); }
+ \\static int GLOBAL = 1;
+ \\int nested_scopes(int a, int b) {
+ \\ if (a == 1) {
+ \\ int target = 1;
+ \\ return b == target;
+ \\ } else {
+ \\ int target = 2;
+ \\ if (b == target) {
+ \\ return GLOBAL == 1;
+ \\ }
+ \\ return target == 2;
+ \\ }
+ \\}
+ \\int main(void) {
+ \\ if (!actual_bool()) abort();
+ \\ if (!char_bool_ret()) abort();
+ \\ if (!short_bool_ret()) abort();
+ \\ if (!int_bool_ret()) abort();
+ \\ if (!long_bool_ret()) abort();
+ \\ if (!nested_scopes(1, 1)) abort();
+ \\ if (nested_scopes(1, 2)) abort();
+ \\ if (!nested_scopes(0, 2)) abort();
+ \\ if (!nested_scopes(0, 3)) abort();
+ \\ return 1 != 1;
+ \\}
+ , "");
+
+ cases.add("Comma operator should create new scope; issue #7989",
+ \\#include
+ \\#include
+ \\int main(void) {
+ \\ if (1 || (abort(), 1)) {}
+ \\ if (0 && (1, printf("do not print\n"))) {}
+ \\ int x = 0;
+ \\ x = (x = 3, 4, x + 1);
+ \\ if (x != 4) abort();
+ \\ return 0;
+ \\}
+ , "");
}
diff --git a/test/runtime_safety.zig b/test/runtime_safety.zig
index 2ab728b580..eb49b2dbc1 100644
--- a/test/runtime_safety.zig
+++ b/test/runtime_safety.zig
@@ -74,7 +74,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
\\pub fn main() void {
\\ var u: U = undefined;
\\ @memset(@ptrCast([*]u8, &u), 0x55, @sizeOf(U));
- \\ var t: @TagType(U) = u;
+ \\ var t: @typeInfo(U).Union.tag_type.? = u;
\\ var n = @tagName(t);
\\}
);
diff --git a/test/stage1/behavior/bugs/1322.zig b/test/stage1/behavior/bugs/1322.zig
index 3231a985e7..02ead6afff 100644
--- a/test/stage1/behavior/bugs/1322.zig
+++ b/test/stage1/behavior/bugs/1322.zig
@@ -13,7 +13,7 @@ const C = struct {};
test "tagged union with all void fields but a meaningful tag" {
var a: A = A{ .b = B{ .c = C{} } };
- std.testing.expect(@as(@TagType(B), a.b) == @TagType(B).c);
+ std.testing.expect(@as(std.meta.Tag(B), a.b) == std.meta.Tag(B).c);
a = A{ .b = B.None };
- std.testing.expect(@as(@TagType(B), a.b) == @TagType(B).None);
+ std.testing.expect(@as(std.meta.Tag(B), a.b) == std.meta.Tag(B).None);
}
diff --git a/test/stage1/behavior/enum.zig b/test/stage1/behavior/enum.zig
index 1d424d6e39..ecb95be8f5 100644
--- a/test/stage1/behavior/enum.zig
+++ b/test/stage1/behavior/enum.zig
@@ -1,5 +1,6 @@
const expect = @import("std").testing.expect;
const mem = @import("std").mem;
+const Tag = @import("std").meta.Tag;
test "extern enum" {
const S = struct {
@@ -827,12 +828,12 @@ test "set enum tag type" {
{
var x = Small.One;
x = Small.Two;
- comptime expect(@TagType(Small) == u2);
+ comptime expect(Tag(Small) == u2);
}
{
var x = Small2.One;
x = Small2.Two;
- comptime expect(@TagType(Small2) == u2);
+ comptime expect(Tag(Small2) == u2);
}
}
@@ -905,11 +906,11 @@ fn getC(data: *const BitFieldOfEnums) C {
}
test "casting enum to its tag type" {
- testCastEnumToTagType(Small2.Two);
- comptime testCastEnumToTagType(Small2.Two);
+ testCastEnumTag(Small2.Two);
+ comptime testCastEnumTag(Small2.Two);
}
-fn testCastEnumToTagType(value: Small2) void {
+fn testCastEnumTag(value: Small2) void {
expect(@enumToInt(value) == 1);
}
@@ -1163,14 +1164,14 @@ test "enum with comptime_int tag type" {
Two = 2,
Three = 1,
};
- comptime expect(@TagType(Enum) == comptime_int);
+ comptime expect(Tag(Enum) == comptime_int);
}
test "enum with one member default to u0 tag type" {
const E0 = enum {
X,
};
- comptime expect(@TagType(E0) == u0);
+ comptime expect(Tag(E0) == u0);
}
test "tagName on enum literals" {
diff --git a/test/stage1/behavior/fn.zig b/test/stage1/behavior/fn.zig
index dd69d00c60..a1e726c565 100644
--- a/test/stage1/behavior/fn.zig
+++ b/test/stage1/behavior/fn.zig
@@ -113,7 +113,7 @@ test "assign inline fn to const variable" {
a();
}
-inline fn inlineFn() void {}
+fn inlineFn() callconv(.Inline) void {}
test "pass by non-copying value" {
expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);
diff --git a/test/stage1/behavior/type_info.zig b/test/stage1/behavior/type_info.zig
index aa5ac89c94..6dec7ca4d2 100644
--- a/test/stage1/behavior/type_info.zig
+++ b/test/stage1/behavior/type_info.zig
@@ -14,7 +14,7 @@ test "type info: tag type, void info" {
}
fn testBasic() void {
- expect(@TagType(TypeInfo) == TypeId);
+ expect(@typeInfo(TypeInfo).Union.tag_type == TypeId);
const void_info = @typeInfo(void);
expect(void_info == TypeId.Void);
expect(void_info.Void == {});
diff --git a/test/stage1/behavior/union.zig b/test/stage1/behavior/union.zig
index 63f36e755a..e46b6bb6b9 100644
--- a/test/stage1/behavior/union.zig
+++ b/test/stage1/behavior/union.zig
@@ -1,6 +1,7 @@
const std = @import("std");
const expect = std.testing.expect;
const expectEqual = std.testing.expectEqual;
+const Tag = std.meta.Tag;
const Value = union(enum) {
Int: u64,
@@ -128,7 +129,7 @@ const MultipleChoice = union(enum(u32)) {
test "simple union(enum(u32))" {
var x = MultipleChoice.C;
expect(x == MultipleChoice.C);
- expect(@enumToInt(@as(@TagType(MultipleChoice), x)) == 60);
+ expect(@enumToInt(@as(Tag(MultipleChoice), x)) == 60);
}
const MultipleChoice2 = union(enum(u32)) {
@@ -144,13 +145,13 @@ const MultipleChoice2 = union(enum(u32)) {
};
test "union(enum(u32)) with specified and unspecified tag values" {
- comptime expect(@TagType(@TagType(MultipleChoice2)) == u32);
+ comptime expect(Tag(Tag(MultipleChoice2)) == u32);
testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });
comptime testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });
}
fn testEnumWithSpecifiedAndUnspecifiedTagValues(x: MultipleChoice2) void {
- expect(@enumToInt(@as(@TagType(MultipleChoice2), x)) == 60);
+ expect(@enumToInt(@as(Tag(MultipleChoice2), x)) == 60);
expect(1123 == switch (x) {
MultipleChoice2.A => 1,
MultipleChoice2.B => 2,
@@ -204,11 +205,11 @@ test "union field access gives the enum values" {
}
test "cast union to tag type of union" {
- testCastUnionToTagType(TheUnion{ .B = 1234 });
- comptime testCastUnionToTagType(TheUnion{ .B = 1234 });
+ testCastUnionToTag(TheUnion{ .B = 1234 });
+ comptime testCastUnionToTag(TheUnion{ .B = 1234 });
}
-fn testCastUnionToTagType(x: TheUnion) void {
+fn testCastUnionToTag(x: TheUnion) void {
expect(@as(TheTag, x) == TheTag.B);
}
@@ -298,7 +299,7 @@ const TaggedUnionWithAVoid = union(enum) {
fn testTaggedUnionInit(x: anytype) bool {
const y = TaggedUnionWithAVoid{ .A = x };
- return @as(@TagType(TaggedUnionWithAVoid), y) == TaggedUnionWithAVoid.A;
+ return @as(Tag(TaggedUnionWithAVoid), y) == TaggedUnionWithAVoid.A;
}
pub const UnionEnumNoPayloads = union(enum) {
@@ -309,8 +310,8 @@ pub const UnionEnumNoPayloads = union(enum) {
test "tagged union with no payloads" {
const a = UnionEnumNoPayloads{ .B = {} };
switch (a) {
- @TagType(UnionEnumNoPayloads).A => @panic("wrong"),
- @TagType(UnionEnumNoPayloads).B => {},
+ Tag(UnionEnumNoPayloads).A => @panic("wrong"),
+ Tag(UnionEnumNoPayloads).B => {},
}
}
@@ -325,9 +326,9 @@ test "union with only 1 field casted to its enum type" {
};
var e = Expr{ .Literal = Literal{ .Bool = true } };
- const Tag = @TagType(Expr);
- comptime expect(@TagType(Tag) == u0);
- var t = @as(Tag, e);
+ const ExprTag = Tag(Expr);
+ comptime expect(Tag(ExprTag) == u0);
+ var t = @as(ExprTag, e);
expect(t == Expr.Literal);
}
@@ -337,17 +338,17 @@ test "union with only 1 field casted to its enum type which has enum value speci
Bool: bool,
};
- const Tag = enum(comptime_int) {
+ const ExprTag = enum(comptime_int) {
Literal = 33,
};
- const Expr = union(Tag) {
+ const Expr = union(ExprTag) {
Literal: Literal,
};
var e = Expr{ .Literal = Literal{ .Bool = true } };
- comptime expect(@TagType(Tag) == comptime_int);
- var t = @as(Tag, e);
+ comptime expect(Tag(ExprTag) == comptime_int);
+ var t = @as(ExprTag, e);
expect(t == Expr.Literal);
expect(@enumToInt(t) == 33);
comptime expect(@enumToInt(t) == 33);
@@ -501,7 +502,7 @@ test "union with one member defaults to u0 tag type" {
const U0 = union(enum) {
X: u32,
};
- comptime expect(@TagType(@TagType(U0)) == u0);
+ comptime expect(Tag(Tag(U0)) == u0);
}
test "union with comptime_int tag" {
@@ -510,7 +511,7 @@ test "union with comptime_int tag" {
Y: u16,
Z: u8,
};
- comptime expect(@TagType(@TagType(Union)) == comptime_int);
+ comptime expect(Tag(Tag(Union)) == comptime_int);
}
test "extern union doesn't trigger field check at comptime" {
@@ -591,7 +592,7 @@ test "function call result coerces from tagged union to the tag" {
Two: usize,
};
- const ArchTag = @TagType(Arch);
+ const ArchTag = Tag(Arch);
fn doTheTest() void {
var x: ArchTag = getArch1();
@@ -696,8 +697,8 @@ test "cast from pointer to anonymous struct to pointer to union" {
test "method call on an empty union" {
const S = struct {
- const MyUnion = union(Tag) {
- pub const Tag = enum { X1, X2 };
+ const MyUnion = union(MyUnionTag) {
+ pub const MyUnionTag = enum { X1, X2 };
X1: [0]u8,
X2: [0]u8,
@@ -797,7 +798,7 @@ test "union enum type gets a separate scope" {
};
fn doTheTest() void {
- expect(!@hasDecl(@TagType(U), "foo"));
+ expect(!@hasDecl(Tag(U), "foo"));
}
};
diff --git a/test/stage2/cbe.zig b/test/stage2/cbe.zig
index 6d4e2062bf..35ae1dbf12 100644
--- a/test/stage2/cbe.zig
+++ b/test/stage2/cbe.zig
@@ -179,12 +179,58 @@ pub fn addCases(ctx: *TestContext) !void {
\\ return y - 1;
\\}
\\
- \\inline fn rec(n: usize) usize {
+ \\fn rec(n: usize) callconv(.Inline) usize {
\\ if (n <= 1) return n;
\\ return rec(n - 1);
\\}
, "");
}
+ {
+ var case = ctx.exeFromCompiledC("control flow", .{});
+
+ // Simple while loop
+ case.addCompareOutput(
+ \\export fn main() c_int {
+ \\ var a: c_int = 0;
+ \\ while (a < 5) : (a+=1) {}
+ \\ return a - 5;
+ \\}
+ , "");
+ case.addCompareOutput(
+ \\export fn main() c_int {
+ \\ var a = true;
+ \\ while (!a) {}
+ \\ return 0;
+ \\}
+ , "");
+
+ // If expression
+ case.addCompareOutput(
+ \\export fn main() c_int {
+ \\ var cond: c_int = 0;
+ \\ var a: c_int = @as(c_int, if (cond == 0)
+ \\ 2
+ \\ else
+ \\ 3) + 9;
+ \\ return a - 11;
+ \\}
+ , "");
+
+ // Switch expression
+ case.addCompareOutput(
+ \\export fn main() c_int {
+ \\ var cond: c_int = 0;
+ \\ var a: c_int = switch (cond) {
+ \\ 1 => 1,
+ \\ 2 => 2,
+ \\ 99...300, 12 => 3,
+ \\ 0 => 4,
+ \\ else => 5,
+ \\ };
+ \\ return a - 4;
+ \\}
+ , "");
+ }
ctx.c("empty start function", linux_x64,
\\export fn _start() noreturn {
\\ unreachable;
diff --git a/test/stage2/test.zig b/test/stage2/test.zig
index 0d5a52980b..486edeb864 100644
--- a/test/stage2/test.zig
+++ b/test/stage2/test.zig
@@ -255,7 +255,7 @@ pub fn addCases(ctx: *TestContext) !void {
\\ exit(y - 6);
\\}
\\
- \\inline fn add(a: usize, b: usize, c: usize) usize {
+ \\fn add(a: usize, b: usize, c: usize) callconv(.Inline) usize {
\\ return a + b + c;
\\}
\\
@@ -962,43 +962,6 @@ pub fn addCases(ctx: *TestContext) !void {
,
"hello\nhello\nhello\nhello\nhello\n",
);
-
- // comptime switch
-
- // Basic for loop
- case.addCompareOutput(
- \\pub export fn _start() noreturn {
- \\ assert(foo() == 1);
- \\ exit();
- \\}
- \\
- \\fn foo() u32 {
- \\ const a: comptime_int = 1;
- \\ var b: u32 = 0;
- \\ switch (a) {
- \\ 1 => b = 1,
- \\ 2 => b = 2,
- \\ else => unreachable,
- \\ }
- \\ return b;
- \\}
- \\
- \\pub fn assert(ok: bool) void {
- \\ if (!ok) unreachable; // assertion failure
- \\}
- \\
- \\fn exit() noreturn {
- \\ asm volatile ("syscall"
- \\ :
- \\ : [number] "{rax}" (231),
- \\ [arg1] "{rdi}" (0)
- \\ : "rcx", "r11", "memory"
- \\ );
- \\ unreachable;
- \\}
- ,
- "",
- );
}
{
@@ -1265,7 +1228,7 @@ pub fn addCases(ctx: *TestContext) !void {
\\ exit(y - 6);
\\}
\\
- \\inline fn add(a: usize, b: usize, c: usize) usize {
+ \\fn add(a: usize, b: usize, c: usize) callconv(.Inline) usize {
\\ if (a == 10) @compileError("bad");
\\ return a + b + c;
\\}
@@ -1288,7 +1251,7 @@ pub fn addCases(ctx: *TestContext) !void {
\\ exit(y - 6);
\\}
\\
- \\inline fn add(a: usize, b: usize, c: usize) usize {
+ \\fn add(a: usize, b: usize, c: usize) callconv(.Inline) usize {
\\ if (a == 10) @compileError("bad");
\\ return a + b + c;
\\}
@@ -1314,7 +1277,7 @@ pub fn addCases(ctx: *TestContext) !void {
\\ exit(y - 21);
\\}
\\
- \\inline fn fibonacci(n: usize) usize {
+ \\fn fibonacci(n: usize) callconv(.Inline) usize {
\\ if (n <= 2) return n;
\\ return fibonacci(n - 2) + fibonacci(n - 1);
\\}
@@ -1337,7 +1300,7 @@ pub fn addCases(ctx: *TestContext) !void {
\\ exit(y - 21);
\\}
\\
- \\inline fn fibonacci(n: usize) usize {
+ \\fn fibonacci(n: usize) callconv(.Inline) usize {
\\ if (n <= 2) return n;
\\ return fibonacci(n - 2) + fibonacci(n - 1);
\\}
diff --git a/test/stage2/wasm.zig b/test/stage2/wasm.zig
index f522db8809..06ede2d735 100644
--- a/test/stage2/wasm.zig
+++ b/test/stage2/wasm.zig
@@ -122,4 +122,96 @@ pub fn addCases(ctx: *TestContext) !void {
\\}
, "35\n");
}
+
+ {
+ var case = ctx.exe("wasm conditions", wasi);
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 5;
+ \\ if (i > @as(u32, 4)) {
+ \\ i += 10;
+ \\ }
+ \\ return i;
+ \\}
+ , "15\n");
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 5;
+ \\ if (i < @as(u32, 4)) {
+ \\ i += 10;
+ \\ } else {
+ \\ i = 2;
+ \\ }
+ \\ return i;
+ \\}
+ , "2\n");
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 5;
+ \\ if (i < @as(u32, 4)) {
+ \\ i += 10;
+ \\ } else if(i == @as(u32, 5)) {
+ \\ i = 20;
+ \\ }
+ \\ return i;
+ \\}
+ , "20\n");
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 11;
+ \\ if (i < @as(u32, 4)) {
+ \\ i += 10;
+ \\ } else {
+ \\ if (i > @as(u32, 10)) {
+ \\ i += 20;
+ \\ } else {
+ \\ i = 20;
+ \\ }
+ \\ }
+ \\ return i;
+ \\}
+ , "31\n");
+ }
+
+ {
+ var case = ctx.exe("wasm while loops", wasi);
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 0;
+ \\ while(i < @as(u32, 5)){
+ \\ i += 1;
+ \\ }
+ \\
+ \\ return i;
+ \\}
+ , "5\n");
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 0;
+ \\ while(i < @as(u32, 10)){
+ \\ var x: u32 = 1;
+ \\ i += x;
+ \\ }
+ \\ return i;
+ \\}
+ , "10\n");
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 0;
+ \\ while(i < @as(u32, 10)){
+ \\ var x: u32 = 1;
+ \\ i += x;
+ \\ if (i == @as(u32, 5)) break;
+ \\ }
+ \\ return i;
+ \\}
+ , "5\n");
+ }
}
diff --git a/test/standalone/cat/main.zig b/test/standalone/cat/main.zig
index 89e5fde3cd..80ec97877a 100644
--- a/test/standalone/cat/main.zig
+++ b/test/standalone/cat/main.zig
@@ -41,6 +41,6 @@ pub fn main() !void {
}
fn usage(exe: []const u8) !void {
- warn("Usage: {} [FILE]...\n", .{exe});
+ warn("Usage: {s} [FILE]...\n", .{exe});
return error.Invalid;
}
diff --git a/test/tests.zig b/test/tests.zig
index ec6d9e1df8..a0a50d29a5 100644
--- a/test/tests.zig
+++ b/test/tests.zig
@@ -499,7 +499,7 @@ pub fn addPkgTests(
if (skip_single_threaded and test_target.single_threaded)
continue;
- const ArchTag = @TagType(builtin.Arch);
+ const ArchTag = std.meta.Tag(builtin.Arch);
if (test_target.disable_native and
test_target.target.getOsTag() == std.Target.current.os.tag and
test_target.target.getCpuArch() == std.Target.current.cpu.arch)
diff --git a/test/translate_c.zig b/test/translate_c.zig
index 10ac76a2c5..95969a2f72 100644
--- a/test/translate_c.zig
+++ b/test/translate_c.zig
@@ -43,7 +43,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
,
\\pub const VALUE = ((((1 + (2 * 3)) + (4 * 5)) + 6) << 7) | @boolToInt(8 == 9);
,
- \\pub inline fn _AL_READ3BYTES(p: anytype) @TypeOf(((@import("std").meta.cast([*c]u8, p)).* | (((@import("std").meta.cast([*c]u8, p)) + 1).* << 8)) | (((@import("std").meta.cast([*c]u8, p)) + 2).* << 16)) {
+ \\pub fn _AL_READ3BYTES(p: anytype) callconv(.Inline) @TypeOf(((@import("std").meta.cast([*c]u8, p)).* | (((@import("std").meta.cast([*c]u8, p)) + 1).* << 8)) | (((@import("std").meta.cast([*c]u8, p)) + 2).* << 16)) {
\\ return ((@import("std").meta.cast([*c]u8, p)).* | (((@import("std").meta.cast([*c]u8, p)) + 1).* << 8)) | (((@import("std").meta.cast([*c]u8, p)) + 2).* << 16);
\\}
});
@@ -116,7 +116,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\};
\\pub const Color = struct_Color;
,
- \\pub inline fn CLITERAL(type_1: anytype) @TypeOf(type_1) {
+ \\pub fn CLITERAL(type_1: anytype) callconv(.Inline) @TypeOf(type_1) {
\\ return type_1;
\\}
,
@@ -148,7 +148,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
cases.add("correct semicolon after infixop",
\\#define __ferror_unlocked_body(_fp) (((_fp)->_flags & _IO_ERR_SEEN) != 0)
, &[_][]const u8{
- \\pub inline fn __ferror_unlocked_body(_fp: anytype) @TypeOf(((_fp.*._flags) & _IO_ERR_SEEN) != 0) {
+ \\pub fn __ferror_unlocked_body(_fp: anytype) callconv(.Inline) @TypeOf(((_fp.*._flags) & _IO_ERR_SEEN) != 0) {
\\ return ((_fp.*._flags) & _IO_ERR_SEEN) != 0;
\\}
});
@@ -157,7 +157,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\#define FOO(x) ((x >= 0) + (x >= 0))
\\#define BAR 1 && 2 > 4
, &[_][]const u8{
- \\pub inline fn FOO(x: anytype) @TypeOf(@boolToInt(x >= 0) + @boolToInt(x >= 0)) {
+ \\pub fn FOO(x: anytype) callconv(.Inline) @TypeOf(@boolToInt(x >= 0) + @boolToInt(x >= 0)) {
\\ return @boolToInt(x >= 0) + @boolToInt(x >= 0);
\\}
,
@@ -208,7 +208,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ break :blk bar;
\\};
,
- \\pub inline fn bar(x: anytype) @TypeOf(baz(1, 2)) {
+ \\pub fn bar(x: anytype) callconv(.Inline) @TypeOf(baz(1, 2)) {
\\ return blk: {
\\ _ = &x;
\\ _ = 3;
@@ -1305,10 +1305,10 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ var a: c_int = undefined;
\\ var b: f32 = undefined;
\\ var c: ?*c_void = undefined;
- \\ return !(a == @as(c_int, 0));
- \\ return !(a != 0);
- \\ return !(b != 0);
- \\ return !(c != null);
+ \\ return @boolToInt(!(a == @as(c_int, 0)));
+ \\ return @boolToInt(!(a != 0));
+ \\ return @boolToInt(!(b != 0));
+ \\ return @boolToInt(!(c != null));
\\}
});
@@ -1590,13 +1590,13 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
, &[_][]const u8{
\\pub extern var fn_ptr: ?fn () callconv(.C) void;
,
- \\pub inline fn foo() void {
+ \\pub fn foo() callconv(.Inline) void {
\\ return fn_ptr.?();
\\}
,
\\pub extern var fn_ptr2: ?fn (c_int, f32) callconv(.C) u8;
,
- \\pub inline fn bar(arg_1: c_int, arg_2: f32) u8 {
+ \\pub fn bar(arg_1: c_int, arg_2: f32) callconv(.Inline) u8 {
\\ return fn_ptr2.?(arg_1, arg_2);
\\}
});
@@ -1629,7 +1629,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
,
\\pub const glClearPFN = PFNGLCLEARPROC;
,
- \\pub inline fn glClearUnion(arg_2: GLbitfield) void {
+ \\pub fn glClearUnion(arg_2: GLbitfield) callconv(.Inline) void {
\\ return glProcs.gl.Clear.?(arg_2);
\\}
,
@@ -1650,15 +1650,15 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
, &[_][]const u8{
\\pub extern var c: c_int;
,
- \\pub inline fn BASIC(c_1: anytype) @TypeOf(c_1 * 2) {
+ \\pub fn BASIC(c_1: anytype) callconv(.Inline) @TypeOf(c_1 * 2) {
\\ return c_1 * 2;
\\}
,
- \\pub inline fn FOO(L: anytype, b: anytype) @TypeOf(L + b) {
+ \\pub fn FOO(L: anytype, b: anytype) callconv(.Inline) @TypeOf(L + b) {
\\ return L + b;
\\}
,
- \\pub inline fn BAR() @TypeOf(c * c) {
+ \\pub fn BAR() callconv(.Inline) @TypeOf(c * c) {
\\ return c * c;
\\}
});
@@ -1723,11 +1723,17 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\}
, &[_][]const u8{
\\pub export fn foo() c_int {
- \\ _ = @as(c_int, 2);
- \\ _ = @as(c_int, 4);
- \\ _ = @as(c_int, 2);
- \\ _ = @as(c_int, 4);
- \\ return @as(c_int, 6);
+ \\ _ = (blk: {
+ \\ _ = @as(c_int, 2);
+ \\ break :blk @as(c_int, 4);
+ \\ });
+ \\ return (blk: {
+ \\ _ = (blk_1: {
+ \\ _ = @as(c_int, 2);
+ \\ break :blk_1 @as(c_int, 4);
+ \\ });
+ \\ break :blk @as(c_int, 6);
+ \\ });
\\}
});
@@ -1774,8 +1780,10 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ while (true) {
\\ var a_1: c_int = 4;
\\ a_1 = 9;
- \\ _ = @as(c_int, 6);
- \\ return a_1;
+ \\ return (blk: {
+ \\ _ = @as(c_int, 6);
+ \\ break :blk a_1;
+ \\ });
\\ }
\\ while (true) {
\\ var a_1: c_int = 2;
@@ -1805,9 +1813,13 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ var b: c_int = 4;
\\ while ((i + @as(c_int, 2)) != 0) : (i = 2) {
\\ var a: c_int = 2;
- \\ a = 6;
- \\ _ = @as(c_int, 5);
- \\ _ = @as(c_int, 7);
+ \\ _ = (blk: {
+ \\ _ = (blk_1: {
+ \\ a = 6;
+ \\ break :blk_1 @as(c_int, 5);
+ \\ });
+ \\ break :blk @as(c_int, 7);
+ \\ });
\\ }
\\ }
\\ var i: u8 = @bitCast(u8, @truncate(i8, @as(c_int, 2)));
@@ -2298,7 +2310,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
cases.add("macro call",
\\#define CALL(arg) bar(arg)
, &[_][]const u8{
- \\pub inline fn CALL(arg: anytype) @TypeOf(bar(arg)) {
+ \\pub fn CALL(arg: anytype) callconv(.Inline) @TypeOf(bar(arg)) {
\\ return bar(arg);
\\}
});
@@ -2802,8 +2814,8 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ fn_f64(3);
\\ fn_bool(@as(c_int, 123) != 0);
\\ fn_bool(@as(c_int, 0) != 0);
- \\ fn_bool(@ptrToInt(&fn_int) != 0);
- \\ fn_int(@intCast(c_int, @ptrToInt(&fn_int)));
+ \\ fn_bool(@ptrToInt(fn_int) != 0);
+ \\ fn_int(@intCast(c_int, @ptrToInt(fn_int)));
\\ fn_ptr(@intToPtr(?*c_void, @as(c_int, 42)));
\\}
});
@@ -2860,7 +2872,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\#define BAR (void*) a
\\#define BAZ (uint32_t)(2)
, &[_][]const u8{
- \\pub inline fn FOO(bar: anytype) @TypeOf(baz((@import("std").meta.cast(?*c_void, baz)))) {
+ \\pub fn FOO(bar: anytype) callconv(.Inline) @TypeOf(baz((@import("std").meta.cast(?*c_void, baz)))) {
\\ return baz((@import("std").meta.cast(?*c_void, baz)));
\\}
,
@@ -2902,11 +2914,11 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\#define MIN(a, b) ((b) < (a) ? (b) : (a))
\\#define MAX(a, b) ((b) > (a) ? (b) : (a))
, &[_][]const u8{
- \\pub inline fn MIN(a: anytype, b: anytype) @TypeOf(if (b < a) b else a) {
+ \\pub fn MIN(a: anytype, b: anytype) callconv(.Inline) @TypeOf(if (b < a) b else a) {
\\ return if (b < a) b else a;
\\}
,
- \\pub inline fn MAX(a: anytype, b: anytype) @TypeOf(if (b > a) b else a) {
+ \\pub fn MAX(a: anytype, b: anytype) callconv(.Inline) @TypeOf(if (b > a) b else a) {
\\ return if (b > a) b else a;
\\}
});
@@ -3094,7 +3106,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\#define DefaultScreen(dpy) (((_XPrivDisplay)(dpy))->default_screen)
\\
, &[_][]const u8{
- \\pub inline fn DefaultScreen(dpy: anytype) @TypeOf((@import("std").meta.cast(_XPrivDisplay, dpy)).*.default_screen) {
+ \\pub fn DefaultScreen(dpy: anytype) callconv(.Inline) @TypeOf((@import("std").meta.cast(_XPrivDisplay, dpy)).*.default_screen) {
\\ return (@import("std").meta.cast(_XPrivDisplay, dpy)).*.default_screen;
\\}
});
diff --git a/tools/gen_spirv_spec.zig b/tools/gen_spirv_spec.zig
new file mode 100644
index 0000000000..22fe3443a5
--- /dev/null
+++ b/tools/gen_spirv_spec.zig
@@ -0,0 +1,245 @@
+const std = @import("std");
+const Writer = std.ArrayList(u8).Writer;
+
+//! See https://www.khronos.org/registry/spir-v/specs/unified1/MachineReadableGrammar.html
+//! and the files in https://github.com/KhronosGroup/SPIRV-Headers/blob/master/include/spirv/unified1/
+//! Note: Non-canonical casing in these structs used to match SPIR-V spec json.
+const Registry = union(enum) {
+ core: CoreRegistry,
+ extension: ExtensionRegistry,
+};
+
+const CoreRegistry = struct {
+ copyright: [][]const u8,
+ /// Hexadecimal representation of the magic number
+ magic_number: []const u8,
+ major_version: u32,
+ minor_version: u32,
+ revision: u32,
+ instruction_printing_class: []InstructionPrintingClass,
+ instructions: []Instruction,
+ operand_kinds: []OperandKind,
+};
+
+const ExtensionRegistry = struct {
+ copyright: [][]const u8,
+ version: u32,
+ revision: u32,
+ instructions: []Instruction,
+ operand_kinds: []OperandKind = &[_]OperandKind{},
+};
+
+const InstructionPrintingClass = struct {
+ tag: []const u8,
+ heading: ?[]const u8 = null,
+};
+
+const Instruction = struct {
+ opname: []const u8,
+ class: ?[]const u8 = null, // Note: Only available in the core registry.
+ opcode: u32,
+ operands: []Operand = &[_]Operand{},
+ capabilities: [][]const u8 = &[_][]const u8{},
+ extensions: [][]const u8 = &[_][]const u8{},
+ version: ?[]const u8 = null,
+
+ lastVersion: ?[]const u8 = null,
+};
+
+const Operand = struct {
+ kind: []const u8,
+ /// If this field is 'null', the operand is only expected once.
+ quantifier: ?Quantifier = null,
+ name: []const u8 = "",
+};
+
+const Quantifier = enum {
+ /// zero or once
+ @"?",
+ /// zero or more
+ @"*",
+};
+
+const OperandCategory = enum {
+ BitEnum,
+ ValueEnum,
+ Id,
+ Literal,
+ Composite,
+};
+
+const OperandKind = struct {
+ category: OperandCategory,
+ /// The name
+ kind: []const u8,
+ doc: ?[]const u8 = null,
+ enumerants: ?[]Enumerant = null,
+ bases: ?[]const []const u8 = null,
+};
+
+const Enumerant = struct {
+ enumerant: []const u8,
+ value: union(enum) {
+ bitflag: []const u8, // Hexadecimal representation of the value
+ int: u31,
+ },
+ capabilities: [][]const u8 = &[_][]const u8{},
+ /// Valid for .ValueEnum and .BitEnum
+ extensions: [][]const u8 = &[_][]const u8{},
+ /// `quantifier` will always be `null`.
+ parameters: []Operand = &[_]Operand{},
+ version: ?[]const u8 = null,
+ lastVersion: ?[]const u8 = null,
+};
+
+pub fn main() !void {
+ var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
+ defer arena.deinit();
+ const allocator = &arena.allocator;
+
+ const args = try std.process.argsAlloc(allocator);
+ if (args.len != 2) {
+ usageAndExit(std.io.getStdErr(), args[0], 1);
+ }
+
+ const spec_path = args[1];
+ const spec = try std.fs.cwd().readFileAlloc(allocator, spec_path, std.math.maxInt(usize));
+
+ var tokens = std.json.TokenStream.init(spec);
+ var registry = try std.json.parse(Registry, &tokens, .{.allocator = allocator});
+
+ var buf = std.ArrayList(u8).init(allocator);
+ defer buf.deinit();
+
+ try render(buf.writer(), registry);
+
+ const tree = try std.zig.parse(allocator, buf.items);
+ _ = try std.zig.render(allocator, std.io.getStdOut().writer(), tree);
+}
+
+fn render(writer: Writer, registry: Registry) !void {
+ switch (registry) {
+ .core => |core_reg| {
+ try renderCopyRight(writer, core_reg.copyright);
+ try writer.print(
+ \\const Version = @import("builtin").Version;
+ \\pub const version = Version{{.major = {}, .minor = {}, .patch = {}}};
+ \\pub const magic_number: u32 = {s};
+ \\
+ , .{ core_reg.major_version, core_reg.minor_version, core_reg.revision, core_reg.magic_number },
+ );
+ try renderOpcodes(writer, core_reg.instructions);
+ try renderOperandKinds(writer, core_reg.operand_kinds);
+ },
+ .extension => |ext_reg| {
+ try renderCopyRight(writer, ext_reg.copyright);
+ try writer.print(
+ \\const Version = @import("builtin").Version;
+ \\pub const version = Version{{.major = {}, .minor = 0, .patch = {}}};
+ \\
+ , .{ ext_reg.version, ext_reg.revision },
+ );
+ try renderOpcodes(writer, ext_reg.instructions);
+ try renderOperandKinds(writer, ext_reg.operand_kinds);
+ }
+ }
+}
+
+fn renderCopyRight(writer: Writer, copyright: []const []const u8) !void {
+ for (copyright) |line| {
+ try writer.print("// {s}\n", .{ line });
+ }
+}
+
+fn renderOpcodes(writer: Writer, instructions: []const Instruction) !void {
+ try writer.writeAll("pub const Opcode = extern enum(u16) {\n");
+ for (instructions) |instr| {
+ try writer.print("{} = {},\n", .{ std.zig.fmtId(instr.opname), instr.opcode });
+ }
+ try writer.writeAll("_,\n};\n");
+}
+
+fn renderOperandKinds(writer: Writer, kinds: []const OperandKind) !void {
+ for (kinds) |kind| {
+ switch (kind.category) {
+ .ValueEnum => try renderValueEnum(writer, kind),
+ .BitEnum => try renderBitEnum(writer, kind),
+ else => {},
+ }
+ }
+}
+
+fn renderValueEnum(writer: Writer, enumeration: OperandKind) !void {
+ try writer.print("pub const {s} = extern enum(u32) {{\n", .{ enumeration.kind });
+
+ const enumerants = enumeration.enumerants orelse return error.InvalidRegistry;
+ for (enumerants) |enumerant| {
+ if (enumerant.value != .int) return error.InvalidRegistry;
+
+ try writer.print("{} = {},\n", .{ std.zig.fmtId(enumerant.enumerant), enumerant.value.int });
+ }
+
+ try writer.writeAll("_,\n};\n");
+}
+
+fn renderBitEnum(writer: Writer, enumeration: OperandKind) !void {
+ try writer.print("pub const {s} = packed struct {{\n", .{ enumeration.kind });
+
+ var flags_by_bitpos = [_]?[]const u8{null} ** 32;
+ const enumerants = enumeration.enumerants orelse return error.InvalidRegistry;
+ for (enumerants) |enumerant| {
+ if (enumerant.value != .bitflag) return error.InvalidRegistry;
+ const value = try parseHexInt(enumerant.value.bitflag);
+ if (@popCount(u32, value) != 1) {
+ continue; // Skip combinations and 'none' items
+ }
+
+ var bitpos = std.math.log2_int(u32, value);
+ if (flags_by_bitpos[bitpos]) |*existing|{
+ // Keep the shortest
+ if (enumerant.enumerant.len < existing.len)
+ existing.* = enumerant.enumerant;
+ } else {
+ flags_by_bitpos[bitpos] = enumerant.enumerant;
+ }
+ }
+
+ for (flags_by_bitpos) |maybe_flag_name, bitpos| {
+ if (maybe_flag_name) |flag_name| {
+ try writer.writeAll(flag_name);
+ } else {
+ try writer.print("_reserved_bit_{}", .{bitpos});
+ }
+
+ try writer.writeAll(": bool ");
+ if (bitpos == 0) { // Force alignment to integer boundaries
+ try writer.writeAll("align(@alignOf(u32)) ");
+ }
+ try writer.writeAll("= false, ");
+ }
+
+ try writer.writeAll("};\n");
+}
+
+fn parseHexInt(text: []const u8) !u31 {
+ const prefix = "0x";
+ if (!std.mem.startsWith(u8, text, prefix))
+ return error.InvalidHexInt;
+ return try std.fmt.parseInt(u31, text[prefix.len ..], 16);
+}
+
+fn usageAndExit(file: std.fs.File, arg0: []const u8, code: u8) noreturn {
+ file.writer().print(
+ \\Usage: {s}
+ \\
+ \\Generates Zig bindings for a SPIR-V specification .json (either core or
+ \\extinst versions). The result, printed to stdout, should be used to update
+ \\files in src/codegen/spirv.
+ \\
+ \\The relevant specifications can be obtained from the SPIR-V registry:
+ \\https://github.com/KhronosGroup/SPIRV-Headers/blob/master/include/spirv/unified1/
+ \\
+ , .{arg0}
+ ) catch std.process.exit(1);
+ std.process.exit(code);
+}
diff --git a/tools/process_headers.zig b/tools/process_headers.zig
index 999b62e715..c5279ba74f 100644
--- a/tools/process_headers.zig
+++ b/tools/process_headers.zig
@@ -47,7 +47,7 @@ const MultiAbi = union(enum) {
fn eql(a: MultiAbi, b: MultiAbi) bool {
if (@enumToInt(a) != @enumToInt(b))
return false;
- if (@TagType(MultiAbi)(a) != .specific)
+ if (std.meta.Tag(MultiAbi)(a) != .specific)
return true;
return a.specific == b.specific;
}
diff --git a/tools/update_clang_options.zig b/tools/update_clang_options.zig
index 2aeee6845b..1cb134a731 100644
--- a/tools/update_clang_options.zig
+++ b/tools/update_clang_options.zig
@@ -312,6 +312,10 @@ const known_options = [_]KnownOpt{
.name = "framework",
.ident = "framework",
},
+ .{
+ .name = "s",
+ .ident = "strip",
+ },
};
const blacklisted_options = [_][]const u8{};
diff --git a/tools/update_glibc.zig b/tools/update_glibc.zig
index 1e23bf0ff8..77be81d6d5 100644
--- a/tools/update_glibc.zig
+++ b/tools/update_glibc.zig
@@ -157,7 +157,7 @@ pub fn main() !void {
for (lib_names) |lib_name, lib_name_index| {
const lib_prefix = if (std.mem.eql(u8, lib_name, "ld")) "" else "lib";
- const basename = try fmt.allocPrint(allocator, "{}{}.abilist", .{ lib_prefix, lib_name });
+ const basename = try fmt.allocPrint(allocator, "{s}{s}.abilist", .{ lib_prefix, lib_name });
const abi_list_filename = blk: {
const is_c = std.mem.eql(u8, lib_name, "c");
const is_m = std.mem.eql(u8, lib_name, "m");
@@ -185,7 +185,7 @@ pub fn main() !void {
};
const max_bytes = 10 * 1024 * 1024;
const contents = std.fs.cwd().readFileAlloc(allocator, abi_list_filename, max_bytes) catch |err| {
- std.debug.warn("unable to open {}: {}\n", .{ abi_list_filename, err });
+ std.debug.warn("unable to open {s}: {}\n", .{ abi_list_filename, err });
std.process.exit(1);
};
var lines_it = std.mem.tokenize(contents, "\n");
@@ -243,7 +243,7 @@ pub fn main() !void {
const vers_txt = buffered.writer();
for (global_ver_list) |name, i| {
_ = global_ver_set.put(name, i) catch unreachable;
- try vers_txt.print("{}\n", .{name});
+ try vers_txt.print("{s}\n", .{name});
}
try buffered.flush();
}
@@ -256,7 +256,7 @@ pub fn main() !void {
for (global_fn_list) |name, i| {
const entry = global_fn_set.getEntry(name).?;
entry.value.index = i;
- try fns_txt.print("{} {}\n", .{ name, entry.value.lib });
+ try fns_txt.print("{s} {s}\n", .{ name, entry.value.lib });
}
try buffered.flush();
}
@@ -290,7 +290,7 @@ pub fn main() !void {
const fn_vers_list = &target_functions.getEntry(@ptrToInt(abi_list)).?.value.fn_vers_list;
for (abi_list.targets) |target, it_i| {
if (it_i != 0) try abilist_txt.writeByte(' ');
- try abilist_txt.print("{}-linux-{}", .{ @tagName(target.arch), @tagName(target.abi) });
+ try abilist_txt.print("{s}-linux-{s}", .{ @tagName(target.arch), @tagName(target.abi) });
}
try abilist_txt.writeByte('\n');
// next, each line implicitly corresponds to a function