Commit 40a1c5cb by Mark Mitchell Committed by Mark Mitchell

bpabi.h (TARGET_BPABI_CPP_BUILTINS): Define.

	* config/arm/bpabi.h (TARGET_BPABI_CPP_BUILTINS): Define.
	(TARGET_OS_CPP_BUILTINS): Likewise.
	* config/arm/symbian.h (TARGET_OS_CPP_BUILTINS): Include
	TARGET_BPABI_CPP_BUILTINS.

	* g++.dg/abi/arm_rtti1.C: New test.

	* libsupc++/typeinfo: Honor __GXX_MERGED_TYPEINFO_NAMES if already
	defined.

[[Split portion of a mixed commit.]]

From-SVN: r87018.2
parent 085b6822
2004-09-02 Mark Mitchell <mark@codesourcery.com>
* config/arm/bpabi.h (TARGET_BPABI_CPP_BUILTINS): Define.
(TARGET_OS_CPP_BUILTINS): Likewise.
* config/arm/symbian.h (TARGET_OS_CPP_BUILTINS): Include
TARGET_BPABI_CPP_BUILTINS.
2004-09-02 Roman Zippel <zippel@linux-m68k.org> 2004-09-02 Roman Zippel <zippel@linux-m68k.org>
* combine.c (distribute_notes): Don't add REG_LABEL to jump insn. * combine.c (distribute_notes): Don't add REG_LABEL to jump insn.
......
...@@ -84,3 +84,19 @@ ...@@ -84,3 +84,19 @@
#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, l2f) #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, l2f)
#endif #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()
...@@ -75,9 +75,12 @@ ...@@ -75,9 +75,12 @@
#define RENAME_LIBRARY(GCC_NAME, AEABI_NAME) /* empty */ #define RENAME_LIBRARY(GCC_NAME, AEABI_NAME) /* empty */
/* Define the __symbian__ macro. */ /* Define the __symbian__ macro. */
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \ #define TARGET_OS_CPP_BUILTINS() \
do \ do \
{ \ { \
/* Include the default BPABI stuff. */ \
TARGET_BPABI_CPP_BUILTINS (); \
builtin_define ("__symbian__"); \ builtin_define ("__symbian__"); \
} \ } \
while (false) while (false)
2004-09-02 Mark Mitchell <mark@codesourcery.com>
* g++.dg/abi/arm_rtti1.C: New test.
2004-09-02 Geoffrey Keating <geoffk@apple.com> 2004-09-02 Geoffrey Keating <geoffk@apple.com>
* gcc.dg/ppc-vector-memcpy.c: New. * gcc.dg/ppc-vector-memcpy.c: New.
......
// { dg-do compile { target arm*-*-eabi* arm*-*-symbianelf* } }
// { dg-options "-O2" }
// Check that, even when optimizing, we emit an out-of-line call to
// the type-info comparison function.
// { dg-final { scan-assembler _ZNKSt9type_infoeqERKS_ } }
#include <typeinfo>
extern const std::type_info& t1;
extern const std::type_info& t2;
bool f() {
return t1 == t2;
}
2004-09-02 Mark Mitchell <mark@codesourcery.com>
* libsupc++/typeinfo: Honor __GXX_MERGED_TYPEINFO_NAMES if already
defined.
2004-09-02 Benjamin Kosnik <bkoz@redhat.com> 2004-09-02 Benjamin Kosnik <bkoz@redhat.com>
Simon Richter <Simon.Richter@hogyros.de> Simon Richter <Simon.Richter@hogyros.de>
......
...@@ -46,12 +46,14 @@ namespace __cxxabiv1 ...@@ -46,12 +46,14 @@ namespace __cxxabiv1
class __class_type_info; class __class_type_info;
} // namespace __cxxabiv1 } // namespace __cxxabiv1
#if !__GXX_WEAK__ #ifndef __GXX_MERGED_TYPEINFO_NAMES
// If weak symbols are not supported, typeinfo names are not merged. #if !__GXX_WEAK__
#define __GXX_MERGED_TYPEINFO_NAMES 0 // If weak symbols are not supported, typeinfo names are not merged.
#else #define __GXX_MERGED_TYPEINFO_NAMES 0
// On platforms that support weak symbols, typeinfo names are merged. #else
#define __GXX_MERGED_TYPEINFO_NAMES 1 // On platforms that support weak symbols, typeinfo names are merged.
#define __GXX_MERGED_TYPEINFO_NAMES 1
#endif
#endif #endif
namespace std namespace std
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment