From owner-cvs-src-old@FreeBSD.ORG Fri Oct 22 04:43:18 2010 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1B791106566B for ; Fri, 22 Oct 2010 04:43:18 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0840C8FC18 for ; Fri, 22 Oct 2010 04:43:18 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.4/8.14.4) with ESMTP id o9M4hHHV086776 for ; Fri, 22 Oct 2010 04:43:17 GMT (envelope-from marcel@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.4/8.14.4/Submit) id o9M4hHGu086775 for cvs-src-old@freebsd.org; Fri, 22 Oct 2010 04:43:17 GMT (envelope-from marcel@repoman.freebsd.org) Message-Id: <201010220443.o9M4hHGu086775@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to marcel@repoman.freebsd.org using -f From: Marcel Moolenaar Date: Fri, 22 Oct 2010 04:43:04 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/libexec/rtld-elf Makefile src/libexec/rtld-elf/ia64 reloc.c X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Oct 2010 04:43:18 -0000 marcel 2010-10-22 04:43:04 UTC FreeBSD src repository Modified files: libexec/rtld-elf Makefile libexec/rtld-elf/ia64 reloc.c Log: SVN rev 214194 on 2010-10-22 04:43:04Z by marcel Unbreak ia64. With r169630 I disabled symbol versioning because it broke rtld. With r211706 rtld got broken for ia64 & powerpc64. It was fixed for powerpc64 with r212497. In between, r211749 removed the exports table because the version script handled the exports. But wait, symbol versioning was disabled on ia64. With exports controlled by the version script and symbol versioning disabled, all symbols are exported and too many symbols bind to the definition in rtld. Let's just say that waird things happen. So, enable symbol versioning on ia64 and apply a work-around for the SIGSEGV that triggered r169630 to begin with: when rtld relocates itself, it comes across r_debug_state and for some reason can't find the definition. This causes a failure, relocation aborts and null pointers galore. The work-around is to ignore the missing definition when rtld is relocating itself and keep going. Maybe with the next binutils this will all go away. Maybe not, in which case I still need to figure out why r_debug_state cannot be found. BTW: r_debug_state is in the symbol map -- I don't think any other rtld symbols that rtld references are in the symbol map... Revision Changes Path 1.51 +0 -2 src/libexec/rtld-elf/Makefile 1.22 +16 -3 src/libexec/rtld-elf/ia64/reloc.c