[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#826937: libgnatprj6: undefined symbol: __gnat_objlist_file_supported



On Fri, 10 Jun 2016 10:08:11 +0200 Emilio Pozuelo Monfort
<pochu@debian.org> wrote:
> Package: libgnatprj6
> Version: 6.1.1-6
> Severity: serious
>
> A few days ago, libgnatprj6 was working just fine. However it looks like
> one of the recent uploads has broken it, causing undefined references:
>
> https://buildd.debian.org/status/logs.php?pkg=asis&ver=2015-1%2Bb1
> https://buildd.debian.org/status/logs.php?pkg=libgnatcoll&ver=1.7gpl2015-1%2Bb3
> https://buildd.debian.org/status/logs.php?pkg=libgtkada&ver=3.8.3-1%2Bb2

With the attached patch, gprbuild can executable correctly, and the above
package can be built.

To build prefix.c for target, I have to get a config.h file and define
some macro.

>
> Cheers,
> Emilio
>
>
diff --git a/debian/patches/ada-libgnatprj.diff b/debian/patches/ada-libgnatprj.diff
index 70043fa..3ce8b46 100644
--- a/debian/patches/ada-libgnatprj.diff
+++ b/debian/patches/ada-libgnatprj.diff
@@ -95,7 +95,7 @@ Index: b/src/libgnatprj/Makefile.in
 +
 +# Add some object files compiled from C sources.  prefix.o requires
 +# some objects from libiberty and from gcc.
-+# OBJECTS += common-targhooks.o errors.o hooks.o link.o prefix.o targetm.o
++OBJECTS += link.o prefix.o
 +
 +# These object files have already been built, both PIC and non-PIC.
 +# prefix.o depends on them.
@@ -124,12 +124,12 @@ Index: b/src/libgnatprj/Makefile.in
 +
 +obj-shared/%.o: %.c
 +	$(GPP) -c -fPIC $(CFLAGS) -DHAVE_CONFIG_H -pedantic \
-+	   -I@srcdir@/../gcc -I@srcdir@/../include -I@srcdir@/../libcpp/include -I../../gcc -DUSED_FOR_TARGET \
++	   -I. -I@srcdir@/../gcc -I@srcdir@/../include -I@srcdir@/../libcpp/include -I../../gcc -DUSED_FOR_TARGET \
 +	   $< -o $@
 +
 +obj-shared/prefix.o: @srcdir@/../gcc/prefix.c
 +	$(GPP) -c -fPIC $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \
-+	   -I@srcdir@/../gcc -I@srcdir@/../include -I../../gcc -I@srcdir@/../libcpp/include -DUSED_FOR_TARGET \
++	   -I. -I@srcdir@/../gcc -I@srcdir@/../include -I../../gcc -I@srcdir@/../libcpp/include -DUSED_FOR_TARGET \
 +	   $< -o $@
 +
 +obj-shared:
@@ -150,12 +150,12 @@ Index: b/src/libgnatprj/Makefile.in
 +
 +obj-static/%.o: %.c
 +	$(GPP) -c $(CFLAGS) -DHAVE_CONFIG_H -pedantic \
-+	   -I@srcdir@/../gcc -I@srcdir@/../include -I@srcdir@/../libcpp/include -I../../gcc -DUSED_FOR_TARGET \
++	   -I. -I@srcdir@/../gcc -I@srcdir@/../include -I@srcdir@/../libcpp/include -I../../gcc -DUSED_FOR_TARGET \
 +	   $< -o $@
 +
 +obj-static/prefix.o: @srcdir@/../gcc/prefix.c
 +	$(GPP) -c $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \
-+	   -I@srcdir@/../gcc -I@srcdir@/../include -I../../gcc -I@srcdir@/../libcpp/include -DUSED_FOR_TARGET \
++	   -I. -I@srcdir@/../gcc -I@srcdir@/../include -I../../gcc -I@srcdir@/../libcpp/include -DUSED_FOR_TARGET \
 +	   $< -o $@
 +
 +obj-static:
@@ -277,7 +277,7 @@ Index: b/src/libgnatprj/configure.ac
 ===================================================================
 --- /dev/null
 +++ b/src/libgnatprj/configure.ac
-@@ -0,0 +1,146 @@
+@@ -0,0 +1,557 @@
 +# Configure script for libada.
 +#   Copyright 2003, 2004 Free Software Foundation, Inc.
 +#
@@ -308,12 +308,423 @@ Index: b/src/libgnatprj/configure.ac
 +AC_CANONICAL_HOST
 +AC_CANONICAL_TARGET
 +
++GCC_NO_EXECUTABLES
++AC_PROG_CC
++AC_GNU_SOURCE
++AC_PROG_CPP_WERROR
++
++AC_PROG_CC_C_O
++# autoconf is lame and doesn't give us any substitution variable for this.
++if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
++  NO_MINUS_C_MINUS_O=yes
++else
++  OUTPUT_OPTION='-o $@'
++fi
++AC_SUBST(NO_MINUS_C_MINUS_O)
++AC_SUBST(OUTPUT_OPTION)
++
++AC_C_CONST
++AC_C_INLINE
++AC_C_BIGENDIAN
++
++dnl When we start using libtool:
++dnl AM_PROG_LIBTOOL
++
++dnl When we start using automake:
++dnl AM_CONFIG_HEADER(config.h:config.in)
++AC_CONFIG_HEADER(config.h:config.in)
++
 +sinclude(../config/acx.m4)
 +ACX_NONCANONICAL_TARGET
 +
 +# Need to pass this down for now :-P
 +AC_PROG_LN_S
 +
++# It's OK to check for header files.  Although the compiler may not be
++# able to link anything, it had better be able to at least compile
++# something.
++AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h malloc.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h sys/sysctl.h sys/systemcfg.h stdint.h stdio_ext.h process.h sys/prctl.h)
++AC_HEADER_SYS_WAIT
++AC_HEADER_TIME
++
++# Determine sizes of some types.
++AC_CHECK_SIZEOF([int])
++AC_CHECK_SIZEOF([long])
++AC_CHECK_SIZEOF([size_t])
++
++AC_TYPE_INTPTR_T
++AC_TYPE_UINTPTR_T
++AC_TYPE_SSIZE_T
++
++# Given the above check, we always have uintptr_t or a fallback
++# definition.  So define HAVE_UINTPTR_T in case any imported code
++# relies on it.
++AC_DEFINE(HAVE_UINTPTR_T, 1, [Define if you have the \`uintptr_t' type.])
++
++AC_TYPE_PID_T
++
++# This is the list of functions which libiberty will provide if they
++# are not available on the host.
++
++funcs="asprintf"
++funcs="$funcs atexit"
++funcs="$funcs basename"
++funcs="$funcs bcmp"
++funcs="$funcs bcopy"
++funcs="$funcs bsearch"
++funcs="$funcs bzero"
++funcs="$funcs calloc"
++funcs="$funcs clock"
++funcs="$funcs ffs"
++funcs="$funcs getcwd"
++funcs="$funcs getpagesize"
++funcs="$funcs gettimeofday"
++funcs="$funcs index"
++funcs="$funcs insque"
++funcs="$funcs memchr"
++funcs="$funcs memcmp"
++funcs="$funcs memcpy"
++funcs="$funcs memmem"
++funcs="$funcs memmove"
++funcs="$funcs mempcpy"
++funcs="$funcs memset"
++funcs="$funcs mkstemps"
++funcs="$funcs putenv"
++funcs="$funcs random"
++funcs="$funcs rename"
++funcs="$funcs rindex"
++funcs="$funcs setenv"
++funcs="$funcs snprintf"
++funcs="$funcs sigsetmask"
++funcs="$funcs stpcpy"
++funcs="$funcs stpncpy"
++funcs="$funcs strcasecmp"
++funcs="$funcs strchr"
++funcs="$funcs strdup"
++funcs="$funcs strncasecmp"
++funcs="$funcs strndup"
++funcs="$funcs strnlen"
++funcs="$funcs strrchr"
++funcs="$funcs strstr"
++funcs="$funcs strtod"
++funcs="$funcs strtol"
++funcs="$funcs strtoul"
++funcs="$funcs strtoll"
++funcs="$funcs strtoull"
++funcs="$funcs strverscmp"
++funcs="$funcs tmpnam"
++funcs="$funcs vasprintf"
++funcs="$funcs vfprintf"
++funcs="$funcs vprintf"
++funcs="$funcs vsnprintf"
++funcs="$funcs vsprintf"
++funcs="$funcs waitpid"
++funcs="$funcs setproctitle"
++
++# Also in the old function.def file: alloca, vfork, getopt.
++
++vars="sys_errlist sys_nerr sys_siglist"
++
++checkfuncs="__fsetlocking canonicalize_file_name dup3 getrlimit getrusage \
++ getsysinfo gettimeofday on_exit psignal pstat_getdynamic pstat_getstatic \
++ realpath setrlimit sbrk spawnve spawnvpe strerror strsignal sysconf sysctl \
++ sysmp table times wait3 wait4"
++
++# These are neither executed nor required, but they help keep
++# autoheader happy without adding a bunch of text to acconfig.h.
++if test "x" = "y"; then
++  AC_CHECK_FUNCS(asprintf atexit \
++    basename bcmp bcopy bsearch bzero \
++    calloc canonicalize_file_name clock \
++    dup3 \
++    ffs __fsetlocking \
++    getcwd getpagesize getrlimit getrusage getsysinfo gettimeofday \
++    index insque \
++    memchr memcmp memcpy memmem memmove memset mkstemps \
++    on_exit \
++    psignal pstat_getdynamic pstat_getstatic putenv \
++    random realpath rename rindex \
++    sbrk setenv setproctitle setrlimit sigsetmask snprintf spawnve spawnvpe \
++     stpcpy stpncpy strcasecmp strchr strdup \
++     strerror strncasecmp strndup strnlen strrchr strsignal strstr strtod \
++     strtol strtoul strtoll strtoull strverscmp sysconf sysctl sysmp \
++    table times tmpnam \
++    vasprintf vfprintf vprintf vsprintf \
++    wait3 wait4 waitpid)
++  AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strtol, strtoul, strtoll, strtoull])
++  AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.])
++  AC_DEFINE(HAVE_SYS_NERR,    1, [Define if you have the sys_nerr variable.])
++  AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.])
++fi
++
++# For each of these functions, if the host does not provide the
++# function we want to put FN.o in LIBOBJS, and if the host does
++# provide the function, we want to define HAVE_FN in config.h.
++
++setobjs=
++CHECK=
++if test -n "${with_target_subdir}"; then
++
++  # We are being configured as a target library.  AC_REPLACE_FUNCS
++  # may not work correctly, because the compiler may not be able to
++  # link executables.  Note that we may still be being configured
++  # native.
++
++  # If we are being configured for newlib, we know which functions
++  # newlib provide and which ones we will be expected to provide.
++
++  if test "x${with_newlib}" = "xyes"; then
++    AC_LIBOBJ([asprintf])
++    AC_LIBOBJ([basename])
++    AC_LIBOBJ([insque])
++    AC_LIBOBJ([random])
++    AC_LIBOBJ([strdup])
++    AC_LIBOBJ([vasprintf])
++
++    for f in $funcs; do
++      case "$f" in
++	asprintf | basename | insque | random | strdup | vasprintf)
++	  ;;
++	*)
++	  n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
++	  AC_DEFINE_UNQUOTED($n)
++	  ;;
++      esac
++    done
++
++    # newlib doesnt provide any of the variables in $vars, so we
++    # dont have to check them here.
++
++    # Of the functions in $checkfuncs, newlib only has strerror.
++    AC_DEFINE(HAVE_STRERROR)
++
++    setobjs=yes
++
++  fi
++
++  # If we are being configured for Mingw, we know which functions
++  # Mingw provides and which ones we will be expected to provide.
++
++  case "${host}" in
++  *-*-mingw*)
++    AC_LIBOBJ([asprintf])
++    AC_LIBOBJ([basename])
++    AC_LIBOBJ([bcmp])
++    AC_LIBOBJ([bcopy])
++    AC_LIBOBJ([bzero])
++    AC_LIBOBJ([clock])
++    AC_LIBOBJ([ffs])
++    AC_LIBOBJ([getpagesize])
++    AC_LIBOBJ([index])
++    AC_LIBOBJ([insque])
++    AC_LIBOBJ([mempcpy])
++    AC_LIBOBJ([mkstemps])
++    AC_LIBOBJ([random])
++    AC_LIBOBJ([rindex])
++    AC_LIBOBJ([sigsetmask])
++    AC_LIBOBJ([stpcpy])
++    AC_LIBOBJ([stpncpy])
++    AC_LIBOBJ([strndup])
++    AC_LIBOBJ([strnlen])
++    AC_LIBOBJ([strverscmp])
++    AC_LIBOBJ([vasprintf])
++    AC_LIBOBJ([waitpid])
++
++    for f in $funcs; do
++      case "$f" in
++	asprintf | basename | bcmp | bcopy | bzero | clock | ffs | getpagesize | index | insque | mempcpy | mkstemps | random | rindex | sigsetmask | stpcpy | stpncpy | strdup | strndup | strnlen | strverscmp | vasprintf | waitpid)
++	  ;;
++	*)
++	  n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
++	  AC_DEFINE_UNQUOTED($n)
++	  ;;
++      esac
++    done
++
++    # Mingw doesnt provide any of the variables in $vars, so we
++    # dont have to check them here.
++
++    # Of the functions in $checkfuncs, Mingw only has strerror.
++    AC_DEFINE(HAVE_STRERROR)
++
++    setobjs=yes
++    ;;
++
++  *-*-msdosdjgpp)
++    AC_LIBOBJ([vasprintf])
++    AC_LIBOBJ([vsnprintf])
++    AC_LIBOBJ([snprintf])
++    AC_LIBOBJ([asprintf])
++
++    for f in atexit basename bcmp bcopy bsearch bzero calloc clock ffs \
++             getcwd getpagesize getrusage gettimeofday \
++             index insque memchr memcmp memcpy memmove memset psignal \
++             putenv random rename rindex sbrk setenv stpcpy strcasecmp \
++             strchr strdup strerror strncasecmp strrchr strstr strtod \
++             strtol strtoul sysconf times tmpnam vfprintf vprintf \
++             vsprintf waitpid
++    do
++      n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
++      AC_DEFINE_UNQUOTED($n)
++    done
++
++
++    setobjs=yes
++    ;;
++
++  esac
++
++else
++
++   # Not a target library, so we set things up to run the test suite.
++   CHECK=really-check
++
++fi
++
++AC_SUBST(CHECK)
++AC_SUBST(target_header_dir)
++
++case "${host}" in
++  *-*-cygwin* | *-*-mingw*)
++    AC_DEFINE(HAVE_SYS_ERRLIST)
++    AC_DEFINE(HAVE_SYS_NERR)
++    ;;
++esac
++
++if test -z "${setobjs}"; then
++  case "${host}" in
++
++  *-*-vxworks*)
++    # Handle VxWorks configuration specially, since on VxWorks the
++    # libraries are actually on the target board, not in the file
++    # system.
++    AC_LIBOBJ([basename])
++    AC_LIBOBJ([getpagesize])
++    AC_LIBOBJ([insque])
++    AC_LIBOBJ([random])
++    AC_LIBOBJ([strcasecmp])
++    AC_LIBOBJ([strncasecmp])
++    AC_LIBOBJ([strdup])
++    AC_LIBOBJ([vfork])
++    AC_LIBOBJ([waitpid])
++    AC_LIBOBJ([vasprintf])
++    for f in $funcs; do
++      case "$f" in
++	basename | getpagesize | insque | random | strcasecmp)
++	  ;;
++	strncasecmp | strdup | vfork | waitpid | vasprintf)
++	  ;;
++	*)
++	  n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
++	  AC_DEFINE_UNQUOTED($n)
++	  ;;
++      esac
++    done
++
++    # VxWorks doesn't provide any of the variables in $vars, so we
++    # don't have to check them here.
++
++    # Of the functions in $checkfuncs, VxWorks only has strerror.
++    AC_DEFINE(HAVE_STRERROR)
++
++    setobjs=yes
++    ;;
++
++  esac
++fi
++
++if test -z "${setobjs}"; then
++
++  case "${host}" in
++
++  *-*-android*)
++    # On android, getpagesize is defined in unistd.h as a static inline
++    # function, which AC_CHECK_FUNCS does not handle properly.
++    ac_cv_func_getpagesize=yes
++    ;;
++
++  *-*-mingw32*)
++    # Under mingw32, sys_nerr and sys_errlist exist, but they are
++    # macros, so the test below won't find them.
++    libgnatprj_cv_var_sys_nerr=yes
++    libgnatprj_cv_var_sys_errlist=yes
++    ;;
++
++  *-*-msdosdjgpp*)
++    # vfork and fork are stubs.
++    ac_cv_func_vfork_works=no
++    ;;
++
++  *-*-uwin*)
++    # Under some versions of uwin, vfork is notoriously buggy and the test 
++    # can hang configure; on other versions, vfork exists just as a stub.
++    # FIXME: This should be removed once vfork in uwin's runtime is fixed.
++    ac_cv_func_vfork_works=no
++    # Under uwin 2.0+, sys_nerr and sys_errlist exist, but they are
++    # macros (actually, these are imported from a DLL, but the end effect 
++    # is the same), so the test below won't find them.
++    libgnatprj_cv_var_sys_nerr=yes
++    libgnatprj_cv_var_sys_errlist=yes
++    ;;
++
++  *-*-*vms*)
++    # Under VMS, vfork works very different than on Unix. The standard test 
++    # won't work, and it isn't easily adaptable. It makes more sense to
++    # just force it.
++    ac_cv_func_vfork_works=yes
++    ;;
++
++  esac
++
++  # We haven't set the list of objects yet.  Use the standard autoconf
++  # tests.  This will only work if the compiler works.
++  AC_ISC_POSIX
++  AC_REPLACE_FUNCS($funcs)
++  AC_FUNC_FORK
++  if test $ac_cv_func_vfork_works = no; then
++    AC_LIBOBJ([vfork])
++  fi
++  # We only need _doprnt if we might use it to implement v*printf.
++  if test $ac_cv_func_vprintf != yes \
++     || test $ac_cv_func_vfprintf != yes \
++     || test $ac_cv_func_vsprintf != yes; then
++    AC_REPLACE_FUNCS(_doprnt)
++  else
++    AC_CHECK_FUNCS(_doprnt)
++  fi
++
++  for v in $vars; do
++    AC_MSG_CHECKING([for $v])
++    AC_CACHE_VAL(libgnatprj_cv_var_$v,
++      [AC_LINK_IFELSE([AC_LANG_PROGRAM([[int *p;]],[[extern int $v []; p = $v;]])],
++		      [eval "libgnatprj_cv_var_$v=yes"],
++		      [eval "libgnatprj_cv_var_$v=no"])])
++    if eval "test \"`echo '$libgnatprj_cv_var_'$v`\" = yes"; then
++      AC_MSG_RESULT(yes)
++      n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
++      AC_DEFINE_UNQUOTED($n)
++    else
++      AC_MSG_RESULT(no)
++    fi
++  done
++
++  # special check for _system_configuration because AIX <4.3.2 do not
++  # contain the `physmem' member.
++  AC_MSG_CHECKING([for external symbol _system_configuration])
++  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/systemcfg.h>]],
++			[[double x = _system_configuration.physmem;]])],
++    [AC_MSG_RESULT([yes])
++    AC_DEFINE(HAVE__SYSTEM_CONFIGURATION, 1,
++	      [Define if you have the _system_configuration variable.])],
++    [AC_MSG_RESULT([no])])
++
++  AC_CHECK_FUNCS($checkfuncs)
++  AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf])
++  AC_CHECK_DECLS([calloc, getenv, getopt, malloc, realloc, sbrk])
++  AC_CHECK_DECLS([strtol, strtoul, strtoll, strtoull])
++  AC_CHECK_DECLS([strverscmp])
++fi
++
 +# Determine x_ada_cflags
 +case $host in
 +  hppa*) x_ada_cflags=-mdisable-indexing ;;
