⛏️ index : buildtools.git

author Ingo Weinhold <ingo_weinhold@gmx.de> 2010-11-22 13:03:49.0 +00:00:00
committer Ingo Weinhold <ingo_weinhold@gmx.de> 2010-11-22 13:03:49.0 +00:00:00
commit
8116a5d9ffdc704a2fe1095bd9bdac3a36ad56bb [patch]
tree
5f9b615b030f2cc6bcc2fd956692d7887b1620d2
parent
b4a08320356ffb4a799486d3655598b2273cf242
download
8116a5d9ffdc704a2fe1095bd9bdac3a36ad56bb.tar.gz

Merged gcc4-weak-symbols branch.

git-svn-id: file:///srv/svn/repos/haiku/buildtools/trunk@39570 a95241bf-73f2-0310-859d-f6bbb57e9c96

Diff

 gcc/gcc/config/arm/haiku.h    |  4 ++--
 gcc/gcc/config/i386/haiku.h   |  8 +-------
 gcc/gcc/config/i386/haiku64.h | 20 +++++---------------
 gcc/gcc/config/m68k/haiku.h   | 10 ++--------
 gcc/gcc/config/mips/haiku.h   |  8 +-------
 gcc/gcc/config/rs6000/haiku.h |  8 +-------
 6 files changed, 11 insertions(+), 47 deletions(-)

diff --git a/gcc/gcc/config/arm/haiku.h b/gcc/gcc/config/arm/haiku.h
index df1d39b..19dff3c 100644
--- a/gcc/gcc/config/arm/haiku.h
+++ b/gcc/gcc/config/arm/haiku.h
@@ -74,6 +74,6 @@
/* If ELF is the default format, we should not use /lib/elf.  */

#undef	LINK_SPEC
#define LINK_SPEC "%{!o*:-o %b} -m armelf -shared -no-undefined -Bsymbolic %{nostart:-e 0} \
  %{mbig-endian:-EB} %{mlittle-endian:-EL} -X" 
#define LINK_SPEC "%{!o*:-o %b} -m armelf -shared -no-undefined %{nostart:-e 0} \
  %{mbig-endian:-EB} %{mlittle-endian:-EL} -X"

diff --git a/gcc/gcc/config/i386/haiku.h b/gcc/gcc/config/i386/haiku.h
index 335c414..79025a8 100644
--- a/gcc/gcc/config/i386/haiku.h
+++ b/gcc/gcc/config/i386/haiku.h
@@ -40,12 +40,6 @@
	builtin_define ("__stdcall=__attribute__((__stdcall__))");	\
	builtin_define ("__cdecl=__attribute__((__cdecl__))");		\
	builtin_assert ("system=haiku");					\
    /* Haiku apparently doesn't support merging of symbols across shared \
       object boundaries. Hence we need to explicitly specify that \
       type_infos are not merged, so that they get compared by name \
       instead of by pointer. */ \
    builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0"); \
    builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0"); \
    }									\
  while (0)

@@ -57,7 +51,7 @@
/* If ELF is the default format, we should not use /lib/elf.  */

#undef	LINK_SPEC
#define LINK_SPEC "-m elf_i386_haiku -shared -Bsymbolic %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
#define LINK_SPEC "-m elf_i386_haiku -shared %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"

/* A C statement (sans semicolon) to output to the stdio stream
   FILE the assembler definition of uninitialized global DECL named
diff --git a/gcc/gcc/config/i386/haiku64.h b/gcc/gcc/config/i386/haiku64.h
index 24a44ad..7a0ba68 100644
--- a/gcc/gcc/config/i386/haiku64.h
+++ b/gcc/gcc/config/i386/haiku64.h
@@ -27,9 +27,9 @@
#endif

/* The SVR4 ABI for the i386 says that records and unions are returned
 *   in memory.  
 *   in memory.
 *
 *   TODO: Linux64 doesn't use pcc_struct_return scheme. Does haiku? 
 *   TODO: Linux64 doesn't use pcc_struct_return scheme. Does haiku?
 *         If not this could be removed.
 */
#undef DEFAULT_PCC_STRUCT_RETURN
@@ -48,12 +48,6 @@
	builtin_define ("__stdcall=__attribute__((__stdcall__))");	\
	builtin_define ("__cdecl=__attribute__((__cdecl__))");		\
	builtin_assert ("system=haiku");				\
    /* Haiku apparently doesn't support merging of symbols across shared \
       object boundaries. Hence we need to explicitly specify that \
       type_infos are not merged, so that they get compared by name \
       instead of by pointer. */ \
    	builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0");		\
    	builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0");		\
    }									\
  while (0)
