[lldb-dev] How to get the entry point of a target like the one in --stop-at-entry
Greg Clayton
gclayton at apple.com
Mon Feb 17 13:16:16 PST 2014
Internally ObjectFile has:
virtual lldb_private::Address
GetEntryPointAddress ();
If you want this externally, you will want to add it to the SBModule:
class SBModule {
SBAddress
GetEntryPointAddress();
}
This isn't currently exposed, but it could easily be.
Greg
On Feb 17, 2014, at 1:08 PM, Yin Ma <yin at affinic.com> wrote:
> Hi Jim,
>
> Thank you for the reply. I don't know there is the difference
> Between -stop-at-entry address and entry point address. I originally
> thought stop at entry would stop at entry point address.
>
> Could provide me a basic flow about how make it available to python API.
> I need to use the python script way instead of linked way. When I google this
> issue, I found a patch about GetEntryPointAddress function. However,
> I don't have idea how to bring it to python with any prebuilt lldb.
>
> Thanks,
>
> Yin
>
> -----Original Message-----
> From: jingham at apple.com [mailto:jingham at apple.com]
> Sent: Monday, February 17, 2014 1:00 PM
> To: Yin Ma
> Cc: lldb-dev at cs.uiuc.edu
> Subject: Re: [lldb-dev] How to get the entry point of a target like the one in --stop-at-entry
>
> Ah, turns out you are asking a slightly different question there. You want the entry point of the code in an object file, which isn't actually where "process launch --stop-at-entry" will stop you. The -stop-at-entry actually stops before the first instruction of the program is executed - which is usually well before the entry point (e.g. main) of an object file.
>
> Anyway, there is an API - ObjectFile::GetEntryPointAddress that will return the "place the dynamic loader will jump to when it starts to execute code from a main executable." It isn't currently available through the SB API's, but it would be trivial to make it available. Feel free to do this if you need it.
>
> Jim
>
> On Feb 17, 2014, at 12:46 PM, Yin Ma <yin at affinic.com> wrote:
>
>> Hi Jim,
>>
>> In gdb, after an executable is loaded, if you run
>> Info target, it will tell the information of its entry point.
>> I believe the Mach-O/ELF/PE should have this defined so OS
>> Knows where to start the text section.
>>
>> Our debugger GUI uses this information to help users do
>> Better to analyze an executable in assembly level when
>> Debugger symbol is not available. So I am wondering if lldb can
>> provide this information also by some ways.
>>
>> Thanks,
>>
>> Yin
>>
>> -----Original Message-----
>> From: jingham at apple.com [mailto:jingham at apple.com]
>> Sent: Monday, February 17, 2014 11:15 AM
>> To: Yin Ma
>> Cc: lldb-dev at cs.uiuc.edu
>> Subject: Re: [lldb-dev] How to get the entry point of a target like the one in --stop-at-entry
>>
>> lldb doesn't implement "stop at entry" by putting a breakpoint on some function and hitting it. Traditionally on ptrace based systems this was implemented using the "PT_TRACEME" ptrace argument run in the child side of the fork that will create the target process, and on MacOS X, we use a posix_spawn option to start a process suspended that does basically the same thing.
>>
>> So we don't know in advance where this entry point will be. We just tell the OS to start the target suspended and then assume when it starts, that's where it is...
>>
>> I note that in one place (following exec's on OS X) we hard code the knowledge that _dyld_start is where "start suspended" is expected to end up. That's informally done there, it's not a property of the dynamic linker plugin. If this is generally determinable in advance, we could make this an API on the dynamic linker plugin.
>>
>> Anyway, maybe we could be more help if we knew why you wanted to know this.
>>
>> Jim
>>
>> On Feb 16, 2014, at 3:17 PM, Yin Ma <yin at affinic.com> wrote:
>>
>>> Hi,
>>>
>>> LLDB has provided an option to –stop-at-entry. I would like to
>>> Get the address of this entry point by a way. I checked API
>>> I didn’t found a function that could get this information. Could
>>> Anyone help me on this?
>>>
>>> Thanks,
>>>
>>> Yin
>>> _______________________________________________
>>> lldb-dev mailing list
>>> lldb-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>
>
>
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
More information about the lldb-dev
mailing list