[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#225449: wxwindows2.4: problems with ia64

On 2004-01-02, Matthew Wilcox wrote:
> I would say that audacity should be compiled with LFS support too.
> Suppose on x86 it attempts to deal with a file sized more than 2GB?

The binaries are correct on x86 because the sources are using the opaque
type off_t.

I think now I know what the problem is:

On x86 is
	int == long < long long
but on ia64 is
	int < long == long long .

Unfortunately for C++ is long != long long even on ia64 because of
static type checking. The compiler that compiled the binaries in the
Debian archive translated off_t into long long but the compiler on my
ia64 machine compiles off_t into long. Linking is no longer possible.

	$ cat x.cc
	#include <sys/types.h>
	void x(off_t) {}
	void y(long) {}
	void z(long long) {}
	$ nm x.o | c++filt
	0000000000000000 T x(long)
	0000000000000020 T y(long)
	0000000000000040 T z(long long)
	$ nm x.o
	0000000000000000 T _Z1xl
	0000000000000020 T _Z1yl
	0000000000000040 T _Z1zx

All three functions have an int argument with 64 bit size but only the
first 2 functions have the same C++ linkage.

Maybe it is not the compiler but the C library that causes that error.


Reply to: