diff options
author | Olivier Hainque <hainque@adacore.com> | 2019-12-30 21:42:26 +0000 |
---|---|---|
committer | Olivier Hainque <hainque@gcc.gnu.org> | 2019-12-30 21:42:26 +0000 |
commit | abb6c3eecf6680814624bd1fe454844002dfc892 (patch) | |
tree | a612594b95661ae744ec614c6c14e93bf6723fa0 /libgcc | |
parent | c62f986a37898b5ebd36bd8f184d9e8d969d7ab4 (diff) | |
download | gcc-abb6c3eecf6680814624bd1fe454844002dfc892.zip gcc-abb6c3eecf6680814624bd1fe454844002dfc892.tar.gz gcc-abb6c3eecf6680814624bd1fe454844002dfc892.tar.bz2 |
Introduce an internal API for VxWorks version checks
This changes introduces an internal API for VxWorks version checks
within runtime files, a prerequisite to a few fixes coming up for libstdc++
builds on more recent versions of the OS.
2019-12-30 Olivier Hainque <hainque@adacore.com>
gcc/
* config/vxworks/_vxworks-versions.h: New file.
* config.gcc (*-*-vxworks*): Add it to extra_headers.
libgcc/
* config/gthr-vxworks.h: Use _vxworks-versions.h.
* config/gthr-vxworks-tls.c: Likewise.
From-SVN: r279783
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/ChangeLog | 5 | ||||
-rw-r--r-- | libgcc/config/gthr-vxworks-tls.c | 10 | ||||
-rw-r--r-- | libgcc/config/gthr-vxworks.h | 12 |
3 files changed, 14 insertions, 13 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index cb94bfb..3b7c4b0 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,5 +1,10 @@ 2019-12-30 Olivier Hainque <hainque@adacore.com> + * config/gthr-vxworks.h: Use _vxworks-versions.h. + * config/gthr-vxworks-tls.c: Likewise. + +2019-12-30 Olivier Hainque <hainque@adacore.com> + * config/gthr-vxworks.h (GTHREAD_ONCE_INIT): Use standard zero-initializer syntax. diff --git a/libgcc/config/gthr-vxworks-tls.c b/libgcc/config/gthr-vxworks-tls.c index 96b6bfb..63715e6 100644 --- a/libgcc/config/gthr-vxworks-tls.c +++ b/libgcc/config/gthr-vxworks-tls.c @@ -45,6 +45,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #include <errno.h> #endif +#include <_vxworks-versions.h> + /* Thread-local storage. A gthread TLS key is simply an offset in an array, the address of which @@ -91,10 +93,10 @@ static int self_owner; it is only removed when unloading this module. */ static volatile int delete_hook_installed; -/* TLS data access internal API. A straight __thread variable on VxWorks 7, - a pointer returned by kernel provided routines otherwise. */ +/* TLS data access internal API. A straight __thread variable starting with + VxWorks 7, a pointer returned by kernel provided routines otherwise. */ -#ifdef __VXWORKS7__ +#if _VXWORKS_MAJOR_GE(7) static __thread struct tls_data *__gthread_tls_data; @@ -118,7 +120,7 @@ extern void __gthread_leave_tls_dtor_context (void); #define VX_ENTER_TLS_DTOR() __gthread_enter_tls_dtor_context () #define VX_LEAVE_TLS_DTOR() __gthread_leave_tls_dtor_context () -#endif /* __VXWORKS7__ */ +#endif /* This is a global structure which records all of the active keys. diff --git a/libgcc/config/gthr-vxworks.h b/libgcc/config/gthr-vxworks.h index 70205ce..65c5096 100644 --- a/libgcc/config/gthr-vxworks.h +++ b/libgcc/config/gthr-vxworks.h @@ -35,13 +35,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #else #include <vxWorks.h> -#include <version.h> - -/* Conditional compilation directives are easier to read when they fit on a - single line, which is helped by macros with shorter names. */ -#define _VXW_MAJOR _WRS_VXWORKS_MAJOR -#define _VXW_MINOR _WRS_VXWORKS_MINOR -#define _VXW_PRE_69 (_VXW_MAJOR < 6 || (_VXW_MAJOR == 6 && _VXW_MINOR < 9)) +#include <_vxworks-versions.h> /* Some VxWorks headers profusely use typedefs of a pointer to a function with undefined number of arguments. */ @@ -62,7 +56,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see /* RTP, pre 6.9. */ -#if defined(__RTP__) && _VXW_PRE_69 +#if defined(__RTP__) && _VXWORKS_PRE(6,9) #define __TAS(x) vxCas ((x), 0, 1) typedef volatile unsigned char __vx_tas_t; @@ -71,7 +65,7 @@ typedef volatile unsigned char __vx_tas_t; /* RTP, 6.9 and beyond. */ -#if defined(__RTP__) && !_VXW_PRE_69 +#if defined(__RTP__) && !_VXWORKS_PRE(6,9) #define __TAS(x) vxAtomicCas ((x), 0, 1) typedef atomic_t __vx_tas_t; |