#else
@@ -66,12 +60,6 @@
	builtin_define ("__stdcall=__attribute__((__stdcall__))");	\
	builtin_define ("__cdecl=__attribute__((__cdecl__))");		\
	builtin_assert ("system=haiku");				\
    /* Haiku apparently doesn't support merging of symbols across shared \
       object boundaries. Hence we need to explicitly specify that \
       type_infos are not merged, so that they get compared by name \
       instead of by pointer. */ \
    	builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0");		\
    	builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0");		\
    }									\
  while (0)
#endif
@@ -83,9 +71,9 @@

#undef	LINK_SPEC
#if TARGET_64BIT

#define LINK_SPEC "-m elf_x86_64 -z max-page-size=0x1000 -shared -Bsymbolic %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
#define LINK_SPEC "-m elf_x86_64 -z max-page-size=0x1000 -shared %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
#else
#define LINK_SPEC "-m elf_i386_haiku -shared -Bsymbolic %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
#define LINK_SPEC "-m elf_i386_haiku -shared %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
#endif


diff --git a/gcc/gcc/config/m68k/haiku.h b/gcc/gcc/config/m68k/haiku.h
index c587983..0f241b1 100644
--- a/gcc/gcc/config/m68k/haiku.h
+++ b/gcc/gcc/config/m68k/haiku.h
@@ -75,12 +75,6 @@
	builtin_define ("__stdcall=__attribute__((__stdcall__))");	\
	builtin_define ("__cdecl=__attribute__((__cdecl__))");		\
	builtin_assert ("system=haiku");				\
    /* Haiku apparently doesn't support merging of symbols across shared\
       object boundaries. Hence we need to explicitly specify that 	\
       type_infos are not merged, so that they get compared by name 	\
       instead of by pointer. */ 					\
    builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0"); 			\
    builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0"); \
    }									\
  while (0)

@@ -115,8 +109,8 @@
/* If ELF is the default format, we should not use /lib/elf.  */

#undef	LINK_SPEC
/*#define LINK_SPEC "%{!o*:-o %b} -m elf_m68k_haiku -shared -no-undefined -Bsymbolic %{nostart:-e 0}"*/
#define LINK_SPEC "%{!o*:-o %b} -m m68kelf -shared -no-undefined -Bsymbolic %{nostart:-e 0}"
/*#define LINK_SPEC "%{!o*:-o %b} -m elf_m68k_haiku -shared -no-undefined %{nostart:-e 0}"*/
#define LINK_SPEC "%{!o*:-o %b} -m m68kelf -shared -no-undefined %{nostart:-e 0}"

/* XXX: not sure for the rest there... */

diff --git a/gcc/gcc/config/mips/haiku.h b/gcc/gcc/config/mips/haiku.h
index c4029b2..5db9078 100644
--- a/gcc/gcc/config/mips/haiku.h
+++ b/gcc/gcc/config/mips/haiku.h
@@ -38,15 +38,9 @@
	    builtin_define ("__PIC__");					\
	    builtin_define ("__pic__");					\
	  }								\
    /* Haiku apparently doesn't support merging of symbols across shared \
       object boundaries. Hence we need to explicitly specify that \
       type_infos are not merged, so that they get compared by name \
       instead of by pointer. */ \
    	builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0");		\
	builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0"); 		\
    }									\
  while (0)

#undef	LINK_SPEC
#define LINK_SPEC "%{!o*:-o %b} -m elf_mipsel_haiku -shared -Bsymbolic %{nostart:-e 0}"
#define LINK_SPEC "%{!o*:-o %b} -m elf_mipsel_haiku -shared %{nostart:-e 0}"

diff --git a/gcc/gcc/config/rs6000/haiku.h b/gcc/gcc/config/rs6000/haiku.h
index d306faa..d80b05f 100644
--- a/gcc/gcc/config/rs6000/haiku.h
+++ b/gcc/gcc/config/rs6000/haiku.h
@@ -44,12 +44,6 @@
	builtin_assert ("cpu=powerpc");					\
	builtin_assert ("machine=powerpc");					\
	TARGET_OS_SYSV_CPP_BUILTINS ();					\
    /* Haiku apparently doesn't support merging of symbols across shared \
       object boundaries. Hence we need to explicitly specify that \
       type_infos are not merged, so that they get compared by name \
       instead of by pointer. */ \
    builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0"); \
    builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0"); \
    }									\
  while (0)

@@ -61,4 +55,4 @@
/* If ELF is the default format, we should not use /lib/elf.  */

#undef	LINK_SPEC
#define LINK_SPEC "%{!o*:-o %b} -m elf_ppc_haiku -shared -no-undefined -Bsymbolic %{nostart:-e 0}"
#define LINK_SPEC "%{!o*:-o %b} -m elf_ppc_haiku -shared -no-undefined %{nostart:-e 0}"