git: 320e7e0003db - main - Revert "Fix cross-build support for Ubuntu 16.04"

From: Warner Losh <imp_at_FreeBSD.org>
Date: Tue, 07 Mar 2023 23:11:30 UTC
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=320e7e0003dbc14ed3fc01b95532924cd3fbda7b

commit 320e7e0003dbc14ed3fc01b95532924cd3fbda7b
Author:     Jose Luis Duran <jlduran@gmail.com>
AuthorDate: 2023-03-02 15:31:31 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2023-03-07 23:11:11 +0000

    Revert "Fix cross-build support for Ubuntu 16.04"
    
    This reverts commit d6327ae8c11b73765f100981baca49166b558b70.
    
    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 was
    included before the real unistd.h to ensure we get all the extensions.
    
    However, with clang 12 that causes problems where we get a function
    mismatch (since getopt can throw exceptions). If we include it after
    unistd.h, it will get the full definitions since glibc no longer does
    the subsetting thing. This will result in matching definitions and fix
    clang 12.
    
    Reviewed by: imp, jrtc27 (OK'd on irc)
    Pull Request: https://github.com/freebsd/freebsd-src/pull/668
---
 tools/build/cross-build/include/linux/unistd.h | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/tools/build/cross-build/include/linux/unistd.h b/tools/build/cross-build/include/linux/unistd.h
index f518df2ac9ae..cd0b28ba39ed 100644
--- a/tools/build/cross-build/include/linux/unistd.h
+++ b/tools/build/cross-build/include/linux/unistd.h
@@ -41,17 +41,9 @@
 /* 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>