This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit e0733f6becb7d9958ff0419569fb44944713578a
Author: zhangyu117 <[email protected]>
AuthorDate: Sat Oct 31 19:58:22 2026 +0800

    compiler.h: use the TASKING __c11_atomic_fetch_* builtins
    
    Commit 95fe3e8680b ("nuttx/atomic.h: use _Atomic define atomic_t.")
    turned the TASKING atomic wrappers into macros, but mapped the
    fetch-and-modify operations to __c11_atomic_add/sub/and/or/xor, which
    are not TASKING builtins.  cctc only warns about the implicit
    declarations and the link then fails:
    
      ltc E106: unresolved external: __c11_atomic_add - (...)
    
    TASKING provides __c11_atomic_fetch_add/sub/and/or/xor, as used before
    that commit, switch back to them.
    
    Signed-off-by: zhangyu117 <[email protected]>
---
 include/nuttx/compiler.h | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/include/nuttx/compiler.h b/include/nuttx/compiler.h
index b9fbd1afa4d..a44a84899cd 100644
--- a/include/nuttx/compiler.h
+++ b/include/nuttx/compiler.h
@@ -1488,16 +1488,16 @@
 #    define atomic_store_8(obj, val, memorder)     __c11_atomic_store(obj, 
val, memorder)
 #    define atomic_load_4(obj, memorder)           __c11_atomic_load(obj, 
memorder)
 #    define atomic_load_8(obj, memorder)           __c11_atomic_load(obj, 
memorder)
-#    define atomic_fetch_add_4(obj, val, memorder) __c11_atomic_add(obj, val, 
memorder)
-#    define atomic_fetch_add_8(obj, val, memorder) __c11_atomic_add(obj, val, 
memorder)
-#    define atomic_fetch_sub_4(obj, val, memorder) __c11_atomic_sub(obj, val, 
memorder)
-#    define atomic_fetch_sub_8(obj, val, memorder) __c11_atomic_sub(obj, val, 
memorder)
-#    define atomic_fetch_and_4(obj, val, memorder) __c11_atomic_and(obj, val, 
memorder)
-#    define atomic_fetch_and_8(obj, val, memorder) __c11_atomic_and(obj, val, 
memorder)
-#    define atomic_fetch_or_4(obj, val, memorder)  __c11_atomic_or(obj, val, 
memorder)
-#    define atomic_fetch_or_8(obj, val, memorder)  __c11_atomic_or(obj, val, 
memorder)
-#    define atomic_fetch_xor_4(obj, val, memorder) __c11_atomic_xor(obj, val, 
memorder)
-#    define atomic_fetch_xor_8(obj, val, memorder) __c11_atomic_xor(obj, val, 
memorder)
+#    define atomic_fetch_add_4(obj, val, memorder) __c11_atomic_fetch_add(obj, 
val, memorder)
+#    define atomic_fetch_add_8(obj, val, memorder) __c11_atomic_fetch_add(obj, 
val, memorder)
+#    define atomic_fetch_sub_4(obj, val, memorder) __c11_atomic_fetch_sub(obj, 
val, memorder)
+#    define atomic_fetch_sub_8(obj, val, memorder) __c11_atomic_fetch_sub(obj, 
val, memorder)
+#    define atomic_fetch_and_4(obj, val, memorder) __c11_atomic_fetch_and(obj, 
val, memorder)
+#    define atomic_fetch_and_8(obj, val, memorder) __c11_atomic_fetch_and(obj, 
val, memorder)
+#    define atomic_fetch_or_4(obj, val, memorder)  __c11_atomic_fetch_or(obj, 
val, memorder)
+#    define atomic_fetch_or_8(obj, val, memorder)  __c11_atomic_fetch_or(obj, 
val, memorder)
+#    define atomic_fetch_xor_4(obj, val, memorder) __c11_atomic_fetch_xor(obj, 
val, memorder)
+#    define atomic_fetch_xor_8(obj, val, memorder) __c11_atomic_fetch_xor(obj, 
val, memorder)
 #    define atomic_exchange_4(obj, val, memorder)  __c11_atomic_exchange(obj, 
val, memorder)
 #    define atomic_exchange_8(obj, val, memorder)  __c11_atomic_exchange(obj, 
val, memorder)
 #    define atomic_compare_exchange_4(obj, expected, desired, weak, success, 
failure) \

Reply via email to