[lldb-dev] ELF parsing/disassembly almost, but not quite working?

Daniel Dunbar daniel at zuster.org
Wed Jun 23 10:39:22 PDT 2010


On Wed, Jun 23, 2010 at 9:48 AM, Greg Clayton <gclayton at apple.com> wrote:
>
> On Jun 22, 2010, at 7:01 PM, Eli Friedman wrote:
>
>> With a few hacks and some Makefiles, I have lldb running on Linux
>> (I'll contribute them once I have a couple more things taken care of).
>
> Great!
>
>> However, when I try using it, I get the following not-so-useful
>> results on the attached ELF-32 file:
>>
>> eli at eli-laptop:~/llvmgbuild/tools/lldb$ ~/llvmgbuild/Release/bin/lldb
>> (lldb) file /tmp/a
>> Current executable set to '/tmp/a' (x86_64).
>
> This has to do with the default architecture that is currently being set. We will need to set the following macros correctly for linux:
>
> LLDB_ARCH_DEFAULT
> LLDB_ARCH_DEFAULT_32BIT
> LLDB_ARCH_DEFAULT_64BIT
>
> These don't make as much sense in linux as they do on Mac OS X. In Mac OS X we can run either 32 or 64 bit versions of apps on the same OS install if it is 64 bit capable (85% of our Intel machines are 64 bit capable).
>
> So we probably want to set the LLDB_ARCH_DEFAULT defines correctly for the current linux host OS with #ifdefs. This will then mean that you won't have to set the architecture unless you are doing cross debugging.

This doesn't seem like the kind of thing to handle with #ifdefs,
shouldn't lldb be able to infer the architecture from the binary it is
debugging?

 - Daniel

>
>> (lldb) disassemble -n main
>
>> (lldb) quit
>> Segmentation fault
>>
>> The segfault is probably an issue in my own code, but I'm sort of
>> suprised the attempted disassembly leads to no output.  Any ideas?
>
>
> We do currently have two ReadMemory calls:
>
> Target::ReadMemory(...)
> Process::ReadMemory(...)
>
> The Target version should be able to read memory from constant sections in executable files when we aren't running, I just need to hook it up (read the section contents from the file instead of from live memory). It shouldn't take long, I will try and get to this today as this feature is quite useful.
>
> The rules are simple for ReadMemory:
> - use the target if you know your memory might come from a constant section, or you would like us to try and read from the constant sections to avoid a ton of packets going to/from your Process plug-in.
> - use the Process version if you want to read from the inferior process and skip the constant section caches.
>
>
>
>
> _______________________________________________
> 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