This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[PATCH: 2.95.3] Fix for binutils-2.11 failure


Hi Bernd,

Running "make check" with   a snapshot from the   binutils-2_11-branch
using  a    gcc-2.95.3  pre-release   from  the   gcc-2_95-branch   on
armv4l-unknown-linux-gnu showed these failures:

  ld/ld.log:
  /home/gnu/work/GNU/binutils-2.11-armv4l-unknown-linux-gnu/ld/../binutils/nm-new  tmpdir/2.x >tmpdir/nm.out
  selective3: missing foo
  FAIL: selective3
  [...]
  /home/gnu/work/GNU/binutils-2.11-armv4l-unknown-linux-gnu/ld/../binutils/nm-new  tmpdir/3.x >tmpdir/nm.out
  selective4: missing start
  FAIL: selective4

Philip  Blundell sent me a   patch for that,   which I tested today on
trees checked out from

  binutils: anoncvs.cygnus.com as of 2001/02/04 11:01:57 +0100
  gcc:	    gcc.gnu.org	       as of 2001/02/04 10:51:44 +0100

As  a result these failures  are fixed  now,  and no other regressions
showed up.   I'd appreciate,  if you  can  install this patch   in the
upcoming gcc-2.95.3 release tree.

TIA, cheers.

l8er
manfred


2001-02-02  Philip Blundell  <philb@gnu.org>

	* arm/linux-elf.h (MAKE_DECL_ONE_ONLY, UNIQUE_SECTION_P): Define.
	(UNIQUE_SECTION): Define.

diff -rup -x CVS -x RCS -x *.o -x *.info* -x *.html* -x *.elc -x *.dvi -x *.orig -x *~ -x version.el gcc-2.95.3.orig/gcc/config/arm/linux-elf.h gcc-2.95.3/gcc/config/arm/linux-elf.h
--- gcc-2.95.3.orig/gcc/config/arm/linux-elf.h	Sun Jan 28 14:54:49 2001
+++ gcc-2.95.3/gcc/config/arm/linux-elf.h	Sun Feb  4 10:58:39 2001
@@ -223,6 +223,44 @@ const_section ()							\
    go into the const section.  */
 #define SELECT_RTX_SECTION(MODE,RTX) const_section ()
 
+#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
+#define UNIQUE_SECTION_P(DECL)   (DECL_ONE_ONLY (DECL))
+
+#define UNIQUE_SECTION(DECL, RELOC)				\
+  do								\
+    {								\
+      int len;							\
+      char * name;						\
+      char * string;						\
+      char * prefix;						\
+								\
+      name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL));	\
+      								\
+      if (! DECL_ONE_ONLY (DECL))				\
+	{							\
+	  prefix = ".";                                         \
+	  if (TREE_CODE (DECL) == FUNCTION_DECL)		\
+	    prefix = ".text.";					\
+	  else if (DECL_READONLY_SECTION (DECL, RELOC))		\
+	    prefix = ".rodata.";				\
+	  else							\
+	    prefix = ".data.";					\
+	}							\
+      else if (TREE_CODE (DECL) == FUNCTION_DECL)		\
+	prefix = ".gnu.linkonce.t.";				\
+      else if (DECL_READONLY_SECTION (DECL, RELOC))		\
+	prefix = ".gnu.linkonce.r.";				\
+      else							\
+	prefix = ".gnu.linkonce.d.";				\
+      								\
+      len = strlen (name) + strlen (prefix);			\
+      string = alloca (len + 1);				\
+      sprintf (string, "%s%s", prefix, name);			\
+      								\
+      DECL_SECTION_NAME (DECL) = build_string (len, string);	\
+    }								\
+  while (0)
+
 /* On svr4, we *do* have support for the .init and .fini sections, and we
    can put stuff in there to be executed before and after `main'.  We let
    crtstuff.c and other files know this by defining the following symbols.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]