Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Jul 2013 18:40:22 +1000
From:      Peter Jeremy <peter@rulingia.com>
To:        Tim Kientzle <kientzle@FreeBSD.org>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org
Subject:   Re: svn commit: r252373 - head/usr.bin
Message-ID:  <20130706084022.GA91077@server.rulingia.com>
In-Reply-To: <201306291531.r5TFVOKb016748@svn.freebsd.org>
References:  <201306291531.r5TFVOKb016748@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--PNTmBPCT7hxwcZjr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On 2013-Jun-29 15:31:24 +0000, Tim Kientzle <kientzle@FreeBSD.org> wrote:
>Log:
>  Enable svnlite on armv6.

This breaks building world with gcc on Raspberry Pi:

gcc -O -pipe  -I/tank/src10r/usr.bin/svn/svn/../../../contrib/subversion/su=
bversion/include -I/tank/src10r/usr.bin/svn/svn/../../../contrib/subversion=
/subversion -I/tank/src10r/usr.bin/svn/svn/..  -I/tank/src10r/usr.bin/svn/s=
vn/../lib/libapr  -I/tank/src10r/usr.bin/svn/svn/../../../contrib/apr/inclu=
de/arch/unix  -I/tank/src10r/usr.bin/svn/svn/../../../contrib/apr/include  =
-I/tank/src10r/usr.bin/svn/svn/../lib/libapr_util  -I/tank/src10r/usr.bin/s=
vn/svn/../../../contrib/apr-util/include/private  -I/tank/src10r/usr.bin/sv=
n/svn/../../../contrib/apr-util/include -std=3Dgnu99 -Wno-pointer-sign  -o =
svnlite add-cmd.o blame-cmd.o cat-cmd.o changelist-cmd.o checkout-cmd.o cl-=
conflicts.o cleanup-cmd.o commit-cmd.o conflict-callbacks.o copy-cmd.o dele=
te-cmd.o deprecated.o diff-cmd.o export-cmd.o file-merge.o help-cmd.o impor=
t-cmd.o info-cmd.o list-cmd.o lock-cmd.o log-cmd.o merge-cmd.o mergeinfo-cm=
d.o mkdir-cmd.o move-cmd.o notify.o patch-cmd.o propdel-cmd.o propedit-cmd.=
o propget-cmd.o proplist-cmd.o props.o propset-cmd.o relocate-cmd.o resolve=
-cmd.o resolved-cmd.o revert-cmd.o status-cmd.o status.o svn.o switch-cmd.o=
 unlock-cmd.o update-cmd.o upgrade-cmd.o util.o -L/tank/obj/rpi/arm.armv6/t=
ank/src10r/usr.bin/svn/svn/../lib/libsvn_client -lsvn_client  -L/tank/obj/r=
pi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libsvn_wc -lsvn_wc  -L/tank=
/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libsvn_ra -lsvn_ra  -=
L/tank/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libsvn_ra_local=
 -lsvn_ra_local  -L/tank/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../l=
ib/libsvn_ra_svn -lsvn_ra_svn  -L/tank/obj/rpi/arm.armv6/tank/src10r/usr.bi=
n/svn/svn/../lib/libsvn_ra_serf -lsvn_ra_serf  -L/tank/obj/rpi/arm.armv6/ta=
nk/src10r/usr.bin/svn/svn/../lib/libsvn_repos -lsvn_repos  -L/tank/obj/rpi/=
arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libsvn_fs -lsvn_fs  -L/tank/ob=
j/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libsvn_fs_fs -lsvn_fs_fs=
  -L/tank/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libsvn_fs_ut=
il -lsvn_fs_util  -L/tank/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../=
lib/libsvn_delta -lsvn_delta  -L/tank/obj/rpi/arm.armv6/tank/src10r/usr.bin=
/svn/svn/../lib/libsvn_diff -lsvn_diff  -L/tank/obj/rpi/arm.armv6/tank/src1=
0r/usr.bin/svn/svn/../lib/libsvn_subr -lsvn_subr  -L/tank/obj/rpi/arm.armv6=
/tank/src10r/usr.bin/svn/svn/../lib/libserf -lserf  -L/tank/obj/rpi/arm.arm=
v6/tank/src10r/usr.bin/svn/svn/../lib/libapr_util -lapr-util  -lbsdxml  -L/=
tank/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libapr -lapr  -L/=
tank/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libsqlite3 -lsqli=
te3  -lz -lcrypt -lmagic -lcrypto -lssl -lpthread
/tank/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libsvn_subr/libs=
vn_subr.a(named_atomic.o): In function `svn_named_atomic__cmpxchg':
named_atomic.c:(.text+0xf0): undefined reference to `__sync_val_compare_and=
_swap_8'
/tank/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libsvn_subr/libs=
vn_subr.a(named_atomic.o): In function `svn_named_atomic__add':
named_atomic.c:(.text+0x174): undefined reference to `__sync_add_and_fetch_=
8'
/tank/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libsvn_subr/libs=
vn_subr.a(named_atomic.o): In function `svn_named_atomic__write':
named_atomic.c:(.text+0x1c0): undefined reference to `__sync_lock_test_and_=
set_8'
/tank/obj/rpi/arm.armv6/tank/src10r/usr.bin/svn/svn/../lib/libapr/libapr.a(=
builtins.o): In function `apr_atomic_dec32':
builtins.c:(.text+0x90): undefined reference to `__sync_sub_and_fetch_4'
*** Error code 1

Stop.
make: stopped in /tank/src10r/usr.bin/svn/svn

I've split the failures into two categories:
 __sync_add_and_fetch_8
 __sync_lock_test_and_set_8
 __sync_val_compare_and_swap_8
these should be defined in /usr/src/sys/arm/arm/stdatomic.c (and
compiled into libcompiler_rt.a) but that file only defines 1-, 2- and
4-byte variants for userland armv6 (it looks like it fakes 8-byte
variants in the kernel by disabling interrupts).

I don't know ARM assembler well enough to know if there's any way to
do 64-bit atomic operations.  I suspect not.

 __sync_sub_and_fetch_4
There are references to __sync_sub_and_fetch() but I can't any sign of
a definition.  It looks like __sync_sub_and_fetch_4 is supposed to be
a gcc builtin so I'm not sure why it's being emitted without a definition.

--=20
Peter Jeremy

--PNTmBPCT7hxwcZjr
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.20 (FreeBSD)

iEYEARECAAYFAlHX1/YACgkQ/opHv/APuIcuwwCcCjDgQlNkFiZegVo5BdIhlFIl
n1wAn2I+HLgmSVKWQlIqC7nKKOMhIgpS
=TF+/
-----END PGP SIGNATURE-----

--PNTmBPCT7hxwcZjr--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130706084022.GA91077>