Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Mar 2003 15:05:38 -0800
From:      Marcel Moolenaar <marcel@xcllnt.net>
To:        Joe Marcus Clarke <marcus@marcuscom.com>
Cc:        hackers@FreeBSD.ORG
Subject:   Re: Question on gcc linker and -pthread
Message-ID:  <20030313230538.GA58315@ns1.xcllnt.net>
In-Reply-To: <1047586732.84063.10.camel@gyros>
References:  <1047586732.84063.10.camel@gyros>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Mar 13, 2003 at 03:18:52PM -0500, Joe Marcus Clarke wrote:
> I've noticed something I think is strange with gcc, the -shared flag,
> and -pthread on -STABLE.  I'm hoping someone can enlighten me as to why
> this happens or if it's a bug.  If I compile something with the
> following command, I do not see libc_r.so linked in the resulting
> object:
> 
> cc -shared -pthread -o xxx.so xxx.c
> 
> However, if I replace -pthread with -lc_r, it works.  Also, if I change
> the command to:
> 
> cc -Wl,-shared -pthread -o xxx.so xxx.c
> 
> I also see libc_r.so linked in.  Is this expected behavior?  libtool
> seems to like the former -shared syntax which is causing some problems
> with some GTK themes.  Thanks.

The -shared option tells the compiler driver that you're trying to
create a shared object. In that case -lc_r is not added to the link
line. Adding -lc_r explicitly is dangerous, because now the linker
will construct a shared object that has code linked in from an
archive library that has not been compiled with PIC. Consequently,
some architectures (eg ia64) may barf when you try to link against
this shared object because it may contain invalid relocations.

Using -Wl,-shared tricks the compiler driver in thinking you are
creating an executable. It will therefore make sure dependencies
are correct by adding -lc_r on the link line. You tell the linker
however that you're creating a shared object, but now it also has
-lc_r explicitly. Again, this can result in a bad shared object.

I don't think there's a bug.

-- 
 Marcel Moolenaar	  USPA: A-39004		 marcel@xcllnt.net

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030313230538.GA58315>