Floating point exception in loading CUDA runtime

We have a question regarding CUDA runtime library.

We are trying to link libcudart dynamically with our application. The linking proceeds fine, but the program crashes while loading, with “Floating Point Exception”.

Our application requires that all libraries it links with are built using –Wl,–hash-style=sysv or –Wl,–hash-style=both option. That is because our application is only compatible with the older gcc link hash tables.

We notice cudart only uses the newer hash table:

readelf -S /usr/local/cuda/lib/libcudart.so
There are 26 section headers, starting at offset 0x3d438:
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
[ 0] NULL 0000000000000000 00000000
0000000000000000 0000000000000000 0 0 0
[ 1] .gnu.hash GNU_HASH 0000000000000158 00000158
00000000000002a0 0000000000000000 A 2 0 8
[ 2] .dynsym DYNSYM 00000000000003f8 000003f8
0000000000001098 0000000000000018 A 3 2 8

We think this incompatibility may be the cause for the loader crash. Has anyone seen this error? Could this be due to any other problem?

Is it possible to obtain a cudart built using the option “-Wl,–hash-style=both”?

We are using gcc version 4.1.2 20070626 (Red Hat 4.1.2-14), CUDA release 2.1, V0.2.1221 under Linux kernel 2.6.18-53.1.14.el5