Previously, there were two instances of the actual variables, named in
ControlLook.cpp and Utilities.cpp. This caused clashes on gcc4 builds, leading
to various crashes during initialization. Instead we now declare them as
static constants in the header itself as is done for various other interface
color constants elsewhere. Fixes ticket #8358.
- Architecture::CreateStackTrace() now uses the last frame's
PreviousCpuState() as the basis to continue unwinding when passed
a partial trace to continue from, rather than the (incorrect) actual
cpu state of that frame, which would have resulted in the last frame
being duplicated in the trace.
- Renamed variables to be more clear.
Used to store the unwound state of the CPU from this frame,
which will form the actual state of the following frame. Needed
in order to properly support continuation of unwinding from a
partial stack trace.
- Limit invocations of CreateStackTrace() in ThreadHandler to
only unwind the topmost frame since that's all it actually
cares about anyways. Also adjust Step Over to use this
functionality in order to work with the correct frame addresses,
since the CPU frame pointer register isn't entirely what we want
here.
CreateStackTrace() can now optionally be asked to limit the maximum
number of frames it tries to unwind. In conjunction, it can also be
passed an already existing partial stack trace, and be asked to
unwind more frames from it.
When stepping over, check to ensure that we're in the same call
frame that we started in. If not, reinstate the temporary breakpoint
and continue running.
Will be used later in order to determine if a given call obeys the
standard calling convention, in order to determine if we can safely
attempt to retrieve its return value.
When asked to step out, we now store the frame pointer of the current
stack frame. Upon hitting our temporary breakpoint, we then verify that
the current frame pointer is in fact in the previous frame. If not, we
reinstate the breakpoint and continue running.
- Add accessor for return type.
- Implement DW_AT_artificial parsing.
- Store the subprogram's template parameters and provide accessors
for them as well. Not used yet but will be handy later if/when we
want to expose the instantiated types somewhere in the user
interface when stepping into such a function.
- If multiple nested namespaces were involved in a name,
GetFullyQualifiedDIEName() would erroneously wipe out each one
as it walked up, leaving you with only the top level namespace.
- Don't touch the output parameter unless we're certain we succeeded.
- Use the artificial attribute to more intelligently determine when to omit
parameters. Fixes the first parameter on static class functions being
skipped incorrectly.
- Correctly handle varargs functions.
At least as far as I can tell, the template parameters are actually exported
as part of the DIESubprogram name itself, and don't need to be separately
retrieved.
When retrieving modifiers, we're actually pulling them off the type
in reverse order. Consequently we need to build the type's modifier string
similarly.
If the first modifier is a const, prepend it to type name instead.
When asked for a fully qualified DIE name, we now add the parameters
of functions as well. This allows them to show up in, e.g. the function
list view. Still needs some work but basically functional.
In the case of variables that refer to static members of compound types,
the specification will be a reference to a DIEMember rather than a
DIEVariable in DWARF3. Relax our restrictions accordingly.
- Add accesor to CompoundType to expose the particular compound kind.
- Implement aforementioned accessor in DwarfCompoundType, and ensure
DwarfTypeFactory populates it appropriately.
- Modify GlobalTypeLookup to make use of the address and compound
subtype kinds when trying to match a type.
Due to the lack of matching against the subtype, we would previously wind
up matching anonymous compound types against those of their parents, resulting
in the wrong type getting assigned to their value nodes.
Fixes#8190.
The previous solution had various issues where argv pointed to stack-based
objects that had potentially been destroyed/overwritten already. Fixes
#8173.
- Modify _SetupGDBArguments() to return an error code and check for it
accordingly.
The previous solution had various issues where argv pointed to stack-based
objects that had potentially been destroyed/overwritten already. Fixes
#8173.
- Modify _SetupGDBArguments() to return an error code and check for it
accordingly.
BMessageValueNode and BMessageFieldNode weren't correctly setting
the children created flag. This would result in duplicates of
some of the nodes showing up, especially in the case of nested messages.
- Simplified things so each window simply records all its settings into
a BMessage, which is what ultimately goes into the actual UI settings.
- Added settings storage/retrieval to the various sub views of the
team window. This means that the column widths/positioning on all
views hosting a column list view are now also preserved and restored.
When a breakpoint is asked to archive itself to a message, ensure that
the message is empty before writing. Fixes breakpoints past the first one
being broken on restore due to each breakpoint archive containing
the combined settings of all previous breakpoints.
- When the user chooses the location of a source file via the file panel,
we now preserve the file panel so it can remember its previous location
when invoked again.
Resolves the other part of #8095.
- When adding files/directories into the file manager, we now also take care
to add them to their respective parent entry lists as well. This allows the
intelligent location functions to actually traverse directories to update
all sibling/parent locations properly as needed.
- Slight changes to ensure that the implicit/explicit status of the location
can be passed around throughout the process. Needed for the above to work.
Resolves the intelligent location portion of #8095.
incorrect behavior while processing certain kinds of messages, and
consequently deadlocks in some apps. Fixes#8101.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43237 a95241bf-73f2-0310-859d-f6bbb57e9c96
have succeeded, since Init() can terminate early in a number of instances.
Resolves#8096.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43208 a95241bf-73f2-0310-859d-f6bbb57e9c96
- Don't allow QuitRequested() to terminate the TeamWindow directly. GraphicalUserInterface
will (and must) do so in order to ensure that the window object is still around
when calling SaveSettings() on it.
Should resolve#8091.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43206 a95241bf-73f2-0310-859d-f6bbb57e9c96
breaking various cases where menus coexisted in a window with a view which
was using event masks:
- If one invoked the menu via, e.g. a BMenuField, and then tried to choose
an item on it, the mouse down would get captured, the menu would be
closed, and the mouse event would be thrown away without ever reaching
the event mask view.
- Furthermore, since the menu was told to terminate early, it would decide
that the user hadn't actually chosen that item (the escape key case),
and never actually invoke it.
Fixes the menu fields in the mouse preflet being broken.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43166 a95241bf-73f2-0310-859d-f6bbb57e9c96
Setting classes didn't wind up being quite as useful for that purpose as
I'd originally hoped, so they remain with their primary purpose of
programmatically generating menus and such.
* When GraphicalUserInterface constructs the team window, immediately start
the message loop. This allows us to reorder startup so we only activate
the user interface after having restored settings.
* TeamWindow now saves/restores its frame on a per-team basis.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43131 a95241bf-73f2-0310-859d-f6bbb57e9c96
more or less complete now, or at least far enough along to start doing some
things with it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43112 a95241bf-73f2-0310-859d-f6bbb57e9c96
Once complete, these will be used to store/restore settings for the debugger's various UI
components.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43060 a95241bf-73f2-0310-859d-f6bbb57e9c96