severity 720440 serious stop On Thu, Aug 22, 2013 at 8:39 AM, Thomas Orgis <thomas-fo...@orgis.org> wrote:
> The long-term fix would make the mpg123 build aware of that and trigger > generation of _64 functions as direct api calls, without suffix as > alias to those and _32 wrapper functions that map long int offsets to > the 64 bit ones. I cannot promise a time scale to work on that myself, > due to RL pressure. One needs to modify configure.ac to check the size > of off_t in case of empty _FILE_OFFSET_BITS setting from > AC_SYS_LARGEFILE and trigger generation of _64 functions (or, rather > _(8*sizeof(off_t) functions) if sizeof(off_t) != sizeof(long). This > should only cover modification of > > configure.ac > src/libmpg123/lfs_wrap.c > src/libmpg123/lfs_alias.c > src/libmpg123/mpg123.h.in I've started with this patch to configure.ac diff --git a/configure.ac b/configure.ac index d00fbce..3fd54ae 100644 --- a/configure.ac +++ b/configure.ac @@ -934,12 +934,29 @@ AC_CHECK_SIZEOF(off_t,4) AC_CHECK_SIZEOF(int32_t) AC_CHECK_SIZEOF(long,4) +dnl unless we are on e.g., kfreebsd-i386, then enable it anyways, here off_t is wide +dnl cf. http://lists.gnu.org/archive/html/autoconf/2003-01/msg00010.html +AC_MSG_CHECKING(whether system is 32bit but has 64bit off_t) +ac_cv_sys_wide_off_t="no" +if test ".$ac_cv_sizeof_int32_t$ac_cv_sys_file_offset_bits$ac_cv_sizeof_off_t" = ".4no8"; then + # Add dual-mode wrapper code.anyways + LFS_LOBJ=lfs_wrap.lo + ac_cv_sys_wide_off_t="yes" + AC_DEFINE(LARGEFILE_WIDE64_OFF_T, 1, + [whether the system is 32bit, but has 64bit off_t]) +fi +AC_MSG_RESULT([$ac_cv_sys_wide_off_t]) + # The alias functions want to know the native off_t bits. # "Native" also means large file offsets, if enabled, it's what is native to the mpg123 library. if test "x$ac_cv_sizeof_long" = "x"; then AC_MSG_ERROR([Cannot determine sizeof(long)?]) else - LFS_ALIAS_BITS=`expr "$ac_cv_sizeof_long" "*" "8"` + if test ".$ac_cv_sys_wide_off_t" = ".no"; then + LFS_ALIAS_BITS=`expr "$ac_cv_sizeof_long" "*" "8"` + else + LFS_ALIAS_BITS=`expr "$ac_cv_sizeof_off_t" "*" "8"` + fi AC_DEFINE_UNQUOTED([LFS_ALIAS_BITS], $LFS_ALIAS_BITS, [Define this to the size of long type in bits, used for LFS small/native alias functions.]) fi does this go into the right direction? (the compilation itself fails with errors about multiple definition of some symbols, i need more time to sort out the twisted ifdefs in lfs_alias.c) > Yeah, I'm convinced now: The mpg123 build is broken right now on this > platform, as long as any user decides to define _FILE_OFFSET_BITS. The > result will either be unresolved symbols (=64) or undefined behaviour > (=32 ... handing 32 bit values into 64 bit arguments). I agree. This makes this bug release-critical then. -- regards, Reinhard -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org