aboutsummaryrefslogtreecommitdiff
path: root/sim/configure
diff options
context:
space:
mode:
authorTsukasa OI <research_trasio@irq.a4lg.com>2022-10-06 06:43:52 +0000
committerAndrew Burgess <aburgess@redhat.com>2022-10-11 15:18:14 +0100
commit340aa4f6872ca3c4f7fc4a79671537064d0ca91f (patch)
treed8aa6b70aeb4d0fd3856d55132ff925d8cf7270f /sim/configure
parent96894c19ad2b91db76b9b606d48c56ad354b4801 (diff)
downloadgdb-340aa4f6872ca3c4f7fc4a79671537064d0ca91f.zip
gdb-340aa4f6872ca3c4f7fc4a79671537064d0ca91f.tar.gz
gdb-340aa4f6872ca3c4f7fc4a79671537064d0ca91f.tar.bz2
sim: Check known getopt definition existence
Clang generates a warning if there is a function declaration/definition with zero arguments. Such declarations/definitions without a prototype (an argument list) are deprecated forms of indefinite arguments ("-Wdeprecated-non-prototype"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). include/getopt.h defines some getopt function definitions but one of them has a form "extern int getopt ();". If this form is selected in include/getopt.h, Clang generates a warning and the build fails by default. In really old environments, this getopt definition with no arguments is necessary (because the definition may change between environments). However, this definition is now a cause of problems on modern environments. A good news is, this definition is not always selected (e.g. if used by binutils/*.c). This is because configuration scripts of binutils, gas, gprof and ld tries to find known definition of getopt function is used and defines HAVE_DECL_GETOPT macro. If this macro is defined when getopt.h is included, a good form of getopt is used and Clang won't generate warnings. This commit adds a modified portion of ld/configure.ac to find the known getopt definition. If we could find one (and we *will* in most modern environments), we don't need to rely on the deprecated definition.
Diffstat (limited to 'sim/configure')
-rwxr-xr-xsim/configure32
1 files changed, 32 insertions, 0 deletions
diff --git a/sim/configure b/sim/configure
index 75d1935..dac7f08 100755
--- a/sim/configure
+++ b/sim/configure
@@ -16428,6 +16428,38 @@ $as_echo "${WARN_CFLAGS} ${WERROR_CFLAGS}" >&6; }
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a known getopt prototype in unistd.h" >&5
+$as_echo_n "checking for a known getopt prototype in unistd.h... " >&6; }
+if ${sim_cv_decl_getopt_unistd_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <unistd.h>
+int
+main ()
+{
+extern int getopt (int, char *const*, const char *);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ sim_cv_decl_getopt_unistd_h=yes
+else
+ sim_cv_decl_getopt_unistd_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sim_cv_decl_getopt_unistd_h" >&5
+$as_echo "$sim_cv_decl_getopt_unistd_h" >&6; }
+if test $sim_cv_decl_getopt_unistd_h = yes; then
+
+$as_echo "#define HAVE_DECL_GETOPT 1" >>confdefs.h
+
+fi
+