Lena Brüder | 18 May 15:12 2012
Picon

libsndfile with 32bit qnx: "Ultimate sanity check" fails


Hello Erik de Castro Lopo/libsndfile-developers,
first: thank you for that good library (libsndfile). It is charmingly  
easy to use it to open and read audio files with it.

Back to the hard part:
I am a student from Bochum/Germany and at the time writing my masters  
thesis in computer science, where I am using libsndfile to read wav  
files. Since the software I am writing needs to run on QNX  
(6.5)/ARMv7, I cross-compiled your library, which worked fine without  
compilation errors. But when I try to open a file with sf_open, I get  
an assertion error:

In function sf_open -- sndfile.c:312 sizeof (sf_count_t) == 8 --  
assertion failed

In your source, you state that this is the "Ultimate sanity check",  
but obviously this only works if sf_count_t is 64bits wide. In the  
configure-generated sndfile.h, sf_count_t is defined as off_t (line  
319), which is only 32bits wide in my case here. During configure, I  
get a warning:

checking size of wchar_t... 4
checking size of short... 2
checking size of int... 4
checking size of long... 4
checking size of float... 4
checking size of double... 8
checking size of void*... 4
checking size of size_t... 4
checking size of int64_t... 8
checking size of long long... 8
checking size of off_t... 4
checking size of loff_t... 0
checking size of off64_t... 8
checking for arm-unknown-nto-qnx6.5.0eabi-getconf... no
checking for getconf... getconf
checking for CFLAGS value to request large file support...
checking for LDFLAGS value to request large file support...
checking for LIBS value to request large file support...
checking for _FILE_OFFSET_BITS... no
checking for _LARGEFILE_SOURCE... no
checking for _LARGE_FILES... no
checking size of off_t... 4
configure: WARNING: This machine does not seem to support 64 bit file offsets.

In fact, I do not need large file support. Is it possible to disable  
that? I tried faking the lib with just uncommenting that assertion,  
but as expected, that did not work properly (that leaded to the  
library thinking a file with 2 channels has 65538, bit 17 set where it  
should not be set).

With linux, everything is fine.

If you think this might be a bug in your library, I will be happy to  
supply you with more information. If not, I would be happy to have any  
information or idea how I could go on from now, or at least that this  
probably is no bug and that I should go on searching for the problem  
on my side here.

Host: x86/amd64 CPU, 2GiB RAM, Sabayon Linux (->Gentoo fork with binaries)
compiled libsndfile 1.0.25 from source, downloaded from your website  
with QNX qcc cross-compiler, which in fact is gcc 4.4.2 for armv7. It  
is the compiler included in the blackberry playbook ndk 2.0.1.

One thing aside from this: I was not able to test an older version of  
your library, as there are some permission problems on your webserver.  
I was not able to download any version except the latest one - maybe  
you didn't notice that up to now...

Kind regards,
Lena Brüder


Gmane