rrnewton / haskell-lockfree

A collection of different packages for CAS based data structures.
106 stars 25 forks source link

Build fail on armv8 #56

Open gitfoxi opened 8 years ago

gitfoxi commented 8 years ago

GHC 7.10.3, stackage lts-5.1, atomic-primops 8.0.2, architecture: aarch64 (armv8)

[1 of 1] Compiling Main             ( /tmp/stack6984/atomic-primops-0.8.0.2/Setup.hs, /tmp/stack6984/atomic-primops-0.8.0.2/.stack-work/dist/aarch64-linux/Cabal-1.22.7.0/setup/Main.o )
Linking /tmp/stack6984/atomic-primops-0.8.0.2/.stack-work/dist/aarch64-linux/Cabal-1.22.7.0/setup/setup ...
Configuring atomic-primops-0.8.0.2...
Building atomic-primops-0.8.0.2...
Preprocessing library atomic-primops-0.8.0.2...
[1 of 3] Compiling Data.Atomics.Internal ( Data/Atomics/Internal.hs, .stack-work/dist/aarch64-linux/Cabal-1.22.7.0/build/Data/Atomics/Internal.o )

Data/Atomics/Internal.hs:69:20: Warning:
    Defined but not used: data constructor ‘Ticket’
[2 of 3] Compiling Data.Atomics.Counter ( Data/Atomics/Counter.hs, .stack-work/dist/aarch64-linux/Cabal-1.22.7.0/build/Data/Atomics/Counter.o )

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_14.hc:3:
/tmp/ghc7100_0/ghc_14.hc: In function ‘c1Ni_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_add64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:452:13:
     note: in expansion of macro ‘BaseReg’
     #define Sp (BaseReg->rSp)
                 ^

