Port: no symbols aliases on MacOS
authorMichael Jeanson <mjeanson@efficios.com>
Wed, 12 Dec 2018 20:01:37 +0000 (15:01 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 13 Dec 2018 01:49:21 +0000 (20:49 -0500)
There is no equivalent to symbols aliases on MacOS, this will
unfortunatly break the ABI for SONAME(6) and will require a rebuild of
client applications.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/urcu/flavor.h
src/urcu-bp.c
src/urcu-call-rcu-impl.h
src/urcu-defer-impl.h
src/urcu-qsbr.c
src/urcu-utils.h
src/urcu.c

index d2d19f6..93da38f 100644 (file)
@@ -79,9 +79,13 @@ const struct rcu_flavor_struct x = {                 \
 }
 
 #define DEFINE_RCU_FLAVOR_ALIAS(x, y) _DEFINE_RCU_FLAVOR_ALIAS(x, y)
+#ifdef __APPLE__
+#define _DEFINE_RCU_FLAVOR_ALIAS(x, y)
+#else
 #define _DEFINE_RCU_FLAVOR_ALIAS(x, y)                 \
 __attribute__((alias(#x)))                             \
 extern const struct rcu_flavor_struct y;
+#endif
 
 extern const struct rcu_flavor_struct rcu_flavor;
 
index 66c877a..0653f9d 100644 (file)
@@ -44,6 +44,7 @@
 #include <urcu/tls-compat.h>
 
 #include "urcu-die.h"
+#include "urcu-utils.h"
 
 #define URCU_API_MAP
 /* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */
@@ -143,14 +144,14 @@ static int initialized;
 static pthread_key_t urcu_bp_key;
 
 struct urcu_bp_gp urcu_bp_gp = { .ctr = URCU_BP_GP_COUNT };
-__attribute__((alias("urcu_bp_gp"))) extern struct urcu_bp_gp rcu_gp_bp;
+URCU_ATTR_ALIAS("urcu_bp_gp") extern struct urcu_bp_gp rcu_gp_bp;
 
 /*
  * Pointer to registry elements. Written to only by each individual reader. Read
  * by both the reader and the writers.
  */
 DEFINE_URCU_TLS(struct urcu_bp_reader *, urcu_bp_reader);
-__attribute__((alias("urcu_bp_reader")))
+URCU_ATTR_ALIAS("urcu_bp_reader")
 extern struct urcu_bp_reader *rcu_reader_bp;
 
 static CDS_LIST_HEAD(registry);
@@ -345,7 +346,7 @@ out:
        ret = pthread_sigmask(SIG_SETMASK, &oldmask, NULL);
        assert(!ret);
 }
-__attribute__((alias("urcu_bp_synchronize_rcu"))) void synchronize_rcu_bp();
+URCU_ATTR_ALIAS("urcu_bp_synchronize_rcu") void synchronize_rcu_bp();
 
 /*
  * library wrappers to be used by non-LGPL compatible source code.
@@ -355,19 +356,19 @@ void urcu_bp_read_lock(void)
 {
        _urcu_bp_read_lock();
 }
-__attribute__((alias("urcu_bp_read_lock"))) void rcu_read_lock_bp();
+URCU_ATTR_ALIAS("urcu_bp_read_lock") void rcu_read_lock_bp();
 
 void urcu_bp_read_unlock(void)
 {
        _urcu_bp_read_unlock();
 }
-__attribute__((alias("urcu_bp_read_unlock"))) void rcu_read_unlock_bp();
+URCU_ATTR_ALIAS("urcu_bp_read_unlock") void rcu_read_unlock_bp();
 
 int urcu_bp_read_ongoing(void)
 {
        return _urcu_bp_read_ongoing();
 }
-__attribute__((alias("urcu_bp_read_ongoing"))) int rcu_read_ongoing_bp();
+URCU_ATTR_ALIAS("urcu_bp_read_ongoing") int rcu_read_ongoing_bp();
 
 /*
  * Only grow for now. If empty, allocate a ARENA_INIT_ALLOC sized chunk.
@@ -563,7 +564,7 @@ end:
        if (ret)
                abort();
 }
-__attribute__((alias("urcu_bp_register"))) void rcu_bp_register();
+URCU_ATTR_ALIAS("urcu_bp_register") void rcu_bp_register();
 
 /* Disable signals, take mutex, remove from registry */
 static
@@ -689,7 +690,7 @@ void urcu_bp_before_fork(void)
        mutex_lock(&rcu_registry_lock);
        saved_fork_signal_mask = oldmask;
 }
-__attribute__((alias("urcu_bp_before_fork"))) void rcu_bp_before_fork();
+URCU_ATTR_ALIAS("urcu_bp_before_fork") void rcu_bp_before_fork();
 
 void urcu_bp_after_fork_parent(void)
 {
@@ -702,7 +703,7 @@ void urcu_bp_after_fork_parent(void)
        ret = pthread_sigmask(SIG_SETMASK, &oldmask, NULL);
        assert(!ret);
 }
-__attribute__((alias("urcu_bp_after_fork_parent")))
+URCU_ATTR_ALIAS("urcu_bp_after_fork_parent")
 void rcu_bp_after_fork_parent(void);
 
 /*
@@ -740,14 +741,14 @@ void urcu_bp_after_fork_child(void)
        ret = pthread_sigmask(SIG_SETMASK, &oldmask, NULL);
        assert(!ret);
 }
-__attribute__((alias("urcu_bp_after_fork_child")))
+URCU_ATTR_ALIAS("urcu_bp_after_fork_child")
 void rcu_bp_after_fork_child(void);
 
 void *urcu_bp_dereference_sym(void *p)
 {
        return _rcu_dereference(p);
 }
-__attribute__((alias("urcu_bp_dereference_sym")))
+URCU_ATTR_ALIAS("urcu_bp_dereference_sym")
 void *rcu_dereference_sym_bp();
 
 void *urcu_bp_set_pointer_sym(void **p, void *v)
@@ -756,7 +757,7 @@ void *urcu_bp_set_pointer_sym(void **p, void *v)
        uatomic_set(p, v);
        return v;
 }
-__attribute__((alias("urcu_bp_set_pointer_sym")))
+URCU_ATTR_ALIAS("urcu_bp_set_pointer_sym")
 void *rcu_set_pointer_sym_bp();
 
 void *urcu_bp_xchg_pointer_sym(void **p, void *v)
@@ -764,7 +765,7 @@ void *urcu_bp_xchg_pointer_sym(void **p, void *v)
        cmm_wmb();
        return uatomic_xchg(p, v);
 }
-__attribute__((alias("urcu_bp_xchg_pointer_sym")))
+URCU_ATTR_ALIAS("urcu_bp_xchg_pointer_sym")
 void *rcu_xchg_pointer_sym_bp();
 
 void *urcu_bp_cmpxchg_pointer_sym(void **p, void *old, void *_new)
@@ -772,7 +773,7 @@ void *urcu_bp_cmpxchg_pointer_sym(void **p, void *old, void *_new)
        cmm_wmb();
        return uatomic_cmpxchg(p, old, _new);
 }
-__attribute__((alias("urcu_bp_cmpxchg_pointer_sym")))
+URCU_ATTR_ALIAS("urcu_bp_cmpxchg_pointer_sym")
 void *rcu_cmpxchg_pointer_sym_bp();
 
 DEFINE_RCU_FLAVOR(rcu_flavor);
index f7844cc..b6ec6ba 100644 (file)
@@ -465,7 +465,7 @@ struct call_rcu_data *get_cpu_call_rcu_data(int cpu)
                return NULL;
        return rcu_dereference(pcpu_crdp[cpu]);
 }
-__attribute__((alias(urcu_stringify(get_cpu_call_rcu_data))))
+URCU_ATTR_ALIAS(urcu_stringify(get_cpu_call_rcu_data))
 struct call_rcu_data *alias_get_cpu_call_rcu_data();
 
 /*
@@ -477,7 +477,7 @@ pthread_t get_call_rcu_thread(struct call_rcu_data *crdp)
 {
        return crdp->tid;
 }
-__attribute__((alias(urcu_stringify(get_call_rcu_thread))))
+URCU_ATTR_ALIAS(urcu_stringify(get_call_rcu_thread))
 pthread_t alias_get_call_rcu_thread();
 
 /*
@@ -493,7 +493,7 @@ static struct call_rcu_data *__create_call_rcu_data(unsigned long flags,
        return crdp;
 }
 
-__attribute__((alias(urcu_stringify(create_call_rcu_data))))
+URCU_ATTR_ALIAS(urcu_stringify(create_call_rcu_data))
 struct call_rcu_data *alias_create_call_rcu_data();
 struct call_rcu_data *create_call_rcu_data(unsigned long flags,
                                           int cpu_affinity)
@@ -551,7 +551,7 @@ int set_cpu_call_rcu_data(int cpu, struct call_rcu_data *crdp)
        call_rcu_unlock(&call_rcu_mutex);
        return 0;
 }
-__attribute__((alias(urcu_stringify(set_cpu_call_rcu_data))))
+URCU_ATTR_ALIAS(urcu_stringify(set_cpu_call_rcu_data))
 int alias_set_cpu_call_rcu_data();
 
 /*
@@ -573,7 +573,7 @@ struct call_rcu_data *get_default_call_rcu_data(void)
        call_rcu_unlock(&call_rcu_mutex);
        return default_call_rcu_data;
 }
-__attribute__((alias(urcu_stringify(get_default_call_rcu_data))))
+URCU_ATTR_ALIAS(urcu_stringify(get_default_call_rcu_data))
 struct call_rcu_data *alias_get_default_call_rcu_data();
 
 /*
@@ -602,7 +602,7 @@ struct call_rcu_data *get_call_rcu_data(void)
 
        return get_default_call_rcu_data();
 }
-__attribute__((alias(urcu_stringify(get_call_rcu_data))))
+URCU_ATTR_ALIAS(urcu_stringify(get_call_rcu_data))
 struct call_rcu_data *alias_get_call_rcu_data();
 
 /*
@@ -613,7 +613,7 @@ struct call_rcu_data *get_thread_call_rcu_data(void)
 {
        return URCU_TLS(thread_call_rcu_data);
 }
-__attribute__((alias(urcu_stringify(get_thread_call_rcu_data))))
+URCU_ATTR_ALIAS(urcu_stringify(get_thread_call_rcu_data))
 struct call_rcu_data *alias_get_thread_call_rcu_data();
 
 /*
@@ -631,7 +631,7 @@ void set_thread_call_rcu_data(struct call_rcu_data *crdp)
 {
        URCU_TLS(thread_call_rcu_data) = crdp;
 }
-__attribute__((alias(urcu_stringify(set_thread_call_rcu_data))))
+URCU_ATTR_ALIAS(urcu_stringify(set_thread_call_rcu_data))
 void alias_set_thread_call_rcu_data();
 
 /*
@@ -684,7 +684,7 @@ int create_all_cpu_call_rcu_data(unsigned long flags)
        }
        return 0;
 }
-__attribute__((alias(urcu_stringify(create_all_cpu_call_rcu_data))))
+URCU_ATTR_ALIAS(urcu_stringify(create_all_cpu_call_rcu_data))
 int alias_create_all_cpu_call_rcu_data();
 
 /*
@@ -733,7 +733,7 @@ void call_rcu(struct rcu_head *head,
        _call_rcu(head, func, crdp);
        _rcu_read_unlock();
 }
-__attribute__((alias(urcu_stringify(call_rcu)))) void alias_call_rcu();
+URCU_ATTR_ALIAS(urcu_stringify(call_rcu)) void alias_call_rcu();
 
 /*
  * Free up the specified call_rcu_data structure, terminating the
@@ -789,7 +789,7 @@ void call_rcu_data_free(struct call_rcu_data *crdp)
 
        free(crdp);
 }
-__attribute__((alias(urcu_stringify(call_rcu_data_free))))
+URCU_ATTR_ALIAS(urcu_stringify(call_rcu_data_free))
 void alias_call_rcu_data_free();
 
 /*
@@ -834,11 +834,11 @@ void free_all_cpu_call_rcu_data(void)
 #ifdef RCU_QSBR
 /* ABI6 has a non-namespaced free_all_cpu_call_rcu_data for qsbr */
 #undef free_all_cpu_call_rcu_data
-__attribute__((alias("urcu_qsbr_free_all_cpu_call_rcu_data")))
+URCU_ATTR_ALIAS("urcu_qsbr_free_all_cpu_call_rcu_data")
 void free_all_cpu_call_rcu_data();
 #define free_all_cpu_call_rcu_data urcu_qsbr_free_all_cpu_call_rcu_data
 #else
-__attribute__((alias(urcu_stringify(free_all_cpu_call_rcu_data))))
+URCU_ATTR_ALIAS(urcu_stringify(free_all_cpu_call_rcu_data))
 void alias_free_all_cpu_call_rcu_data();
 #endif
 
@@ -932,7 +932,7 @@ online:
        if (was_online)
                rcu_thread_online();
 }
-__attribute__((alias(urcu_stringify(rcu_barrier))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_barrier))
 void alias_rcu_barrier();
 
 /*
@@ -962,7 +962,7 @@ void call_rcu_before_fork(void)
                        (void) poll(NULL, 0, 1);
        }
 }
-__attribute__((alias(urcu_stringify(call_rcu_before_fork))))
+URCU_ATTR_ALIAS(urcu_stringify(call_rcu_before_fork))
 void alias_call_rcu_before_fork();
 
 /*
@@ -986,7 +986,7 @@ void call_rcu_after_fork_parent(void)
                atfork->after_fork_parent(atfork->priv);
        call_rcu_unlock(&call_rcu_mutex);
 }
-__attribute__((alias(urcu_stringify(call_rcu_after_fork_parent))))
+URCU_ATTR_ALIAS(urcu_stringify(call_rcu_after_fork_parent))
 void alias_call_rcu_after_fork_parent();
 
 /*
@@ -1035,7 +1035,7 @@ void call_rcu_after_fork_child(void)
                call_rcu_data_free(crdp);
        }
 }
-__attribute__((alias(urcu_stringify(call_rcu_after_fork_child))))
+URCU_ATTR_ALIAS(urcu_stringify(call_rcu_after_fork_child))
 void alias_call_rcu_after_fork_child();
 
 void urcu_register_rculfhash_atfork(struct urcu_atfork *atfork)
@@ -1047,7 +1047,7 @@ void urcu_register_rculfhash_atfork(struct urcu_atfork *atfork)
 end:
        call_rcu_unlock(&call_rcu_mutex);
 }
-__attribute__((alias(urcu_stringify(urcu_register_rculfhash_atfork))))
+URCU_ATTR_ALIAS(urcu_stringify(urcu_register_rculfhash_atfork))
 void alias_urcu_register_rculfhash_atfork();
 
 void urcu_unregister_rculfhash_atfork(struct urcu_atfork *atfork)
@@ -1059,5 +1059,5 @@ void urcu_unregister_rculfhash_atfork(struct urcu_atfork *atfork)
 end:
        call_rcu_unlock(&call_rcu_mutex);
 }
-__attribute__((alias(urcu_stringify(urcu_unregister_rculfhash_atfork))))
+URCU_ATTR_ALIAS(urcu_stringify(urcu_unregister_rculfhash_atfork))
 void alias_urcu_unregister_rculfhash_atfork();
index 58ca1ab..b34a1a1 100644 (file)
@@ -265,7 +265,7 @@ void rcu_defer_barrier_thread(void)
        _rcu_defer_barrier_thread();
        mutex_unlock(&rcu_defer_mutex);
 }
-__attribute__((alias(urcu_stringify(rcu_defer_barrier_thread))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_defer_barrier_thread))
 void alias_rcu_defer_barrier_thread();
 
 /*
@@ -307,7 +307,7 @@ void rcu_defer_barrier(void)
 end:
        mutex_unlock(&rcu_defer_mutex);
 }
-__attribute__((alias(urcu_stringify(rcu_defer_barrier))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_defer_barrier))
 void alias_rcu_defer_barrier();
 
 /*
@@ -401,7 +401,7 @@ void defer_rcu(void (*fct)(void *p), void *p)
 {
        _defer_rcu(fct, p);
 }
-__attribute__((alias(urcu_stringify(defer_rcu)))) void alias_defer_rcu();
+URCU_ATTR_ALIAS(urcu_stringify(defer_rcu)) void alias_defer_rcu();
 
 static void start_defer_thread(void)
 {
@@ -450,7 +450,7 @@ int rcu_defer_register_thread(void)
        mutex_unlock(&defer_thread_mutex);
        return 0;
 }
-__attribute__((alias(urcu_stringify(rcu_defer_register_thread))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_defer_register_thread))
 int alias_rcu_defer_register_thread();
 
 void rcu_defer_unregister_thread(void)
@@ -470,14 +470,14 @@ void rcu_defer_unregister_thread(void)
                stop_defer_thread();
        mutex_unlock(&defer_thread_mutex);
 }
-__attribute__((alias(urcu_stringify(rcu_defer_unregister_thread))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_defer_unregister_thread))
 void alias_rcu_defer_unregister_thread();
 
 void rcu_defer_exit(void)
 {
        assert(cds_list_empty(&registry_defer));
 }
-__attribute__((alias(urcu_stringify(rcu_defer_exit))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_defer_exit))
 void alias_rcu_defer_exit();
 
 #endif /* _URCU_DEFER_IMPL_H */
index 346748b..6ff933a 100644 (file)
@@ -43,6 +43,7 @@
 
 #include "urcu-die.h"
 #include "urcu-wait.h"
+#include "urcu-utils.h"
 
 #define URCU_API_MAP
 /* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */
@@ -68,7 +69,7 @@ static pthread_mutex_t rcu_gp_lock = PTHREAD_MUTEX_INITIALIZER;
  */
 static pthread_mutex_t rcu_registry_lock = PTHREAD_MUTEX_INITIALIZER;
 struct urcu_gp urcu_qsbr_gp = { .ctr = URCU_QSBR_GP_ONLINE };
-__attribute__((alias("urcu_qsbr_gp"))) extern struct urcu_gp rcu_gp_qsbr;
+URCU_ATTR_ALIAS("urcu_qsbr_gp") extern struct urcu_gp rcu_gp_qsbr;
 
 /*
  * Active attempts to check for reader Q.S. before calling futex().
@@ -80,7 +81,7 @@ __attribute__((alias("urcu_qsbr_gp"))) extern struct urcu_gp rcu_gp_qsbr;
  * writers.
  */
 DEFINE_URCU_TLS(struct urcu_qsbr_reader, urcu_qsbr_reader);
-__attribute__((alias("urcu_qsbr_reader")))
+URCU_ATTR_ALIAS("urcu_qsbr_reader")
 extern struct urcu_qsbr_reader rcu_reader_qsbr;
 
 static CDS_LIST_HEAD(registry);
@@ -430,7 +431,7 @@ gp_end:
                cmm_smp_mb();
 }
 #endif  /* !(CAA_BITS_PER_LONG < 64) */
