test failure when building gnutls-2.12.14 for ARM

David A. Marlin dmarlin at redhat.com
Fri Feb 3 14:56:11 CET 2012


When building gnutls-2.12.14 on Fedora rawhide for ARM.

Using versions:
  gcc-4.7.0
  glibc-2.15
  guile-1.8.8

three tests fail during 'make check':
-------------------------------------
Making check in tests
make[2]: Entering directory 
`/builddir/build/BUILD/gnutls-2.12.14/guile/tests'
make  check-TESTS
make[3]: Entering directory 
`/builddir/build/BUILD/gnutls-2.12.14/guile/tests'
PASS: anonymous-auth.scm
/bin/sh: line 5: 11417 Segmentation fault      GUILE_AUTO_COMPILE=0 
../../guile/pre-inst-guile -L . ${dir}$tst
FAIL: session-record-port.scm
PASS: pkcs-import-export.scm
PASS: errors.scm
PASS: x509-certificates.scm
/bin/sh: line 5: 11463 Segmentation fault      GUILE_AUTO_COMPILE=0 
../../guile/pre-inst-guile -L . ${dir}$tst
FAIL: x509-auth.scm
PASS: openpgp-keys.scm
PASS: openpgp-keyring.scm
/bin/sh: line 5: 11499 Segmentation fault      GUILE_AUTO_COMPILE=0 
../../guile/pre-inst-guile -L . ${dir}$tst
FAIL: openpgp-auth.scm
===================================
3 of 9 tests failed
Please report to bug-gnutls at gnu.org
===================================
-------------------------------------


This appears to be caused by a difference in the size of off_t in the 
following structure:

/usr/include/libguile/ports.h
-------------------------------------

typedef struct
{
  SCM port;
  long int entry;
  int revealed;
  scm_t_bits stream;
  SCM file_name;
  long int line_number;
  int column_number;
  unsigned char *read_buf;
  const unsigned char *read_pos;
  unsigned char *read_end;
  off_t read_buf_size;
  unsigned char *saved_read_buf;
  const unsigned char *saved_read_pos;
  unsigned char *saved_read_end;
  off_t saved_read_buf_size;
  unsigned char *write_buf;
  unsigned char *write_pos;
  unsigned char *write_end;
  off_t write_buf_size;
  unsigned char shortbuf;
  int rw_random;
  scm_t_port_rw_active rw_active;
  unsigned char *putback_buf;
  size_t putback_buf_size;
} scm_t_port;
-------------------------------------

In gnutls off_t is 'long long int', but in guile off_t is 'long int'.
This is because gnutls has:

  #define _FILE_OFFSET_BITS 64

and guile has no such definition.

By building guile with -D_FILE_OFFSET_BITS=64, the gnutls test completed 
successfully.  Conversely, using the original guile build and rebuilding 
gnutls with '--disable-largefile' in the configure command also allows 
the gnutls test completed successfully.

Please let me know the correct solution to this issue, of if you need 
any additional information.


Thank you,

d.marlin





More information about the Gnutls-devel mailing list