Module: xenomai-forge
Branch: next
Commit: 44d83a876f0fdb3eb2f150f7b2fcf2821e479e12
URL:    
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=44d83a876f0fdb3eb2f150f7b2fcf2821e479e12

Author: Philippe Gerum <r...@xenomai.org>
Date:   Tue Jul  1 21:23:52 2014 +0200

boilerplate: introduce __weak annotation

---

 include/boilerplate/compiler.h   |    4 ++
 lib/boilerplate/ancillaries.c    |    8 +--
 lib/cobalt/arch/nios2/features.c |    3 +-
 lib/cobalt/arch/sh/features.c    |    7 +--
 lib/cobalt/init.c                |    6 +-
 lib/cobalt/printf.c              |    4 +-
 lib/cobalt/wrappers.c            |  117 +++++++++++++++++++-------------------
 lib/copperplate/wrappers.c       |    4 +-
 lib/psos/task.c                  |    6 +-
 lib/vxworks/taskLib.c            |    6 +-
 10 files changed, 81 insertions(+), 84 deletions(-)

diff --git a/include/boilerplate/compiler.h b/include/boilerplate/compiler.h
index f73b326..2ee52b1 100644
--- a/include/boilerplate/compiler.h
+++ b/include/boilerplate/compiler.h
@@ -39,4 +39,8 @@
 #define __must_check   __attribute__((__warn_unused_result__))
 #endif
 
+#ifndef __weak
+#define __weak         __attribute__((__weak__))
+#endif
+
 #endif /* _BOILERPLATE_COMPILER_H */
diff --git a/lib/boilerplate/ancillaries.c b/lib/boilerplate/ancillaries.c
index 4e25fbb..09b88d9 100644
--- a/lib/boilerplate/ancillaries.c
+++ b/lib/boilerplate/ancillaries.c
@@ -81,8 +81,7 @@ void __panic(const char *name, const char *fmt, va_list ap)
        exit(1);
 }
 
-__attribute__ ((weak))
-void error_hook(struct error_frame *ef) /* NULL in non-debug mode */
+__weak void error_hook(struct error_frame *ef) /* NULL in non-debug mode */
 {
 }
 
