Subject: bin/12103: ARM32 tools do not support weak symbols
To: None <gnats-bugs@gnats.netbsd.org>
From: Richard Earnshaw <rearnsha@buzzard.freeserve.co.uk>
List: netbsd-bugs
Date: 02/01/2001 14:39:49
>Number:         12103
>Category:       bin
>Synopsis:       ARM tools do not support weak symbols
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Feb 01 14:42:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Richard Earnshaw
>Release:        NetBSD-current
>Organization:
ARM
	
>Environment:
	
System: NetBSD buzzard.buzzard.freeserve.co.uk 1.5I NetBSD 1.5I (BUZZARD) #216: Sun Nov 19 21:24:48 GMT 2000 rearnsha@buzzard.buzzard.freeserve.co.uk:/usr/src/sys/arch/arm32/compile/BUZZARD arm32


>Description:
	The toolchain for ARM32 does not correctly support weak symbols.
	This is a critical issue for the new gcc-3.0 development which
	requires this behaviour for C++ RTTI and hence for exception throwing.

	
>How-To-Repeat:

	Compile and link the following two C files.  The program should run
	without aborting.

weak0.c:
char mystr[] __attribute__((weak)) = "hello";

extern char *getmystr();
main ()
{
  if (getmystr() != mystr)
    abort();

  exit (0);
}

weak1.c:
char mystr[] __attribute__((weak)) = "hello";

char *getmystr() { return mystr;}

	
>Fix:
	Not known.  It may be the assembler or the linker (or even both).
	
>Release-Note:
>Audit-Trail:
>Unformatted: