Skip to content

Commit 8c81eb0

Browse files
committed
Add libc dependency in libcc2rs
1 parent 78e9c44 commit 8c81eb0

2 files changed

Lines changed: 10 additions & 19 deletions

File tree

libcc2rs/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ edition = "2024"
55

66
[dependencies]
77
libcc2rs-macros = { path = "../libcc2rs-macros", version = "0.1.0" }
8+
libc = "0.2"

libcc2rs/src/alloc.rs

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,37 @@
11
// Copyright (c) 2022-present INESC-ID.
22
// Distributed under the MIT license that can be found in the LICENSE file.
33

4-
use std::ffi::{c_char, c_void};
5-
6-
unsafe extern "C" {
7-
fn malloc(size: usize) -> *mut c_void;
8-
fn free(ptr: *mut c_void);
9-
fn realloc(ptr: *mut c_void, size: usize) -> *mut c_void;
10-
fn calloc(nmemb: usize, size: usize) -> *mut c_void;
11-
fn strdup(s: *const c_char) -> *mut c_char;
12-
}
13-
144
/// # Safety
155
///
166
/// Same contract as C's `malloc`.
17-
pub unsafe fn malloc_unsafe(a0: u64) -> *mut c_void {
18-
unsafe { malloc(a0 as usize) }
7+
pub unsafe fn malloc_unsafe(a0: u64) -> *mut libc::c_void {
8+
unsafe { libc::malloc(a0 as libc::size_t) }
199
}
2010

2111
/// # Safety
2212
///
2313
/// Same contract as C's `free`.
24-
pub unsafe fn free_unsafe(a0: *mut c_void) {
25-
unsafe { free(a0) }
14+
pub unsafe fn free_unsafe(a0: *mut libc::c_void) {
15+
unsafe { libc::free(a0) }
2616
}
2717

2818
/// # Safety
2919
///
3020
/// Same contract as C's `realloc`.
31-
pub unsafe fn realloc_unsafe(a0: *mut c_void, a1: u64) -> *mut c_void {
32-
unsafe { realloc(a0, a1 as usize) }
21+
pub unsafe fn realloc_unsafe(a0: *mut libc::c_void, a1: u64) -> *mut libc::c_void {
22+
unsafe { libc::realloc(a0, a1 as libc::size_t) }
3323
}
3424

3525
/// # Safety
3626
///
3727
/// Same contract as C's `calloc`.
38-
pub unsafe fn calloc_unsafe(a0: u64, a1: u64) -> *mut c_void {
39-
unsafe { calloc(a0 as usize, a1 as usize) }
28+
pub unsafe fn calloc_unsafe(a0: u64, a1: u64) -> *mut libc::c_void {
29+
unsafe { libc::calloc(a0 as libc::size_t, a1 as libc::size_t) }
4030
}
4131

4232
/// # Safety
4333
///
4434
/// Same contract as C's `strdup`.
4535
pub unsafe fn strdup_unsafe(a0: *const u8) -> *mut u8 {
46-
unsafe { strdup(a0 as *const c_char) as *mut u8 }
36+
unsafe { libc::strdup(a0 as *const libc::c_char) as *mut u8 }
4737
}

0 commit comments

Comments
 (0)