summaryrefslogtreecommitdiff
path: root/tools/4.11
diff options
context:
space:
mode:
Diffstat (limited to 'tools/4.11')
-rw-r--r--tools/4.11/gcc/gcc-rtems-thread-model-posix-1.diff101
1 files changed, 101 insertions, 0 deletions
diff --git a/tools/4.11/gcc/gcc-rtems-thread-model-posix-1.diff b/tools/4.11/gcc/gcc-rtems-thread-model-posix-1.diff
new file mode 100644
index 0000000..6c4d123
--- /dev/null
+++ b/tools/4.11/gcc/gcc-rtems-thread-model-posix-1.diff
@@ -0,0 +1,101 @@
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index ef37e61..6e03865 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -763,7 +763,7 @@ case ${target} in
+ ;;
+ *-*-rtems*)
+ case ${enable_threads} in
+- yes) thread_file='rtems' ;;
++ yes) thread_file='posix' ;;
+ esac
+ extra_options="${extra_options} rtems.opt"
+ default_use_cxa_atexit=yes
+diff --git a/libgcc/config/t-rtems b/libgcc/config/t-rtems
+index 85f1da9..11e0c64 100644
+--- a/libgcc/config/t-rtems
++++ b/libgcc/config/t-rtems
+@@ -1,4 +1,4 @@
+ # If we are building next to newlib, this will let us find the RTEMS
+ # limits.h when building libgcc2. Otherwise, newlib must be installed
+ # first.
+-LIBGCC2_INCLUDES = -I$(srcdir)/../newlib/libc/sys/rtems/include
++LIBGCC2_INCLUDES = -I$(srcdir)/../newlib/libc/sys/rtems/include -I$(srcdir)/../newlib/libc/sys/rtems
+diff --git a/libgcc/gthr-posix.h b/libgcc/gthr-posix.h
+index f0d8cd7..653a7fc 100644
+--- a/libgcc/gthr-posix.h
++++ b/libgcc/gthr-posix.h
+@@ -110,7 +110,9 @@ __gthrw(pthread_detach)
+ #ifndef __BIONIC__
+ __gthrw(pthread_cancel)
+ #endif
++#ifndef __rtems__
+ __gthrw(sched_yield)
++#endif
+
+ __gthrw(pthread_mutex_lock)
+ __gthrw(pthread_mutex_trylock)
+@@ -447,8 +449,10 @@ __gthread_objc_thread_get_priority (void)
+ static inline void
+ __gthread_objc_thread_yield (void)
+ {
++#ifndef __rtems__
+ if (__gthread_active_p ())
+ __gthrw_(sched_yield) ();
++#endif
+ }
+
+ /* Terminate the current thread. */
+@@ -689,7 +693,11 @@ __gthread_self (void)
+ static inline int
+ __gthread_yield (void)
+ {
++#ifndef __rtems__
+ return __gthrw_(sched_yield) ();
++#else
++ return 0;
++#endif
+ }
+
+ static inline int
+diff --git a/libgcc/gthr.h b/libgcc/gthr.h
+index 0edb583..672f69d 100644
+--- a/libgcc/gthr.h
++++ b/libgcc/gthr.h
+@@ -135,8 +135,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ #if SUPPORTS_WEAK
+ /* The pe-coff weak support isn't fully compatible to ELF's weak.
+ For static libraries it might would work, but as we need to deal
+- with shared versions too, we disable it for mingw-targets. */
+-#ifdef __MINGW32__
++ with shared versions too, we disable it for mingw-targets.
++
++ RTEMS is always threaded so disable weak support. */
++#if defined(__MINGW32__) || defined(__rtems__)
+ #undef GTHREAD_USE_WEAK
+ #define GTHREAD_USE_WEAK 0
+ #endif
+diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
+index 5971af3..b8f2842 100644
+--- a/libstdc++-v3/include/Makefile.am
++++ b/libstdc++-v3/include/Makefile.am
+@@ -1139,6 +1139,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
+ -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
+ -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
+ -e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
++ -e 's/_GLIBCXX___rtems_GLIBCXX___/__rtems__/g' \
+ -e 's,^#include "\(.*\)",#include <bits/\1>,g' \
+ < $< > $@
+
+diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
+index aa8ef43..1536a7f 100644
+--- a/libstdc++-v3/include/Makefile.in
++++ b/libstdc++-v3/include/Makefile.in
+@@ -1545,6 +1545,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
+ -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
+ -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
+ -e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
++ -e 's/_GLIBCXX___rtems_GLIBCXX___/__rtems__/g' \
+ -e 's,^#include "\(.*\)",#include <bits/\1>,g' \
+ < $< > $@
+