#
c3e066cf |
|
16-Dec-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Replaced uses of obsolescent BReference[able] API. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39869 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3c0955a1 |
|
14-Jul-2009 |
Rene Gollent <anevilyak@gmail.com> |
* Removed no longer needed workaround for mouse wheel messages (thanks Axel!). * Introduced SourceCode::LineLengthAt(index) and respective implementations in FileSourceCode and DisassembledCode for getting the cached length of the line at the given index. * Use LineLengthAt in various places in SourceView::TextView to avoid having to calculate string lengths on the fly. * Clamp the size of the drag and drop rect to the window size. Otherwise in cases of large selections, said rect would get quite large. * Add support for double click word and triple click line selection. * Fix problems with tracking state which would erroneously cause the mouse entering the view while dragging on a scroll bar to initiate a drag and drop if there was selected text. * Add Select All menu/keyboard shortcut and implement corresponding functionality in SourceView::TextView. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31587 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fd1f5093 |
|
13-Jul-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
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
|
#
18ca318a |
|
10-Jul-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Since disassembled code is actually function instance specific, FunctionInstance does now also have a (DisassembledCode) source code attribute. Function keeps its attribute, but it explicitly is a FileSourceCode now. * SourceCode: - Removed GetStatementAtLocation(). Instead DisassembledCode has a StatementAtLocation() now. As well as a StatementAtAddress() and StatementAddressRange(). Rather cast to the subclass (in two instances) instead of having those methods in the base class. In most cases we already have the subclasses now, anyway. - Added Lock()/Unlock(), which are implemented in FileSourceCode. The statement ranges are no longer immutable, so we have to lock. * TeamDebugModel: - Revived GetBreakpointsInAddressRange(). - GetBreakpointsForSourceCode(): Optimized for DisassembledCode and fixed in the FileSourceCode case. We need to compare with the functions' source file instead of their source code, since they might not have the source code set yet. Fixed two instances of the same problem in SourceView. Setting breakpoints in functions that have no associated source code yet, works now. * Team: - GetStatementAtAddress(): Optimized by using the DisassembledCode, if available. - GetStatementAtSourceLocation(): If the supplied source code is DisassembledCode, we have to get the statement from it directly, since we can't get that information from the image debug info. * TeamDebugInfo: Added LoadSourceCode() and DisassembleFunction(), the new way to get FileSourceCode respectively DisassembledCode. SpecificTeamDebugInfo has lost LoadSourceCode() and gained service methods AddSourceCodeInfo() and ReadCode(). This avoids unnecessary code duplication in the subclasses. Moreover it allows for joining source location info source files from different images (and compilation units) -- interesting for inline functions in headers. * Adjusted LoadSourceCodeJob and TeamDebugger::FunctionSourceCodeRequested() accordingly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31514 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a4b0c192 |
|
09-Jul-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Finished the transformation of the SourceCode interface: - Replaced StatementAtLine() by GetStatementLocationRange(), which doesn't return a statement (i.e. also target addresses), but just a range in the source code. This can also be implemented by FileSourceCode, which can therefore be used for more than one instance of a function. - Added GetStatementAtLocation() which kind of is also a replacement for StatementAtLine(), but is optional and only provided by DisassembledSourceCode. - Added GetSourceFile(), which has to be provided when GetStatementAtLocation() is not implemented. - Kicked the statement stuff out of FileSourceCode. It only knows source ranges, now. * Team: Added GetStatementAtSourceLocation(), which is the real replacement for SourceCode::StatementAtLine() in cases where a statement is actually needed. It uses SourceCode::GetStatementAtLocation(), if available and otherwise finds a function at the source location, and gets a statement for one of its instances. * TeamDebugInfo: Does now manage a source file -> functions map allowing to look up functions at source file locations. * DwarfImageDebugInfo: - Switched the path in the source code hash table key for a LocatableFile, which is cheaper to hash and to compare. - Fixed bugs where the relocation delta was ignored. - Replace a -1 in the SourceLocation column component by 0 to avoid mismatches. * SourceLocation: Changed component types from uint32 to int32. Otherwise -1 is not representable. Things mostly work as before starting the refactoring to support function instances. All is not well yet, though. E.g. we don't merge the source code information for common source files (like headers) provided by different compilation units (or even images) yet. We need to do that, since the debug info for a compilation unit only contains line number information for inline functions (in headers) that are actually used. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31495 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f66bd625 |
|
07-Jul-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Very much work in progress, not in a particularly working state. Haiku munged a good part of the source tree, so I rather get those changes into the repository before continuing. The general aim of the work is to deal with multiple instances of the same function, e.g. inlined or non-inlined inline functions or those weird duplicates gcc (4 at least) seems to be generating for no apparent reason. * Added classes FunctionInstance (wrapping FunctionDebugInfo) and Function. FunctionInstance represents a physical instance of a function (e.g. inlined function at a particular address). A Function collects all FunctionInstances referring to the same source code location. * Moved the SourceCode property from FunctionDebugInfo to Function accordingly. * Since SourceCode is no longer associated with a concrete function instance, several methods dealing with statements have been removed and the functionality has been provided through other means (e.g. TeamDebugModel or SpecificImageDebugModel). This part is not yet completed. * Introduced UserBreakpoint and UserBreakpointInstance. The user sets a breakpoint at a source code location, which is represented by a UserBreakpoint. Since that source location can be mapped to one address per instance of the respective function, UserBreakpoint has a UserBreakpointInstance per such function instance, which in turn refers to a Breakpoint (an actual breakpoint at an address). * Adjusted Breakpoint, BreakpointManager, and TeamDebugger accordingly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31447 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6381d6cc |
|
22-Jun-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added Breakpoint class and extended TeamDebugModel to manage the objects. Extended the event mechanism respectively. * Added support to SourceView to display breakpoints and manipulate them. * Extended TeamDebugger to install/uninstall breakpoints. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31189 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7367310f |
|
21-Jun-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Virtualized SourceCode and implemented a derived class DisassembledCode, which allows to implement StatementAtAddress() in O(log(n). * Added SourceCode::StatementAtLine(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31174 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
49ad0141 |
|
21-Jun-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added StatementAtAddress() returning the statement at a given target address. Needs optimization (iterates through all statements ATM). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31169 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0bcacd22 |
|
21-Jun-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added classes to represent source code (SourceCode, Statement). * Added x86 disassembler (via libudis86). * Added Architecture::DisassembleCode() to disassemble a function to SourceCode. * Added virtual DebugInfo::LoadSourceCode() to retrieve the source code for a given function. The implementation in DebuggerDebugInfo disassembles the function. * Added source code info to StackFrame. Also added a listener mechanism to get notified on source code changes. * Added job to load the source code for a stack frame. * Added (very basic) source code view and wired everything so that when a stack frame is selected the source code (respectively disassembly) for the underlying function is retrieved and shown. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31158 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c3e066cf6d35a86d29396d4e740f9811e506b66c |
|
16-Dec-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Replaced uses of obsolescent BReference[able] API. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39869 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3c0955a1ce255ff89bec735e75d85d6a0d5c13fd |
|
14-Jul-2009 |
Rene Gollent <anevilyak@gmail.com> |
* Removed no longer needed workaround for mouse wheel messages (thanks Axel!). * Introduced SourceCode::LineLengthAt(index) and respective implementations in FileSourceCode and DisassembledCode for getting the cached length of the line at the given index. * Use LineLengthAt in various places in SourceView::TextView to avoid having to calculate string lengths on the fly. * Clamp the size of the drag and drop rect to the window size. Otherwise in cases of large selections, said rect would get quite large. * Add support for double click word and triple click line selection. * Fix problems with tracking state which would erroneously cause the mouse entering the view while dragging on a scroll bar to initiate a drag and drop if there was selected text. * Add Select All menu/keyboard shortcut and implement corresponding functionality in SourceView::TextView. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31587 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fd1f5093305cee37ad817d62ccbbe434aab18405 |
|
13-Jul-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
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
|
#
18ca318a3d814fb5c61218b6097db8dd6b4fe0a4 |
|
10-Jul-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Since disassembled code is actually function instance specific, FunctionInstance does now also have a (DisassembledCode) source code attribute. Function keeps its attribute, but it explicitly is a FileSourceCode now. * SourceCode: - Removed GetStatementAtLocation(). Instead DisassembledCode has a StatementAtLocation() now. As well as a StatementAtAddress() and StatementAddressRange(). Rather cast to the subclass (in two instances) instead of having those methods in the base class. In most cases we already have the subclasses now, anyway. - Added Lock()/Unlock(), which are implemented in FileSourceCode. The statement ranges are no longer immutable, so we have to lock. * TeamDebugModel: - Revived GetBreakpointsInAddressRange(). - GetBreakpointsForSourceCode(): Optimized for DisassembledCode and fixed in the FileSourceCode case. We need to compare with the functions' source file instead of their source code, since they might not have the source code set yet. Fixed two instances of the same problem in SourceView. Setting breakpoints in functions that have no associated source code yet, works now. * Team: - GetStatementAtAddress(): Optimized by using the DisassembledCode, if available. - GetStatementAtSourceLocation(): If the supplied source code is DisassembledCode, we have to get the statement from it directly, since we can't get that information from the image debug info. * TeamDebugInfo: Added LoadSourceCode() and DisassembleFunction(), the new way to get FileSourceCode respectively DisassembledCode. SpecificTeamDebugInfo has lost LoadSourceCode() and gained service methods AddSourceCodeInfo() and ReadCode(). This avoids unnecessary code duplication in the subclasses. Moreover it allows for joining source location info source files from different images (and compilation units) -- interesting for inline functions in headers. * Adjusted LoadSourceCodeJob and TeamDebugger::FunctionSourceCodeRequested() accordingly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31514 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a4b0c19209887ee3619cf3f8b2935f51d23afca3 |
|
09-Jul-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Finished the transformation of the SourceCode interface: - Replaced StatementAtLine() by GetStatementLocationRange(), which doesn't return a statement (i.e. also target addresses), but just a range in the source code. This can also be implemented by FileSourceCode, which can therefore be used for more than one instance of a function. - Added GetStatementAtLocation() which kind of is also a replacement for StatementAtLine(), but is optional and only provided by DisassembledSourceCode. - Added GetSourceFile(), which has to be provided when GetStatementAtLocation() is not implemented. - Kicked the statement stuff out of FileSourceCode. It only knows source ranges, now. * Team: Added GetStatementAtSourceLocation(), which is the real replacement for SourceCode::StatementAtLine() in cases where a statement is actually needed. It uses SourceCode::GetStatementAtLocation(), if available and otherwise finds a function at the source location, and gets a statement for one of its instances. * TeamDebugInfo: Does now manage a source file -> functions map allowing to look up functions at source file locations. * DwarfImageDebugInfo: - Switched the path in the source code hash table key for a LocatableFile, which is cheaper to hash and to compare. - Fixed bugs where the relocation delta was ignored. - Replace a -1 in the SourceLocation column component by 0 to avoid mismatches. * SourceLocation: Changed component types from uint32 to int32. Otherwise -1 is not representable. Things mostly work as before starting the refactoring to support function instances. All is not well yet, though. E.g. we don't merge the source code information for common source files (like headers) provided by different compilation units (or even images) yet. We need to do that, since the debug info for a compilation unit only contains line number information for inline functions (in headers) that are actually used. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31495 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f66bd6256a87005ccaa493859ede2ca1601b8560 |
|
07-Jul-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Very much work in progress, not in a particularly working state. Haiku munged a good part of the source tree, so I rather get those changes into the repository before continuing. The general aim of the work is to deal with multiple instances of the same function, e.g. inlined or non-inlined inline functions or those weird duplicates gcc (4 at least) seems to be generating for no apparent reason. * Added classes FunctionInstance (wrapping FunctionDebugInfo) and Function. FunctionInstance represents a physical instance of a function (e.g. inlined function at a particular address). A Function collects all FunctionInstances referring to the same source code location. * Moved the SourceCode property from FunctionDebugInfo to Function accordingly. * Since SourceCode is no longer associated with a concrete function instance, several methods dealing with statements have been removed and the functionality has been provided through other means (e.g. TeamDebugModel or SpecificImageDebugModel). This part is not yet completed. * Introduced UserBreakpoint and UserBreakpointInstance. The user sets a breakpoint at a source code location, which is represented by a UserBreakpoint. Since that source location can be mapped to one address per instance of the respective function, UserBreakpoint has a UserBreakpointInstance per such function instance, which in turn refers to a Breakpoint (an actual breakpoint at an address). * Adjusted Breakpoint, BreakpointManager, and TeamDebugger accordingly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31447 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6381d6cc4ee3d8c4efc92523538d63e16cf0b22f |
|
22-Jun-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added Breakpoint class and extended TeamDebugModel to manage the objects. Extended the event mechanism respectively. * Added support to SourceView to display breakpoints and manipulate them. * Extended TeamDebugger to install/uninstall breakpoints. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31189 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7367310fbe0c06244a678bfaa36a60e5817659dd |
|
21-Jun-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Virtualized SourceCode and implemented a derived class DisassembledCode, which allows to implement StatementAtAddress() in O(log(n). * Added SourceCode::StatementAtLine(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31174 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
49ad0141cf5600285f423e60a622eb9c4c7bc13a |
|
21-Jun-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added StatementAtAddress() returning the statement at a given target address. Needs optimization (iterates through all statements ATM). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31169 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0bcacd22ab6dc13aa6fb33197a6c3d14a62d1b00 |
|
21-Jun-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added classes to represent source code (SourceCode, Statement). * Added x86 disassembler (via libudis86). * Added Architecture::DisassembleCode() to disassemble a function to SourceCode. * Added virtual DebugInfo::LoadSourceCode() to retrieve the source code for a given function. The implementation in DebuggerDebugInfo disassembles the function. * Added source code info to StackFrame. Also added a listener mechanism to get notified on source code changes. * Added job to load the source code for a stack frame. * Added (very basic) source code view and wired everything so that when a stack frame is selected the source code (respectively disassembly) for the underlying function is retrieved and shown. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31158 a95241bf-73f2-0310-859d-f6bbb57e9c96
|