From e32fc123087fa322157a7e83996b29d7d89b6d71 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 17 Nov 2018 08:40:39 -0700 Subject: [PATCH] Weak linkage for getopt and fnmatch --- src/header/fnmatch/mod.rs | 1 + src/header/getopt/mod.rs | 1 + src/header/unistd/getopt.rs | 5 +++++ 3 files changed, 7 insertions(+) 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,