@@ -213,13 +212,12 @@ char *generate_name(char *buf, const char *radix,
  * pointer validation in their own context (e.g. copperplate).
  */
 
-__attribute__ ((weak))
-int pshared_check(void *heap, void *addr)
+__weak int pshared_check(void *heap, void *addr)
 {
        return 1;
 }
 
-__attribute__ ((weak)) void *__main_heap = NULL;
+__weak void *__main_heap = NULL;
 
 #endif /* !CONFIG_XENO_PSHARED */
 
diff --git a/lib/cobalt/arch/nios2/features.c b/lib/cobalt/arch/nios2/features.c
index 009d777..dd5838d 100644
--- a/lib/cobalt/arch/nios2/features.c
+++ b/lib/cobalt/arch/nios2/features.c
@@ -26,9 +26,10 @@
 #include <cobalt/wrappers.h>
 #include <asm/xenomai/features.h>
 #include <asm/xenomai/uapi/fptest.h>
+#include <boilerplate/compiler.h>
 #include "internal.h"
 
-__attribute__((weak)) volatile void *__cobalt_nios2_hrclock = NULL;
+__weak volatile void *__cobalt_nios2_hrclock = NULL;
 
 void cobalt_check_features(struct xnfeatinfo *finfo)
 {
diff --git a/lib/cobalt/arch/sh/features.c b/lib/cobalt/arch/sh/features.c
index e5104aa..38983f0 100644
--- a/lib/cobalt/arch/sh/features.c
+++ b/lib/cobalt/arch/sh/features.c
@@ -26,15 +26,14 @@
 #include <limits.h>
 #include <cobalt/wrappers.h>
 #include <asm/xenomai/uapi/features.h>
+#include <boilerplate/compiler.h>
 #include "internal.h"
 
 struct xnarch_tsc_area;
 
-__attribute__((weak))
-volatile struct xnarch_tsc_area *__cobalt_sh_tsc = NULL;
+__weak volatile struct xnarch_tsc_area *__cobalt_sh_tsc = NULL;
 
-__attribute__((weak))
-volatile unsigned long *__cobalt_sh_tcnt = NULL;
+__weak volatile unsigned long *__cobalt_sh_tcnt = NULL;
 
 static volatile void *map_kmem(unsigned long pa, unsigned int pagesz)
 {
diff --git a/lib/cobalt/init.c b/lib/cobalt/init.c
index 899f4d9..f00733d 100644
--- a/lib/cobalt/init.c
+++ b/lib/cobalt/init.c
@@ -44,11 +44,9 @@
  * Single Unix specification</a> over the Cobalt core.
  */
 
-__attribute__ ((weak))
-int __cobalt_defer_init = 0;
+__weak int __cobalt_defer_init = 0;
 
-__attribute__ ((weak))
-int __cobalt_main_prio = -1;
+__weak int __cobalt_main_prio = -1;
 
 int __cobalt_muxid = -1;
 
diff --git a/lib/cobalt/printf.c b/lib/cobalt/printf.c
index ba75ef5..32fdfd5 100644
--- a/lib/cobalt/printf.c
+++ b/lib/cobalt/printf.c
@@ -27,6 +27,7 @@
 #include <unistd.h>
 #include <syslog.h>
 #include <nocore/atomic.h>
+#include <boilerplate/compiler.h>
 #include "current.h"
 #include "internal.h"
 
@@ -71,8 +72,7 @@ struct print_buffer {
        off_t read_pos;
 };
 
-__attribute__ ((weak))
-int __cobalt_print_bufsz = RT_PRINT_DEFAULT_BUFFER;
+__weak int __cobalt_print_bufsz = RT_PRINT_DEFAULT_BUFFER;
 
 static struct print_buffer *first_buffer;
 static int buffers;
diff --git a/lib/cobalt/wrappers.c b/lib/cobalt/wrappers.c
index 55e120d..6fbdab4 100644
--- a/lib/cobalt/wrappers.c
+++ b/lib/cobalt/wrappers.c
@@ -41,42 +41,43 @@
 #include <memory.h>
 #include <unistd.h>
 #include <malloc.h>
+#include <boilerplate/compiler.h>
 
 /* sched */
-__attribute__ ((weak))
+__weak
 int __real_pthread_setschedparam(pthread_t thread,
                                 int policy, const struct sched_param *param)
 {
        return pthread_setschedparam(thread, policy, param);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_pthread_getschedparam(pthread_t thread,
                                 int *policy, struct sched_param *param)
 {
        return pthread_getschedparam(thread, policy, param);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_sched_yield(void)
 {
        return sched_yield();
 }
 
-__attribute__ ((weak))
+__weak
 int __real_sched_get_priority_min(int policy)
 {
        return sched_get_priority_min(policy);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_sched_get_priority_max(int policy)
 {
        return sched_get_priority_max(policy);
 }
 
 /* pthread */
-__attribute__ ((weak))
+__weak
 int __real_pthread_create(pthread_t *ptid_r,
                          const pthread_attr_t * attr,
                          void *(*start) (void *), void *arg)
@@ -84,45 +85,45 @@ int __real_pthread_create(pthread_t *ptid_r,
        return pthread_create(ptid_r, attr, start, arg);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_pthread_kill(pthread_t ptid, int sig)
 {
        return pthread_kill(ptid, sig);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_pthread_join(pthread_t ptid, void **retval)
 {
        return pthread_join(ptid, retval);
 }
 
 /* semaphores */
-__attribute__ ((weak))
+__weak
 int __real_sem_init(sem_t * sem, int pshared, unsigned value)
 {
        return sem_init(sem, pshared, value);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_sem_destroy(sem_t * sem)
 {
        return sem_destroy(sem);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_sem_post(sem_t * sem)
 {
        return sem_post(sem);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_sem_wait(sem_t * sem)
 {
        return sem_wait(sem);
 }
 
 /* rtdm */
-__attribute__ ((weak))
+__weak
 int __real_open(const char *path, int oflag, ...)
 {
        va_list ap;
@@ -137,19 +138,19 @@ int __real_open(const char *path, int oflag, ...)
                return open(path, oflag);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_socket(int protocol_family, int socket_type, int protocol)
 {
        return socket(protocol_family, socket_type, protocol);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_close(int fd)
 {
        return close(fd);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_ioctl(int fd, unsigned long int request, ...)
 {
        va_list ap;
@@ -162,113 +163,113 @@ int __real_ioctl(int fd, unsigned long int request, ...)
        return ioctl(fd, request, arg);
 }
 
-__attribute__ ((weak))
+__weak
 ssize_t __real_read(int fd, void *buf, size_t nbyte)
 {
        return read(fd, buf, nbyte);
 }
 
-__attribute__ ((weak))
+__weak
 ssize_t __real_write(int fd, const void *buf, size_t nbyte)
 {
        return write(fd, buf, nbyte);
 }
 
-__attribute__ ((weak))
+__weak
 ssize_t __real_recvmsg(int fd, struct msghdr * msg, int flags)
 {
        return recvmsg(fd, msg, flags);
 }
 
-__attribute__ ((weak))
+__weak
 ssize_t __real_sendmsg(int fd, const struct msghdr * msg, int flags)
 {
        return sendmsg(fd, msg, flags);
 }
 
-__attribute__ ((weak))
+__weak
 ssize_t __real_recvfrom(int fd, void *buf, size_t len, int flags,
                        struct sockaddr * from, socklen_t * fromlen)
 {
        return recvfrom(fd, buf, len, flags, from, fromlen);
 }
 
-__attribute__ ((weak))
+__weak
 ssize_t __real_sendto(int fd, const void *buf, size_t len, int flags,
                      const struct sockaddr * to, socklen_t tolen)
 {
        return sendto(fd, buf, len, flags, to, tolen);
 }
 
-__attribute__ ((weak))
+__weak
 ssize_t __real_recv(int fd, void *buf, size_t len, int flags)
 {
        return recv(fd, buf, len, flags);
 }
 
-__attribute__ ((weak))
+__weak
 ssize_t __real_send(int fd, const void *buf, size_t len, int flags)
 {
        return send(fd, buf, len, flags);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_getsockopt(int fd, int level, int optname, void *optval,
                      socklen_t * optlen)
 {
        return getsockopt(fd, level, optname, optval, optlen);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_setsockopt(int fd, int level, int optname, const void *optval,
                      socklen_t optlen)
 {
        return setsockopt(fd, level, optname, optval, optlen);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_bind(int fd, const struct sockaddr *my_addr, socklen_t addrlen)
 {
        return bind(fd, my_addr, addrlen);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_connect(int fd, const struct sockaddr *serv_addr, socklen_t addrlen)
 {
        return connect(fd, serv_addr, addrlen);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_listen(int fd, int backlog)
 {
        return listen(fd, backlog);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_accept(int fd, struct sockaddr *addr, socklen_t * addrlen)
 {
        return accept(fd, addr, addrlen);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_getsockname(int fd, struct sockaddr *name, socklen_t * namelen)
 {
        return getsockname(fd, name, namelen);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_getpeername(int fd, struct sockaddr *name, socklen_t * namelen)
 {
        return getpeername(fd, name, namelen);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_shutdown(int fd, int how)
 {
        return shutdown(fd, how);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_select (int __nfds, fd_set *__restrict __readfds,
                   fd_set *__restrict __writefds,
                   fd_set *__restrict __exceptfds,
@@ -277,19 +278,19 @@ int __real_select (int __nfds, fd_set *__restrict 
__readfds,
        return select(__nfds, __readfds, __writefds, __exceptfds, __timeout);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_vfprintf(FILE *stream, const char *fmt, va_list args)
 {
        return vfprintf(stream, fmt, args);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_vprintf(const char *fmt, va_list args)
 {
        return vprintf(fmt, args);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_fprintf(FILE *stream, const char *fmt, ...)
 {
        va_list args;
@@ -302,7 +303,7 @@ int __real_fprintf(FILE *stream, const char *fmt, ...)
        return rc;
 }
 
-__attribute__ ((weak))
+__weak
 int __real_printf(const char *fmt, ...)
 {
        va_list args;
@@ -317,13 +318,13 @@ int __real_printf(const char *fmt, ...)
 
 #ifdef CONFIG_XENO_FORTIFY
 
-__attribute__ ((weak))
+__weak
 int __real___vfprintf_chk(FILE *stream, int level, const char *fmt, va_list ap)
 {
        return __vfprintf_chk(stream, level, fmt, ap);
 }
 
-__attribute__ ((weak))
+__weak
 void __real___vsyslog_chk(int priority, int level, const char *fmt, va_list ap)
 {
        extern void __vsyslog_chk(int, int, const char *, va_list);
@@ -333,13 +334,13 @@ void __real___vsyslog_chk(int priority, int level, const 
char *fmt, va_list ap)
 
 #endif
 
-__attribute__ ((weak))
+__weak
 int __real_puts(const char *s)
 {
        return puts(s);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_fputs(const char *s, FILE *stream)
 {
        return fputs(s, stream);
@@ -347,13 +348,13 @@ int __real_fputs(const char *s, FILE *stream)
 
 #if !defined(__UCLIBC__) || !defined(__STDIO_PUTC_MACRO)
 
-__attribute__ ((weak))
+__weak
 int __real_fputc(int c, FILE *stream)
 {
        return fputc(c, stream);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_putchar(int c)
 {
        return putchar(c);
@@ -361,19 +362,19 @@ int __real_putchar(int c)
 
 #endif /* !(__UCLIBC__ && __STDIO_PUTC_MACRO) */
 
-__attribute__ ((weak))
+__weak
 size_t __real_fwrite(const void *ptr, size_t sz, size_t nmemb, FILE *stream)
 {
        return fwrite(ptr, sz, nmemb, stream);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_fclose(FILE *stream)
 {
        return fclose(stream);
 }
 
-__attribute__ ((weak))
+__weak
 void __real_syslog(int priority, const char *fmt, ...)
 {
        va_list args;
@@ -383,68 +384,68 @@ void __real_syslog(int priority, const char *fmt, ...)
        va_end(args);
 }
 
-__attribute__ ((weak))
+__weak
 void __real_vsyslog(int priority, const char *fmt, va_list ap)
 {
        vsyslog(priority, fmt, ap);
 }
 
-__attribute__ ((weak))
+__weak
 void *__real_malloc(size_t size)
 {
        return malloc(size);
 }
 
-__attribute__ ((weak))
+__weak
 void __real_free(void *ptr)
 {
        free(ptr);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_gettimeofday(struct timeval *tv, struct timezone *tz)
 {
        return gettimeofday(tv, tz);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_clock_gettime(clockid_t clk_id, struct timespec *tp)
 {
        return clock_gettime(clk_id, tp);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_sigwait(const sigset_t *set, int *sig)
 {
        return sigwait(set, sig);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_sigwaitinfo(const sigset_t *set, siginfo_t *si)
 {
        return sigwaitinfo(set, si);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_sigtimedwait(const sigset_t *set, siginfo_t *si,
                        const struct timespec *timeout)
 {
        return sigtimedwait(set, si, timeout);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_sigpending(sigset_t *set)
 {
        return sigpending(set);
 }
 
-__attribute__ ((weak))
+__weak
 int __real_kill(pid_t pid, int sig)
 {
        return kill(pid, sig);
 }
 
-__attribute__ ((weak))
+__weak
 unsigned int __real_sleep(unsigned int seconds)
 {
        return sleep(seconds);
diff --git a/lib/copperplate/wrappers.c b/lib/copperplate/wrappers.c
index b031f08..9d2490c 100644
--- a/lib/copperplate/wrappers.c
+++ b/lib/copperplate/wrappers.c
@@ -15,13 +15,13 @@
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
+#include <boilerplate/compiler.h>
 
 int main(int argc, char *const argv[]);
 
 int __real_main(int argc, char *const argv[]);
 
-__attribute__((weak))
-int __real_main(int argc, char *const argv[])
+__weak int __real_main(int argc, char *const argv[])
 {
        return main(argc, argv);
 }
diff --git a/lib/psos/task.c b/lib/psos/task.c
index e705a93..780d954 100644
--- a/lib/psos/task.c
+++ b/lib/psos/task.c
@@ -227,8 +227,7 @@ static void *task_trampoline(void *arg)
  * returned by this routine must be in the range [ 1
  * .. sched_get_priority_max(SCHED_FIFO) - 1 ] inclusive.
  */
-__attribute__ ((weak))
-int psos_task_normalize_priority(unsigned long psos_prio)
+__weak int psos_task_normalize_priority(unsigned long psos_prio)
 {
        if (psos_prio > threadobj_high_prio)
                panic("current implementation restricts pSOS "
@@ -245,8 +244,7 @@ int psos_task_normalize_priority(unsigned long psos_prio)
  * weak and application code may be override the call and implement
  * the mapping differently.
  */
-__attribute__ ((weak))
-unsigned long psos_task_denormalize_priority(int core_prio)
+__weak unsigned long psos_task_denormalize_priority(int core_prio)
 {
        /* Map a SCHED_FIFO priority level to a pSOS one. */
        return core_prio;
diff --git a/lib/vxworks/taskLib.c b/lib/vxworks/taskLib.c
index c3840bd..be50e49 100644
--- a/lib/vxworks/taskLib.c
+++ b/lib/vxworks/taskLib.c
@@ -296,8 +296,7 @@ static void *task_trampoline(void *arg)
  * priorities returned by this routine must be in the range [ 1
  * .. sched_get_priority_max(SCHED_FIFO) - 1 ] inclusive.
  */
-__attribute__ ((weak))
-int wind_task_normalize_priority(int wind_prio)
+__weak int wind_task_normalize_priority(int wind_prio)
 {
        /*
         * SCHED_FIFO priorities are always 1-based regardless of the
@@ -314,8 +313,7 @@ int wind_task_normalize_priority(int wind_prio)
        return threadobj_high_prio - wind_prio - 1;
 }
 
-__attribute__ ((weak))
-int wind_task_denormalize_priority(int core_prio)
+__weak int wind_task_denormalize_priority(int core_prio)
 {
        /* Map a SCHED_FIFO priority level to a VxWorks one. */
        return threadobj_high_prio - core_prio - 1;


_______________________________________________
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git

Reply via email to