Just in case it helps anyone, since I did not really have time to investigate the gdb issues, I came up with the attached elf editor which replaces the content of PT_INTERP. Eventually, I will have to deal with gdb but, not now :) Mathieu On Mon, Jan 5, 2009 at 3:58 PM, Mathieu Lacage wrote: >> 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 > -- Mathieu Lacage