To build 32 bit appears to require bsd_x86_32.s to be set up along the lines of the macosx-port one. It seems to have a problem where a preprocessor check keeps it from defining .type, however a .type is always included farther on. I believe the macosx-port version could just be dropped in. However, I changed the bsd-port version like this...
cd hotspot hg diff src/os_cpu/bsd_x86/vm/bsd_x86_32.s diff --git a/src/os_cpu/bsd_x86/vm/bsd_x86_32.s b/src/os_cpu/bsd_x86/vm/bsd_x86_32.s --- a/src/os_cpu/bsd_x86/vm/bsd_x86_32.s +++ b/src/os_cpu/bsd_x86/vm/bsd_x86_32.s @@ -689,8 +689,8 @@ # Support for jlong Atomic::load and Atomic::store. # void _Atomic_move_long(volatile jlong* src, volatile jlong* dst) .p2align 4,,15 - .type _Atomic_move_long,@function -_Atomic_move_long: + ELF_TYPE(_Atomic_move_long,@function) +SYMBOL(_Atomic_move_long): movl 4(%esp), %eax # src fildll (%eax) movl 8(%esp), %eax # dest Now I'm afraid the 'but'. This builds but the generated crashes. ./build/bsd-i586/j2sdk-image/bin/java -version # # A fatal error has been detected by the Java Runtime Environment: # # SIGBUS (0xa) at pc=0x010495fd, pid=3946, tid=2953121792 # # JRE version: 7.0 # Java VM: OpenJDK Client VM (21.0-b06 mixed mode bsd-x86 ) # Problematic frame: # V [libjvm.dylib+0x495fd] reorder_based_on_method_index(objArrayOopDesc*, objArrayOopDesc*, GrowableArray<oopDesc*>*)+0x2d # # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again # # An error report file with more information is saved as: # /Volumes/mbvol/bsd-port/hs_err_pid3946.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # Abort trap I currently have no idea on that?