[AArch64] PR target/91833

Message ID 20190921061121.6441-1-richard.henderson@linaro.org
State New
Headers show
Series
  • [AArch64] PR target/91833
Related show

Commit Message

Richard Henderson Sept. 21, 2019, 6:11 a.m.
Tested on aarch64-linux (glibc) and aarch64-elf (installed newlib).

The existing configure claims to be generated by 2.69, but there
are changes wrt the autoconf distributed with Ubuntu 18.  Nothing
that seems untoward though.


r~


	* config/aarch64/lse-init.c: Include auto-target.h.  Disable
	initialization if !HAVE_SYS_AUXV_H.
	* configure.ac (AC_CHECK_HEADERS): Add sys/auxv.h.
	* config.in, configure: Rebuild.
---
 libgcc/config/aarch64/lse-init.c |  4 +++-
 libgcc/config.in                 |  8 ++++++++
 libgcc/configure                 | 26 +++++++++++++++++++-------
 libgcc/configure.ac              |  2 +-
 4 files changed, 31 insertions(+), 9 deletions(-)
 mode change 100644 => 100755 libgcc/configure

-- 
2.17.1

Comments

Kyrill Tkachov Sept. 23, 2019, 8:47 a.m. | #1
On 9/21/19 7:11 AM, Richard Henderson wrote:
> Tested on aarch64-linux (glibc) and aarch64-elf (installed newlib).

>

> The existing configure claims to be generated by 2.69, but there

> are changes wrt the autoconf distributed with Ubuntu 18. Nothing

> that seems untoward though.

>

>

The aarch64 parts LGTM FWIW.

Don't know what's the process for the configure parts though.

Are we strict about which version they're generated with?

Kyrill



> r~

>

>

>         * config/aarch64/lse-init.c: Include auto-target.h. Disable

>         initialization if !HAVE_SYS_AUXV_H.

>         * configure.ac (AC_CHECK_HEADERS): Add sys/auxv.h.

>         * config.in, configure: Rebuild.

> ---

>  libgcc/config/aarch64/lse-init.c |  4 +++-

>  libgcc/config.in                 |  8 ++++++++

>  libgcc/configure                 | 26 +++++++++++++++++++-------

>  libgcc/configure.ac              |  2 +-

>  4 files changed, 31 insertions(+), 9 deletions(-)

>  mode change 100644 => 100755 libgcc/configure

>

> diff --git a/libgcc/config/aarch64/lse-init.c 

> b/libgcc/config/aarch64/lse-init.c

> index 33d29147479..1a8f4c55213 100644

> --- a/libgcc/config/aarch64/lse-init.c

> +++ b/libgcc/config/aarch64/lse-init.c

> @@ -23,12 +23,14 @@ a copy of the GCC Runtime Library Exception along 

> with this program;

>  see the files COPYING3 and COPYING.RUNTIME respectively. If not, see

>  <http://www.gnu.org/licenses/>. */

>

> +#include "auto-target.h"

> +

>  /* Define the symbol gating the LSE implementations.  */

>  _Bool __aarch64_have_lse_atomics

>    __attribute__((visibility("hidden"), nocommon));

>

>  /* Disable initialization of __aarch64_have_lse_atomics during 

> bootstrap.  */

> -#ifndef inhibit_libc

> +#if !defined(inhibit_libc) && defined(HAVE_SYS_AUXV_H)

>  # include <sys/auxv.h>

>

>  /* Disable initialization if the system headers are too old.  */

> diff --git a/libgcc/config.in b/libgcc/config.in

> index d634af9d949..59a3d8daf52 100644

> --- a/libgcc/config.in

> +++ b/libgcc/config.in

> @@ -43,6 +43,9 @@

>  /* Define to 1 if you have the <string.h> header file. */

>  #undef HAVE_STRING_H

>

> +/* Define to 1 if you have the <sys/auxv.h> header file. */

> +#undef HAVE_SYS_AUXV_H

> +

>  /* Define to 1 if you have the <sys/stat.h> header file. */

>  #undef HAVE_SYS_STAT_H

>

> @@ -82,6 +85,11 @@

>  /* Define to 1 if the target use emutls for thread-local storage. */

>  #undef USE_EMUTLS

>

> +/* Enable large inode numbers on Mac OS X 10.5.  */

> +#ifndef _DARWIN_USE_64_BIT_INODE

