@@ -7,6 +7,33 @@ fn main() {
77 // dynamic libraries. That means to pull in jemalloc we need to actually
88 // reference allocation symbols one way or another (as this file is the only
99 // 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).
1037 #[ cfg( feature = "libmimalloc-sys" ) ]
1138 {
1239 use std:: os:: raw:: { c_int, c_void} ;
0 commit comments