@@ -981,3 +1392,600 @@ Index: b/src/Makefile.in
  configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss
  
  configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss
+Index: b/src/libgnatprj/config.in
+===================================================================
+--- /dev/null
++++ b/src/libgnatprj/config.in
+@@ -0,0 +1,565 @@
++/* config.in.  Generated from configure.ac by autoheader.  */
++
++/* Define if building universal (internal helper macro) */
++#undef AC_APPLE_UNIVERSAL_BUILD
++
++/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
++   This function is required for alloca.c support on those systems. */
++#undef CRAY_STACKSEG_END
++
++/* Define to 1 if you have the <alloca.h> header file. */
++#undef HAVE_ALLOCA_H
++
++/* Define to 1 if you have the `asprintf' function. */
++#undef HAVE_ASPRINTF
++
++/* Define to 1 if you have the `atexit' function. */
++#undef HAVE_ATEXIT
++
++/* Define to 1 if you have the `basename' function. */
++#undef HAVE_BASENAME
++
++/* Define to 1 if you have the `bcmp' function. */
++#undef HAVE_BCMP
++
++/* Define to 1 if you have the `bcopy' function. */
++#undef HAVE_BCOPY
++
++/* Define to 1 if you have the `bsearch' function. */
++#undef HAVE_BSEARCH
++
++/* Define to 1 if you have the `bzero' function. */
++#undef HAVE_BZERO
++
++/* Define to 1 if you have the `calloc' function. */
++#undef HAVE_CALLOC
++
++/* Define to 1 if you have the `canonicalize_file_name' function. */
++#undef HAVE_CANONICALIZE_FILE_NAME
++
++/* Define to 1 if you have the `clock' function. */
++#undef HAVE_CLOCK
++
++/* 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 `calloc', and to 0 if you don't.
++   */
++#undef HAVE_DECL_CALLOC
++
++/* 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 `getenv', and to 0 if you don't.
++   */
++#undef HAVE_DECL_GETENV
++
++/* Define to 1 if you have the declaration of `getopt', and to 0 if you don't.
++   */
++#undef HAVE_DECL_GETOPT
++
++/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't.
++   */
++#undef HAVE_DECL_MALLOC
++
++/* Define to 1 if you have the declaration of `realloc', and to 0 if you
++   don't. */
++#undef HAVE_DECL_REALLOC
++
++/* Define to 1 if you have the declaration of `sbrk', and to 0 if you don't.
++   */
++#undef HAVE_DECL_SBRK
++
++/* 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 `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 `dup3' function. */
++#undef HAVE_DUP3
++
++/* Define to 1 if you have the <fcntl.h> header file. */
++#undef HAVE_FCNTL_H
++
++/* Define to 1 if you have the `ffs' function. */
++#undef HAVE_FFS
++
++/* Define to 1 if you have the `fork' function. */
++#undef HAVE_FORK
++
++/* Define to 1 if you have the `getcwd' function. */
++#undef HAVE_GETCWD
++
++/* Define to 1 if you have the `getpagesize' function. */
++#undef HAVE_GETPAGESIZE
++
++/* Define to 1 if you have the `getrlimit' function. */
++#undef HAVE_GETRLIMIT
++
++/* Define to 1 if you have the `getrusage' function. */
++#undef HAVE_GETRUSAGE
++
++/* Define to 1 if you have the `getsysinfo' function. */
++#undef HAVE_GETSYSINFO
++
++/* Define to 1 if you have the `gettimeofday' function. */
++#undef HAVE_GETTIMEOFDAY
++
++/* Define to 1 if you have the `index' function. */
++#undef HAVE_INDEX
++
++/* Define to 1 if you have the `insque' function. */
++#undef HAVE_INSQUE
++
++/* Define to 1 if the system has the type `intptr_t'. */
++#undef HAVE_INTPTR_T
++
++/* Define to 1 if you have the <inttypes.h> header file. */
++#undef HAVE_INTTYPES_H
++
++/* Define to 1 if you have the <limits.h> header file. */
++#undef HAVE_LIMITS_H
++
++/* Define if you have the `long long' type. */
++#undef HAVE_LONG_LONG
++
++/* Define to 1 if you have the <machine/hal_sysinfo.h> header file. */
++#undef HAVE_MACHINE_HAL_SYSINFO_H
++
++/* Define to 1 if you have the <malloc.h> header file. */
++#undef HAVE_MALLOC_H
++
++/* Define to 1 if you have the `memchr' function. */
++#undef HAVE_MEMCHR
++
++/* Define to 1 if you have the `memcmp' function. */
++#undef HAVE_MEMCMP
++
++/* Define to 1 if you have the `memcpy' function. */
++#undef HAVE_MEMCPY
++
++/* Define to 1 if you have the `memmem' function. */
++#undef HAVE_MEMMEM
++
++/* Define to 1 if you have the `memmove' function. */
++#undef HAVE_MEMMOVE
++
++/* Define to 1 if you have the <memory.h> header file. */
++#undef HAVE_MEMORY_H
++
++/* Define to 1 if you have the `memset' function. */
++#undef HAVE_MEMSET
++
++/* Define to 1 if you have the `mkstemps' function. */
++#undef HAVE_MKSTEMPS
++
++/* Define to 1 if you have a working `mmap' system call. */
++#undef HAVE_MMAP
++
++/* Define to 1 if you have the `on_exit' function. */
++#undef HAVE_ON_EXIT
++
++/* Define to 1 if you have the <process.h> header file. */
++#undef HAVE_PROCESS_H
++
++/* Define to 1 if you have the `psignal' function. */
++#undef HAVE_PSIGNAL
++
++/* Define to 1 if you have the `pstat_getdynamic' function. */
++#undef HAVE_PSTAT_GETDYNAMIC
++
++/* Define to 1 if you have the `pstat_getstatic' function. */
++#undef HAVE_PSTAT_GETSTATIC
++
++/* Define to 1 if you have the `putenv' function. */
++#undef HAVE_PUTENV
++
++/* Define to 1 if you have the `random' function. */
++#undef HAVE_RANDOM
++
++/* Define to 1 if you have the `realpath' function. */
++#undef HAVE_REALPATH
++
++/* Define to 1 if you have the `rename' function. */
++#undef HAVE_RENAME
++
++/* Define to 1 if you have the `rindex' function. */
++#undef HAVE_RINDEX
++
++/* Define to 1 if you have the `sbrk' function. */
++#undef HAVE_SBRK
++
++/* Define to 1 if you have the `setenv' function. */
++#undef HAVE_SETENV
++
++/* Define to 1 if you have the `setproctitle' function. */
++#undef HAVE_SETPROCTITLE
++
++/* Define to 1 if you have the `setrlimit' function. */
++#undef HAVE_SETRLIMIT
++
++/* Define to 1 if you have the `sigsetmask' function. */
++#undef HAVE_SIGSETMASK
++
++/* Define to 1 if you have the `snprintf' function. */
++#undef HAVE_SNPRINTF
++
++/* Define to 1 if you have the `spawnve' function. */
++#undef HAVE_SPAWNVE
++
++/* Define to 1 if you have the `spawnvpe' function. */
++#undef HAVE_SPAWNVPE
++
++/* Define to 1 if you have the <stdint.h> header file. */
++#undef HAVE_STDINT_H
++
++/* Define to 1 if you have the <stdio_ext.h> header file. */
++#undef HAVE_STDIO_EXT_H
++
++/* Define to 1 if you have the <stdlib.h> header file. */
++#undef HAVE_STDLIB_H
++
++/* Define to 1 if you have the `stpcpy' function. */
++#undef HAVE_STPCPY
++
++/* Define to 1 if you have the `stpncpy' function. */
++#undef HAVE_STPNCPY
++
++/* Define to 1 if you have the `strcasecmp' function. */
++#undef HAVE_STRCASECMP
++
++/* Define to 1 if you have the `strchr' function. */
++#undef HAVE_STRCHR
++
++/* Define to 1 if you have the `strdup' function. */
++#undef HAVE_STRDUP
++
++/* Define to 1 if you have the `strerror' function. */
++#undef HAVE_STRERROR
++
++/* Define to 1 if you have the <strings.h> header file. */
++#undef HAVE_STRINGS_H
++
++/* Define to 1 if you have the <string.h> header file. */
++#undef HAVE_STRING_H
++
++/* Define to 1 if you have the `strncasecmp' function. */
++#undef HAVE_STRNCASECMP
++
++/* Define to 1 if you have the `strndup' function. */
++#undef HAVE_STRNDUP
++
++/* Define to 1 if you have the `strnlen' function. */
++#undef HAVE_STRNLEN
++
++/* Define to 1 if you have the `strrchr' function. */
++#undef HAVE_STRRCHR
++
++/* Define to 1 if you have the `strsignal' function. */
++#undef HAVE_STRSIGNAL
++
++/* Define to 1 if you have the `strstr' function. */
++#undef HAVE_STRSTR
++
++/* Define to 1 if you have the `strtod' function. */
++#undef HAVE_STRTOD
++
++/* Define to 1 if you have the `strtol' function. */
++#undef HAVE_STRTOL
++
++/* Define to 1 if you have the `strtoll' function. */
++#undef HAVE_STRTOLL
++
++/* Define to 1 if you have the `strtoul' function. */
++#undef HAVE_STRTOUL
++
++/* Define to 1 if you have the `strtoull' function. */
++#undef HAVE_STRTOULL
++
++/* Define to 1 if you have the `strverscmp' function. */
++#undef HAVE_STRVERSCMP
++
++/* Define to 1 if you have the `sysconf' function. */
++#undef HAVE_SYSCONF
++
++/* Define to 1 if you have the `sysctl' function. */
++#undef HAVE_SYSCTL
++
++/* Define to 1 if you have the `sysmp' function. */
++#undef HAVE_SYSMP
++
++/* Define if you have the sys_errlist variable. */
++#undef HAVE_SYS_ERRLIST
++
++/* Define to 1 if you have the <sys/file.h> header file. */
++#undef HAVE_SYS_FILE_H
++
++/* Define to 1 if you have the <sys/mman.h> header file. */
++#undef HAVE_SYS_MMAN_H
++
++/* Define if you have the sys_nerr variable. */
++#undef HAVE_SYS_NERR
++
++/* Define to 1 if you have the <sys/param.h> header file. */
++#undef HAVE_SYS_PARAM_H
++
++/* Define to 1 if you have the <sys/prctl.h> header file. */
++#undef HAVE_SYS_PRCTL_H
++
++/* Define to 1 if you have the <sys/pstat.h> header file. */
++#undef HAVE_SYS_PSTAT_H
++
++/* Define to 1 if you have the <sys/resource.h> header file. */
++#undef HAVE_SYS_RESOURCE_H
++
++/* Define if you have the sys_siglist variable. */
++#undef HAVE_SYS_SIGLIST
++
++/* Define to 1 if you have the <sys/stat.h> header file. */
++#undef HAVE_SYS_STAT_H
++
++/* Define to 1 if you have the <sys/sysctl.h> header file. */
++#undef HAVE_SYS_SYSCTL_H
++
++/* Define to 1 if you have the <sys/sysinfo.h> header file. */
++#undef HAVE_SYS_SYSINFO_H
++
++/* Define to 1 if you have the <sys/sysmp.h> header file. */
++#undef HAVE_SYS_SYSMP_H
++
++/* Define to 1 if you have the <sys/systemcfg.h> header file. */
++#undef HAVE_SYS_SYSTEMCFG_H
++
++/* Define to 1 if you have the <sys/table.h> header file. */
++#undef HAVE_SYS_TABLE_H
++
++/* Define to 1 if you have the <sys/time.h> header file. */
++#undef HAVE_SYS_TIME_H
++
++/* Define to 1 if you have the <sys/types.h> header file. */
++#undef HAVE_SYS_TYPES_H
++
++/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
++#undef HAVE_SYS_WAIT_H
++
++/* Define to 1 if you have the `table' function. */
++#undef HAVE_TABLE
++
++/* Define to 1 if you have the `times' function. */
++#undef HAVE_TIMES
++
++/* Define to 1 if you have the <time.h> header file. */
++#undef HAVE_TIME_H
++
++/* Define to 1 if you have the `tmpnam' function. */
++#undef HAVE_TMPNAM
++
++/* Define if you have the \`uintptr_t' type. */
++#undef HAVE_UINTPTR_T
++
++/* Define to 1 if you have the <unistd.h> header file. */
++#undef HAVE_UNISTD_H
++
++/* Define to 1 if you have the `vasprintf' function. */
++#undef HAVE_VASPRINTF
++
++/* Define to 1 if you have the `vfork' function. */
++#undef HAVE_VFORK
++
++/* Define to 1 if you have the <vfork.h> header file. */
++#undef HAVE_VFORK_H
++
++/* Define to 1 if you have the `vfprintf' function. */
++#undef HAVE_VFPRINTF
++
++/* Define to 1 if you have the `vprintf' function. */
++#undef HAVE_VPRINTF
++
++/* Define to 1 if you have the `vsprintf' function. */
++#undef HAVE_VSPRINTF
++
++/* Define to 1 if you have the `wait3' function. */
++#undef HAVE_WAIT3
++
++/* Define to 1 if you have the `wait4' function. */
++#undef HAVE_WAIT4
++
++/* Define to 1 if you have the `waitpid' function. */
++#undef HAVE_WAITPID
++
++/* Define to 1 if `fork' works. */
++#undef HAVE_WORKING_FORK
++
++/* Define to 1 if `vfork' works. */
++#undef HAVE_WORKING_VFORK
++
++/* Define to 1 if you have the `_doprnt' function. */
++#undef HAVE__DOPRNT
++
++/* Define if you have the _system_configuration variable. */
++#undef HAVE__SYSTEM_CONFIGURATION
++
++/* Define to 1 if you have the `__fsetlocking' function. */
++#undef HAVE___FSETLOCKING
++
++/* Define if canonicalize_file_name is not declared in system header files. */
++#undef NEED_DECLARATION_CANONICALIZE_FILE_NAME
++
++/* Define if errno must be declared even when <errno.h> is included. */
++#undef NEED_DECLARATION_ERRNO
++
++/* Define to 1 if your C compiler doesn't accept -c and -o together. */
++#undef NO_MINUS_C_MINUS_O
++
++/* Define to the address where bug reports for this package should be sent. */
++#undef PACKAGE_BUGREPORT
++
++/* Define to the full name of this package. */
++#undef PACKAGE_NAME
++
++/* Define to the full name and version of this package. */
++#undef PACKAGE_STRING
++
++/* Define to the one symbol short name of this package. */
++#undef PACKAGE_TARNAME
++
++/* Define to the home page for this package. */
++#undef PACKAGE_URL
++
++/* Define to the version of this package. */
++#undef PACKAGE_VERSION
++
++/* The size of `int', as computed by sizeof. */
++#undef SIZEOF_INT
++
++/* 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 `size_t', as computed by sizeof. */
++#undef SIZEOF_SIZE_T
++
++/* Define if you know the direction of stack growth for your system; otherwise
++   it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows
++   toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses
++   STACK_DIRECTION = 0 => direction of growth unknown */
++#undef STACK_DIRECTION
++
++/* Define to 1 if you have the ANSI C header files. */
++#undef STDC_HEADERS
++
++/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
++#undef TIME_WITH_SYS_TIME
++
++/* Define to an unsigned 64-bit type available in the compiler. */
++#undef UNSIGNED_64BIT_TYPE
++
++/* Enable extensions on AIX 3, Interix.  */
++#ifndef _ALL_SOURCE
++# undef _ALL_SOURCE
++#endif
++/* Enable GNU extensions on systems that have them.  */
++#ifndef _GNU_SOURCE
++# undef _GNU_SOURCE
++#endif
++/* Enable threading extensions on Solaris.  */
++#ifndef _POSIX_PTHREAD_SEMANTICS
++# undef _POSIX_PTHREAD_SEMANTICS
++#endif
++/* Enable extensions on HP NonStop.  */
++#ifndef _TANDEM_SOURCE
++# undef _TANDEM_SOURCE
++#endif
++/* Enable general extensions on Solaris.  */
++#ifndef __EXTENSIONS__
++# undef __EXTENSIONS__
++#endif
++
++
++/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
++   significant byte first (like Motorola and SPARC, unlike Intel). */
++#if defined AC_APPLE_UNIVERSAL_BUILD
++# if defined __BIG_ENDIAN__
++#  define WORDS_BIGENDIAN 1
++# endif
++#else
++# ifndef WORDS_BIGENDIAN
++#  undef WORDS_BIGENDIAN
++# endif
++#endif
++
++/* Number of bits in a file offset, on hosts where this is settable. */
++#undef _FILE_OFFSET_BITS
++
++/* Define for large files, on AIX-style hosts. */
++#undef _LARGE_FILES
++
++/* Define to 1 if on MINIX. */
++#undef _MINIX
++
++/* Define to 2 if the system does not provide POSIX.1 features except with
++   this defined. */
++#undef _POSIX_1_SOURCE
++
++/* Define to 1 if you need to in order for `stat' and other things to work. */
++#undef _POSIX_SOURCE
++
++/* Define to empty if `const' does not conform to ANSI C. */
++#undef const
++
++/* Define to `__inline__' or `__inline' if that's what the C compiler
++   calls it, or to nothing if 'inline' is not supported under any name.  */
++#ifndef __cplusplus
++#undef inline
++#endif
++
++/* Define to the type of a signed integer type wide enough to hold a pointer,
++   if such a type exists, and if the system does not define it. */
++#undef intptr_t
++
++/* Define to `int' if <sys/types.h> does not define. */
++#undef pid_t
++
++/* Define to `int' if <sys/types.h> does not define. */
++#undef ssize_t
++
++/* Define to the type of an unsigned integer type wide enough to hold a
++   pointer, if such a type exists, and if the system does not define it. */
++#undef uintptr_t
++
++/* Define as `fork' if `vfork' does not work. */
++#undef vfork
+Index: b/src/gcc/prefix.c
+===================================================================
+--- a/src/gcc/prefix.c
++++ b/src/gcc/prefix.c
+@@ -70,7 +70,10 @@ License along with GCC; see the file COP
+ #include <windows.h>
+ #endif
+ #include "prefix.h"
++
++#ifndef USED_FOR_TARGET
+ #include "common/common-target.h"
++#endif
+ 
+ static const char *std_prefix = PREFIX;
+ 
+@@ -284,7 +287,11 @@ update_path (const char *path, const cha
+ 	  && (p != result && IS_DIR_SEPARATOR (p[-1])))
+ 	{
+ 	  *p = 0;
++#ifndef USED_FOR_TARGET
+ 	  if (!targetm_common.always_strip_dotdot
++#else
++	  if (true
++#endif
+ 	      && access (result, X_OK) == 0)
+ 	    {
+ 	      *p = '.';

Reply to: