From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28186 invoked by alias); 5 Jan 2009 14:58:48 -0000 Received: (qmail 28177 invoked by uid 22791); 5 Jan 2009 14:58:47 -0000 X-SWARE-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_22,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from wf-out-1314.google.com (HELO wf-out-1314.google.com) (209.85.200.168) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 05 Jan 2009 14:58:42 +0000 Received: by wf-out-1314.google.com with SMTP id 28so9031739wfc.24 for ; Mon, 05 Jan 2009 06:58:39 -0800 (PST) Received: by 10.142.199.16 with SMTP id w16mr8710742wff.4.1231167519133; Mon, 05 Jan 2009 06:58:39 -0800 (PST) Received: by 10.143.16.7 with HTTP; Mon, 5 Jan 2009 06:58:39 -0800 (PST) Message-ID: <74fef6df0901050658g6c279a3ah321c7c6e30630475@mail.gmail.com> Date: Mon, 05 Jan 2009 14:58:00 -0000 From: "Mathieu Lacage" To: gdb@sourceware.org Subject: Re: how to make gdb happy with my linkmap In-Reply-To: <20081226125329.GA12783@caradoc.them.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <74fef6df0812181341x8ecdd31me028bd4d658384b1@mail.gmail.com> <20081218214854.GA7706@caradoc.them.org> <74fef6df0812181402n1debced5xbe3f402a3a34ecf2@mail.gmail.com> <20081218221005.GA9012@caradoc.them.org> <74fef6df0812260239o1f21e833t6464c9d41bedcdd1@mail.gmail.com> <20081226125329.GA12783@caradoc.them.org> X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2009-01/txt/msg00012.txt.bz2 > Does it work any better with ld.so? I doubt it - GDB doesn't do It does not seem to work any better with ld-linux.so.2. I tried to look into this a bit more but I did not make much progress. Here is what I get: mathieu@mathieu-boulot:~/code/elf-loader$ gdb ./ldso GNU gdb 6.8-debian Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i486-linux-gnu"... (gdb) b stage1 Breakpoint 1 at 0x944: file ldso.c, line 304. (gdb) r ./hello Starting program: /home/mathieu/code/elf-loader/ldso ./hello hello Program exited normally. (gdb) What I find weird is: 1) mathieu@mathieu-boulot:~/code/elf-loader$ readelf -s ./ldso |grep stage1 225: 00000932 135 FUNC GLOBAL HIDDEN 6 stage1 mathieu@mathieu-boulot:~/code/elf-loader$ readelf -l ./ldso Elf file type is DYN (Shared object file) Entry point 0x932 There are 6 program headers, starting at offset 52 [...] i.e., stage1 is located at offset 0x932, and not 0x944 so, I can't figure out where the 0x944 displayed by gdb is coming from. I also find it surprising that gdb is actually trying to set a breakpoint at address 0x944: this is a pie binary so, gdb should know that the address will be known only once the program is run.... To summarize, 2 questions: 1) what do I need to do to make gdb _not_ attempt to really set the breakpoint before the program is run ? 2) why is gdb using 0x944 and not 0x932 ? I am shooting a bit in the dark here, obviously. Mathieu -- Mathieu Lacage