From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4632 invoked by alias); 12 Mar 2010 15:31:54 -0000 Received: (qmail 4622 invoked by uid 22791); 12 Mar 2010 15:31:54 -0000 X-SWARE-Spam-Status: No, hits=-7.2 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 12 Mar 2010 15:31:50 +0000 Received: from int-mx03.intmail.prod.int.phx2.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o2CFVfp4002712 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 12 Mar 2010 10:31:41 -0500 Received: from host0.dyn.jankratochvil.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx03.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o2CFVcpw027676 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 12 Mar 2010 10:31:40 -0500 Received: from host0.dyn.jankratochvil.net (localhost [127.0.0.1]) by host0.dyn.jankratochvil.net (8.14.3/8.14.3) with ESMTP id o2CFVcSP013717; Fri, 12 Mar 2010 16:31:38 +0100 Received: (from jkratoch@localhost) by host0.dyn.jankratochvil.net (8.14.3/8.14.3/Submit) id o2CFVcTj013716; Fri, 12 Mar 2010 16:31:38 +0100 Date: Fri, 12 Mar 2010 15:31:00 -0000 From: Jan Kratochvil To: gdb-patches@sourceware.org Cc: Daniel Jacobowitz Subject: Re: [patch] svr4_exec_displacement success indicator [Re: PIE question] Message-ID: <20100312153138.GB13120@host0.dyn.jankratochvil.net> References: <20100307005326.GA29245@caradoc.them.org> <20100308213744.GA16628@host0.dyn.jankratochvil.net> <20100308215357.GA17132@host0.dyn.jankratochvil.net> <20100308215913.GB2629@caradoc.them.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100308215913.GB2629@caradoc.them.org> User-Agent: Mutt/1.5.20 (2009-08-17) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-03/txt/msg00455.txt.bz2 On Mon, 08 Mar 2010 22:59:13 +0100, Daniel Jacobowitz wrote: > On Mon, Mar 08, 2010 at 10:53:58PM +0100, Jan Kratochvil wrote: > > OK to check-in? > > Yes, these are OK. [Sorry, should have checked this folder first.] -> http://sourceware.org/ml/gdb-cvs/2010-03/msg00097.html # 2010-03-10 Jan Kratochvil # + # + * solib-svr4.c (svr4_exec_displacement): Return now success, new # + parameter displacementp. Update comment. # + (svr4_relocate_main_executable): Return if non-zero SECTION_OFFSETS # + element exists. Return if svr4_exec_displacement was not successful. # + Update comment. Is it OK also for gdb_7_1-branch? Otherwise the minimized attached patch also works for me. Still I would prefer the full patch from the master branch. No regressions on {x86_64,x86_64-m32,i686}-fedora13-linux-gnu. Thanks, Jan gdb/ 2010-03-12 Jan Kratochvil * solib-svr4.c (svr4_relocate_main_executable): Delay the svr4_exec_displacement call. Return on non-DYNAMIC exec_bfd. --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -1719,7 +1719,15 @@ svr4_exec_displacement (void) static void svr4_relocate_main_executable (void) { - CORE_ADDR displacement = svr4_exec_displacement (); + CORE_ADDR displacement; + + /* Therefore for ELF it is ET_EXEC and not ET_DYN. Both shared libraries + being executed themselves and PIE (Position Independent Executable) + executables are ET_DYN. */ + if (exec_bfd && (bfd_get_file_flags (exec_bfd) & DYNAMIC) == 0) + return; + + displacement = svr4_exec_displacement (); /* Even if DISPLACEMENT is 0 still try to relocate it as this is a new difference of in-memory vs. in-file addresses and we could already