Re: [Gc] [PATCH] Implement the basic atomic primitives for the tilegx/tilepro cpus.

Chris Metcalf <cmetcalf-VPRAkNaXOzVWk0Htik3J/[email protected]> Tue, 15 Nov 2016 03:27:34 +0000
Newsgroups gmane.comp.programming.garbage-collection.boehmgc
Message-ID <[email protected]>
This is the first time I've seen a warning tagged onto a Mellanox email that I have sent. Not sure what's going on there.

> On Nov 14, 2016, at 7:27 PM, Chris Metcalf <cmetcalf-VPRAkNaXOzVWk0Htik3J/[email protected]> wrote:
> 
> This sender failed our fraud detection checks and may not be who they appear to be. Learn about spoofing at http://aka.ms/LearnAboutSpoofing
> 
> Yes, it reports all 4 tests passed on tilegx as of the current git tip.
> 
>> On 11/7/2016 5:34 AM, Ivan Maidanski wrote:
>> 
>> Hello Chris,
>> 
>> Does code in libatomic_ops master branch work?
>> 
>> Regards,
>> Ivan
>> 
>> --
>> 
>> Wed, 02 Nov 2016, 08:07 +03:00 from Helmut Grohne <[email protected]>:
>> 
>> Hi Chris,
>> On Thu, May 12, 2016 at 01:49:08AM +0300, Ivan Maidanski wrote:
>> > I've committed these 2 patches (with small modifications) to master:
>> > * https://github.com/ivmai/bdwgc/commit/1240658b92c0827ace6f9ac52b3425070eed948f
>> > * https://github.com/ivmai/libatomic_ops/commit/04a286421802a503b58d804d0d673dd5a28c9e9b
>> The version of libatomic_ops in Debian has finally been updated to 7.4.4
>> and cherry-picks 04a86642180 (https://tracker.debian.org/news/808756).
>> Of course, I went a head and tried to build it, but that fails
>> (https://jenkins.debian.net/job/rebootstrap_tilegx_gcc6_supported/10/console):
>> | make[3]: Entering directory '/tmp/buildd/libatomic-ops/libatomic-ops-7.4.4/src'
>> | /bin/bash ../libtool  --tag=CC   --mode=compile tilegx-linux-gnu-gcc -DHAVE_CONFIG_H   -I../src -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Wall -Wextra -g -O2 -fdebug-prefix-map=/tmp/buildd/libatomic-ops/libatomic-ops-7.4.4=. -fstack-protector-strong -Wformat -Werror=format-security -c -o atomic_ops.lo atomic_ops.c
>> | libtool: compile:  tilegx-linux-gnu-gcc -DHAVE_CONFIG_H -I../src -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Wall -Wextra -g -O2 -fdebug-prefix-map=/tmp/buildd/libatomic-ops/libatomic-ops-7.4.4=. -fstack-protector-strong -Wformat -Werror=format-security -c atomic_ops.c -o atomic_ops.o
>> | In file included from atomic_ops/sysdeps/gcc/tile.h:19:0,
>> |                  from atomic_ops.h:295,
>> |                  from atomic_ops.c:47:
>> | atomic_ops/sysdeps/gcc/generic.h:65:13: error: unknown type name 'AO_TS_VAL_t'
>> |    AO_INLINE AO_TS_VAL_t
>> |              ^~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:66:28: error: unknown type name 'AO_TS_t'
>> |    AO_test_and_set(volatile AO_TS_t *addr)
>> |                             ^~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h: In function 'AO_test_and_set':
>> | atomic_ops/sysdeps/gcc/generic.h:68:13: error: 'AO_TS_VAL_t' undeclared (first use in this function)
>> |      return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_RELAXED);
>> |              ^~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:68:13: note: each undeclared identifier is reported only once for each function it appears in
>> | atomic_ops/sysdeps/gcc/generic.h:68:25: error: expected ';' before '__atomic_test_and_set'
>> |      return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_RELAXED);
>> |                          ^~~~~~~~~~~~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:66:37: warning: unused parameter 'addr' [-Wunused-parameter]
>> |    AO_test_and_set(volatile AO_TS_t *addr)
>> |                                      ^~~~
>> | atomic_ops/sysdeps/gcc/generic.h: At top level:
>> | atomic_ops/sysdeps/gcc/generic.h:72:13: error: unknown type name 'AO_TS_VAL_t'
>> |    AO_INLINE AO_TS_VAL_t
>> |              ^~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:73:36: error: unknown type name 'AO_TS_t'
>> |    AO_test_and_set_acquire(volatile AO_TS_t *addr)
>> |                                     ^~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h: In function 'AO_test_and_set_acquire':
>> | atomic_ops/sysdeps/gcc/generic.h:75:13: error: 'AO_TS_VAL_t' undeclared (first use in this function)
>> |      return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_ACQUIRE);
>> |              ^~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:75:25: error: expected ';' before '__atomic_test_and_set'
>> |      return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_ACQUIRE);
>> |                          ^~~~~~~~~~~~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:73:45: warning: unused parameter 'addr' [-Wunused-parameter]
>> |    AO_test_and_set_acquire(volatile AO_TS_t *addr)
>> |                                              ^~~~
>> | atomic_ops/sysdeps/gcc/generic.h: At top level:
>> | atomic_ops/sysdeps/gcc/generic.h:79:13: error: unknown type name 'AO_TS_VAL_t'
>> |    AO_INLINE AO_TS_VAL_t
>> |              ^~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:80:36: error: unknown type name 'AO_TS_t'
>> |    AO_test_and_set_release(volatile AO_TS_t *addr)
>> |                                     ^~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h: In function 'AO_test_and_set_release':
>> | atomic_ops/sysdeps/gcc/generic.h:82:13: error: 'AO_TS_VAL_t' undeclared (first use in this function)
>> |      return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_RELEASE);
>> |              ^~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:82:25: error: expected ';' before '__atomic_test_and_set'
>> |      return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_RELEASE);
>> |                          ^~~~~~~~~~~~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:80:45: warning: unused parameter 'addr' [-Wunused-parameter]
>> |    AO_test_and_set_release(volatile AO_TS_t *addr)
>> |                                              ^~~~
>> | atomic_ops/sysdeps/gcc/generic.h: At top level:
>> | atomic_ops/sysdeps/gcc/generic.h:86:13: error: unknown type name 'AO_TS_VAL_t'
>> |    AO_INLINE AO_TS_VAL_t
>> |              ^~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:87:33: error: unknown type name 'AO_TS_t'
>> |    AO_test_and_set_full(volatile AO_TS_t *addr)
>> |                                  ^~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h: In function 'AO_test_and_set_full':
>> | atomic_ops/sysdeps/gcc/generic.h:89:13: error: 'AO_TS_VAL_t' undeclared (first use in this function)
>> |      return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_SEQ_CST);
>> |              ^~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:89:25: error: expected ';' before '__atomic_test_and_set'
>> |      return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_SEQ_CST);
>> |                          ^~~~~~~~~~~~~~~~~~~~~
>> | atomic_ops/sysdeps/gcc/generic.h:87:42: warning: unused parameter 'addr' [-Wunused-parameter]
>> |    AO_test_and_set_full(volatile AO_TS_t *addr)
>> |                                           ^~~~
>> | atomic_ops.c: At top level:
>> | atomic_ops.c:97:1: error: unknown type name 'AO_TS_t'
>> |  AO_TS_t AO_locks[AO_HASH_SIZE] = {
>> |  ^~~~~~~
>> | In file included from atomic_ops.c:47:0:
>> | atomic_ops.h:160:33: error: 'AO_TS_CLEAR' undeclared here (not in a function)
>> |  #define AO_TS_INITIALIZER (AO_t)AO_TS_CLEAR
>> |                                  ^
>> | atomic_ops.c:98:3: note: in expansion of macro 'AO_TS_INITIALIZER'
>> |    AO_TS_INITIALIZER, AO_TS_INITIALIZER, AO_TS_INITIALIZER, AO_TS_INITIALIZER,
>> |    ^~~~~~~~~~~~~~~~~
>> | atomic_ops.c:106:31: error: unknown type name 'AO_TS_t'
>> |  static void lock_ool(volatile AO_TS_t *l)
>> |                                ^~~~~~~
>> | atomic_ops.c: In function 'lock_ool':
>> | atomic_ops.c:110:40: error: 'AO_TS_SET' undeclared (first use in this function)
>> |    while (AO_test_and_set_acquire(l) == AO_TS_SET)
>> |                                         ^~~~~~~~~
>> | atomic_ops.c: At top level:
>> | atomic_ops.c:114:30: error: unknown type name 'AO_TS_t'
>> |  AO_INLINE void lock(volatile AO_TS_t *l)
>> |                               ^~~~~~~
>> | In file included from atomic_ops.c:47:0:
>> | atomic_ops.c: In function 'lock':
>> | atomic_ops.c:116:53: error: 'AO_TS_SET' undeclared (first use in this function)
>> |    if (AO_EXPECT_FALSE(AO_test_and_set_acquire(l) == AO_TS_SET))
>> |                                                      ^
>> | atomic_ops.h:173:49: note: in definition of macro 'AO_EXPECT_FALSE'
>> |  # define AO_EXPECT_FALSE(expr) __builtin_expect(expr, 0)
>> |                                                  ^~~~
>> | atomic_ops.c: At top level:
>> | atomic_ops.c:120:32: error: unknown type name 'AO_TS_t'
>> |  AO_INLINE void unlock(volatile AO_TS_t *l)
>> |                                 ^~~~~~~
>> | atomic_ops.c: In function 'unlock':
>> | atomic_ops.c:122:3: warning: implicit declaration of function 'AO_CLEAR' [-Wimplicit-function-declaration]
>> |    AO_CLEAR(l);
>> |    ^~~~~~~~
>> | atomic_ops.c: At top level:
>> | atomic_ops.c:128:19: error: unknown type name 'AO_TS_t'
>> |    static volatile AO_TS_t init_lock = AO_TS_INITIALIZER;
>> |                    ^~~~~~~
>> | atomic_ops.c: In function 'AO_fetch_compare_and_swap_emulation':
>> | atomic_ops.c:154:3: error: unknown type name 'AO_TS_t'
>> |    AO_TS_t *my_lock = AO_locks + AO_HASH(addr);
>> |    ^~~~~~~
>> | atomic_ops.c: In function 'AO_compare_double_and_swap_double_emulation':
>> | atomic_ops.c:176:3: error: unknown type name 'AO_TS_t'
>> |    AO_TS_t *my_lock = AO_locks + AO_HASH(addr);
>> |    ^~~~~~~
>> | atomic_ops.c: In function 'AO_store_full_emulation':
>> | atomic_ops.c:201:3: error: unknown type name 'AO_TS_t'
>> |    AO_TS_t *my_lock = AO_locks + AO_HASH(addr);
>> |    ^~~~~~~
>> | Makefile:603: recipe for target 'atomic_ops.lo' failed
>> | make[3]: Leaving directory '/tmp/buildd/libatomic-ops/libatomic-ops-7.4.4/src'
>> | make[3]: *** [atomic_ops.lo] Error 1
>> | Makefile:462: recipe for target 'all' failed
>> | make[2]: Leaving directory '/tmp/buildd/libatomic-ops/libatomic-ops-7.4.4/src'
>> | Makefile:474: recipe for target 'all-recursive' failed
>> | make[1]: Leaving directory '/tmp/buildd/libatomic-ops/libatomic-ops-7.4.4'
>> I'm not sure what went wrong here. Could you maybe look into it?
>> Maybe tile.h needs to #include "../test_and_set_t_is_ao_t.h" before
>> including "generic.h"?
>> Other than this, the tilegx bootstrap in Debian is slowly progressing
>> well. The toolchain appears to just work and it builds some 12 packages
>> already. More to come after libatomic_ops.
>> Helmut
>> _______________________________________________
>> bdwgc mailing list
>> [email protected]
>> https://lists.opendylan.org/mailman/listinfo/bdwgc
>> 
> 
> --
> Chris Metcalf, Mellanox Technologies
> http://www.mellanox.com
> _______________________________________________
> bdwgc mailing list
> [email protected]
> https://lists.opendylan.org/mailman/listinfo/bdwgc