Subject: Re: gcc3 "millicode" problems with sh3 (toolchain/22452)
To: None <tech-toolchain@netbsd.org, port-sh3@netbsd.org>
From: Valeriy E. Ushakov <uwe@ptc.spbu.ru>
List: tech-toolchain
Date: 09/03/2003 20:51:40
On Wed, Sep 03, 2003 at 12:18:18 -0400, Todd Vierling wrote:

> On Wed, 3 Sep 2003, Valeriy E. Ushakov wrote:
> 
> : > This part should already be happening.  NetBSD's gcc LIBGCC_SPEC will use
> : > -lgcc_pic in place of -lgcc when invoking "gcc -shared" for link.
> :
> : I don't see anything like that in our tree.  I also don't see
> : -lgcc_pic in my build logs for either gcc2 or gcc3 world builds.
> 
> When you link anything with "cc -o foo ...", -lgcc is implicitly added (see
> LIBGCC_SPEC in the gcc sources, or do "gcc -dumpspecs" and look at the line
> after "*libgcc:").  When -shared is specified in the link, -lgcc_pic should
> be used instead.  This was the case at least for gcc 2.95 as in NetBSD 1.6,
> and I believe its behavior should have been carried over to gcc3.

Apparently it was not:

# gcc2
$ /usr/nb/tools/bin/shle--netbsdelf-gcc -dumpspecs | grep -e -lgcc
%{!symbolic:%{!shared:-lgcc}%{shared:-lgcc_pic}}

# gcc3
$ /usr/nb3/tools/bin/shle--netbsdelf-gcc -dumpspecs | grep -e -lgcc
%{!shared:%{!symbolic: -lgcc}}


If linking -lgcc_pic into shlibs is ok, we won't need a special
library, just move __udivsi3 &c into libgcc and mark the .hidden.

PS: While we are at the topic of libc vs. libgcc why do we have our
own softfloat in libc and also have gcc's softfloat in libgcc?

SY, Uwe
-- 
uwe@ptc.spbu.ru                         |       Zu Grunde kommen
http://www.ptc.spbu.ru/~uwe/            |       Ist zu Grunde gehen