-__attribute__((alias("urcu_qsbr_synchronize_rcu")))
+URCU_ATTR_ALIAS("urcu_qsbr_synchronize_rcu")
 void synchronize_rcu_qsbr();
 
 /*
@@ -441,40 +442,40 @@ void urcu_qsbr_read_lock(void)
 {
        _urcu_qsbr_read_lock();
 }
-__attribute__((alias("urcu_qsbr_read_lock"))) void rcu_read_lock_qsbr();
+URCU_ATTR_ALIAS("urcu_qsbr_read_lock") void rcu_read_lock_qsbr();
 
 void urcu_qsbr_read_unlock(void)
 {
        _urcu_qsbr_read_unlock();
 }
-__attribute__((alias("urcu_qsbr_read_unlock"))) void rcu_read_unlock_qsbr();
+URCU_ATTR_ALIAS("urcu_qsbr_read_unlock") void rcu_read_unlock_qsbr();
 
 int urcu_qsbr_read_ongoing(void)
 {
        return _urcu_qsbr_read_ongoing();
 }
-__attribute__((alias("urcu_qsbr_read_ongoing")))
+URCU_ATTR_ALIAS("urcu_qsbr_read_ongoing")
 void rcu_read_ongoing_qsbr();
 
 void urcu_qsbr_quiescent_state(void)
 {
        _urcu_qsbr_quiescent_state();
 }
-__attribute__((alias("urcu_qsbr_quiescent_state")))
+URCU_ATTR_ALIAS("urcu_qsbr_quiescent_state")
 void rcu_quiescent_state_qsbr();
 
 void urcu_qsbr_thread_offline(void)
 {
        _urcu_qsbr_thread_offline();
 }
-__attribute__((alias("urcu_qsbr_thread_offline")))
+URCU_ATTR_ALIAS("urcu_qsbr_thread_offline")
 void rcu_thread_offline_qsbr();
 
 void urcu_qsbr_thread_online(void)
 {
        _urcu_qsbr_thread_online();
 }
-__attribute__((alias("urcu_qsbr_thread_online")))
+URCU_ATTR_ALIAS("urcu_qsbr_thread_online")
 void rcu_thread_online_qsbr();
 
 void urcu_qsbr_register_thread(void)
@@ -489,7 +490,7 @@ void urcu_qsbr_register_thread(void)
        mutex_unlock(&rcu_registry_lock);
        _urcu_qsbr_thread_online();
 }
-__attribute__((alias("urcu_qsbr_register_thread")))
+URCU_ATTR_ALIAS("urcu_qsbr_register_thread")
 void rcu_register_thread_qsbr();
 
 void urcu_qsbr_unregister_thread(void)
@@ -505,7 +506,7 @@ void urcu_qsbr_unregister_thread(void)
        cds_list_del(&URCU_TLS(urcu_qsbr_reader).node);
        mutex_unlock(&rcu_registry_lock);
 }
-__attribute__((alias("urcu_qsbr_unregister_thread")))
+URCU_ATTR_ALIAS("urcu_qsbr_unregister_thread")
 void rcu_unregister_thread_qsbr();
 
 void urcu_qsbr_exit(void)
@@ -516,7 +517,7 @@ void urcu_qsbr_exit(void)
         * assert(cds_list_empty(&registry));
         */
 }
