Re: atomic ops on i386

From: Stuart Henderson <stu_at_spacehopper.org>
Date: Sun, 13 Apr 2014 21:00:39 +0000 (UTC)

On 2014-04-13, Eliezer Croitoru <eliezer_at_ngtech.co.il> wrote:
> 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?

Currently these (which are as set in the OpenBSD port) :-

--datadir="/usr/local/share/squid"
--disable-arch-native
--disable-loadable-modules
--disable-pf-transparent
--disable-strict-error-checking
--enable-arp-acl
--enable-auth
--enable-delay-pools
--enable-external-acl-helpers="LDAP_group SQL_session file_userip time_quota session unix_group wbinfo_group LDAP_group eDirectory_userip"
--enable-follow-x-forwarded-for
--enable-forw-via-db
--enable-http-violations
--enable-icap-client
--enable-ipfw-transparent
--enable-ipv6
--enable-referer-log
--enable-removal-policies="lru heap"
--enable-shared
--enable-ssl
--enable-ssl-crtd
--enable-stacktraces
--enable-storeio="aufs ufs diskd rock"
--infodir='/usr/local/info'
--libexecdir="/usr/local/libexec/squid"
--localstatedir='/var/squid'
--mandir='/usr/local/man'
--prefix='/usr/local'
--sysconfdir='/etc/squid'
--with-default-user="_squid"
--with-filedescriptors=8192
--with-openssl
--with-pidfile="/var/run/squid.pid"
--with-pthreads
--with-swapdir="/var/squid/cache"

Not 100% sure if rock actually works on OpenBSD, but removing it from
the --enable-storeio line doesn't change anything with this problem.

> I will put a test machine for openbsd i386 testings.

Thanks!
Received on Sun Apr 13 2014 - 21:00:59 MDT

This archive was generated by hypermail 2.2.0 : Mon Apr 14 2014 - 12:00:12 MDT