diff --git a/changelog/2146.fixed.md b/changelog/2146.fixed.md new file mode 100644 index 0000000000..620be77b39 --- /dev/null +++ b/changelog/2146.fixed.md @@ -0,0 +1,2 @@ +Fixed `memfd_create` to not depend on glibc version being greater than 2.27. + ([#2146](https://github.com/nix-rust/nix/pull/2146)) \ No newline at end of file diff --git a/src/sys/memfd.rs b/src/sys/memfd.rs index 516ffd3262..32fec2f5a7 100644 --- a/src/sys/memfd.rs +++ b/src/sys/memfd.rs @@ -48,9 +48,12 @@ pub fn memfd_create(name: &CStr, flags: MemFdCreateFlag) -> Result { // Android does not have a memfd_create symbol not(target_os = "android"), any( + // Note that memfd_create is available since release 13.0 + // See https://man.freebsd.org/cgi/man.cgi?query=memfd_create target_os = "freebsd", - // If the OS is Linux, gnu and musl expose a memfd_create symbol but not uclibc - target_env = "gnu", + // If the OS is Linux, gnu and musl expose a memfd_create symbol but not uclibc. + // But in glibc it is availible since 2.27. The oldest one officially supported by Rust is 2.17. + // So it is reasonable to keep compatibility with it. target_env = "musl", )))] {