36
36
// https://github.com/rust-lang/rust/commit/b90cfc887c31c3e7a9e6d462e2464db1fe506175#diff-43914724af6e464c1da2171e4a9b6c7e607d5bc1203fa95c0ab85be4122605ef
37
37
// for an example of how to do so.
38
38
39
+ use std:: os:: raw:: { c_char, c_int, c_void} ;
40
+
41
+ #[ no_mangle]
42
+ unsafe extern "C" fn calloc ( items : usize , size : usize ) -> * mut c_void {
43
+ fjall:: c:: calloc ( items, size)
44
+ }
45
+
46
+ #[ no_mangle]
47
+ unsafe extern "C" fn posix_memalign ( ptr : * mut * mut c_void , size : usize , align : usize ) -> c_int {
48
+ fjall:: c:: posix_memalign ( ptr, size, align)
49
+ }
50
+
51
+ #[ no_mangle]
52
+ unsafe extern "C" fn aligned_alloc ( size : usize , align : usize ) -> * mut c_void {
53
+ fjall:: c:: aligned_alloc ( size, align)
54
+ }
55
+
56
+ #[ no_mangle]
57
+ unsafe extern "C" fn malloc ( size : usize ) -> * mut c_void {
58
+ fjall:: c:: malloc ( size)
59
+ }
60
+
61
+ #[ no_mangle]
62
+ unsafe extern "C" fn realloc ( ptr : * mut c_void , size : usize ) -> * mut c_void {
63
+ fjall:: c:: realloc ( ptr, size)
64
+ }
65
+
66
+ #[ no_mangle]
67
+ unsafe extern "C" fn free ( ptr : * mut c_void ) {
68
+ fjall:: c:: free ( ptr) ;
69
+ }
70
+
71
+ #[ no_mangle]
72
+ unsafe extern "C" fn strdup ( ptr : * const c_char ) -> * mut c_char {
73
+ fjall:: c:: strdup ( ptr)
74
+ }
75
+
39
76
#[ unix_sigpipe = "sig_dfl" ]
40
77
fn main ( ) {
41
78
// See the comment at the top of this file for an explanation of this.
42
- #[ cfg( feature = "jemalloc-sys" ) ]
43
79
{
44
- use std:: os:: raw:: { c_int, c_void} ;
45
-
46
80
#[ used]
47
- static _F1: unsafe extern "C" fn ( usize , usize ) -> * mut c_void = jemalloc_sys :: calloc;
81
+ static _F1: unsafe extern "C" fn ( usize , usize ) -> * mut c_void = calloc;
48
82
#[ used]
49
- static _F2: unsafe extern "C" fn ( * mut * mut c_void , usize , usize ) -> c_int =
50
- jemalloc_sys:: posix_memalign;
83
+ static _F2: unsafe extern "C" fn ( * mut * mut c_void , usize , usize ) -> c_int = posix_memalign;
51
84
#[ used]
52
- static _F3: unsafe extern "C" fn ( usize , usize ) -> * mut c_void = jemalloc_sys :: aligned_alloc;
85
+ static _F3: unsafe extern "C" fn ( usize , usize ) -> * mut c_void = aligned_alloc;
53
86
#[ used]
54
- static _F4: unsafe extern "C" fn ( usize ) -> * mut c_void = jemalloc_sys :: malloc;
87
+ static _F4: unsafe extern "C" fn ( usize ) -> * mut c_void = malloc;
55
88
#[ used]
56
- static _F5: unsafe extern "C" fn ( * mut c_void , usize ) -> * mut c_void = jemalloc_sys :: realloc;
89
+ static _F5: unsafe extern "C" fn ( * mut c_void , usize ) -> * mut c_void = realloc;
57
90
#[ used]
58
- static _F6: unsafe extern "C" fn ( * mut c_void ) = jemalloc_sys:: free;
59
-
91
+ static _F6: unsafe extern "C" fn ( * mut c_void ) = free;
92
+ #[ used]
93
+ static _F7: unsafe extern "C" fn ( * mut c_char ) -> * mut c_char = strdup;
94
+ /*
60
95
// On OSX, jemalloc doesn't directly override malloc/free, but instead
61
96
// registers itself with the allocator's zone APIs in a ctor. However,
62
97
// the linker doesn't seem to consider ctors as "used" when statically
@@ -69,7 +104,7 @@ fn main() {
69
104
70
105
#[used]
71
106
static _F7: unsafe extern "C" fn() = _rjem_je_zone_register;
72
- }
107
+ }*/
73
108
}
74
109
75
110
rustc_driver:: main ( )
0 commit comments