/tmp/ghc7100_0/ghc_14.hc:59:93:
     note: in expansion of macro ‘Sp’
     _s1LV = hs_atomic_add64((((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x) + 0x10UL, Sp[1]);
                                                                                                 ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_14.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:21:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_add64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_14.hc:3:
/tmp/ghc7100_0/ghc_14.hc: In function ‘c1NY_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_add64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:162:14:
     note: in expansion of macro ‘BaseReg’
     # define R1 (BaseReg->rR1)
                  ^

/tmp/ghc7100_0/ghc_14.hc:143:70:
     note: in expansion of macro ‘R1’
     _s1M5 = hs_atomic_add64((((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x) + 0x10UL, _s1M0);
                                                                          ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_14.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:21:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_add64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_14.hc:3:
/tmp/ghc7100_0/ghc_14.hc: In function ‘r1LH_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_cmpxchg64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:452:13:
     note: in expansion of macro ‘BaseReg’
     #define Sp (BaseReg->rSp)
                 ^

/tmp/ghc7100_0/ghc_14.hc:466:45:
     note: in expansion of macro ‘Sp’
     _s1MD = hs_cmpxchg64((*Sp) + 0x10UL, _s1My, Sp[2]);
                                                 ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_14.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:45:9:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord hs_cmpxchg64(volatile StgWord64 *x, StgWord64 old, StgWord64 new_);
             ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_18.hc:3:
/tmp/ghc7100_0/ghc_18.hc: In function ‘c1Ua_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_add64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:452:13:
     note: in expansion of macro ‘BaseReg’
     #define Sp (BaseReg->rSp)
                 ^

/tmp/ghc7100_0/ghc_18.hc:59:93:
     note: in expansion of macro ‘Sp’
     _s1SN = hs_atomic_add64((((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x) + 0x10UL, Sp[1]);
                                                                                                 ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_18.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:21:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_add64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_18.hc:3:
/tmp/ghc7100_0/ghc_18.hc: In function ‘c1UQ_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_add64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:162:14:
     note: in expansion of macro ‘BaseReg’
     # define R1 (BaseReg->rR1)
                  ^

/tmp/ghc7100_0/ghc_18.hc:143:70:
     note: in expansion of macro ‘R1’
     _s1SX = hs_atomic_add64((((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x) + 0x10UL, _s1SS);
                                                                          ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_18.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:21:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_add64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_18.hc:3:
/tmp/ghc7100_0/ghc_18.hc: In function ‘r1LH_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_cmpxchg64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:452:13:
     note: in expansion of macro ‘BaseReg’
     #define Sp (BaseReg->rSp)
                 ^

/tmp/ghc7100_0/ghc_18.hc:466:45:
     note: in expansion of macro ‘Sp’
     _s1Tv = hs_cmpxchg64((*Sp) + 0x10UL, _s1Tq, Sp[2]);
                                                 ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_18.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:45:9:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord hs_cmpxchg64(volatile StgWord64 *x, StgWord64 old, StgWord64 new_);
             ^
[3 of 3] Compiling Data.Atomics     ( Data/Atomics.hs, .stack-work/dist/aarch64-linux/Cabal-1.22.7.0/build/Data/Atomics.o )

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:
/tmp/ghc7100_0/ghc_23.hc: In function ‘c3dY_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_add64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:452:13:
     note: in expansion of macro ‘BaseReg’
     #define Sp (BaseReg->rSp)
                 ^

/tmp/ghc7100_0/ghc_23.hc:239:38:
     note: in expansion of macro ‘Sp’
     _s37V = hs_atomic_add64((Sp[1]) + (((Sp[2]) << 0x3UL) + 0x10UL), _s37S);
                                          ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:21:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_add64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:
/tmp/ghc7100_0/ghc_23.hc: In function ‘c3eQ_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_xor64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:162:14:
     note: in expansion of macro ‘BaseReg’
     # define R1 (BaseReg->rR1)
                  ^

/tmp/ghc7100_0/ghc_23.hc:349:110:
     note: in expansion of macro ‘R1’
     _s38a = hs_atomic_xor64((Sp[1]) + (((Sp[2]) << 0x3UL) + 0x10UL), ((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x);
                                                                                                                  ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:41:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_xor64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:
/tmp/ghc7100_0/ghc_23.hc: In function ‘c3fF_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_or64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:162:14:
     note: in expansion of macro ‘BaseReg’
     # define R1 (BaseReg->rR1)
                  ^

/tmp/ghc7100_0/ghc_23.hc:459:109:
     note: in expansion of macro ‘R1’
     _s38o = hs_atomic_or64((Sp[1]) + (((Sp[2]) << 0x3UL) + 0x10UL), ((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x);
                                                                                                                 ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:37:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_or64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:
/tmp/ghc7100_0/ghc_23.hc: In function ‘c3gu_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_nand64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:162:14:
     note: in expansion of macro ‘BaseReg’
     # define R1 (BaseReg->rR1)
                  ^

/tmp/ghc7100_0/ghc_23.hc:569:111:
     note: in expansion of macro ‘R1’
     _s38C = hs_atomic_nand64((Sp[1]) + (((Sp[2]) << 0x3UL) + 0x10UL), ((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x);
                                                                                                                   ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:33:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_nand64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:
/tmp/ghc7100_0/ghc_23.hc: In function ‘c3hj_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_and64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:162:14:
     note: in expansion of macro ‘BaseReg’
     # define R1 (BaseReg->rR1)
                  ^

/tmp/ghc7100_0/ghc_23.hc:679:110:
     note: in expansion of macro ‘R1’
     _s38Q = hs_atomic_and64((Sp[1]) + (((Sp[2]) << 0x3UL) + 0x10UL), ((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x);
                                                                                                                  ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:29:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_and64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:
/tmp/ghc7100_0/ghc_23.hc: In function ‘c3i8_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_sub64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:162:14:
     note: in expansion of macro ‘BaseReg’
     # define R1 (BaseReg->rR1)
                  ^

/tmp/ghc7100_0/ghc_23.hc:789:110:
     note: in expansion of macro ‘R1’
     _s394 = hs_atomic_sub64((Sp[1]) + (((Sp[2]) << 0x3UL) + 0x10UL), ((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x);
                                                                                                                  ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:25:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_sub64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:
/tmp/ghc7100_0/ghc_23.hc: In function ‘c3iX_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_atomic_add64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:162:14:
     note: in expansion of macro ‘BaseReg’
     # define R1 (BaseReg->rR1)
                  ^

/tmp/ghc7100_0/ghc_23.hc:899:110:
     note: in expansion of macro ‘R1’
     _s39i = hs_atomic_add64((Sp[1]) + (((Sp[2]) << 0x3UL) + 0x10UL), ((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x);
                                                                                                                  ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:21:11:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord64 hs_atomic_add64(volatile StgWord64 *x, StgWord64 val);
               ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:262:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:
/tmp/ghc7100_0/ghc_23.hc: In function ‘c3jU_entry’:

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:445:28:
     warning: passing argument 1 of ‘hs_cmpxchg64’ makes pointer from integer without a cast [enabled by default]
     #define BaseReg (&((struct PartCapability_ *)MainCapability)->r)
                                ^

/usr/local/lib/ghc-7.10.3/include/stg/Regs.h:162:14:
     note: in expansion of macro ‘BaseReg’
     # define R1 (BaseReg->rR1)
                  ^

/tmp/ghc7100_0/ghc_23.hc:1031:114:
     note: in expansion of macro ‘R1’
     _s39z = hs_cmpxchg64((Sp[1]) + (((Sp[2]) << 0x3UL) + 0x10UL), Sp[3], ((struct {W_ x;} __attribute__((packed))*) (R1.w+7))->x);
                                                                                                                      ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:273:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/Prim.h:45:9:
     note: expected ‘volatile StgWord64 *’ but argument is of type ‘long unsigned int’
     StgWord hs_cmpxchg64(volatile StgWord64 *x, StgWord64 old, StgWord64 new_);
             ^

In file included from /tmp/ghc7100_0/ghc_23.hc:3:0: 
/tmp/ghc7100_0/ghc_23.hc: At top level:

/tmp/ghc7100_0/ghc_23.hc:2704:5:
     error: conflicting types for ‘store_load_barrier’
     EF_(store_load_barrier);
         ^

/usr/local/lib/ghc-7.10.3/include/Stg.h:220:36:
     note: in definition of macro ‘EF_’
     #define EF_(f)    extern StgFunPtr f()   /* See Note [External function prototypes] */
                                        ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:274:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/SMP.h:422:20:
     note: previous definition of ‘store_load_barrier’ was here
     EXTERN_INLINE void store_load_barrier() {} /* nothing */
                        ^

In file included from /tmp/ghc7100_0/ghc_23.hc:3:0: 

/tmp/ghc7100_0/ghc_23.hc:2741:5:
     error: conflicting types for ‘load_load_barrier’
     EF_(load_load_barrier);
         ^

/usr/local/lib/ghc-7.10.3/include/Stg.h:220:36:
     note: in definition of macro ‘EF_’
     #define EF_(f)    extern StgFunPtr f()   /* See Note [External function prototypes] */
                                        ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:274:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/SMP.h:423:20:
     note: previous definition of ‘load_load_barrier’ was here
     EXTERN_INLINE void load_load_barrier () {} /* nothing */
                        ^

In file included from /tmp/ghc7100_0/ghc_23.hc:3:0: 

/tmp/ghc7100_0/ghc_23.hc:2778:5:
     error: conflicting types for ‘write_barrier’
     EF_(write_barrier);
         ^

/usr/local/lib/ghc-7.10.3/include/Stg.h:220:36:
     note: in definition of macro ‘EF_’
     #define EF_(f)    extern StgFunPtr f()   /* See Note [External function prototypes] */
                                        ^

In file included from /usr/local/lib/ghc-7.10.3/include/Stg.h:274:0:
    0,
                     from /tmp/ghc7100_0/ghc_23.hc:3:

/usr/local/lib/ghc-7.10.3/include/stg/SMP.h:421:20:
     note: previous definition of ‘write_barrier’ was here
     EXTERN_INLINE void write_barrier     () {} /* nothing */
                        ^