I have reduced the issue to the following. Simply compile it from a
Debian/PowerPC based computer:

$ cat t.c
#include <stdint.h>

int main()
{
  int64_t x = 0, y = 1;
  y = __sync_val_compare_and_swap(&x, x, y);
  return 0;
}

$ gcc t.c
/tmp/ccAS9Llh.o: In function `main':
t.c:(.text+0x64): undefined reference to `__sync_val_compare_and_swap_8'
collect2: ld returned 1 exit status

According to online docs:

https://gcc.gnu.org/onlinedocs/gcc-4.9.1/gcc/_005f_005fsync-Builtins.html#_005f_005fsync-Builtins

[...]
The definition given in the Intel documentation allows only for the
use of the types int, long, long long as well as their unsigned
counterparts. GCC allows any integral scalar or pointer type that is
1, 2, 4 or 8 bytes in length.
[...]

So I am guessing the documentation is outright lying at least for
32bits based PowerPC target.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to