Wherever I found an alert prompting to save changes, I used the
button labeling 'Cancel', 'Don't save', 'Save' with the first button
left aligned, 2nd and 3rd right aligned.
I added the shortcuts 'd' for 'Don't save, and 's' for 'Save' where
not already set.
The topic was discussed at
http://permalink.gmane.org/gmane.os.haiku.devel/23244
The discussion died down, I hope I made changes everyone can live with.
* Prevent driver from picking up IvyBridge
for the moment. (VESA works for the moment)
* We get a white screen of doom. Looks as though
supporting IvyBridge will require more than
just basic fixups.
* This was needed to find a bug while
working on IvyBridge support.
* Code looks a bit cleaner as well now.
* If something goes wrong, user is now
better notified via syslog
* Added the aforementioned functions.
* create_area_etc() now takes a guard size parameter.
* The thread_info::stack_base/end range now refers to the usable range
only.
* sys/select.h was not self contained before, this fixes#9327
* index is defined as a function in string.h, fixed resulting name
collision in glut_shapes.c
* A modified version of TriEdgeAI's original work.
* Cleaned up style problems
* Some virtual functions didn't mesh properly with
ones defined in the OpenGL kit (Draw for example)
* Wrote Jamfile
* Add missing include cstdlib for rand
* Not in image yet as it still needs gcc2 testing
- When creating a stack frame, we now look at the current function's
state to determine if the last executed statement was a function call.
Still need to determine the call destination in order to look up
the latter function, retrieve its return type, and then request
retrieval of the actual return value if applicable.
- CreateStackTrace() now takes a parameter indicating whether or not
to try and retrieve full frame information. This in turn is passed
on to SpecificImageDebugInfo, where e.g. DwarfImageDebugInfo can
use it to avoid constructing variables and parameters. This is
used by ThreadHandler since, when it requests the top frame for
its stepping calculations, this additional data/work is completely
unnecessary.
- If a template type parameter resolves to a void type, gcc doesn't
actually generate a type attribute for the instantiation, leading
to a crash in CreateType(). Was observable with MemoryDeleter and
others.
A few attribute names that used to be "Audio:..." were changed a
while ago to the more general "Media:...". Applied those changes.
Fixes#9316, thanks ttcoder!
- Add address size parameter to EvaluateExpression since the compilation
unit may not be available (i.e. in non-debug code). Accordingly, also
add accessor for address size to DwarfExpressionEvaluationContext,
and adjust callers accordingly.
- Correctly handle augmentation 'P'. This one consists of a data byte
describing the address encoding, followed by the address of the
personality function encoded in the aforementioned format. Not
skipping this correctly was resulting in us retrieving the wrong
FDE address format in e.g. CIEs encoded with augmentation 'zPLR'.
- The address range should be retrieved as value only without accounting
for the relative offset portion of the address encoding format. Fixes
some issues where we'd pick the wrong FDE to use for unwinding due
to us misinterpreting it as covering a far larger PC range than it
in fact did.
- DW_CFA_set_loc also needs to respect the encoded address format.
Overall, these changes fix a number of regressions introduced by the
previous commits, and also mean that stack unwinding for x86-64 should
now work as expected in all cases where either debug information or
an exception table is available.
After switching from outline only selection mode to transparent rectangle,
a drawing artifact could occur because the last selection rectangle wasn't
reset properly. On following update, Tracker thought a selection rectangle
was still to be shown.
This is a proper fix for the issue I tried to fix with hrev43552.
Previous fix only fixed the stack overflow caused by it but still
generated ghost devices due to the duplicated enumeration.
Affected motherboards include FIC PA-2013 (mine), and FIC VA503+
as mentionned on:
http://lkml.indiana.edu/hypermail/linux/kernel/9912.0/0539.html
We now check the header type for bridge devices and just ignore
wrong ones.
- Rename _ParseCIEAugmentation to _ParseCIEHeader since that more
accurately reflects what it does.
- Refactor a bit to avoid having to parse the header twice, and
simplify various places as a result.
- Pull out a _ParseCIEAugmentation() from _ParseCIE().
- If .eh_frame is being used, do a quick parse of the CIE up front
in order to determine the augmentation (if any), and use it to
retrieve addresses in the appropriate format. This fixes stack
unwinding on x86-64, and possibly other cases where the address
encoding didn't correspond to architectural target size in absolute
address format.
- We now handle augmentation 'zR', which in the case of gcc's
.eh_frame format specifies how the addresses in the FDEs are
encoded. Not actually used yet though since that will require
some refactoring of _UnwindCallFrame(), since we currently parse
the CIE too late to apply the above address size rules to the
initial offset + range. This is also the reason x86-64 stack unwind
currently fails, since the addresses there are, for most current tests
actually being encoded in 32-bit format rather than architecture
address size as should be the case for a standard DWARF debug_frame.
* Try to keep each renderer designed
the same.
* swrast will build... swpipe won't
build until we have an llvm build
package. (should in a few days once
llvm 3.2 is released)
* libmesa and libgallium no longer live in libGL
* opengl kit gets libglapi for dispatch
* swrast will get libmesa
* swpipe will get libmesagallium + gallium drivers + llvm
* Remove locking from Prefs window QuitRequested(), thanks Axel.
* Remove kConfigClose message, no longer needed since window sticks
around and is hidden on close instead of being deleted.
* delete fPreferencesWindow on BarApp QuitRequested() so it will
remove the memory used by preference window when Deskbar quits.
... instead of destroying and creating it each time.
This is taking another page from Tracker's book. It allows the prefs
window to maintain it's current state as long as the application
remains open. Since both Tracker and Deskbar are meant to always be
open this means that the state is kept all the time unless the app
crashes, quite useful.
This completes the move of clock preferences from Deskbar to Time.
This closes#7331. Also closing #8769 as invalid as it has been
discussed to death and 12/24 hour setting seems to belong in Locale
prefs only.
Clock preferences have been moved into their own settings file as
well so perhaps will be moved to their own replicant in the future.
* Added a new Clock tab to the Time preflet. Added Clock related
controls there. They all function by communicating with Deskbar.
* Put controls in a BBox controlled by the Show clock checkbox.
This more clearly shows that all the clock settings are dependent
on the show clock setting since it doesn't matter what your clock
settings are if you don't show the clock.
* Make revert work.
* Split clock settings into it's own file and struct.
* Re-add the time zone setting.
* Remove the clock settings from the Deskbar preference window, they
are in Time now.
* Make Locale preferences accepts B_LOCALE_CHANGED message, although
not used.
- If the top frame of a stopped thread has no arguments or variables
available, dump the memory block to which the stack frame belongs,
starting at the current stack pointer and extending to the end of
the block.
- CliContext now listens for value node container events so that
commands can request such a wait as well
- Implement an event wait mechanism for commands to make use of.
Adjust CliStackTrace and CliPrintVariable accordingly.
- Fix incorrect order of operations in ValueNodeManager.
- Upon receiving a changed notification, VariableTableModel needs to
make tree table aware that the previous nodes have been removed.
- Added 'frame' command for setting/printing the context's current stack
frame within the active stack trace.
- Added 'variables' command for printing the list of variables visible
within the current frame.
- CliContext now tracks the current stack trace and frame if applicable.
- CliContext now carries a value node manager. This allows it to track
the variables in the currently active frame.
- DwarfImageDebugInfo and DwarfFile will now allow us to construct
DWARF debug info objects even if the only section available for
use is .eh_frame. This essentially allows us to use CFI-based
unwinding even for release executables (assuming C++ is involved),
which means we can properly unwind the stack even for binaries
compiled with fomit-frame-pointer. This becomes more important
for x86-64, since omit is the ABI default there.
- Pull a GetFunctionsFromSymbols() out of DebuggerImageDebugInfo. This
is shared between DebuggerImageDebugInfo and DwarfImageDebugInfo for
creating debug information entries in the absence of debugging
information.
Work I did at Begeistert, trying to use the new driver manager and
detecting display controls. It should probably be a good example of
how a new driver is built. It currently loads and detects
display controls correctly but doesn't do any actual work yet.
Not sure when I have the time to finish the driver, it shouldn't be
that hard but I currently have have other priorities. Feel free to
work on it in the meantime.
- Fixed: WebPositive now successfuly detects foreign protocols and
launches their respective applications.
- Improved: The decision whether to use a search engine or a DNS lookup
for the text entered in the address bar, including for internationalized
names (IDN) (though we do not handle them correctly later on yet).
- TODO: escape the query string before passing it to webkit
(for example for: "3+4")
- Instead of asking nodes to resolve themselves directly,
DebugReportGenerator now uses the interface listener to ask the
debugger's workers to resolve them on its behalf.
This work is based on the draft node monitoring implementation
created by Vlad Slepukhin during GCI 2012 and includes following:
* Refactoring of the document "Reload" feature - it replaces
"Revert to saved" one because do the same things and a bit more.
Looks like we have to keep "Reload" menu entry alive until
StyledEdit will get more functional Undo/Redo features. Reload
functionality is also heavily used in node monitoring and
on-the-fly text encoding changing. Fixes#6887;
* Support for text encoding on-the-fly switching. This make
life easier for those who lives in countires with multiple
popular 8-bit encodings. Russia is the sample of such
de facto standards' clash (KOI-8R vs CP1251 etc.);
* Node Monitoring support with alerting user in case the file
size or modification time were changed. Another alert is shown
in case edited file was removed or moved outside of the current
volume. Moving file inside of current volume silently changes
references. Choosing "Ignore" will supress new change alerts
until next Reload or Save user request;
* Do not nag user on quiting window with zero-length untitled
document. Not a Big Deal but annoys in some cases using this
editor session as temporary storage.
- If debug information is present, then for each stack frame we now
also dump all function parameters and local variables and their
respective values, as well as their first level of children if
applicable.
- The intention is to have a class which handles the actual management
of the variable node graph, creating child nodes and such. This way
the GUI, CLI and report generator don't have to each reimplement
these low-level parts and can instead concentrate on their relevant
representations thereof.
Swapped Polish typist's keymap with much more frequently used programmer's
keymap.
Signed-off-by: Przemysław Buczkowski <przemub@yahoo.pl>
Signed-off-by: Matt Madia <mattmadia@gmail.com>
Got rid of X86_ONLY and friends in HaikuImage, FloppyBootImage, etc.
Instead we use build feature specification annotated lists with
FFilterByBuildFeatures (either explicitly or implicitly where passing
the list directly to the image rules).
I just translated the variables to the respective annotatation in most
cases, though in some cases different annotation would be more correct
(e.g. for the OpenGL stuff).
Provides a simple framework for addressing #3798. The interested reader
may add the build features and add/adjust the annotations accordingly.
Sizes range from 8 to 36 but not all sizes are represented. The
progression is not linear, the font size increases first by 1,
then 2, and finally by 4.
Works by keying command-(plus)/command-(minus) or selecting
from Font size menu, or from selecting from Font menu in Terminal
settings. If you alter the settings file to put in some other font
size it should still work, but the menu item won't be checked.
Fixes#8849
on the window, not just the active tab. Also fix window resizing
with tabs open. It wasn't taking into account the height of the
tab bar.
This fixes#8108
- Rework quick stack range check as suggested by Ingo.
- If the ref count is > 1 we invoke the debugger unconditionally.
- If equal to 1, we first perform a quick heuristic check to see if the
var might be on the stack. If we can't conclusively determine that is,
we make certain by comparing to the thread's actual stack range.
- If a BReferenceable object is deleted with a non-zero reference count,
we now test to see if the object was allocated on the stack. If so,
we don't flag a warning if the reference count is currently 1.
Slightly amended patch from Tyler Dixon. This fixes#8434.
Tested on my new GPT-disk with:
jam run ":<build>makebootable" --dry-run /dev/sda4
Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
* It's painfully obvious to me now that we will
need to manage our own framebuffers still in
the latest gallium code.
* GalliumFramebuffer works pretty cleanly as a
class.. we have to remember to lock and unlock
the Framebuffer object however when we access
fBuffer directly. (which needs to occur by design)
* I'm really starting to have problems with the
amount of downcasting Gallium3D does now.
- Since we currently limit the maximum number of child elements we'll
show, it's helpful information to know the actual capacity of the list
in case it contains more, especially when we later support requesting
additional elements to be retrieved.
- Since BasicTargetInterface is a BReferenceable, we must not create it
on the stack, else it will be destroyed while others still have
references to it. Fixes various random crashes, though most frequently
observable when typecasting with more complex types.
Love this feature, but, color schema is not a thing, it is a color
scheme. Change both the display text and the variable names.
Also changed "Retro Terminal" color scheme to just "Retro". Terminal
is redundant.
The value computed isn't actually used anywhere. It just ensured that
a panic would be triggered if we "skipped" to virtual addresses further
along. This shouldn't be problematic however.
This makes it less likely that uninitialized entries cause troubles.
Also panic if we encounter an unknown entry type instead of defaulting
to 4K pages.
And actually use the virtual address for it later on. This wasn't
problematic as the virtual and physical addresses are identity mapped,
but it seems more correct to do it in this order.
- BListValueNode now also handles BObjectLists. In the latter's case
however, it uses the template type parameters to map the array
elements to their actual type. As before, this requires a debug
libbe to function.
- Keep a unified list in DIEClassBaseType so that the order
of template parameters is preserved in cases when type and
value parameters are mixed. Thanks Ingo for the hint.
- Introduce new base Type TemplateParameter, which represents either
a template type or template value parameter, a list of which is
attached to CompoundType.
- Add DwarfTemplateParameter implementing subclass of TemplateParameter
and adjust DwarfTypeFactory accordingly for the above changes.
- Adjust CompoundType to add accessors for template type and value
parameters.
- Add DwarfCompoundType/DwarfTypeFactory handling for template
template type parameters.
- When a debugging libbe is present, and a BList is encountered,
we now read its internal structure and expose it as if it were an
array of pointers. Combined with typecasting, this means one can
now easily inspect the content of such a list.
* The hashtable stored complete Inode objects (albeit without the actual block).
* Now we only store the block_run which should reduce the memory footprint
considerably; before "recover" could easily run out of memory. In any case,
a 64 bit version would still make sense to have :-)
* Saved an extra hash table traversal by counting the node types directly.
* This isn't that well tested yet, though.
- If a program crashed due to an invalid function pointer, the stack
was being incorrectly unwound such that the top frame would actually
be skipped, preventing one from seeing the actual line of code that
invoked said pointer. On x86, we now check if the IP of the top frame
of the stack lies at a readable location in order to catch this case.
- The actual reason the hidden node wasn't being released as expected
was that ContainerListener::ModelNodeHidden() added a reference on
behalf of its indirect target, while the latter never actually
took ownership of said reference.
- In the special case of an address node with a hidden child, we
must send notifications for removal of the hidden compound's
children rather than for the hidden node itself. Otherwise the
base TreeTable's state gets out of sync, leading to a crash when
attempting to typecast such a node.
As there are only 8 bits for the index in the coarse page table entries
the maximum index is 256. This makes us correctly move to the next page
directory once we've run through all entries. Fixes missing unmap of
pages that crossed that boundary and consequent panic "page still has
mappings" when the page was removed from a cache.
by adding the const specifier to the uint8* parameters of the
prototypes of the vesa_set_cursor_shape and vesa_set_cursor_bitmap
functions.
Thanks looncraz for pointing this out.
- When an image creation notification is received, the thread
that provoked it needs to be suspended until the debugger has
finished loading the image's debug information. Otherwise, if that
image had a breakpoint in it, it was possible that the thread would
execute past the code where the breakpoint should be before the
debugger had a chance to actually install it.
- Only update breakpoints when debug info loading has actually finished.
* Remove error text as giving SetCurrentContext
a NULL bitmap isn't a critical error.
* Ensure old front buffer is flushed on SetCurrentContext
* Small style fix
The ATA info block has the model, serial and firmware revision byte
swapped that we already converted and then printed out correctly. The
original values were however copied to the SCSI inquiry data so the
device names that end up in different places were incorrect. This
fixes#7926.
Also added a comment explaining that there's way too little space in
the SCSI inquiry block to fit in the full ATA data.
* Original patch by Morgul as part of #4235. This does not close the ticket,
however.
* Updated the patch to not show empty '()' in case the partition type
returned was NULL.
I made the following changes to the original patch:
* Add const to the cursor setting functions.
* Removed the legacy cursor copying code.
* Minor coding style cleanup.
The SCSI inquiry vendor and product information is concatenated into a
single string to form the device name. Multiple spaces are then
collapsed to make the string more readable. The space padding is quite
common as the fields are fixed size in the inquiry block.
- It can actually happen that an app crashes due to being at IP 0.
The short circuit was consequently preventing us from unwinding the
stack properly in such a case.
* This is still early, but I want to track the
development in tree.
* swpipe will support Gallium softpipe or llvmpipe
(llvm pipe will give improved software rendering
permance when llvm is included at os build time)
* Used Artur Wyszynski's original code as a
road map... however a *lot* has changed.
* Crashes at startup.. not in image yet
Since we have the same setup with a loaded and mapped boot archive, we
can reuse the MemoryDevice implemented in uboot. This gets the loader
to the stage where it loads and attempts to boot the kernel.
An archive (ramfs) to be loaded can be specified in the raspberry pi
config.txt with a certain base address. We can use this to put our
floppy boot archive into memory on startup.
During the start procedure we now map that archive so we can later
load the kernel from it.
Add more fields to arch framebuffer to hold the physical address and
size of the framebuffer. Then fill these in when mapping the
framebuffer to virtual memory.
These can be used for on-screen debug output with relatively little
effort, as they just need a plain framebuffer definition to work.
Some stubs are added to not clutter up the kernel sources with too
many ifdefs.
This implementation introduces the minimal changes necessary to support
the existing VMWareTypes API on x86-64. If a more expansive set of guest
additions are required, it may make sense to adopt a more general
approach akin to the one used here:
https://github.com/jcs/vmwh/blob/f177dd3cf/vmware.c#L49
Signed-off-by: Michael Lotz <mmlr@mlotz.ch>
Making the fields protected allows them to be set by arch framebuffer
implementations. The getters can be used to retrieve the configuration
from outside the implementation.
The stack pointer is set up so that it uses the space below our .text
section at 0x8000. The stack pointer actually points at one entry less
than the specified address, so it starts at 0x8000 - sizeof(uint32) and
grows downwards from there.
* Our usb_hid driver handles joysticks already, no need for another one
* Also add the emuxki driver to the Jamfile tree even if it's in unknown state and unused.
* applied patch provided with ticket, thanks!
* extended patch to implement offset clamping for all public methods
of BTextView and remove some checks from private methods to define
a clear baseline for sanity of offsets used in the code
It was possible to confuse TextWidget to start editing twice (clicking on the widget and during the wait,
pressing F2) and confusing the states of the TextWidget.
* use only a single static object (MutableLocaleRoster) instead of
two, which avoids any problems if the order of static object
destruction would destroy RosterData before MutableLocaleRoster
* rename BPrivate::RosterData to BPrivate::LocaleRosterData and move
it into a header and implementation file of its own
This should hopefully fix problems encountered with a clang-compiled
Locale Kit.
We used the hash of the language code as a key for identifying catalogs.
However, hash do collide, and in particular, "en" and "fi" have the same hash.
Identify catalog resources by name instead.
- If a thread was already in a stopped state, but we received
an update that indicated something more specific, it would be
ignored, i.e. changing
from simply being in a debugged state to specifying a debugger
call + message. We now check both state and reason before ignoring
the update. Fixes debug reports not receiving the debugger call
message properly when intercepting an actual crash as opposed to
an app running inside the debugger.
* Use be_control_look->DefaultLabelSpacing() instead of hard-coding 4px.
* Use pre-generated system colors.
* Indicate a pane is revertable by making the font bold instead of
blue. This makes the revertable setting orthogonal with the
selected setting (can be both bold and selected color).
* Raspberry Pi is broken now after
the other recent arm work... needs
more investigation.
* Comment out stage2 header as it
links to headers with c++ code.
Need to verify entry.s can call
c++ code (I think it's mangled to
the assembly or something)
* Fix naming of code entry to match
other arm code.
- CommandLineUserInterface is now a team listener. Consequently, when asked
to generate a debug report on startup without running the input loop,
it now waits for receipt of the debug report event to terminate.
- Style fixes.
- DebugReportGenerator is now its own BLooper that generates reports asynchronously
instead of in TeamDebugger's message loop.
- If a stack trace isn't yet available, DebugReportGenerator now waits for it to
be generated.
- Extended Team to add a listener event for report generation completing. DebugReportGenerator
now generates such an event when it has finished writing a report.
This is so that it does not get draw flush to the edge of the
list view and there is just a bit of padding between the left
edge and where the text starts. The 4 pixels matches other
places that override the DrawItem() method (like Tracker prefs).
Adjust the spacing of the time zone settings in Time prefs so that
switching between Local time and GMT time won't resize the window
when hiding and showing the current and preview times. This means
that the Time preferences window always stays a constant height
without any tricks needed to adjust it after the fact. Before this
change the Time preferences window would change height depending
on the setting, which while not terrible, was probably not
what the author intended.
As a side note I adjusted the window to use B_USE_DEFAULT_SPACING
instead of hardcoded 5px so that the window spacing will adjust to
font size changes.
- When debug_server is built to use the graphical debugger as its
crash handler, also present the option to save a report instead
of debugging the app. Doesn't work 100% correctly yet though since
the report generator needs to wait for stack traces to be generated
if they aren't yet ready.
- When invoked, starts up the CLI such that it bypasses waiting for
input and instead save a crash report of the running team, then exits.
Mainly intended to be used by debug_server.
It has no use, since we don't know its value and the list of colors
might be longer (for example, for ARM currently B_MAX_CPU_COUNT is
only 1). The modula operator later on makes sure we keep within the
bounds of the kColors array anyway.
- The Tools menu now contains an option to save a debug report for the currently
debugged team. For now this report contains the following:
A list of all loaded images, their base address and their size.
A list of all threads active in their team, and their state.
* For each thread that is in a debug or exception state,
a stack trace, and a register dump at the top frame will also be emitted.
Feedback on report format + included details welcome.
For now, when the option is requested, the report is saved to the desktop
with an auto-generated name based on the target team and the current
date/time.
* move template method implementations out of class body, as otherwise
gcc2 bails with internal compiler error - thanks to Christof Lutteroth
for reporting
Since generic cpuidle module is loaded by lowlevel cpuidle drivers which
are loaded dynamically during boot, we don't need drivers/cpuidle any
more
Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
we prefer intel native cpuidle driver on newer intel platforms --
sandybridge or later. we'll fall back to acpi cpuidle driver for other
platforms.
Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
After this change, low level cpuidle drivers load the generic cpuidle
module if they can support the underlying platform.
change the intel cpuidle driver accordingly, now it's loaded by acpi
bus manager during boot, although it doesn't depend on acpi
Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>