diff --git a/libc-test/build.rs b/libc-test/build.rs index f2c6c3ccddf5a..09dc440400590 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -2489,6 +2489,8 @@ fn test_freebsd(target: &str) { cfg.skip_fn(move |name| { // skip those that are manually verified match name { + // This is introduced in FreeBSD 14.1 + "execvpe" => true, // The `uname` function in the `utsname.h` FreeBSD header is a C // inline function (has no symbol) that calls the `__xuname` symbol. // Therefore the function pointer comparison does not make sense for it. diff --git a/libc-test/semver/freebsd.txt b/libc-test/semver/freebsd.txt index 5a049d102114e..bb6d67c6d0079 100644 --- a/libc-test/semver/freebsd.txt +++ b/libc-test/semver/freebsd.txt @@ -1873,6 +1873,7 @@ eui64_hostton eui64_ntoa eui64_ntohost exect +execvpe execvP explicit_bzero extattr_delete_fd diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs index a2942913b95d1..53f1f7adcaffd 100644 --- a/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -5534,6 +5534,12 @@ extern "C" { idx1: ::c_ulong, idx2: ::c_ulong, ) -> ::c_int; + + pub fn execvpe( + file: *const ::c_char, + argv: *const *const ::c_char, + envp: *const *const ::c_char, + ) -> ::c_int; } #[link(name = "memstat")]