Building an LDM that Supports a Large Product-Queue

On many platforms that support a compilation environment for C where ints are 32 bits but longs and pointers are 64 bits (the LP64 model), it is possible to build the LDM system to support a huge product queue (larger than 2 or 4 gigabytes). This document includes instructions for building the LDM programs on such 64-bit platforms.

In general you cannot mix 64-bit LDM programs built for use with a huge product-queue with 32-bit LDM programs built for queues limited to less than 2 or 4 gigabytes in size. The formats of the two kinds of queues are incompatible. (32-bit LDMs can communicate with 64-bit LDMs on different computer systems, however)

Go to the instructions for the relevant platform:


FreeBSD, BSDI, BSDOS

It is not possible to have a product-queue larger than 2,147,483,647 bytes on this type of operating system because the product-queue is memory-mapped using the mmap(2) system-call and the length argument of that call is a 32-bit, unsigned integer which is, unfortunately, interpreted as a signed integer.


Solaris 7 and 8 (SunOS 5.7, 5.8) for SPARCv9 architectures

This will only work on SPARCv9 or later hardware architectures, and in particular not on SPARCv7, SPARCv8, or Intel. To check what architecture your platform uses, invoke

  isainfo -n

Next, make sure the Sun package SUNWscpux is installed, which provides utilities for user interface and source build compatibility with SunOS 4.x, and in particular the library /usr/ucblib/sparcv9/librpcsoc.so which is necessary to build a 64-bit version of the LDM. You can either check for that library or check for the package installation with the command

  pkginfo -l SUNWscpux

In order to use this library you need to make a change to the LDM src/configure script. Since this is somewhat of an exceptional case, we recommend that you copy the script to another name in the src directory, say, configure.sparcv9. Then edit the configure.sparcv9 script to replace the line

*) libs="-R/usr/ucblib -L/usr/ucblib -lrpcsoc -lnsl"
with
*) libs="-R/usr/ucblib/sparcv9 -L/usr/ucblib/sparcv9 -lrpcsoc -lnsl"

Before actually running the configure.sparcv9 script, you must make sure -xarch=v9 is included in the CFLAGS environment variable. For example,

export CFLAGS=-xarch=v9

When the installation instructions tell you to execute the configure script, execute configure.sparcv9 instead.


IRIX64

Just include the -64 option in CFLAGS before running the configure script to generate a huge-queue version of the
LDM programs for IRIX64.

OSF1/Alpha

[To be written]

Linux/Intel

It is not possible to have a product-queue larger than 4,294,967,295 bytes on a Linux for Intel system because the product-queue is memory-mapped using the mmap(2) system-call and the length argument of that call is a 32-bit, unsigned integer.

In order to have a product-queue larger than 2,147,483,647 bytes, it is necessary to include "-D_FILE_OFFSET_BITS=64" and "-D_LARGEFILE_SOURCE" in the CPPFLAGS environment variable prior to executing the configure script.


Linux/IA-64

[To be written]


HP-UX

[To be written]