-__attribute__((alias("urcu_qsbr_exit"))) void rcu_exit_qsbr();
+URCU_ATTR_ALIAS("urcu_qsbr_exit") void rcu_exit_qsbr();
 
 DEFINE_RCU_FLAVOR(rcu_flavor);
 DEFINE_RCU_FLAVOR_ALIAS(rcu_flavor, alias_rcu_flavor);
index 1d91bc9..3c3c7a1 100644 (file)
 #define urcu_stringify(a) _urcu_stringify(a)
 #define _urcu_stringify(a) #a
 
+/* There is no concept of symbol aliases on MacOS */
+#ifdef __APPLE__
+#define URCU_ATTR_ALIAS(x)
+#else
+#define URCU_ATTR_ALIAS(x) __attribute__((alias(x)))
+#endif
+
 #endif /* _URCU_UTILS_H */
index c36119a..c4e2dde 100644 (file)
@@ -92,7 +92,7 @@ static int urcu_memb_has_sys_membarrier_private_expedited;
  * uninitialized variable.
  */
 int urcu_memb_has_sys_membarrier = 0;
-__attribute__((alias("urcu_memb_has_sys_membarrier")))
+URCU_ATTR_ALIAS("urcu_memb_has_sys_membarrier")
 extern int rcu_has_sys_membarrier_memb;
 #endif
 
