|
Message-ID: <20140421202531.GI26358@brightrain.aerifal.cx> Date: Mon, 21 Apr 2014 16:25:32 -0400 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: _start(ldso) & _start(crt) On Mon, Apr 21, 2014 at 03:41:23PM -0400, writeonce@...ipix.org wrote: > Greetings, > > When running a dynamically linked program, the general control flow is > > _start(ldso/{arch}/start.s) --> __dynlink --> _start(crt) --> > __libc_start_main --> main() > > When asking gdb to set up a breakpoint at _start (b _start), gdb's > confirmation message shows the address of _start(crt), but it then > breaks at _start(ldso), which is actually what I want. It then > later also breaks at _start(crt). > > If gdb decided to only break at the executable's _start, then I > believe there would be no way to request a break at the > interpreter's (ldso) _start routine, since the address of ldso's > _start is not known prior to execution. > > I am not sure whether this is a good-enough motivation to rename > ldso's start to _ldso_start (and set libc.so's entry point > accordingly), or whether we could simply count on gdb and other > debuggers to continue to do the "right thing" by breaking at the > earlier _start of the two. For one thing, setting a breakpoint at > __dynlink provides pretty much the same debugging ability as with > _start(ldso), and does not require any changes. Any thoughts? The motivation for the name _start in the dynamic linker was presumably that it gets used by default as the entry point, but we already have -Wl,-e,_start anyway, so I don't see any compelling reason it couldn't be renamed. Does anyone else object to changing it? Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.