On Tue, Mar 18, 2025 at 5:57 PM Iain Sandoe <iains....@gmail.com> wrote:
>
> Retested on x86_64 darwin.  This adds in the observation from Jose.
> I think if it gets more complex than this, we really need to punt it
> to libiberty.
> OK for trunk?  (thinking to wait until the c++14 changes have landed).

LGTM.

Richard.

> thanks
> Iain
>
> --- 8< ---
>
> This adds a configure check for get_current_dir_name and falls back
> to getcwd() if it is not available on the host.
>
>         PR cobol/119301
>
> gcc/cobol/ChangeLog:
>
>         * util.cc: Check for the availability of get_current_dir_name
>         snf fall back to getcwd() if it is not present on the host.
>
> gcc/ChangeLog:
>
>         * config.in: Regenerate.
>         * configure: Regenerate.
>         * configure.ac: Add check for get_current_dir_name.
>
> Signed-off-by: Iain Sandoe <i...@sandoe.co.uk>
> ---
>  gcc/cobol/util.cc | 19 +++++++++++++++++++
>  gcc/config.in     |  6 ++++++
>  gcc/configure     |  2 +-
>  gcc/configure.ac  |  2 +-
>  4 files changed, 27 insertions(+), 2 deletions(-)
>
> diff --git a/gcc/cobol/util.cc b/gcc/cobol/util.cc
> index 3872f57aeb0..db94abde949 100644
> --- a/gcc/cobol/util.cc
> +++ b/gcc/cobol/util.cc
> @@ -72,6 +72,25 @@ extern int yyparse(void);
>
>  extern int demonstration_administrator(int N);
>
> +#if !defined (HAVE_GET_CURRENT_DIR_NAME)
> +/* Posix platforms might not have get_current_dir_name but should have
> +   getcwd() and PATH_MAX.  */
> +#if __has_include (<limits.h>)
> +# include <limits.h>
> +#endif
> +/* The Hurd doesn't define PATH_MAX.  */
> +#if !defined (PATH_MAX) && defined(__GNU__)
> +# define PATH_MAX 4096
> +#endif
> +static inline char *
> +get_current_dir_name ()
> +{
> +  /* Use libiberty's allocator here.  */
> +  char *buf = (char *) xmalloc (PATH_MAX);
> +  return getcwd (buf, PATH_MAX);
> +}
> +#endif
> +
>  const char *
>  symbol_type_str( enum symbol_type_t type )
>  {
> diff --git a/gcc/config.in b/gcc/config.in
> index 7023209f2ed..0d8a6ba1808 100644
> --- a/gcc/config.in
> +++ b/gcc/config.in
> @@ -1624,6 +1624,12 @@
>  #endif
>
>
> +/* Define to 1 if you have the `get_current_dir_name' function. */
> +#ifndef USED_FOR_TARGET
> +#undef HAVE_GET_CURRENT_DIR_NAME
> +#endif
> +
> +
>  /* Define to 1 if using GNU as. */
>  #ifndef USED_FOR_TARGET
>  #undef HAVE_GNU_AS
> diff --git a/gcc/configure b/gcc/configure
> index 2679a05d9c6..063b9ce6701 100755
> --- a/gcc/configure
> +++ b/gcc/configure
> @@ -10640,7 +10640,7 @@ for ac_func in times clock kill getrlimit setrlimit 
> atoq \
>         popen sysconf strsignal getrusage nl_langinfo \
>         gettimeofday mbstowcs wcswidth mmap posix_fallocate setlocale \
>         clearerr_unlocked feof_unlocked   ferror_unlocked fflush_unlocked 
> fgetc_unlocked fgets_unlocked   fileno_unlocked fprintf_unlocked 
> fputc_unlocked fputs_unlocked   fread_unlocked fwrite_unlocked 
> getchar_unlocked getc_unlocked   putchar_unlocked putc_unlocked madvise 
> mallinfo mallinfo2 fstatat getauxval \
> -       clock_gettime munmap msync
> +       clock_gettime munmap msync get_current_dir_name
>  do :
>    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
>  ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var"
> diff --git a/gcc/configure.ac b/gcc/configure.ac
> index 78973755f7a..3243472680c 100644
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -1574,7 +1574,7 @@ AC_CHECK_FUNCS(times clock kill getrlimit setrlimit 
> atoq \
>         popen sysconf strsignal getrusage nl_langinfo \
>         gettimeofday mbstowcs wcswidth mmap posix_fallocate setlocale \
>         gcc_UNLOCKED_FUNCS madvise mallinfo mallinfo2 fstatat getauxval \
> -       clock_gettime munmap msync)
> +       clock_gettime munmap msync get_current_dir_name)
>
>  # At least for glibc, clock_gettime is in librt.  But don't pull that
>  # in if it still doesn't give us the function we want.
> --
> 2.39.2 (Apple Git-143)
>

Reply via email to