From owner-freebsd-hackers@FreeBSD.ORG Thu Apr 20 22:16:26 2006 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1B62116A406 for ; Thu, 20 Apr 2006 22:16:26 +0000 (UTC) (envelope-from tataz@tataz.chchile.org) Received: from smtp5-g19.free.fr (smtp5-g19.free.fr [212.27.42.35]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7F53543D48 for ; Thu, 20 Apr 2006 22:16:25 +0000 (GMT) (envelope-from tataz@tataz.chchile.org) Received: from tatooine.tataz.chchile.org (tataz.chchile.org [82.233.239.98]) by smtp5-g19.free.fr (Postfix) with ESMTP id 82FCA24D65; Fri, 21 Apr 2006 00:16:24 +0200 (CEST) Received: from obiwan.tataz.chchile.org (unknown [192.168.1.25]) by tatooine.tataz.chchile.org (Postfix) with ESMTP id 4A9439BEC1; Thu, 20 Apr 2006 22:16:23 +0000 (UTC) Received: by obiwan.tataz.chchile.org (Postfix, from userid 1000) id 35CDC405D; Fri, 21 Apr 2006 00:16:23 +0200 (CEST) Date: Fri, 21 Apr 2006 00:16:23 +0200 From: Jeremie Le Hen To: Kostik Belousov Message-ID: <20060420221623.GD68951@obiwan.tataz.chchile.org> References: <20060420114822.GB35261@obiwan.tataz.chchile.org> <20060420124829.GA1446@deviant.kiev.zoral.com.ua> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20060420124829.GA1446@deviant.kiev.zoral.com.ua> User-Agent: Mutt/1.5.11 Cc: freebsd-hackers@freebsd.org Subject: Re: [fbsd] Re: Symbol weirdness with static linking X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Apr 2006 22:16:26 -0000 Hi, Kostik, > > For the sake of completeness, I added the output of some objdump(1) > > outputs here : > > > > /usr/obj/usr/src/bin/echo/echo.o: > > http://tataz.chchile.org/~tataz/symbol_weirdness/objdump-t_echo.txt.gz > > > > /usr/obj/usr/src/tmp/usr/lib/libc.a: > > http://tataz.chchile.org/~tataz/symbol_weirdness/objdump-t_libc.txt.gz > > > > /usr/obj/usr/src/tmp/usr/lib/libssp.a: > > http://tataz.chchile.org/~tataz/symbol_weirdness/objdump-t_libssp.txt.gz > > It seems that you rebuilt world with CFLAGS -fstack-protector, > since your libc has references to the symbols like __stack_smash_handler. > As result, when linking with sequence -lgcc -lssp -lc -lgcc -lssp, > and no references from the main object, > references from libc causes objects from _second_ instance of -lssp to > be pulled into the link. Since libraries are scanned sequentially, > this object from libssp has no way to get required dependencies > from libc. Yes, I understand that. But I can't see what's the difference between "syslog" and "sigfillset" symbols from this standpoint. The fact the former requires ProPolice/SSP doesn't interfere IMHO. > What makes syslog(3) special is that corresponding object from libc, > syslog.o, requires __stack_smash_handler, while objects for mentioned > syscalls do not. How does it prevent the "syslog" symbol from being found ? Libc undefined symbols implies the second libssp to be pulled in which in turn has undefined symbol. But since there is no more libc after this, "sigfillset" should be missing either. I would understand if echo.o needed some symbols provided by the same archive than "sigfillset" (sigsetops.o) but this is not the case. Regards, -- Jeremie Le Hen < jeremie at le-hen dot org >< ttz at chchile dot org >