bind fails with sig11 on start / pthread failure on ARM?

Bernd Walter ticso at cicely7.cicely.de
Fri Feb 19 16:28:48 UTC 2010


On Fri, Feb 19, 2010 at 01:29:03PM +0100, Grzegorz Bernacki wrote:
> Hi,
> 
> Some time ago we changed an address of RAS. Probably that's the problem. 
> Please try
> with patch below.
> 
> grzesiek
> 
> diff --git a/contrib/bind9/lib/isc/arm/include/isc/atomic.h 
> b/contrib/bind9/lib/
> index 6a6e984..2f12921 100644
> --- a/contrib/bind9/lib/isc/arm/include/isc/atomic.h
> +++ b/contrib/bind9/lib/isc/arm/include/isc/atomic.h
> @@ -53,9 +53,9 @@ isc_atomic_cmpxchg(isc_int32_t *p, isc_int32_t cmpval, 
> isc_int
> 
>         __asm __volatile("1:\n"
>             "adr        %1, 1b\n"
> -           "mov        %0, #0xe0000004\n"
> +           "mov        %0, #0xffff1004\n"
>             "str        %1, [%0]\n"
> -           "mov        %0, #0xe0000008\n"
> +           "mov        %0, #0xffff1008\n"
>             "adr        %1, 2f\n"
>             "str        %1, [%0]\n"
>             "ldr        %1, [%2]\n"
> @@ -63,10 +63,10 @@ isc_atomic_cmpxchg(isc_int32_t *p, isc_int32_t cmpval, 
> isc_i
>             "streq      %4, [%2]\n"
>             "2:\n"
>             "mov        %3, #0\n"
> -           "mov        %0, #0xe0000004\n"
> +           "mov        %0, #0xffff1004\n"
>             "str        %3, [%0]\n"
>             "mov        %3, #0xffffffff\n"
> -           "mov        %0, #0xe0000008\n"
> +           "mov        %0, #0xffff1008\n"
>             "str        %3, [%0]\n"
>             : "=r" (ras_start), "=r" (done)
>             ,"+r" (p), "+r" (cmpval), "+r" (val) : : "memory");

Strange:
cc -O -pipe -mcpu=arm9 -DVERSION='"9.6.1-P3"' -DHAVE_CONFIG_H -D_REENTRANT -D_THREAD_SAFE -DLIBINTERFACE=51 -DLIBREVISION=1 -DLIBAGE=1 -DWANT_IPV6 -DOPENSSL -DUSE_MD5 -DNS_LOCALSTATEDIR='"/var"' -DNS_SYSCONFDIR='"/etc/namedb"' -DNAMED_CONFFILE='"/etc/namedb/named.conf"' -DRNDC_CONFFILE='"/etc/namedb/rndc.conf"' -DRNDC_KEYFILE='"/etc/namedb/rndc.key"' -I/data/builder/arm-current/head/lib/bind/isc/.. -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/bind9/include -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/dns/include/dst  -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/dns/include  -I/data/builder/arm-current/head/lib/bind/isc/../dns -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/isccc/include -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/isccfg/include -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/isc/unix/include  -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/isc/pthreads/include  -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/isc/include  -I/data/builder/arm-current/head/lib/bind/isc/../isc -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/lwres/unix/include  -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/lwres/include  -I/data/builder/arm-current/head/lib/bind/isc/../lwres -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/isc/unix/include -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/isc/pthreads/include -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/isc/include -I/data/builder/arm-current/head/lib/bind/isc -I/data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/isc/arm/include -g -std=gnu99  -c /data/builder/arm-current/head/lib/bind/isc/../../../contrib/bind9/lib/isc/rwlock.c
{standard input}: Assembler messages:
{standard input}:69: Error: invalid constant -- `mov ip,#0xffff1004'
{standard input}:71: Error: invalid constant -- `mov ip,#0xffff1008'
{standard input}:79: Error: invalid constant -- `mov ip,#0xffff1004'
{standard input}:82: Error: invalid constant -- `mov ip,#0xffff1008'
*** Error code 1

Stop in /data/builder/arm-current/head/lib/bind/isc.
*** Error code 1

Stop in /data/builder/arm-current/head/lib/bind.
8297.000u 387.000s 2:52:06.37 84.1%     -1482+1914k 134+1455io 306pf+0w
Exit 1

I fail to seee why the assembler sees it to be wrong.
It is a valid hex value - what else should the assembler take care
about?

-- 
B.Walter <bernd at bwct.de> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.


More information about the freebsd-current mailing list