> +# define _DARWIN_USE_64_BIT_INODE 1

> +#endif

> +

>  /* Number of bits in a file offset, on hosts where this is settable. */

>  #undef _FILE_OFFSET_BITS

>

> diff --git a/libgcc/configure b/libgcc/configure

> old mode 100644

> new mode 100755

> index 29f647319b4..28c7394b3f9

> --- a/libgcc/configure

> +++ b/libgcc/configure

> @@ -675,6 +675,7 @@ infodir

>  docdir

>  oldincludedir

>  includedir

> +runstatedir

>  localstatedir

>  sharedstatedir

>  sysconfdir

> @@ -765,6 +766,7 @@ datadir='${datarootdir}'

>  sysconfdir='${prefix}/etc'

>  sharedstatedir='${prefix}/com'

>  localstatedir='${prefix}/var'

> +runstatedir='${localstatedir}/run'

>  includedir='${prefix}/include'

>  oldincludedir='/usr/include'

>  docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'

> @@ -1017,6 +1019,15 @@ do

>    | -silent | --silent | --silen | --sile | --sil)

>      silent=yes ;;

>

> +  -runstatedir | --runstatedir | --runstatedi | --runstated \

> +  | --runstate | --runstat | --runsta | --runst | --runs \

> +  | --run | --ru | --r)

> +    ac_prev=runstatedir ;;

> +  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \

> +  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \

> +  | --run=* | --ru=* | --r=*)

> +    runstatedir=$ac_optarg ;;

> +

>    -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)

>      ac_prev=sbindir ;;

>    -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \

> @@ -1154,7 +1165,7 @@ fi

>  for ac_var in   exec_prefix prefix bindir sbindir libexecdir 

> datarootdir \

>                  datadir sysconfdir sharedstatedir localstatedir 

> includedir \

>                  oldincludedir docdir infodir htmldir dvidir pdfdir 

> psdir \

> -               libdir localedir mandir

> +               libdir localedir mandir runstatedir

>  do

>    eval ac_val=\$$ac_var

>    # Remove trailing slashes.

> @@ -1307,6 +1318,7 @@ Fine tuning of the installation directories:

>    --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]

>    --sharedstatedir=DIR    modifiable architecture-independent data 

> [PREFIX/com]

>    --localstatedir=DIR     modifiable single-machine data [PREFIX/var]

> +  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]

>    --libdir=DIR            object code libraries [EPREFIX/lib]

>    --includedir=DIR        C header files [PREFIX/include]

>    --oldincludedir=DIR     C header files for non-gcc [/usr/include]

> @@ -4173,7 +4185,7 @@ else

>      We can't simply define LARGE_OFF_T to be 9223372036854775807,

>      since some C++ compilers masquerading as C compilers

>      incorrectly reject 9223372036854775807.  */

> -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))

> +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 

> 31) << 31))

>    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721

>                         && LARGE_OFF_T % 2147483647 == 1)

>                        ? 1 : -1];

> @@ -4219,7 +4231,7 @@ else

>      We can't simply define LARGE_OFF_T to be 9223372036854775807,

>      since some C++ compilers masquerading as C compilers

>      incorrectly reject 9223372036854775807.  */

> -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))

> +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 

> 31) << 31))

>    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721

>                         && LARGE_OFF_T % 2147483647 == 1)

>                        ? 1 : -1];

> @@ -4243,7 +4255,7 @@ rm -f core conftest.err conftest.$ac_objext 

> conftest.$ac_ext

>      We can't simply define LARGE_OFF_T to be 9223372036854775807,

>      since some C++ compilers masquerading as C compilers

>      incorrectly reject 9223372036854775807.  */

> -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))

> +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 

> 31) << 31))

>    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721

>                         && LARGE_OFF_T % 2147483647 == 1)

>                        ? 1 : -1];

> @@ -4288,7 +4300,7 @@ else

>      We can't simply define LARGE_OFF_T to be 9223372036854775807,

>      since some C++ compilers masquerading as C compilers

>      incorrectly reject 9223372036854775807.  */

> -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))

> +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 

> 31) << 31))

>    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721

>                         && LARGE_OFF_T % 2147483647 == 1)

>                        ? 1 : -1];

> @@ -4312,7 +4324,7 @@ rm -f core conftest.err conftest.$ac_objext 

> conftest.$ac_ext

