Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: gdb-patches@sourceware.org
Cc: GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH 01/36] Create libiberty/libiberty.m4, have GDB and GDBserver use it
Date: Mon, 09 Feb 2015 23:35:00 -0000	[thread overview]
Message-ID: <54D9441A.90301@redhat.com> (raw)
In-Reply-To: <1423524046-20605-2-git-send-email-palves@redhat.com>

Bah, looks like I dropped gdb-patches@ by accident, adding it back
(patch here: https://gcc.gnu.org/ml/gcc-patches/2015-02/msg00580.html).

For the gcc folks, this is part of this series:
 https://sourceware.org/ml/gdb-patches/2015-02/msg00202.html

Thanks,
Pedro Alves

On 02/09/2015 11:20 PM, Pedro Alves wrote:
> Converting GDB to be a C++ program, I stumbled on 'basename' issues,
> like:
> 
>  src/gdb/../include/ansidecl.h:169:64: error: new declaration ‘char* basename(const char*)’
>  /usr/include/string.h:597:26: error: ambiguates old declaration ‘const char* basename(const char*)’
> 
> which I believe led to this bit in gold's configure.ac:
> 
>  dnl We have to check these in C, not C++, because autoconf generates
>  dnl tests which have no type information, and current glibc provides
>  dnl multiple declarations of functions like basename when compiling
>  dnl with C++.
>  AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
> 
> These checks IIUC intend to generate all the HAVE_DECL_FOO symbols
> that libiberty.h and ansidecl.h check.
> 
> GDB is missing these checks currently, which results in the conflict
> shown above.
> 
> I could just copy gold's bits over to GDB.  But, since libiberty's
> ansidecl.h and libiberty.h check HAVE_DECL_XXX symbols, ISTM that all
> programs that use these headers should be doing the exact same
> corresponding AC_CHECK_DECLS autoconf checks, and that there's good
> potential for bit rot here.
> 
> So I thought of adding a m4 file that projects that use libiberty can
> source to pull in the autoconf checks that libiberty needs done in
> order to use its public headers.
> 
> Turns out that this has already happened.  Since I first wrote this a
> few months back, libiberty gained more HAVE_DECL_FOO checks even, for
> the strtol & friends replacements.
> 
> Are the libiberty changes OK?
> 
> libiberty/ChangeLog:
> 2015-02-09  Pedro Alves  <palves@redhat.com>
> 
> 	* libiberty.m4: New file.
> 
> gdb/ChangeLog:
> 2015-02-09  Pedro Alves  <palves@redhat.com>
> 
> 	* acinclude.m4: Include libiberty.m4.
> 	* config.in, configure: Regenerate.
> 	* configure.ac: Call libiberty_INIT.
> 
> gdb/gdbserver/
> 2015-02-09  Pedro Alves  <palves@redhat.com>
> 
> 	* acinclude.m4: Include libiberty.m4.
> 	* config.in, configure: Regenerate.
> 	* configure.ac: Call libiberty_INIT.
> ---
>  gdb/acinclude.m4           |   3 +
>  gdb/config.in              |  45 ++++++
>  gdb/configure              | 266 +++++++++++++++++++++++++++--------
>  gdb/configure.ac           |   2 +
>  gdb/gdbserver/acinclude.m4 |   3 +
>  gdb/gdbserver/config.in    |  41 ++++++
>  gdb/gdbserver/configure    | 338 +++++++++++++++++++++++++++++++++++++++++++++
>  gdb/gdbserver/configure.ac |   2 +
>  libiberty/libiberty.m4     |  33 +++++
>  9 files changed, 679 insertions(+), 54 deletions(-)
>  create mode 100644 libiberty/libiberty.m4
> 
> diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
> index 6f71486..ff4aff0 100644
> --- a/gdb/acinclude.m4
> +++ b/gdb/acinclude.m4
> @@ -54,6 +54,9 @@ sinclude([../config/zlib.m4])
>  
>  m4_include([common/common.m4])
>  
> +dnl For libiberty_INIT.
> +m4_include(../libiberty/libiberty.m4)
> +
>  ## ----------------------------------------- ##
>  ## ANSIfy the C compiler whenever possible.  ##
>  ## From Franc,ois Pinard                     ##
> diff --git a/gdb/config.in b/gdb/config.in
> index 806cbac..6a8df15 100644
> --- a/gdb/config.in
> +++ b/gdb/config.in
> @@ -85,6 +85,17 @@
>     you don't. */
>  #undef HAVE_DECL_ADDR_NO_RANDOMIZE
>  
> +/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_ASPRINTF
> +
> +/* Define to 1 if you have the declaration of `basename(char *)', and to 0 if
> +   you don't. */
> +#undef HAVE_DECL_BASENAME
> +
> +/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
> +#undef HAVE_DECL_FFS
> +
>  /* Define to 1 if you have the declaration of `free', and to 0 if you don't.
>     */
>  #undef HAVE_DECL_FREE
> @@ -117,6 +128,34 @@
>     */
>  #undef HAVE_DECL_STRSTR
>  
> +/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't.
> +   */
> +#undef HAVE_DECL_STRTOL
> +
> +/* Define to 1 if you have the declaration of `strtoll', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_STRTOLL
> +
> +/* Define to 1 if you have the declaration of `strtoul', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_STRTOUL
> +
> +/* Define to 1 if you have the declaration of `strtoull', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_STRTOULL
> +
> +/* Define to 1 if you have the declaration of `strverscmp', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_STRVERSCMP
> +
> +/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_VASPRINTF
> +
> +/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_VSNPRINTF
> +
>  /* Define to 1 if you have the <dlfcn.h> header file. */
>  #undef HAVE_DLFCN_H
>  
> @@ -225,6 +264,9 @@
>  /* Define to 1 if the compiler supports long double. */
>  #undef HAVE_LONG_DOUBLE
>  
> +/* Define if you have the `long long' type. */
> +#undef HAVE_LONG_LONG
> +
>  /* Define if <sys/procfs.h> has lwpid_t. */
>  #undef HAVE_LWPID_T
>  
> @@ -635,6 +677,9 @@
>  /* The size of `long', as computed by sizeof. */
>  #undef SIZEOF_LONG
>  
> +/* The size of `long long', as computed by sizeof. */
> +#undef SIZEOF_LONG_LONG
> +
>  /* The size of `unsigned long', as computed by sizeof. */
>  #undef SIZEOF_UNSIGNED_LONG
>  
> diff --git a/gdb/configure b/gdb/configure
> index 9632f9a..05e355c 100755
> --- a/gdb/configure
> +++ b/gdb/configure
> @@ -2184,6 +2184,60 @@ $as_echo "$ac_res" >&6; }
>  
>  } # ac_fn_c_check_func
>  
> +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
> +# -------------------------------------------
> +# Tests whether TYPE exists after having included INCLUDES, setting cache
> +# variable VAR accordingly.
> +ac_fn_c_check_type ()
> +{
> +  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
> +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
> +$as_echo_n "checking for $2... " >&6; }
> +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
> +  $as_echo_n "(cached) " >&6
> +else
> +  eval "$3=no"
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +$4
> +int
> +main ()
> +{
> +if (sizeof ($2))
> +	 return 0;
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +$4
> +int
> +main ()
> +{
> +if (sizeof (($2)))
> +	    return 0;
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +
> +else
> +  eval "$3=yes"
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +fi
> +eval ac_res=\$$3
> +	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
> +$as_echo "$ac_res" >&6; }
> +  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
> +
> +} # ac_fn_c_check_type
> +
>  # ac_fn_c_check_decl LINENO SYMBOL VAR
>  # ------------------------------------
>  # Tests whether SYMBOL is declared, setting cache variable VAR accordingly.
> @@ -2285,60 +2339,6 @@ $as_echo "$ac_res" >&6; }
>    eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
>  
>  } # ac_fn_c_check_member
> -
> -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
> -# -------------------------------------------
> -# Tests whether TYPE exists after having included INCLUDES, setting cache
> -# variable VAR accordingly.
> -ac_fn_c_check_type ()
> -{
> -  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
> -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
> -$as_echo_n "checking for $2... " >&6; }
> -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
> -  $as_echo_n "(cached) " >&6
> -else
> -  eval "$3=no"
> -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -if (sizeof ($2))
> -	 return 0;
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -if (sizeof (($2)))
> -	    return 0;
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -
> -else
> -  eval "$3=yes"
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -fi
> -eval ac_res=\$$3
> -	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
> -$as_echo "$ac_res" >&6; }
> -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
> -
> -} # ac_fn_c_check_type
>  cat >config.log <<_ACEOF
>  This file contains any messages produced by compilers while
>  running configure, to aid debugging if configure makes a mistake.
> @@ -9584,6 +9584,164 @@ done
>  # Checks for declarations.  #
>  # ------------------------- #
>  
> +
> +  # Check for presence of long long.
> +  ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
> +if test "x$ac_cv_type_long_long" = x""yes; then :
> +
> +$as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h
> + # The cast to long int works around a bug in the HP C Compiler
> +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
> +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
> +# This bug is HP SR number 8606223364.
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
> +$as_echo_n "checking size of long long... " >&6; }
> +if test "${ac_cv_sizeof_long_long+set}" = set; then :
> +  $as_echo_n "(cached) " >&6
> +else
> +  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long"        "$ac_includes_default"; then :
> +
> +else
> +  if test "$ac_cv_type_long_long" = yes; then
> +     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
> +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
> +{ as_fn_set_status 77
> +as_fn_error "cannot compute sizeof (long long)
> +See \`config.log' for more details." "$LINENO" 5; }; }
> +   else
> +     ac_cv_sizeof_long_long=0
> +   fi
> +fi
> +
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
> +$as_echo "$ac_cv_sizeof_long_long" >&6; }
> +
> +
> +
> +cat >>confdefs.h <<_ACEOF
> +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
> +_ACEOF
> +
> +
> +fi
> +
> +
> +  ac_fn_c_check_decl "$LINENO" "basename(char *)" "ac_cv_have_decl_basename_char_p_" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_basename_char_p_" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_BASENAME $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "ffs" "ac_cv_have_decl_ffs" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_ffs" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_FFS $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_asprintf" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_ASPRINTF $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_vasprintf" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_VASPRINTF $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_snprintf" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_SNPRINTF $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_vsnprintf" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_VSNPRINTF $ac_have_decl
> +_ACEOF
> +
> +  ac_fn_c_check_decl "$LINENO" "strtol" "ac_cv_have_decl_strtol" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_strtol" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_STRTOL $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "strtoul" "ac_cv_have_decl_strtoul" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_strtoul" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_STRTOUL $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "strtoll" "ac_cv_have_decl_strtoll" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_strtoll" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_STRTOLL $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "strtoull" "ac_cv_have_decl_strtoull" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_strtoull" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_STRTOULL $ac_have_decl
> +_ACEOF
> +
> +  ac_fn_c_check_decl "$LINENO" "strverscmp" "ac_cv_have_decl_strverscmp" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_strverscmp" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_STRVERSCMP $ac_have_decl
> +_ACEOF
> +
> +
> +
>  ac_fn_c_check_decl "$LINENO" "free" "ac_cv_have_decl_free" "$ac_includes_default"
>  if test "x$ac_cv_have_decl_free" = x""yes; then :
>    ac_have_decl=1
> diff --git a/gdb/configure.ac b/gdb/configure.ac
> index dfc6947..920e580 100644
> --- a/gdb/configure.ac
> +++ b/gdb/configure.ac
> @@ -1283,6 +1283,8 @@ AC_CHECK_HEADERS(term.h, [], [],
>  # Checks for declarations.  #
>  # ------------------------- #
>  
> +libiberty_INIT
> +
>  AC_CHECK_DECLS([free, malloc, realloc, snprintf])
>  AM_LC_MESSAGES
>  
> diff --git a/gdb/gdbserver/acinclude.m4 b/gdb/gdbserver/acinclude.m4
> index 744871a..ba4a21f 100644
> --- a/gdb/gdbserver/acinclude.m4
> +++ b/gdb/gdbserver/acinclude.m4
> @@ -20,6 +20,9 @@ dnl anything else in gdbserver.
>  m4_include(../../config/codeset.m4)
>  m4_include(../common/common.m4)
>  
> +dnl For libiberty_INIT.
> +m4_include(../../libiberty/libiberty.m4)
> +
>  dnl Check for existence of a type $1 in libthread_db.h
>  dnl Based on BFD_HAVE_SYS_PROCFS_TYPE in bfd/bfd.m4.
>  
> diff --git a/gdb/gdbserver/config.in b/gdb/gdbserver/config.in
> index 8f68ed2..cf8e59d 100644
> --- a/gdb/gdbserver/config.in
> +++ b/gdb/gdbserver/config.in
> @@ -22,10 +22,25 @@
>     you don't. */
>  #undef HAVE_DECL_ADDR_NO_RANDOMIZE
>  
> +/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_ASPRINTF
> +
> +/* Define to 1 if you have the declaration of `basename(char *)', and to 0 if
> +   you don't. */
> +#undef HAVE_DECL_BASENAME
> +
> +/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
> +#undef HAVE_DECL_FFS
> +
>  /* Define to 1 if you have the declaration of `perror', and to 0 if you don't.
>     */
>  #undef HAVE_DECL_PERROR
>  
> +/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_SNPRINTF
> +
>  /* Define to 1 if you have the declaration of `strerror', and to 0 if you
>     don't. */
>  #undef HAVE_DECL_STRERROR
> @@ -34,6 +49,26 @@
>     */
>  #undef HAVE_DECL_STRSTR
>  
> +/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't.
> +   */
> +#undef HAVE_DECL_STRTOL
> +
> +/* Define to 1 if you have the declaration of `strtoll', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_STRTOLL
> +
> +/* Define to 1 if you have the declaration of `strtoul', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_STRTOUL
> +
> +/* Define to 1 if you have the declaration of `strtoull', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_STRTOULL
> +
> +/* Define to 1 if you have the declaration of `strverscmp', and to 0 if you
> +   don't. */
> +#undef HAVE_DECL_STRVERSCMP
> +
>  /* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
>     don't. */
>  #undef HAVE_DECL_VASPRINTF
> @@ -96,6 +131,9 @@
>  /* Define to 1 if you have the <locale.h> header file. */
>  #undef HAVE_LOCALE_H
>  
> +/* Define if you have the `long long' type. */
> +#undef HAVE_LONG_LONG
> +
>  /* Define if <thread_db.h> has lwpid_t. */
>  #undef HAVE_LWPID_T
>  
> @@ -253,6 +291,9 @@
>  /* Bug reporting address */
>  #undef REPORT_BUGS_TO
>  
> +/* The size of `long long', as computed by sizeof. */
> +#undef SIZEOF_LONG_LONG
> +
>  /* If using the C implementation of alloca, define if you know the
>     direction of stack growth for your system; otherwise it will be
>     automatically deduced at runtime.
> diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure
> index 2240b78..5623746 100755
> --- a/gdb/gdbserver/configure
> +++ b/gdb/gdbserver/configure
> @@ -1882,6 +1882,184 @@ $as_echo "$ac_res" >&6; }
>    eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
>  
>  } # ac_fn_c_check_type
> +
> +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
> +# --------------------------------------------
> +# Tries to find the compile-time value of EXPR in a program that includes
> +# INCLUDES, setting VAR accordingly. Returns whether the value could be
> +# computed
> +ac_fn_c_compute_int ()
> +{
> +  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
> +  if test "$cross_compiling" = yes; then
> +    # Depending upon the size, compute the lo and hi bounds.
> +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +$4
> +int
> +main ()
> +{
> +static int test_array [1 - 2 * !(($2) >= 0)];
> +test_array [0] = 0
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  ac_lo=0 ac_mid=0
> +  while :; do
> +    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +$4
> +int
> +main ()
> +{
> +static int test_array [1 - 2 * !(($2) <= $ac_mid)];
> +test_array [0] = 0
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  ac_hi=$ac_mid; break
> +else
> +  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
> +			if test $ac_lo -le $ac_mid; then
> +			  ac_lo= ac_hi=
> +			  break
> +			fi
> +			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +  done
> +else
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +$4
> +int
> +main ()
> +{
> +static int test_array [1 - 2 * !(($2) < 0)];
> +test_array [0] = 0
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  ac_hi=-1 ac_mid=-1
> +  while :; do
> +    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +$4
> +int
> +main ()
> +{
> +static int test_array [1 - 2 * !(($2) >= $ac_mid)];
> +test_array [0] = 0
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  ac_lo=$ac_mid; break
> +else
> +  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
> +			if test $ac_mid -le $ac_hi; then
> +			  ac_lo= ac_hi=
> +			  break
> +			fi
> +			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +  done
> +else
> +  ac_lo= ac_hi=
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +# Binary search between lo and hi bounds.
> +while test "x$ac_lo" != "x$ac_hi"; do
> +  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +$4
> +int
> +main ()
> +{
> +static int test_array [1 - 2 * !(($2) <= $ac_mid)];
> +test_array [0] = 0
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  ac_hi=$ac_mid
> +else
> +  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +done
> +case $ac_lo in #((
> +?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
> +'') ac_retval=1 ;;
> +esac
> +  else
> +    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +$4
> +static long int longval () { return $2; }
> +static unsigned long int ulongval () { return $2; }
> +#include <stdio.h>
> +#include <stdlib.h>
> +int
> +main ()
> +{
> +
> +  FILE *f = fopen ("conftest.val", "w");
> +  if (! f)
> +    return 1;
> +  if (($2) < 0)
> +    {
> +      long int i = longval ();
> +      if (i != ($2))
> +	return 1;
> +      fprintf (f, "%ld", i);
> +    }
> +  else
> +    {
> +      unsigned long int i = ulongval ();
> +      if (i != ($2))
> +	return 1;
> +      fprintf (f, "%lu", i);
> +    }
> +  /* Do not output a trailing newline, as this causes \r\n confusion
> +     on some platforms.  */
> +  return ferror (f) || fclose (f) != 0;
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_run "$LINENO"; then :
> +  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
> +else
> +  ac_retval=1
> +fi
> +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
> +  conftest.$ac_objext conftest.beam conftest.$ac_ext
> +rm -f conftest.val
> +
> +  fi
> +  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
> +  return $ac_retval
> +
> +} # ac_fn_c_compute_int
>  cat >config.log <<_ACEOF
>  This file contains any messages produced by compilers while
>  running configure, to aid debugging if configure makes a mistake.
> @@ -5338,6 +5516,166 @@ done
>  
>  LIBS="$old_LIBS"
>  
> +
> +
> +  # Check for presense of long long
> +  ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
> +if test "x$ac_cv_type_long_long" = x""yes; then :
> +
> +$as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h
> + # The cast to long int works around a bug in the HP C Compiler
> +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
> +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
> +# This bug is HP SR number 8606223364.
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
> +$as_echo_n "checking size of long long... " >&6; }
> +if test "${ac_cv_sizeof_long_long+set}" = set; then :
> +  $as_echo_n "(cached) " >&6
> +else
> +  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long"        "$ac_includes_default"; then :
> +
> +else
> +  if test "$ac_cv_type_long_long" = yes; then
> +     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
> +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
> +{ as_fn_set_status 77
> +as_fn_error "cannot compute sizeof (long long)
> +See \`config.log' for more details." "$LINENO" 5; }; }
> +   else
> +     ac_cv_sizeof_long_long=0
> +   fi
> +fi
> +
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
> +$as_echo "$ac_cv_sizeof_long_long" >&6; }
> +
> +
> +
> +cat >>confdefs.h <<_ACEOF
> +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
> +_ACEOF
> +
> +
> +fi
> +
> +
> +  ac_fn_c_check_decl "$LINENO" "basename(char *)" "ac_cv_have_decl_basename_char_p_" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_basename_char_p_" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_BASENAME $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "ffs" "ac_cv_have_decl_ffs" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_ffs" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_FFS $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_asprintf" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_ASPRINTF $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_vasprintf" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_VASPRINTF $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_snprintf" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_SNPRINTF $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_vsnprintf" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_VSNPRINTF $ac_have_decl
> +_ACEOF
> +
> +  ac_fn_c_check_decl "$LINENO" "strtol" "ac_cv_have_decl_strtol" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_strtol" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_STRTOL $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "strtoul" "ac_cv_have_decl_strtoul" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_strtoul" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_STRTOUL $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "strtoll" "ac_cv_have_decl_strtoll" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_strtoll" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_STRTOLL $ac_have_decl
> +_ACEOF
> +ac_fn_c_check_decl "$LINENO" "strtoull" "ac_cv_have_decl_strtoull" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_strtoull" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_STRTOULL $ac_have_decl
> +_ACEOF
> +
> +  ac_fn_c_check_decl "$LINENO" "strverscmp" "ac_cv_have_decl_strverscmp" "$ac_includes_default"
> +if test "x$ac_cv_have_decl_strverscmp" = x""yes; then :
> +  ac_have_decl=1
> +else
> +  ac_have_decl=0
> +fi
> +
> +cat >>confdefs.h <<_ACEOF
> +#define HAVE_DECL_STRVERSCMP $ac_have_decl
> +_ACEOF
> +
> +
> +
> +
>  ac_fn_c_check_decl "$LINENO" "strerror" "ac_cv_have_decl_strerror" "$ac_includes_default"
>  if test "x$ac_cv_have_decl_strerror" = x""yes; then :
>    ac_have_decl=1
> diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac
> index f883adc..60636f7 100644
> --- a/gdb/gdbserver/configure.ac
> +++ b/gdb/gdbserver/configure.ac
> @@ -193,6 +193,8 @@ LIBS="$LIBS -ldl"
>  AC_CHECK_FUNCS(dladdr)
>  LIBS="$old_LIBS"
>  
> +libiberty_INIT
> +
>  AC_CHECK_DECLS([strerror, perror, vasprintf, vsnprintf])
>  
>  AC_CHECK_TYPES(socklen_t, [], [],
> diff --git a/libiberty/libiberty.m4 b/libiberty/libiberty.m4
> new file mode 100644
> index 0000000..6d9fd05
> --- /dev/null
> +++ b/libiberty/libiberty.m4
> @@ -0,0 +1,33 @@
> +dnl Bits libiberty clients must do on their autoconf step.
> +dnl
> +dnl   Copyright (C) 2012-2015 Free Software Foundation, Inc.
> +dnl
> +dnl This file is free software; you can redistribute it and/or modify
> +dnl it under the terms of the GNU General Public License as published by
> +dnl the Free Software Foundation; either version 3 of the License, or
> +dnl (at your option) any later version.
> +dnl
> +dnl This program is distributed in the hope that it will be useful,
> +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
> +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +dnl GNU General Public License for more details.
> +dnl
> +dnl You should have received a copy of the GNU General Public License
> +dnl along with this program; see the file COPYING3.  If not see
> +dnl <http://www.gnu.org/licenses/>.
> +dnl
> +
> +dnl Checks for declarations ansidecl.h and libiberty.h themselves
> +dnl check with HAVE_DECL_XXX, etc.
> +
> +AC_DEFUN([libiberty_INIT],
> +[
> +  # Check for presence of long long.
> +  AC_CHECK_TYPE([long long],
> +    [AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have the `long long' type.]) AC_CHECK_SIZEOF([long long])],
> +    [])
> +
> +  AC_CHECK_DECLS([basename(char *), ffs, asprintf, vasprintf, snprintf, vsnprintf])
> +  AC_CHECK_DECLS([strtol, strtoul, strtoll, strtoull])
> +  AC_CHECK_DECLS([strverscmp])
> +])
> 



  reply	other threads:[~2015-02-09 23:35 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-09 23:20 [PATCH 00/36] Support building GDB as a C++ program Pedro Alves
2015-02-09 23:20 ` [PATCH 02/36] Add --enable-build-with-cxx configure switch Pedro Alves
2015-02-10 22:11   ` Yao Qi
2015-02-27 13:24     ` Pedro Alves
2015-02-27 14:20       ` Yao Qi
2015-02-27 16:29         ` Pedro Alves
2015-02-09 23:21 ` [PATCH 13/36] target.h: Include infrun.h Pedro Alves
2015-02-09 23:21 ` [PATCH 21/36] opcodes/microblaze: Rename 'or', 'and', 'xor' to avoid C++ conflict Pedro Alves
2015-02-10 15:05   ` Michael Eager
2015-02-10 18:11     ` Pedro Alves
2015-02-09 23:21 ` [PATCH 09/36] floatformat.h: Wrap in extern "C" Pedro Alves
2015-02-09 23:35   ` Andrew Pinski
2015-02-09 23:49     ` Pedro Alves
2015-02-12 11:49       ` Pedro Alves
2015-02-18 19:55         ` Jakub Jelinek
2015-02-14 17:29       ` Doug Evans
2015-02-14 18:36         ` Pedro Alves
2015-02-14 22:46           ` Doug Evans
2015-02-09 23:21 ` [PATCH 08/36] elf-bfd.h: " Pedro Alves
2015-02-09 23:33   ` Andrew Pinski
2015-02-10 12:05     ` [PATCH v2] Wrap BFD headers " Pedro Alves
2015-02-11  0:36       ` Alan Modra
2015-02-11 10:08         ` Pedro Alves
2015-02-09 23:21 ` [PATCH 20/36] gdbserver/tracepoint: Add cast sockaddr_un/sockaddr cast Pedro Alves
2015-02-09 23:21 ` [PATCH 05/36] Fix redefinition errors in C++ mode Pedro Alves
2015-02-11 10:09   ` Yao Qi
2015-02-11 11:30     ` Pedro Alves
2015-02-11 11:39       ` [PATCH] xcoffread.c: delete 'within_function' definition (Re: [PATCH 05/36] Fix redefinition errors in C++ mode) Pedro Alves
2015-02-09 23:21 ` [PATCH 12/36] proc-service, extern "C" Pedro Alves
2015-02-09 23:21 ` [PATCH 31/36] Split TRY_CATCH into TRY + CATCH Pedro Alves
2015-03-07 15:58   ` Pedro Alves
2015-02-09 23:21 ` [PATCH 23/36] gdbarch.h: include regcache.h Pedro Alves
2015-02-09 23:21 ` [PATCH 15/36] Don't forward declare enum target_hw_bp_type Pedro Alves
2015-02-09 23:21 ` [PATCH 22/36] Remove duplicate const Pedro Alves
2015-02-09 23:21 ` [PATCH 11/36] Make functions and variables exported by the IPA be extern "C" Pedro Alves
2015-02-09 23:21 ` [PATCH 28/36] Move exception_none to common code, and use it Pedro Alves
2015-02-09 23:21 ` [PATCH 25/36] python/python-internal.h: enum ‘ext_lang_rc’ not defined Pedro Alves
2015-02-09 23:21 ` [PATCH 17/36] mi/mi-cmd-stack.c|frame filters: print_values <-> ext_lang_frame_args Pedro Alves
2015-02-09 23:21 ` [PATCH 03/36] C++ keyword cleanliness, mostly auto-generated Pedro Alves
2015-02-11  7:57   ` Joel Brobecker
2015-02-11  8:52     ` Phil Muldoon
2015-02-11 10:27     ` Pedro Alves
2015-02-11 10:51       ` Pedro Alves
2015-02-12 12:19         ` Joel Brobecker
2015-02-12 13:14           ` Pedro Alves
2015-02-12 14:43             ` Pedro Alves
2015-02-12 14:59               ` Joel Brobecker
2015-02-27 17:41         ` Pedro Alves
2015-02-09 23:21 ` [PATCH 16/36] x86 Linux/ptrace: fix offsetof usage in C++ mode Pedro Alves
2015-02-09 23:21 ` [PATCH 19/36] Exported const objects Pedro Alves
2015-02-09 23:21 ` [PATCH 04/36] Fix struct, union, and enum nesting in C++ Pedro Alves
2015-02-09 23:21 ` [PATCH 26/36] Adjust self tests to cope with GDB built as a C++ program Pedro Alves
2015-02-09 23:21 ` [PATCH 29/36] Normalize TRY_CATCH exception handling block Pedro Alves
2015-02-09 23:21 ` [PATCH 27/36] catch_command_errors: Remove 'mask' parameter Pedro Alves
2015-02-09 23:22 ` [PATCH 33/36] TRY_CATCH -> TRY+CATCH+END_CATCH, the manual conversions Pedro Alves
2015-02-09 23:22 ` [PATCH 32/36] TRY_CATCH -> TRY+CATCH+END_CATCH everywhere Pedro Alves
2015-02-09 23:22 ` [PATCH 36/36] Make TRY/CATCH use real C++ try/catch in C++ mode Pedro Alves
2015-02-09 23:35 ` [PATCH 18/36] Rename struct lzma_stream to avoid clash with system header Pedro Alves
2015-02-09 23:45 ` [PATCH 06/36] record-btrace.c: Remove redefinitions Pedro Alves
2015-02-09 23:46 ` [PATCH 35/36] kill volatile struct gdb_exception Pedro Alves
2015-02-09 23:49 ` [PATCH 00/36] Support building GDB as a C++ program Doug Evans
2015-02-09 23:50 ` [PATCH 34/36] more making TRY/CATCH callers look more like real C++ try/catch blocks Pedro Alves
2015-03-07 15:59   ` Pedro Alves
2015-02-09 23:51 ` [PATCH 07/36] Make array object extern Pedro Alves
2015-02-27 22:47   ` Simon Marchi
2015-02-27 22:58     ` Pedro Alves
2015-02-27 23:04       ` Simon Marchi
2015-02-09 23:51 ` [PATCH 14/36] Do not do arithmetic on enum types Pedro Alves
2015-02-09 23:53 ` [PATCH 01/36] Create libiberty/libiberty.m4, have GDB and GDBserver use it Pedro Alves
2015-02-09 23:35   ` Pedro Alves [this message]
2015-02-27 16:23   ` Pedro Alves
2015-02-09 23:54 ` [PATCH 10/36] Add extern "C" to declarations of C symbols Pedro Alves
2015-02-11 11:51   ` Pedro Alves
2015-02-09 23:54 ` [PATCH 30/36] quit_force: Replace TRY_CATCH wrapper macros Pedro Alves
2015-02-10  0:21 ` [PATCH 24/36] breakpoint.h: move enum ‘print_stop_action’ Pedro Alves
2015-02-11 12:28   ` Yao Qi
2015-02-10 15:07 ` [PATCH 00/36] Support building GDB as a C++ program Michael Eager
2015-02-11 17:15 ` Yao Qi
2015-02-12 11:34   ` Pedro Alves
2015-02-17 23:19 ` Patrick Palka
2015-02-18 21:54   ` Yao Qi
2015-02-18 23:49     ` Patrick Palka
2015-02-27 18:19 ` Pedro Alves
2015-02-27 23:52   ` Patrick Palka
2015-02-28  0:09     ` Pedro Alves
2015-03-07 16:01   ` Pedro Alves
2015-03-07 17:58     ` [all pushed] " Pedro Alves
2015-03-16  4:42       ` asmwarrior
2015-03-16  5:05         ` asmwarrior
2015-03-16  5:22           ` asmwarrior
2015-03-16  7:15             ` asmwarrior
2015-03-16  8:20               ` asmwarrior
2015-03-16 11:43                 ` [pushed] stub-termcap.c: prototype tputs's parameter's parameter, for C++ mode (Re: [all pushed] Re: [PATCH 00/36] Support building GDB as a C++ program) Pedro Alves
2015-03-16 11:46                 ` [pushed] stub termcap, add extern "C" " Pedro Alves
2015-03-16 11:55                 ` [all pushed] Re: [PATCH 00/36] Support building GDB as a C++ program Pedro Alves
2015-03-16 11:42           ` Pedro Alves
2015-05-15  8:13             ` asmwarrior
2015-05-15  8:24               ` asmwarrior
2015-05-15 15:09                 ` Pedro Alves
2015-05-15 15:04               ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54D9441A.90301@redhat.com \
    --to=palves@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox