On 04/13/2014 03:36 PM, Stuart Henderson wrote:
I'm just trying to build 3.5-HEAD on OpenBSD/i386 (i.e. 32-bit mode) for
the first time. It fails due to use of 64-bit atomic ops:
MemStore.o(.text+0xc90): In function `MemStore::anchorEntry(StoreEntry&, int,
Ipc::StoreMapAnchor const&)':
: undefined reference to `__sync_fetch_and_add_8'
MemStore.o(.text+0x3aa3): In function `MemStore::copyFromShm(StoreEntry&, int,
Ipc::StoreMapAnchor const&)':
: undefined reference to `__sync_fetch_and_add_8'
MemStore.o(.text+0x3cce): In function `MemStore::copyFromShm(StoreEntry&, int,
Ipc::StoreMapAnchor const&)':
: undefined reference to `__sync_fetch_and_add_8'
MemStore.o(.text+0x4040): In function `MemStore::copyFromShm(StoreEntry&, int,
Ipc::StoreMapAnchor const&)':
: undefined reference to `__sync_fetch_and_add_8'
MemStore.o(.text+0x435f): In function `MemStore::copyFromShm(StoreEntry&, int,
Ipc::StoreMapAnchor const&)':
: undefined reference to `__sync_fetch_and_add_8'
MemStore.o(.text+0x473d): more undefined references to `__sync_fetch_and_add_8'
follow
collect2: error: ld returned 1 exit status
(cmpxchg8b isn't used on OpenBSD/i386 as binaries are supposed to work
on old CPUs too; 64 bit ops are of course OK on 64-bit architectures).
The autoconf test for atomic ops support is working, but it only checks
for int-sized atomic ops (which work OK here) - since the "Initial Large
Rock and Collapsed Forwarding support" commit (bzr rev 13201), Squid
started requiring 64-bit atomic ops too.
Should the autoconf test be changed to check for working 64-bit ops, or
is something more involved wanted?
What "configure" options have you used?
I will put a test machine for openbsd i386 testings.
Eliezer