Re: Trouble building x86 32-bit classpath on an x86-64 machine

2006-10-31 Thread Ian Rogers
Hi Adam,

really the only important flag to build Classpath for x86 rather than
x86-64 on an x86-64 system is -m32 as a compiler flag. The default
x86-64 config file for the Jikes RVM does this by defining CC and CPLUS
to have -m32 at the end. Alternatively compiler flags can be specified
with the environment variables CFLAGS and CXXFLAGS.

I have been trying to capture information on building the Jikes RVM in
the wiki:
http://jikesrvm.sourceforge.net/wiki/index.php/Building
I would welcome help and contributions.

Thanks,

Ian Rogers




Trouble building x86 32-bit classpath on an x86-64 machine

2006-10-30 Thread Adam Preble
I'm having trouble building the GNU classpath 0.92 on a x86-64 platform running RHEL 4.2. I am trying to build the files to use with the Jikes RVM, which is using/generating 32-bit code. When it tries to instantiate, it complains that it cannot find 
libjavaio.so. It's in the Jikes build directory, my LD_LIBRARY_PATH, and the directory it's supposed to look for it. Indeed, the path it gives matches a working version of the file. My path experience with this means it's trying to load a file of an incompatible bitness, and this is what I see when I run readelf -h on it:


ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  Class: ELF64 Data: 2's complement, little endian Version: 1 (current)
 OS/ABI: UNIX - System V ABI Version: 0 Type: DYN (Shared object file) Machine: Advanced Micro Devices X86-64
 Version: 0x1 Entry point address: 0x18a0 Start of program headers: 64 (bytes into file) Start of section headers: 109232 (bytes into file)
 Flags: 0x0 Size of this header: 64 (bytes) Size of program headers: 56 (bytes) Number of program headers: 5 Size of section headers: 64 (bytes)
 Number of section headers: 36 Section header string table index: 33
On 32-bit libraries, I find they're the ELF32 class. 
Here's my configure command:
./configure --disable-gtk-peer --with-jikes --disable-plugin --host=i586-redhat-linux-gnu --target=i586-redhat-linux-gnu

It seems to configure, build, and install find. It puts the libraries into /usr/local/classpath/lib/classpath, noteably libjavaio.so is stored as libjavaio.so.0.0.0 but it's linked to libjavaio.so.0. The Jikes RVM script is picking up on this fine. The timestamps in the classpath install directory update when I rebuild. It's just that I keep getting 64-bit code.


How do I get it to build 32-bit code?