@@ -7,6 +7,33 @@ fn main() {
7
7
// dynamic libraries. That means to pull in jemalloc we need to actually
8
8
// reference allocation symbols one way or another (as this file is the only
9
9
// object code in the rustc executable).
10
+ #[ cfg( feature = "jemalloc-sys" ) ]
11
+ {
12
+ use std:: os:: raw:: { c_int, c_void} ;
13
+
14
+ #[ used]
15
+ static _F1: unsafe extern "C" fn ( usize , usize ) -> * mut c_void = jemalloc_sys:: calloc;
16
+ #[ used]
17
+ static _F2: unsafe extern "C" fn ( * mut * mut c_void , usize , usize ) -> c_int =
18
+ jemalloc_sys:: posix_memalign;
19
+ #[ used]
20
+ static _F3: unsafe extern "C" fn ( usize , usize ) -> * mut c_void = jemalloc_sys:: aligned_alloc;
21
+ #[ used]
22
+ static _F4: unsafe extern "C" fn ( usize ) -> * mut c_void = jemalloc_sys:: malloc;
23
+ #[ used]
24
+ static _F5: unsafe extern "C" fn ( * mut c_void , usize ) -> * mut c_void = jemalloc_sys:: realloc;
25
+ #[ used]
26
+ static _F6: unsafe extern "C" fn ( * mut c_void ) = jemalloc_sys:: free;
27
+ }
28
+
29
+ // Pull in mimalloc when enabled.
30
+ //
31
+ // Note that we're pulling in a static copy of mimalloc which means that to
32
+ // pull it in we need to actually reference its symbols for it to get
33
+ // linked. The two crates we link to here, std and rustc_driver, are both
34
+ // dynamic libraries. That means to pull in mimalloc we need to actually
35
+ // reference allocation symbols one way or another (as this file is the only
36
+ // object code in the rustc executable).
10
37
#[ cfg( feature = "libmimalloc-sys" ) ]
11
38
{
12
39
use std:: os:: raw:: { c_int, c_void} ;
0 commit comments