summaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/arm/bpabi.h16
-rw-r--r--gcc/config/arm/symbian.h7
2 files changed, 21 insertions, 2 deletions
diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h
index 60d6e75b73a..e2be11446f8 100644
--- a/gcc/config/arm/bpabi.h
+++ b/gcc/config/arm/bpabi.h
@@ -84,3 +84,19 @@
#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, l2f)
#endif
+/* The BPABI requires that we always use an out-of-line implementation
+ of RTTI comparison, even if the target supports weak symbols,
+ because the same object file might be used on a target that does
+ not support merging symbols across DLL boundaries. This macro is
+ broken out separately so that it can be used within
+ TARGET_OS_CPP_BUILTINS in configuration files for systems based on
+ the BPABI. */
+#define TARGET_BPABI_CPP_BUILTINS() \
+ do \
+ { \
+ builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0"); \
+ } \
+ while (false)
+
+#define TARGET_OS_CPP_BUILTINS() \
+ TARGET_BPABI_CPP_BUILTINS()
diff --git a/gcc/config/arm/symbian.h b/gcc/config/arm/symbian.h
index 5a59e79af17..a900d76f76b 100644
--- a/gcc/config/arm/symbian.h
+++ b/gcc/config/arm/symbian.h
@@ -75,9 +75,12 @@
#define RENAME_LIBRARY(GCC_NAME, AEABI_NAME) /* empty */
/* Define the __symbian__ macro. */
+#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
- do \
+ do \
{ \
+ /* Include the default BPABI stuff. */ \
+ TARGET_BPABI_CPP_BUILTINS (); \
builtin_define ("__symbian__"); \
- } \
+ } \
while (false)