aboutsummaryrefslogtreecommitdiff
path: root/gcc/config.gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config.gcc')
-rw-r--r--gcc/config.gcc19
1 files changed, 16 insertions, 3 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 9aea7ce..c789037 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -34,9 +34,14 @@
# threads support was requested.
#
# default_use_cxa_atexit
-# "no" by default, can be set to "yes" if a target
-# wishes to use __cxa_atexit() by default if the
-# $enable___cxa_atexit variable is not set.
+# The default value for the $enable___cxa_atexit
+# variable. enable___cxa_atexit needs to be set to
+# "yes" for the correct operation of C++ destructors
+# but it relies upon the presence of a non-standard C
+# library function called __cxa_atexit.
+# Since not all C libraries provide __cxa_atexit the
+# default value of $default_use_cxa_atexit is set to
+# "no" except for targets which are known to be OK.
#
# gas_flag Either yes or no depending on whether GNU as was
# requested.
@@ -461,6 +466,8 @@ case ${target} in
tm_defines="${tm_defines} UCLIBC_DEFAULT=0"
;;
esac
+ # Assume that glibc or uClibc are being used and so __cxa_atexit is provided.
+ default_use_cxa_atexit=yes
;;
*-*-gnu*)
# On the Hurd, the setup is just about the same on
@@ -482,6 +489,8 @@ case ${target} in
tm_file="${cpu_type}/${cpu_type}.h i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h gnu.h ${tm_file}"
;;
esac
+ # Assume that glibc is being used and so __cxa_atexit is provided.
+ default_use_cxa_atexit=yes
;;
*-*-netbsd*)
tmake_file="t-slibgcc-elf-ver t-libc-ok t-netbsd t-libgcc-pic"
@@ -551,6 +560,10 @@ case ${target} in
*) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
esac
;;
+*-*-elf)
+ # Assume that newlib is being used and so __cxa_atexit is provided.
+ default_use_cxa_atexit=yes
+ ;;
esac
case ${target} in