This is the mail archive of the
mailing list for the frysk project.
Re: implement backtraces for AMD64
On Sun, Sep 17, 2006 at 04:45:00AM -0300, Alexandre Oliva wrote:
> This patch adds the missing bits to enable libunwind-based backtraces
> on AMD64/EM64T. A few notes:
> - The existing IsaEMT64 is misnamed: the correct spelling is EM64T,
> not EMT64. We should probably prefer the more neutral X86_64 name (as
> in the ELF data structure), or favor AMD64, like I did in the new
> RegisterAMD64 class (just trying to set balance ;-)
X86_64 is a neutral one, and emt64/em64t/amd64 should be replaced by
x86_64 or x8664 later.
> - I'm not entirely happy with adding libunwind-specific information to
> Isa, but Isa doesn't currently provide enough information to enable
> some alternate implementation that would keep everything entirely
> separate. If we had a method to return the Isa name or the ELF
> machine type or some such, then it would be possible to turn that into
> a reworked Register* factory/singleton pattern similar to that used
> for Isa, all within lib/unwind. It certainly doesn't help that
> lib/unwind is in frysk-imports, so it can't use anything in
> frysk-core; frysk-core/rt would have to have the glue.
I have added a method toString() in Isa to return Isa name, but I did
not check it in. If you think it is needed, I will code a patch for
Personally, I think Isa.toString is useful.
There has been a factory for Isa,
frysk-core/frysk/proc/IsaFacotry.java, and this factory gets machine
type from ELF file, /proc/<pid>/exe.
It is fine to me to add a register factory for libunwind.
> Comments? Any architectural guidance? Or is this ok to install?