>      We can't simply define LARGE_OFF_T to be 9223372036854775807,

>      since some C++ compilers masquerading as C compilers

>      incorrectly reject 9223372036854775807.  */

> -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))

> +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 

> 31) << 31))

>    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721

>                         && LARGE_OFF_T % 2147483647 == 1)

>                        ? 1 : -1];

> @@ -4424,7 +4436,7 @@ as_fn_arith $ac_cv_sizeof_long_double \* 8 && 

> long_double_type_size=$as_val

>

>  for ac_header in inttypes.h stdint.h stdlib.h ftw.h \

>          unistd.h sys/stat.h sys/types.h \

> -       string.h strings.h memory.h

> +       string.h strings.h memory.h sys/auxv.h

>  do :

>    as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`

>  ac_fn_c_check_header_preproc "$LINENO" "$ac_header" "$as_ac_Header"

> diff --git a/libgcc/configure.ac b/libgcc/configure.ac

> index b1b90d294ff..f63c5e736e5 100644

> --- a/libgcc/configure.ac

> +++ b/libgcc/configure.ac

> @@ -207,7 +207,7 @@ AC_SUBST(long_double_type_size)

>

>  AC_CHECK_HEADERS(inttypes.h stdint.h stdlib.h ftw.h \

>          unistd.h sys/stat.h sys/types.h \

> -       string.h strings.h memory.h)

> +       string.h strings.h memory.h sys/auxv.h)

>  AC_HEADER_STDC

>

>  # Check for decimal float support.

> -- 

> 2.17.1

>
Joseph Myers Sept. 25, 2019, 10:54 p.m. | #2
On Fri, 20 Sep 2019, Richard Henderson wrote:

> Tested on aarch64-linux (glibc) and aarch64-elf (installed newlib).

> 

> The existing configure claims to be generated by 2.69, but there

> are changes wrt the autoconf distributed with Ubuntu 18.  Nothing

> that seems untoward though.


They're meant to be generated with *unmodified* 2.69 (they were when I did 
the move to 2.69).  Not with a distribution version that may have some 
patches, such as the runstatedir patch.

-- 
Joseph S. Myers
joseph@codesourcery.com
Richard Henderson Sept. 25, 2019, 11:03 p.m. | #3
On 9/25/19 3:54 PM, Joseph Myers wrote:
> On Fri, 20 Sep 2019, Richard Henderson wrote:

> 

>> Tested on aarch64-linux (glibc) and aarch64-elf (installed newlib).

>>

>> The existing configure claims to be generated by 2.69, but there

>> are changes wrt the autoconf distributed with Ubuntu 18.  Nothing

>> that seems untoward though.

> 

> They're meant to be generated with *unmodified* 2.69 (they were when I did 

> the move to 2.69).  Not with a distribution version that may have some 

> patches, such as the runstatedir patch.


Oops.  Well, I'll re-re-generate with stock 2.69.

That still retains the _DARWIN_USE_64_BIT_INODE, which
wasn't there before.  I presume that's an artifact of
a previous rebuild.


r~
Richard Henderson Sept. 25, 2019, 11:09 p.m. | #4
On 9/25/19 3:54 PM, Joseph Myers wrote:
> On Fri, 20 Sep 2019, Richard Henderson wrote:

> 

>> Tested on aarch64-linux (glibc) and aarch64-elf (installed newlib).

>>

>> The existing configure claims to be generated by 2.69, but there

>> are changes wrt the autoconf distributed with Ubuntu 18.  Nothing

>> that seems untoward though.

> 

> They're meant to be generated with *unmodified* 2.69 (they were when I did 

> the move to 2.69).  Not with a distribution version that may have some 

> patches, such as the runstatedir patch.


For the record, the first attachment here is the adjustment patch that I
committed over my incorrect rebuild.  The second attachment is the composite
autoconf diff against r276133.

Sorry for the noise.


r~


        * config.in, configure: Re-rebuild with stock autoconf 2.69,
        not the ubuntu modified 2.69.
diff --git a/libgcc/configure b/libgcc/configure
index 28c7394b3f9..117e9c97e57 100755
--- a/libgcc/configure
+++ b/libgcc/configure
@@ -675,7 +675,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -766,7 +765,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1019,15 +1017,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1165,7 +1154,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir runstatedir
+		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1318,7 +1307,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -4185,7 +4173,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -4231,7 +4219,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -4255,7 +4243,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -4300,7 +4288,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -4324,7 +4312,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
diff --git a/libgcc/config.in b/libgcc/config.in
index d634af9d949..59a3d8daf52 100644
--- a/libgcc/config.in
+++ b/libgcc/config.in
@@ -43,6 +43,9 @@
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
+/* Define to 1 if you have the <sys/auxv.h> header file. */
+#undef HAVE_SYS_AUXV_H
+
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
 
@@ -82,6 +85,11 @@
 /* Define to 1 if the target use emutls for thread-local storage. */
 #undef USE_EMUTLS
 
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 
diff --git a/libgcc/configure b/libgcc/configure
old mode 100644
new mode 100755
index 29f647319b4..117e9c97e57
--- a/libgcc/configure
+++ b/libgcc/configure
@@ -4424,7 +4424,7 @@ as_fn_arith $ac_cv_sizeof_long_double \* 8 && long_double_type_size=$as_val
 
 for ac_header in inttypes.h stdint.h stdlib.h ftw.h \
 	unistd.h sys/stat.h sys/types.h \
-	string.h strings.h memory.h
+	string.h strings.h memory.h sys/auxv.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_preproc "$LINENO" "$ac_header" "$as_ac_Header"

Patch

diff --git a/libgcc/config/aarch64/lse-init.c b/libgcc/config/aarch64/lse-init.c
index 33d29147479..1a8f4c55213 100644
--- a/libgcc/config/aarch64/lse-init.c
+++ b/libgcc/config/aarch64/lse-init.c
@@ -23,12 +23,14 @@  a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
+#include "auto-target.h"
+
 /* Define the symbol gating the LSE implementations.  */
 _Bool __aarch64_have_lse_atomics
   __attribute__((visibility("hidden"), nocommon));
 
 /* Disable initialization of __aarch64_have_lse_atomics during bootstrap.  */
-#ifndef inhibit_libc
+#if !defined(inhibit_libc) && defined(HAVE_SYS_AUXV_H)
 # include <sys/auxv.h>
 
 /* Disable initialization if the system headers are too old.  */
diff --git a/libgcc/config.in b/libgcc/config.in
index d634af9d949..59a3d8daf52 100644
--- a/libgcc/config.in
+++ b/libgcc/config.in
@@ -43,6 +43,9 @@ 
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
+/* Define to 1 if you have the <sys/auxv.h> header file. */
+#undef HAVE_SYS_AUXV_H
+
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
 
@@ -82,6 +85,11 @@ 
 /* Define to 1 if the target use emutls for thread-local storage. */
 #undef USE_EMUTLS
 
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 
diff --git a/libgcc/configure b/libgcc/configure
old mode 100644
new mode 100755
index 29f647319b4..28c7394b3f9
--- a/libgcc/configure
+++ b/libgcc/configure
@@ -675,6 +675,7 @@  infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -765,6 +766,7 @@  datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1017,6 +1019,15 @@  do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1154,7 +1165,7 @@  fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1307,6 +1318,7 @@  Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -4173,7 +4185,7 @@  else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -4219,7 +4231,7 @@  else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -4243,7 +4255,7 @@  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -4288,7 +4300,7 @@  else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -4312,7 +4324,7 @@  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -4424,7 +4436,7 @@  as_fn_arith $ac_cv_sizeof_long_double \* 8 && long_double_type_size=$as_val
 
 for ac_header in inttypes.h stdint.h stdlib.h ftw.h \
 	unistd.h sys/stat.h sys/types.h \
-	string.h strings.h memory.h
+	string.h strings.h memory.h sys/auxv.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_preproc "$LINENO" "$ac_header" "$as_ac_Header"
diff --git a/libgcc/configure.ac b/libgcc/configure.ac
index b1b90d294ff..f63c5e736e5 100644
--- a/libgcc/configure.ac
+++ b/libgcc/configure.ac
@@ -207,7 +207,7 @@  AC_SUBST(long_double_type_size)
 
 AC_CHECK_HEADERS(inttypes.h stdint.h stdlib.h ftw.h \
 	unistd.h sys/stat.h sys/types.h \
-	string.h strings.h memory.h)
+	string.h strings.h memory.h sys/auxv.h)
 AC_HEADER_STDC
 
 # Check for decimal float support.