[PATCH] RTEMS: Use __cxa_atexit by default for RTEMS
Sebastian Huber
sebastian.huber at embedded-brains.de
Mon Jul 8 13:29:09 UTC 2013
The __cxa_atexit support is a reqirement for destructor registration of
thread-local objects.
For *-*-elf it is already enabled by default. See comment line 810 in
"gcc/config.gcc".
Define TARGET_LIBGCC_SDATA_SECTION on PowerPC for RTEMS to ".sdata" to
place the __dso_handle. The __dso_handle is referenced by application
code. In case this code uses the small data section, the __dso_handle
must be there.
This patch should be committed to GCC 4.8 and 4.9.
Test results:
http://gcc.gnu.org/ml/gcc-testresults/2013-07/msg00671.html
gcc/ChangeLog
2013-07-08 Sebastian Huber <sebastian.huber at embedded-brains.de>
* config.gcc (*-*-rtems*): Use __cxa_atexit by default.
* config/rs6000/rtems.h (TARGET_LIBGCC_SDATA_SECTION): Define.
---
gcc/config.gcc | 1 +
gcc/config/rs6000/rtems.h | 3 +++
2 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/gcc/config.gcc b/gcc/config.gcc
index a927964..1648dfe 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -734,6 +734,7 @@ case ${target} in
yes) thread_file='rtems' ;;
esac
extra_options="${extra_options} rtems.opt"
+ default_use_cxa_atexit=yes
use_gcc_stdint=wrap
;;
*-*-uclinux*)
diff --git a/gcc/config/rs6000/rtems.h b/gcc/config/rs6000/rtems.h
index b910b5e..fb22be1 100644
--- a/gcc/config/rs6000/rtems.h
+++ b/gcc/config/rs6000/rtems.h
@@ -34,6 +34,9 @@
} \
while (0)
+#undef TARGET_LIBGCC_SDATA_SECTION
+#define TARGET_LIBGCC_SDATA_SECTION ".sdata"
+
#undef CPP_OS_DEFAULT_SPEC
#define CPP_OS_DEFAULT_SPEC "%(cpp_os_rtems)"
--
1.7.7
More information about the devel
mailing list