Commit Graph
14 Commits
Author SHA1 Message Date
Ingo Weinhold 6e72ebfce3 * More work on retrieving local variable values. Address and compound types can
now be inspected. Still work in progress -- bit fields and arrays don't work
  correctly yet nor does type lookup beyond the current compilation unit.
* Made most of the debugger output configurable via a config header. By default
  it's much less noisy now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33217 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-21 04:39:40 +00:00
Ingo Weinhold 8d716cdba3 Added support for several variable and lexical block entry attributes and
child handling for lexical blocks (at least for nesting and variables).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31646 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-20 01:05:10 +00:00
Ingo Weinhold e3eda50984 Made ByteSize() a virtual method in DIEType and implemented in all subclasses
that potentially have that attribute.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31633 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-18 23:16:51 +00:00
Ingo Weinhold d315bfd510 * Added class ValueLocation to represent a location of a value on the target
machine.
* DWARF:
  - Various additions to the DIE classes.
  - DwarfExpressionEvaluationContext:
    - Added support for location expressions and thus the missing DW_OP_piece
      and DW_OP_bit_piece operations.
    - Fixed some deviations from the specs.
    - Added debug output.
  - DwarfFile:
    - Added missing evaluation of CFA expression rules.
    - Added service methods to evaluate expressions, location expressions,
      and constant and dynamic values.
* Added model classes for representing types and variables. Particularly the
  types part is not finished yet.
* StackFrame does now contain parameters and local variables.
* Added DwarfInterfaceFactory, which creates implementation objects for the
  types, as well as variables objects. It's even less finished.
* DwarfImageDebugInfo::CreateFrame(): Resolve function parameters and add them
  to the stack frame. No local variables yet.
* Added the beginnings of a variables view. Only lists the names of parameters
  and local variables (of understood types) ATM.
* Renamed RegisterView to RegistersView.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31614 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-17 01:54:43 +00:00
Ingo Weinhold d24e0386a3 * Added LocationDescription class.
* Handle DW_AT_location attributes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31591 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-15 16:49:08 +00:00
Ingo Weinhold 3c33a74c01 Rather resolve range lists lazily. We need them for all functions, but there
are a lot more DIEs that have range lists.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31586 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-15 12:37:56 +00:00
Ingo Weinhold 106c4d4020 * Got rid of dwarf_{addr,off,size}_t. Consequently use 64 bit types instead.
* Made the DWARF code fully 64 bit aware (hopefully).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31546 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-13 23:03:36 +00:00
Ingo Weinhold fd1f509330 Skeleton for source language abstraction. There's SourceLanguage with several
subclasses, though they don't do much yet. SourceCode is now associated with a
SourceLanguage.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31544 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-13 20:45:15 +00:00
Ingo Weinhold 15857c22d5 DIEClassBaseType: Also handle inner types.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31398 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-03 20:58:02 +00:00
Ingo Weinhold d68a0c6f4f Added DIECompileUnitBase::CompilationDir() getter.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31330 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-30 14:33:07 +00:00
Ingo Weinhold 91c6759f30 * Added parsing the .debug_line header for each compilation unit and attaching
the include directory and source file names to CompilationUnit.
* Added DwarfUtils::GetDeclarationLocation() which retrieves the respective
  source file name and line/column index for a given DIE.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31325 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-30 12:48:46 +00:00
Ingo Weinhold 5b60969c5c * Renamed ArchitectureTypes.h to Types.h.
* Created "types" subdirectory for basic types and moved Types.h,
  SourceLocation, TargetAddressRange there.
* Added TargetAddressRangeList, representing a list of address ranges.
* Array: Added copy constructor and assignment operator.
* Added DwarfFunctionDebugInfo.
* ElfFile: Also read the program headers and provide access to the segment
  information.
* DWARF:
  - Some work on DIECompileUnitBase and DIESubprogram to handle attributes we
    need.
  - Added DwarfUtils class which provides static utility methods. Currently some
    to get DIE names. Only provisionally implemented yet.
  - Read range list attribute values from the .debug_ranges section. Extended
    AttributeValue to handle them correctly (ref-counting).
* DwarfImageDebugInfo:
  - Implemented GetFunctions() for real, i.e. we return functions for all
    subprogram debug info entries we find (those that refer to actual
    functions, that is).
  - Implemented the fallback part of LoadSourceCode() (reading the code from the
    file and disassembling it).

Things should hopefully work as before, just a bit slower and with less accurate
function names, if DWARF debug info is available. Promising, eh? ;-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31321 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-29 22:38:15 +00:00
Ingo Weinhold e39f300039 Added some accessors.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31280 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-27 23:35:37 +00:00
Ingo Weinhold 9e8ec48b30 Moved dwarf related code into dwarf/ subdirectory.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31064 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-15 21:50:04 +00:00