diff mbox

LFS support for libbacktrace

Message ID alpine.LSU.2.20.1706141239230.22867@zhemvz.fhfr.qr
State New
Headers show

Commit Message

Richard Biener June 14, 2017, 10:40 a.m. UTC
This fixes the [f]open use in libgfortran.  Doesn't fix the ones
in libsanitizer because those appearantly use a copy because they
need to rename stuff...

Bootstrapped and tested on x86_64-unknown-linux-gnu, ok for trunk
and branches?

Thanks,
Richard.

2017-06-14  Richard Biener  <rguenther@suse.de>

	* configure.ac: Add AC_SYS_LARGEFILE.
	* config.h.in: Regenerate.
	* configure: Likewise.

Comments

Richard Biener June 20, 2017, 11:15 a.m. UTC | #1
On Wed, 14 Jun 2017, Richard Biener wrote:

> 
> This fixes the [f]open use in libgfortran.  Doesn't fix the ones
> in libsanitizer because those appearantly use a copy because they
> need to rename stuff...
> 
> Bootstrapped and tested on x86_64-unknown-linux-gnu, ok for trunk
> and branches?

Ping.

Richard.

> Thanks,
> Richard.
> 
> 2017-06-14  Richard Biener  <rguenther@suse.de>
> 
> 	* configure.ac: Add AC_SYS_LARGEFILE.
> 	* config.h.in: Regenerate.
> 	* configure: Likewise.
> 
> Index: config.h.in
> ===================================================================
> --- config.h.in	(revision 249158)
> +++ config.h.in	(working copy)
> @@ -123,6 +123,12 @@
>  #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
>  
> Index: configure
> ===================================================================
> --- configure	(revision 249158)
> +++ configure	(working copy)
> @@ -734,6 +734,7 @@ with_pic
>  enable_fast_install
>  with_gnu_ld
>  enable_libtool_lock
> +enable_largefile
>  with_system_libunwind
>  enable_host_shared
>  '
> @@ -1374,6 +1375,7 @@ Optional Features:
>    --enable-fast-install[=PKGS]
>                            optimize for fast installation [default=yes]
>    --disable-libtool-lock  avoid locking (might break parallel builds)
> +  --disable-largefile     omit support for large files
>    --enable-host-shared    build host code as shared libraries
>  
>  Optional Packages:
> @@ -11134,7 +11136,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 11137 "configure"
> +#line 11139 "configure"
>  #include "confdefs.h"
>  
>  #if HAVE_DLFCN_H
> @@ -11240,7 +11242,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 11243 "configure"
> +#line 11245 "configure"
>  #include "confdefs.h"
>  
>  #if HAVE_DLFCN_H
> @@ -11479,6 +11481,205 @@ CC="$lt_save_CC"
>  
>  
>  
> +# Check whether --enable-largefile was given.
> +if test "${enable_largefile+set}" = set; then :
> +  enableval=$enable_largefile;
> +fi
> +
> +if test "$enable_largefile" != no; then
> +
> +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
> +$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
> +if test "${ac_cv_sys_largefile_CC+set}" = set; then :
> +  $as_echo_n "(cached) " >&6
> +else
> +  ac_cv_sys_largefile_CC=no
> +     if test "$GCC" != yes; then
> +       ac_save_CC=$CC
> +       while :; do
> +	 # IRIX 6.2 and later do not support large files by default,
> +	 # so use the C compiler's -n32 option if that helps.
> +	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include <sys/types.h>
> + /* Check that off_t can represent 2**63 - 1 correctly.
> +    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))
> +  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
> +		       && LARGE_OFF_T % 2147483647 == 1)
> +		      ? 1 : -1];
> +int
> +main ()
> +{
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +	 if ac_fn_c_try_compile "$LINENO"; then :
> +  break
> +fi
> +rm -f core conftest.err conftest.$ac_objext
> +	 CC="$CC -n32"
> +	 if ac_fn_c_try_compile "$LINENO"; then :
> +  ac_cv_sys_largefile_CC=' -n32'; break
> +fi
> +rm -f core conftest.err conftest.$ac_objext
> +	 break
> +       done
> +       CC=$ac_save_CC
> +       rm -f conftest.$ac_ext
> +    fi
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
> +$as_echo "$ac_cv_sys_largefile_CC" >&6; }
> +  if test "$ac_cv_sys_largefile_CC" != no; then
> +    CC=$CC$ac_cv_sys_largefile_CC
> +  fi
> +
> +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
> +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
> +if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
> +  $as_echo_n "(cached) " >&6
> +else
> +  while :; do
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include <sys/types.h>
> + /* Check that off_t can represent 2**63 - 1 correctly.
> +    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))
> +  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
> +		       && LARGE_OFF_T % 2147483647 == 1)
> +		      ? 1 : -1];
> +int
> +main ()
> +{
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  ac_cv_sys_file_offset_bits=no; break
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#define _FILE_OFFSET_BITS 64
> +#include <sys/types.h>
> + /* Check that off_t can represent 2**63 - 1 correctly.
> +    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))
> +  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
> +		       && LARGE_OFF_T % 2147483647 == 1)
> +		      ? 1 : -1];
> +int
> +main ()
> +{
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  ac_cv_sys_file_offset_bits=64; break
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +  ac_cv_sys_file_offset_bits=unknown
> +  break
> +done
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
> +$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
> +case $ac_cv_sys_file_offset_bits in #(
> +  no | unknown) ;;
> +  *)
> +cat >>confdefs.h <<_ACEOF
> +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
> +_ACEOF
> +;;
> +esac
> +rm -rf conftest*
> +  if test $ac_cv_sys_file_offset_bits = unknown; then
> +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
> +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
> +if test "${ac_cv_sys_large_files+set}" = set; then :
> +  $as_echo_n "(cached) " >&6
> +else
> +  while :; do
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include <sys/types.h>
> + /* Check that off_t can represent 2**63 - 1 correctly.
> +    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))
> +  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
> +		       && LARGE_OFF_T % 2147483647 == 1)
> +		      ? 1 : -1];
> +int
> +main ()
> +{
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  ac_cv_sys_large_files=no; break
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#define _LARGE_FILES 1
> +#include <sys/types.h>
> + /* Check that off_t can represent 2**63 - 1 correctly.
> +    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))
> +  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
> +		       && LARGE_OFF_T % 2147483647 == 1)
> +		      ? 1 : -1];
> +int
> +main ()
> +{
> +
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  ac_cv_sys_large_files=1; break
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +  ac_cv_sys_large_files=unknown
> +  break
> +done
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
> +$as_echo "$ac_cv_sys_large_files" >&6; }
> +case $ac_cv_sys_large_files in #(
> +  no | unknown) ;;
> +  *)
> +cat >>confdefs.h <<_ACEOF
> +#define _LARGE_FILES $ac_cv_sys_large_files
> +_ACEOF
> +;;
> +esac
> +rm -rf conftest*
> +  fi
> +fi
> +
> +
>  backtrace_supported=yes
>  
>  if test -n "${with_target_subdir}"; then
> Index: configure.ac
> ===================================================================
> --- configure.ac	(revision 249158)
> +++ configure.ac	(working copy)
> @@ -82,6 +82,8 @@ esac
>  LT_INIT
>  AM_PROG_LIBTOOL
>  
> +AC_SYS_LARGEFILE
> +
>  backtrace_supported=yes
>  
>  if test -n "${with_target_subdir}"; then
>
Li, Pan2 via Gcc-patches June 20, 2017, 11:03 p.m. UTC | #2
On Wed, Jun 14, 2017 at 3:40 AM, Richard Biener <rguenther@suse.de> wrote:
>
> This fixes the [f]open use in libgfortran.  Doesn't fix the ones
> in libsanitizer because those appearantly use a copy because they
> need to rename stuff...
>
> Bootstrapped and tested on x86_64-unknown-linux-gnu, ok for trunk
> and branches?
>
> Thanks,
> Richard.
>
> 2017-06-14  Richard Biener  <rguenther@suse.de>
>
>         * configure.ac: Add AC_SYS_LARGEFILE.
>         * config.h.in: Regenerate.
>         * configure: Likewise.

This is OK everywhere.

Thanks.

Ian
Jeff Law June 27, 2017, 4:46 p.m. UTC | #3
On 06/20/2017 05:15 AM, Richard Biener wrote:
> On Wed, 14 Jun 2017, Richard Biener wrote:
> 
>>
>> This fixes the [f]open use in libgfortran.  Doesn't fix the ones
>> in libsanitizer because those appearantly use a copy because they
>> need to rename stuff...
>>
>> Bootstrapped and tested on x86_64-unknown-linux-gnu, ok for trunk
>> and branches?
> 
> Ping.
> 
> Richard.
> 
>> Thanks,
>> Richard.
>>
>> 2017-06-14  Richard Biener  <rguenther@suse.de>
>>
>> 	* configure.ac: Add AC_SYS_LARGEFILE.
>> 	* config.h.in: Regenerate.
>> 	* configure: Likewise.
OK.
jeff
diff mbox

Patch

Index: config.h.in
===================================================================
--- config.h.in	(revision 249158)
+++ config.h.in	(working copy)
@@ -123,6 +123,12 @@ 
 #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
 
Index: configure
===================================================================
--- configure	(revision 249158)
+++ configure	(working copy)
@@ -734,6 +734,7 @@  with_pic
 enable_fast_install
 with_gnu_ld
 enable_libtool_lock
+enable_largefile
 with_system_libunwind
 enable_host_shared
 '
@@ -1374,6 +1375,7 @@  Optional Features:
   --enable-fast-install[=PKGS]
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-largefile     omit support for large files
   --enable-host-shared    build host code as shared libraries
 
 Optional Packages:
@@ -11134,7 +11136,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11137 "configure"
+#line 11139 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11240,7 +11242,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11243 "configure"
+#line 11245 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11479,6 +11481,205 @@  CC="$lt_save_CC"
 
 
 
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+  enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+	 # IRIX 6.2 and later do not support large files by default,
+	 # so use the C compiler's -n32 option if that helps.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    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))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+	 if ac_fn_c_try_compile "$LINENO"; then :
+  break
+fi
+rm -f core conftest.err conftest.$ac_objext
+	 CC="$CC -n32"
+	 if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+	 break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    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))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    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))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_file_offset_bits=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  if test $ac_cv_sys_file_offset_bits = unknown; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test "${ac_cv_sys_large_files+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    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))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    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))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_large_files=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  fi
+fi
+
+
 backtrace_supported=yes
 
 if test -n "${with_target_subdir}"; then
Index: configure.ac
===================================================================
--- configure.ac	(revision 249158)
+++ configure.ac	(working copy)
@@ -82,6 +82,8 @@  esac
 LT_INIT
 AM_PROG_LIBTOOL
 
+AC_SYS_LARGEFILE
+
 backtrace_supported=yes
 
 if test -n "${with_target_subdir}"; then