This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: symtab/2069: gdb can't handle PIE


The following reply was made to PR symtab/2069; it has been noted by GNATS.

From: Alex Bennee <kernel-hacker@bennee.com>
To: gdb-gnats@sources.redhat.com
Cc:  
Subject: Re: symtab/2069: gdb can't handle PIE
Date: Mon, 01 Oct 2007 11:22:45 +0100

 This also occurs if you build your executable with the following:
 
 CFLAGS =  -fpic -shared 
 LDFLAGS =  -Wl,-e,_start
 
 $ gdb ourprog
 This GDB was configured as "x86_64-linux-gnu"...
 Using host libthread_db library "/lib/libthread_db.so.1".
 (gdb) start
 Breakpoint 1 at 0x32e753: file ourprog/main.cc, line 67.
 Starting program: ourprog
 Warning:
 Cannot insert breakpoint 1.
 Error accessing memory address 0x32e753: Input/output error.
 
 This is to be expected of course as our executable live way up high:
 
 $ cat /proc/123456/map
 <snip>
 2b8268e6a000-2b8268fb1000 r-xp 00000000 08:01
 1733565                    /lib/libc-2.5.so
 2b8268fb1000-2b82691b1000 ---p 00147000 08:01
 1733565                    /lib/libc-2.5.so
 2b82691b1000-2b82691b4000 r-xp 00147000 08:01
 1733565                    /lib/libc-2.5.so
 2b82691b4000-2b82691b6000 rwxp 0014a000 08:01
 1733565                    /lib/libc-2.5.so
 2b82691b6000-2b82691bd000 rwxp 2b82691b6000 00:00 0 
 2b82691bd000-2b82691be000 ---p 2b82691bd000 00:00 0 
 2b82691be000-2b82692fe000 rwxp 2b82691be000 00:00 0 
 2b82692fe000-2b82692ff000 r-xp 00000000 00:12
 29833155                   /tmp/dynaEcmyWf (deleted)
 2b82692ff000-2b82695c3000 rwxp 2b82692ff000 00:00 0 
 555555554000-555555a32000 r-xp 00000000 08:04 12649433
 ourprog
 555555b32000-555555b79000 rwxp 004de000 08:04 12649433
 ourprog
 555555b79000-555555c77000 rwxp 555555b79000 00:00 0
 [heap]
 7fff42c04000-7fff42c1a000 rwxp 7fff42c04000 00:00 0
 [stack]
 ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
 [vdso]
 
 Running the binary with "r" works fine although you can't set any
 breakpoints in the code.
 I suspect this is because the symbols in our shared object are relative.
 It looks like the add-symbol-file should be able to handle this but I'm
 not seeing it work.
 
 (gdb) add-symbol-file ourprog 0x555555554000
 add symbol table from file "ourprog" at
         .text_addr = 0x555555554000
 (y or n) y
 Reading symbols from ourprog...done
 (gdb) x/5i main
 0x32e740 <main>:        push   %rbp
 0x32e741 <main+1>:      mov    %rsp,%rbp
 
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]