From 085bb402c7b2c2f96624fb0523ff3f9686fe26d9 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sat, 27 Jul 2024 19:10:16 -0400 Subject: xspawn: Use _Fork() if available This completes the workaround for bfs_spawn() hanging on FreeBSD with ASan enabled. Link: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=280318 --- build/flags.mk | 1 + build/flags/bind-now.c | 8 ++++++++ build/has/_Fork.c | 8 ++++++++ build/header.mk | 1 + 4 files changed, 18 insertions(+) create mode 100644 build/flags/bind-now.c create mode 100644 build/has/_Fork.c (limited to 'build') diff --git a/build/flags.mk b/build/flags.mk index 5c28c3f..0a62f32 100644 --- a/build/flags.mk +++ b/build/flags.mk @@ -105,6 +105,7 @@ include build/exports.mk # Conditionally-supported flags AUTO_FLAGS := \ + gen/flags/bind-now.mk \ gen/flags/deps.mk \ gen/flags/missing-var-decls.mk diff --git a/build/flags/bind-now.c b/build/flags/bind-now.c new file mode 100644 index 0000000..08bb4f2 --- /dev/null +++ b/build/flags/bind-now.c @@ -0,0 +1,8 @@ +// Copyright © Tavian Barnes +// SPDX-License-Identifier: 0BSD + +/// _LDFLAGS += -Wl,-z,now + +int main(void) { + return 0; +} diff --git a/build/has/_Fork.c b/build/has/_Fork.c new file mode 100644 index 0000000..4d7fbd3 --- /dev/null +++ b/build/has/_Fork.c @@ -0,0 +1,8 @@ +// Copyright © Tavian Barnes +// SPDX-License-Identifier: 0BSD + +#include + +int main(void) { + return _Fork(); +} diff --git a/build/header.mk b/build/header.mk index afd04d0..a4f392e 100644 --- a/build/header.mk +++ b/build/header.mk @@ -13,6 +13,7 @@ include build/exports.mk # All header fragments we generate HEADERS := \ gen/has/--st-birthtim.h \ + gen/has/_Fork.h \ gen/has/acl-get-entry.h \ gen/has/acl-get-file.h \ gen/has/acl-get-tag-type.h \ -- cgit v1.2.3