libafl_frida: Allow compilation for iOS (#1023)

iOS does not have any TLS, so we don't need to keep track of it.
This allows compiling for the aarch64-apple-ios target.
This commit is contained in:
Fabian Freyer 2023-01-30 18:05:00 +01:00 committed by GitHub
parent 33ddce2cea
commit afa506c0c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 1 deletions

View File

@ -1,7 +1,10 @@
// build.rs
fn main() {
cc::Build::new().file("src/gettls.c").compile("libgettls.a");
let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap();
if target_os != "ios" {
cc::Build::new().file("src/gettls.c").compile("libgettls.a");
}
// Force linking against libc++
#[cfg(unix)]

View File

@ -61,6 +61,7 @@ extern "C" {
fn __register_frame(begin: *mut c_void);
}
#[cfg(not(target_os = "ios"))]
extern "C" {
fn tls_ptr() -> *const c_void;
}
@ -390,6 +391,7 @@ impl AsanRuntime {
/// Register the current thread with the runtime, implementing shadow memory for its stack and
/// tls mappings.
#[allow(clippy::unused_self)]
#[cfg(not(target_os = "ios"))]
pub fn register_thread(&mut self) {
let (stack_start, stack_end) = Self::current_stack();
self.allocator
@ -403,6 +405,17 @@ impl AsanRuntime {
);
}
/// Register the current thread with the runtime, implementing shadow memory for its stack mapping.
#[allow(clippy::unused_self)]
#[cfg(target_os = "ios")]
pub fn register_thread(&mut self) {
let (stack_start, stack_end) = Self::current_stack();
self.allocator
.map_shadow_for_region(stack_start, stack_end, true);
println!("registering thread with stack {stack_start:x}:{stack_end:x}");
}
/// Get the maximum stack size for the current stack
#[must_use]
#[cfg(target_vendor = "apple")]
@ -470,6 +483,7 @@ impl AsanRuntime {
/// Determine the tls start, end for the currently running thread
#[must_use]
#[cfg(not(target_os = "ios"))]
fn current_tls() -> (usize, usize) {
let tls_address = unsafe { tls_ptr() } as usize;