diff options
author | Jessica Clarke <jrtc27@FreeBSD.org> | 2021-01-23 20:59:15 +0000 |
---|---|---|
committer | Jessica Clarke <jrtc27@FreeBSD.org> | 2021-01-23 20:59:15 +0000 |
commit | d6327ae8c11b73765f100981baca49166b558b70 (patch) | |
tree | 0a211dcfea4b81d5d8a380e5ceb05ae2eb9c618a | |
parent | 0d528e6354141dd097f8719e858b3ae3686d2062 (diff) | |
download | src-d6327ae8c11b73765f100981baca49166b558b70.tar.gz src-d6327ae8c11b73765f100981baca49166b558b70.zip |
Fix cross-build support for Ubuntu 16.04
Older glibc headers did some very nasty things that have since been
sanitised. We could also fix this by adding a linux/getopt.h wrapper
alongside the existing common/getopt.h that #undef's __need_getopt, but
that seems a little more hacky and complicated.
Reviewed by: arichardson
-rw-r--r-- | tools/build/cross-build/include/linux/unistd.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/tools/build/cross-build/include/linux/unistd.h b/tools/build/cross-build/include/linux/unistd.h index 9d1bd1bf4025..ea131f1ab732 100644 --- a/tools/build/cross-build/include/linux/unistd.h +++ b/tools/build/cross-build/include/linux/unistd.h @@ -41,9 +41,17 @@ /* Ensure that unistd.h pulls in getopt */ #define __USE_POSIX2 #endif +/* + * Before version 2.25, glibc's unistd.h would define the POSIX subset of + * getopt.h by defining __need_getopt, including getopt.h (which would + * disable the header guard) and then undefining it so later including + * getopt.h explicitly would define the extensions. However, we wrap getopt, + * and so the wrapper's #pragma once breaks that. Thus getopt.h must be + * included before the real unistd.h to ensure we get all the extensions. + */ +#include <getopt.h> #include_next <unistd.h> #include <fcntl.h> -#include <getopt.h> #include <stdlib.h> #include <string.h> #include <sys/syscall.h> |