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

Greg Clayton gclayton at apple.com
Wed Jun 23 09:48:04 PDT 2010


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.

> (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.







More information about the lldb-dev mailing list