[Mesa-dev] [Bug 93089] mesa fails to check for gcc atomic primitives before using them

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Nov 23 17:38:53 PST 2015


https://bugs.freedesktop.org/show_bug.cgi?id=93089

            Bug ID: 93089
           Summary: mesa fails to check for gcc atomic primitives before
                    using them
           Product: Mesa
           Version: git
          Hardware: Other
                OS: OpenBSD
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Mesa core
          Assignee: mesa-dev at lists.freedesktop.org
          Reporter: jsg at openbsd.org
        QA Contact: mesa-dev at lists.freedesktop.org

The u_atomic.h macros assume the gcc atomic builtins are always available but
this is only the case on linux with the way the linux kernel fakes atomics when
the architecture does not provide them.

This concerns at least sparc < v9, hppa, sh, arm < v6, alpha and mips64.

mips64
undefined reference to `__sync_val_compare_and_swap_1'

alpha
undefined reference to `__sync_val_compare_and_swap_1'

i386 (should be avoidable with -march=i586 for cx8)
undefined symbol '__sync_val_compare_and_swap_8'

arm v4 abi
/tmp//ccIl4d4c.o: In function `test_atomic_assign_int':
u_atomic_test.c:(.text+0x78): undefined reference to
`__sync_val_compare_and_swap_4'
u_atomic_test.c:(.text+0xd4): undefined reference to
`__sync_val_compare_and_swap_4'
/tmp//ccIl4d4c.o: In function `test_atomic_8bits_int':
u_atomic_test.c:(.text+0x170): undefined reference to `__sync_add_and_fetch_4'
/tmp//ccIl4d4c.o: In function `test_atomic_int':
u_atomic_test.c:(.text+0x1dc): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x240): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x2ac): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x318): undefined reference to `__sync_add_and_fetch_4'
u_atomic_test.c:(.text+0x350): undefined reference to `__sync_add_and_fetch_4'
u_atomic_test.c:(.text+0x3b4): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x3ec): undefined reference to `__sync_sub_and_fetch_4'
/tmp//ccIl4d4c.o: In function `test_atomic_assign_unsigned':
u_atomic_test.c:(.text+0x4f4): undefined reference to
`__sync_val_compare_and_swap_4'
u_atomic_test.c:(.text+0x550): undefined reference to
`__sync_val_compare_and_swap_4'
/tmp//ccIl4d4c.o: In function `test_atomic_8bits_unsigned':
u_atomic_test.c:(.text+0x5ec): undefined reference to `__sync_add_and_fetch_4'
/tmp//ccIl4d4c.o: In function `test_atomic_unsigned':
u_atomic_test.c:(.text+0x658): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x6bc): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x728): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x794): undefined reference to `__sync_add_and_fetch_4'
u_atomic_test.c:(.text+0x7cc): undefined reference to `__sync_add_and_fetch_4'
u_atomic_test.c:(.text+0x830): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x868): undefined reference to `__sync_sub_and_fetch_4'
/tmp//ccIl4d4c.o: In function `test_atomic_assign_int16_t':
u_atomic_test.c:(.text+0x978): undefined reference to
`__sync_val_compare_and_swap_2'
u_atomic_test.c:(.text+0x9dc): undefined reference to
`__sync_val_compare_and_swap_2'
/tmp//ccIl4d4c.o: In function `test_atomic_8bits_int16_t':
u_atomic_test.c:(.text+0xa7c): undefined reference to `__sync_add_and_fetch_2'
/tmp//ccIl4d4c.o: In function `test_atomic_int16_t':
u_atomic_test.c:(.text+0xae8): undefined reference to `__sync_sub_and_fetch_2'
u_atomic_test.c:(.text+0xb54): undefined reference to `__sync_sub_and_fetch_2'
u_atomic_test.c:(.text+0xbc0): undefined reference to `__sync_sub_and_fetch_2'
u_atomic_test.c:(.text+0xc34): undefined reference to `__sync_add_and_fetch_2'
u_atomic_test.c:(.text+0xc6c): undefined reference to `__sync_add_and_fetch_2'
u_atomic_test.c:(.text+0xcd8): undefined reference to `__sync_sub_and_fetch_2'
u_atomic_test.c:(.text+0xd18): undefined reference to `__sync_sub_and_fetch_2'
/tmp//ccIl4d4c.o: In function `test_atomic_assign_uint16_t':
u_atomic_test.c:(.text+0xe38): undefined reference to
`__sync_val_compare_and_swap_2'
u_atomic_test.c:(.text+0xe9c): undefined reference to
`__sync_val_compare_and_swap_2'
/tmp//ccIl4d4c.o: In function `test_atomic_8bits_uint16_t':
u_atomic_test.c:(.text+0xf40): undefined reference to `__sync_add_and_fetch_2'
/tmp//ccIl4d4c.o: In function `test_atomic_uint16_t':
u_atomic_test.c:(.text+0xfac): undefined reference to `__sync_sub_and_fetch_2'
u_atomic_test.c:(.text+0x1010): undefined reference to `__sync_sub_and_fetch_2'
u_atomic_test.c:(.text+0x107c): undefined reference to `__sync_sub_and_fetch_2'
u_atomic_test.c:(.text+0x10ec): undefined reference to `__sync_add_and_fetch_2'
u_atomic_test.c:(.text+0x1124): undefined reference to `__sync_add_and_fetch_2'
u_atomic_test.c:(.text+0x1188): undefined reference to `__sync_sub_and_fetch_2'
u_atomic_test.c:(.text+0x11c4): undefined reference to `__sync_sub_and_fetch_2'
/tmp//ccIl4d4c.o: In function `test_atomic_assign_int32_t':
u_atomic_test.c:(.text+0x12d4): undefined reference to
`__sync_val_compare_and_swap_4'
u_atomic_test.c:(.text+0x1330): undefined reference to
`__sync_val_compare_and_swap_4'
/tmp//ccIl4d4c.o: In function `test_atomic_8bits_int32_t':
u_atomic_test.c:(.text+0x13cc): undefined reference to `__sync_add_and_fetch_4'
/tmp//ccIl4d4c.o: In function `test_atomic_int32_t':
u_atomic_test.c:(.text+0x1438): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x149c): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x1508): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x1574): undefined reference to `__sync_add_and_fetch_4'
u_atomic_test.c:(.text+0x15ac): undefined reference to `__sync_add_and_fetch_4'
u_atomic_test.c:(.text+0x1610): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x1648): undefined reference to `__sync_sub_and_fetch_4'
/tmp//ccIl4d4c.o: In function `test_atomic_assign_uint32_t':
u_atomic_test.c:(.text+0x1750): undefined reference to
`__sync_val_compare_and_swap_4'
u_atomic_test.c:(.text+0x17ac): undefined reference to
`__sync_val_compare_and_swap_4'
/tmp//ccIl4d4c.o: In function `test_atomic_8bits_uint32_t':
u_atomic_test.c:(.text+0x1844): undefined reference to `__sync_add_and_fetch_4'
/tmp//ccIl4d4c.o: In function `test_atomic_uint32_t':
u_atomic_test.c:(.text+0x18ac): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x1910): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x197c): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x19e8): undefined reference to `__sync_add_and_fetch_4'
u_atomic_test.c:(.text+0x1a20): undefined reference to `__sync_add_and_fetch_4'
u_atomic_test.c:(.text+0x1a84): undefined reference to `__sync_sub_and_fetch_4'
u_atomic_test.c:(.text+0x1abc): undefined reference to `__sync_sub_and_fetch_4'
/tmp//ccIl4d4c.o: In function `test_atomic_assign_int64_t':
u_atomic_test.c:(.text+0x1c14): undefined reference to
`__sync_val_compare_and_swap_8'
u_atomic_test.c:(.text+0x1cb4): undefined reference to
`__sync_val_compare_and_swap_8'
/tmp//ccIl4d4c.o: In function `test_atomic_8bits_int64_t':
u_atomic_test.c:(.text+0x1d80): undefined reference to `__sync_add_and_fetch_8'
/tmp//ccIl4d4c.o: In function `test_atomic_int64_t':
u_atomic_test.c:(.text+0x1e10): undefined reference to `__sync_sub_and_fetch_8'
u_atomic_test.c:(.text+0x1eb4): undefined reference to `__sync_sub_and_fetch_8'
u_atomic_test.c:(.text+0x1f4c): undefined reference to `__sync_sub_and_fetch_8'
u_atomic_test.c:(.text+0x2000): undefined reference to `__sync_add_and_fetch_8'
u_atomic_test.c:(.text+0x2050): undefined reference to `__sync_add_and_fetch_8'
u_atomic_test.c:(.text+0x20f8): undefined reference to `__sync_sub_and_fetch_8'
u_atomic_test.c:(.text+0x215c): undefined reference to `__sync_sub_and_fetch_8'
/tmp//ccIl4d4c.o: In function `test_atomic_assign_uint64_t':
u_atomic_test.c:(.text+0x2304): undefined reference to
`__sync_val_compare_and_swap_8'
u_atomic_test.c:(.text+0x23a4): undefined reference to
`__sync_val_compare_and_swap_8'
/tmp//ccIl4d4c.o: In function `test_atomic_8bits_uint64_t':
u_atomic_test.c:(.text+0x2470): undefined reference to `__sync_add_and_fetch_8'
/tmp//ccIl4d4c.o: In function `test_atomic_uint64_t':
u_atomic_test.c:(.text+0x2500): undefined reference to `__sync_sub_and_fetch_8'
u_atomic_test.c:(.text+0x25a4): undefined reference to `__sync_sub_and_fetch_8'
u_atomic_test.c:(.text+0x263c): undefined reference to `__sync_sub_and_fetch_8'
u_atomic_test.c:(.text+0x26f0): undefined reference to `__sync_add_and_fetch_8'
u_atomic_test.c:(.text+0x2740): undefined reference to `__sync_add_and_fetch_8'
u_atomic_test.c:(.text+0x27e8): undefined reference to `__sync_sub_and_fetch_8'
u_atomic_test.c:(.text+0x284c): undefined reference to `__sync_sub_and_fetch_8'
/tmp//ccIl4d4c.o: In function `test_atomic_assign_int8_t':
u_atomic_test.c:(.text+0x29a8): undefined reference to
`__sync_val_compare_and_swap_1'
u_atomic_test.c:(.text+0x2a0c): undefined reference to
`__sync_val_compare_and_swap_1'
/tmp//ccIl4d4c.o: In function `test_atomic_8bits_int8_t':
u_atomic_test.c:(.text+0x2aa4): undefined reference to `__sync_add_and_fetch_1'
/tmp//ccIl4d4c.o: In function `test_atomic_assign_uint8_t':
u_atomic_test.c:(.text+0x2b5c): undefined reference to
`__sync_val_compare_and_swap_1'
u_atomic_test.c:(.text+0x2bb8): undefined reference to
`__sync_val_compare_and_swap_1'
/tmp//ccIl4d4c.o: In function `test_atomic_8bits_uint8_t':
u_atomic_test.c:(.text+0x2c54): undefined reference to `__sync_add_and_fetch_1'
/tmp//ccIl4d4c.o: In function `test_atomic_assign_bool':
u_atomic_test.c:(.text+0x2d20): undefined reference to
`__sync_val_compare_and_swap_1'
u_atomic_test.c:(.text+0x2d98): undefined reference to
`__sync_val_compare_and_swap_1'
collect2: ld returned 1 exit status

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20151124/21790adb/attachment-0001.html>


More information about the mesa-dev mailing list