libstdc++: only define _GLIBCXX_HAVE_TLS for VxWorks >= 6.6

Message ID 20211108095613.1214963-1-rasmus.villemoes@prevas.dk
State Committed
Commit cc6b8cd9a21b363815998b11e5cc7529557a9ce5
Headers
Series libstdc++: only define _GLIBCXX_HAVE_TLS for VxWorks >= 6.6 |

Commit Message

Rasmus Villemoes Nov. 8, 2021, 9:56 a.m. UTC
  According to
https://gcc.gnu.org/legacy-ml/gcc-patches/2008-03/msg01698.html, the
TLS support, including the __tls_lookup function, was added to VxWorks
in 6.6.

It certainly doesn't exist on our VxWorks 5 platform, but the fallback
code in eh_globals.cc using __gthread_key_create() etc. used to work
just fine.

libstdc++-v3/ChangeLog:

	* config/os/vxworks/os_defines.h (_GLIBCXX_HAVE_TLS): Only
	define for VxWorks >= 6.6.
---
 libstdc++-v3/config/os/vxworks/os_defines.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Olivier Hainque Nov. 8, 2021, 4:59 p.m. UTC | #1
> On 8 Nov 2021, at 10:56, Rasmus Villemoes <rv@rasmusvillemoes.dk> wrote:
> 
> According to
> https://gcc.gnu.org/legacy-ml/gcc-patches/2008-03/msg01698.html, the
> TLS support, including the __tls_lookup function, was added to VxWorks
> in 6.6.
> 
> It certainly doesn't exist on our VxWorks 5 platform, but the fallback
> code in eh_globals.cc using __gthread_key_create() etc. used to work
> just fine.
> 
> libstdc++-v3/ChangeLog:
> 
> 	* config/os/vxworks/os_defines.h (_GLIBCXX_HAVE_TLS): Only
> 	define for VxWorks >= 6.6.

Good for me, thanks Rasmus.

Cheers,

Olivier
  

Patch

diff --git a/libstdc++-v3/config/os/vxworks/os_defines.h b/libstdc++-v3/config/os/vxworks/os_defines.h
index c881b2b4b9e..75a68bc605b 100644
--- a/libstdc++-v3/config/os/vxworks/os_defines.h
+++ b/libstdc++-v3/config/os/vxworks/os_defines.h
@@ -45,8 +45,10 @@ 
 #define _GLIBCXX_USE_WEAK_REF 0
 #endif
 
-// We support TLS on VxWorks (either directly or with emutls)
+// We support TLS on VxWorks >= 6.6 (either directly or with emutls)
+#if !_VXWORKS_PRE(6, 6)
 #define _GLIBCXX_HAVE_TLS 1
+#endif
 
 // VxWorks7 comes with a DinkumWare library and the system headers which we
 // are going to include for libstdc++ have a few related intrinsic