@@ -103,7 +103,7 @@ void __attribute__((constructor)) rcu_init(void);
 void rcu_init(void)
 {
 }
-__attribute__((alias(urcu_stringify(rcu_init))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_init))
 void alias_rcu_init(void);
 #endif
 
@@ -130,7 +130,7 @@ static pthread_mutex_t rcu_gp_lock = PTHREAD_MUTEX_INITIALIZER;
  */
 static pthread_mutex_t rcu_registry_lock = PTHREAD_MUTEX_INITIALIZER;
 struct urcu_gp rcu_gp = { .ctr = URCU_GP_COUNT };
-__attribute__((alias(urcu_stringify(rcu_gp))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_gp))
 extern struct urcu_gp alias_rcu_gp;
 
 /*
@@ -138,7 +138,7 @@ extern struct urcu_gp alias_rcu_gp;
  * writers.
  */
 DEFINE_URCU_TLS(struct urcu_reader, rcu_reader);
-__attribute__((alias(urcu_stringify(rcu_reader))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_reader))
 extern struct urcu_reader alias_rcu_reader;
 
 static CDS_LIST_HEAD(registry);
@@ -515,7 +515,7 @@ out:
         */
        urcu_wake_all_waiters(&waiters);
 }
-__attribute__((alias(urcu_stringify(synchronize_rcu))))
+URCU_ATTR_ALIAS(urcu_stringify(synchronize_rcu))
 void alias_synchronize_rcu();
 
 /*
@@ -526,21 +526,21 @@ void rcu_read_lock(void)
 {
        _rcu_read_lock();
 }
-__attribute__((alias(urcu_stringify(rcu_read_lock))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_read_lock))
 void alias_rcu_read_lock();
 
 void rcu_read_unlock(void)
 {
        _rcu_read_unlock();
 }
-__attribute__((alias(urcu_stringify(rcu_read_unlock))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_read_unlock))
 void alias_rcu_read_unlock();
 
 int rcu_read_ongoing(void)
 {
        return _rcu_read_ongoing();
 }
-__attribute__((alias(urcu_stringify(rcu_read_ongoing))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_read_ongoing))
 void alias_rcu_read_ongoing();
 
 void rcu_register_thread(void)
@@ -556,7 +556,7 @@ void rcu_register_thread(void)
        cds_list_add(&URCU_TLS(rcu_reader).node, &registry);
        mutex_unlock(&rcu_registry_lock);
 }
-__attribute__((alias(urcu_stringify(rcu_register_thread))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_register_thread))
 void alias_rcu_register_thread();
 
 void rcu_unregister_thread(void)
@@ -567,7 +567,7 @@ void rcu_unregister_thread(void)
        cds_list_del(&URCU_TLS(rcu_reader).node);
        mutex_unlock(&rcu_registry_lock);
 }
-__attribute__((alias(urcu_stringify(rcu_unregister_thread))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_unregister_thread))
 void alias_rcu_unregister_thread();
 
 #ifdef RCU_MEMBARRIER
@@ -616,7 +616,7 @@ void rcu_init(void)
        init_done = 1;
        rcu_sys_membarrier_init();
 }
-__attribute__((alias(urcu_stringify(rcu_init))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_init))
 void alias_rcu_init(void);
 #endif
 
@@ -657,7 +657,7 @@ void rcu_init(void)
        if (ret)
                urcu_die(errno);
 }
-__attribute__((alias(urcu_stringify(rcu_init))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_init))
 void alias_rcu_init(void);
 
 void rcu_exit(void)
@@ -671,7 +671,7 @@ void rcu_exit(void)
         * assert(cds_list_empty(&registry));
         */
 }
-__attribute__((alias(urcu_stringify(rcu_exit))))
+URCU_ATTR_ALIAS(urcu_stringify(rcu_exit))
 void alias_rcu_exit(void);
 
 #endif /* #ifdef RCU_SIGNAL */
This page took 0.051012 seconds and 4 git commands to generate.