diff --git a/src/header/fnmatch/mod.rs b/src/header/fnmatch/mod.rs index 64076d09c2..4a16cc1788 100644 --- a/src/header/fnmatch/mod.rs +++ b/src/header/fnmatch/mod.rs @@ -118,6 +118,7 @@ unsafe fn tokenize(mut pattern: *const u8, flags: c_int) -> Vec<(Token, Range)> } #[no_mangle] +#[linkage = "weak"] // often redefined in GNU programs pub unsafe extern "C" fn fnmatch(pattern: *const c_char, input: *const c_char, flags: c_int) -> c_int { let mut len = 0; while *input.offset(len) != 0 { diff --git a/src/header/getopt/mod.rs b/src/header/getopt/mod.rs index 66a258f2bd..c2a12022e7 100644 --- a/src/header/getopt/mod.rs +++ b/src/header/getopt/mod.rs @@ -20,6 +20,7 @@ pub struct option { } #[no_mangle] +#[linkage = "weak"] // often redefined in GNU programs pub unsafe extern "C" fn getopt_long( argc: c_int, argv: *const *mut c_char, diff --git a/src/header/unistd/getopt.rs b/src/header/unistd/getopt.rs index d19ba5b410..d08f437797 100644 --- a/src/header/unistd/getopt.rs +++ b/src/header/unistd/getopt.rs @@ -7,21 +7,26 @@ use platform::types::*; #[allow(non_upper_case_globals)] #[no_mangle] +#[linkage = "weak"] // often redefined in GNU programs pub static mut optarg: *mut c_char = ptr::null_mut(); #[allow(non_upper_case_globals)] #[no_mangle] +#[linkage = "weak"] // often redefined in GNU programs pub static mut optind: c_int = 1; #[allow(non_upper_case_globals)] #[no_mangle] +#[linkage = "weak"] // often redefined in GNU programs pub static mut opterr: c_int = 1; #[allow(non_upper_case_globals)] #[no_mangle] +#[linkage = "weak"] // often redefined in GNU programs pub static mut optopt: c_int = -1; #[no_mangle] +#[linkage = "weak"] // often redefined in GNU programs pub unsafe extern "C" fn getopt( argc: c_int, argv: *const *mut c_char,