Getting LD_PRELOAD_32 working

Support for the other architectures (X86_64, s390(x) and PowerPC)
daedae
Posts: 2
Joined: 2008/02/08 19:19:53
Contact:

Getting LD_PRELOAD_32 working

Postby daedae » 2008/02/08 19:30:16

I have software (DynamoRIO) that works on (most) 32 bit flavors of Linux by setting the LD_PRELOAD environment variable. Obviously, LD_PRELOAD on a 64 bit OS doesn't play nicely with 32 bit shared objects. I've compiled the applications I want to run with it using -m32, so I know they're fine. I read somewhere you can use LD_PRELOAD_32 to a) only use the libraries on 32-bit executables, and b) inform the loader that it really is okay to use them. It doesn't seem to be working right, though--setting LD_PRELOAD_32 instead of LD_PRELOAD does prevent the errors that it can't open the shared object files, but the code in the shared objects files doesn't seem to be running.

The question: is there some specific package, or set of packages, I need to install to make LD_PRELOAD_32 work correctly?

Assuming it's a glibc thing, I have installed:
glibc.x86_64 2.3.4-2.39
glibc.i686 2.3.4-2.39
glibc-common.x86_64 2.3.4-2.39
glibc-devel.x86_64 2.3.4-2.39
glibc-devel.i386 2.3.4-2.39
glibc-headers.x86_64 2.3.4-2.39
glibc-kernheaders.x86_64 2.4-9.1.100.EL

Or is it a kernel configuration issue? This is on CentOS 4.5, and I've tried it both on the most recent official kernels from up2date and a modified kernel based on 2.6.23.14 from kernel.org.