[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