Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold 9c71b326c9 Fixed build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33980 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-10 12:20:26 +00:00
Ingo Weinhold b189a2014e Added readlinkat().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33978 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-10 11:24:46 +00:00
Ingo Weinhold fdec1a3f87 Should have been part of r33976: fcntl.c and open.c have been joined to
fcntl.cpp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33977 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-10 11:16:44 +00:00
Ingo Weinhold 098906f1d4 * src/system/libroot/posix: Moved open.c and fcntl.c out of the unistd
directory, where they were misplaced, and joined them to fcntl.cpp.
* Added openat().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33976 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-10 11:15:35 +00:00
Ingo Weinhold 9e81ddee87 * Fixed fdopendir(): We have to explicitly (re-)open the directory, because FDs
returned by open() aren't suitable for directory iteration and because checks
  have to be performed (like whether this is a directory at all and whether the
  user has read permission).
* Added __create_dir_struct() for the attribute, index, and query open
  functions to use instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33974 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-10 10:55:43 +00:00
Ingo Weinhold c3dbe62619 _user_open_dir(): Allow a NULL path to be passed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33973 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-10 10:51:08 +00:00
Ingo Weinhold 9669d0859b GCC 2 .eh_frame: The CIE offset in an FDE isn't always relative to the
beginning of the section, but probably relative to the beginning of the data
for the respective compilation unit (which might even make it useful again,
since it could be used as negative offset to the CIE). Relaxed the check even
more, so we always override the CIE offset when parsing .eh_frame sections.
This makes the variables appear in another test app Axel kindly provided.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33941 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-07 20:55:21 +00:00
Ingo Weinhold 4663f6d46a Fixed incorrect check. Spotted by Axel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33930 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-07 08:43:32 +00:00
Ingo Weinhold 4914357d9d Automatic trailing whitespace removal.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33929 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-07 08:21:14 +00:00
Ingo Weinhold d0b21f13dd Removed obsolete comment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33928 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-07 08:20:00 +00:00
Ingo Weinhold 9c7b2520c2 Added get_pthread_thread_id() function returning the Haiku thread_id of a
pthread.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33927 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-07 08:19:24 +00:00
Ingo Weinhold 3ac8569f3c Handle the "eh" CIE augmentation which can appear in a .eh_frame section.
Hopefully the last hurdle gcc 2 has prepared for preventing variables to show
up.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33924 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-06 18:29:27 +00:00
Ingo Weinhold 3a1b098bc8 _CreateSubrangeType(): Squashed TODO: If no base type entry is available, we
create a base type on the fly. This gets array types working with gcc 2
generated files.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33919 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-06 15:40:57 +00:00
Ingo Weinhold e438c2d761 A Type suffices as base type for DwarfSubrangeType.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33918 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-06 15:36:21 +00:00
Ingo Weinhold 0b7f2d9924 Work-around for a gcc 2.95.3 peculiarity: The DW_OP_reg* are incorrectly used
in non-location expressions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33916 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-06 14:59:22 +00:00
Ingo Weinhold c9b58a7313 More debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33915 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-06 14:56:32 +00:00
Ingo Weinhold 797aaa4bde gcc 2.95.3 doesn't generate a .debug_frame section. Fortunately it generates a
.eh_frame section which seems to have almost identical contents (haven't found
any specification). So now we use .eh_frame with minor tweaks, when
.debug_frame is not available.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33914 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-06 14:56:10 +00:00
Ingo Weinhold 59ea286fac * EnumerationValue -> EnumeratorValue
* Since some types don't have names (e.g. pointer types or anonymous structs or
  unions), each type does now also have a unique ID. The global type cache
  registers types by ID and by name (if they have one). This fixes clashes of
  types with empty names.
* Completely refactored the code dealing with variable values. Formerly we had
  Variable and TypeComponentPath to navigate to a component, mapped to a
  BVariant representing the value. Now we have:
  * Interface Value with various subclasses (BoolValue, IntegerValue, etc.) to
    represent a value, with the flexibility for more esoteric values.
  * A tree of ValueNode+ValueNodeChild objects to represent the components of a
    variable. On top of each ValueNodeChild sits a ValueNode representing the
    value of the component, potentially having ValueNodeChild children. This
    should allow casting a component value, simply by replacing its ValueNode.
  * Interface ValueHandler and various implementations for the different value
    types. It is basically a factory for classes allowing to format/display a
    value.
  * ValueHandlerRoster -- a registry for ValueHandlers, finding the best one
    for a given value.
  * Interface TypeHandler and various implementions for the different type
    kinds (primitive, compound, address, etc.). It is basically a factory for
    ValueNodes for that type.
  * TypeHandlerRoster -- a registry for TypeHandlers, finding the best one
    for a given type.

  That's still a bit work in progress. It introduces at least one regression:
  The VariablesView doesn't save/restore its state anymore. Will take a while
  until that is added back.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33907 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 18:15:21 +00:00
Ingo Weinhold 173227dd53 Added SetIndexAt(), replacing an existing index.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33906 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 17:50:37 +00:00
Ingo Weinhold 7d4508b161 Utility class to format integer values.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33905 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 17:39:09 +00:00
Ingo Weinhold c9d768d913 Interface and implementation for simplifying editing of Settings via a menu.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33904 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 17:35:08 +00:00
Ingo Weinhold 4924e2e9ae Classes to describe settings in a generic way.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33903 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 17:32:16 +00:00
Ingo Weinhold 76d24e95aa Ugh, forgot to check this in quite a while ago:
If the view doesn't have a tool tip, pass the B_MOUSE_IDLE to the next handler,
so the parent view can show a tool tip. This makes tool tips in a column list
view possible (or at least reasonably easy).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33902 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 17:29:32 +00:00
Ingo Weinhold be350af3d9 Added methods AddToMessage() and SetFromMessage() to add the value of the
variant as a field to a message, respectively initialize the variant from
one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33901 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 17:24:58 +00:00
Ingo Weinhold 6309d64e37 Added support for mouse down/up events in [Tree]TableListener.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33900 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 17:22:14 +00:00
Ingo Weinhold f56fa21bdb Fixed typo.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33899 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 17:20:33 +00:00
Ingo Weinhold 8d24cfc6c2 * Added Iterator::NextValuePointer().
* Made reference returned by _GetKey() const. That's sufficient.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33898 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 17:18:12 +00:00
Ingo Weinhold 239222b236 * Moved everything into the SymbolPatcher namespace.
* Several fixes to get things building with gcc 4.
* Changed lookup of the _GLOBAL_OFFSET_TABLE_ symbol. It is hidden and static
  and get_image_symbol() doesn't find it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33897 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-05 17:16:17 +00:00
Ingo Weinhold 4736b6b9e5 * Made BReferenceable the class implementation and BPrivate::Referenceable the
typedef, so it's clearer which one is the preferred one.
* Added BReference, a clone of BPrivate::Reference.

BPrivate::{Referenceable,Reference} are being phased out. Only the B* versions
should be used.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33879 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-04 15:08:53 +00:00
Ingo Weinhold e3a631c0b4 * Introduced interface UserInterface, which abstracts the user interface code.
* Added implementation GraphicalUserInterface for the current GUI.

TeamDebugger does no longer know about TeamWindow.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33594 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-15 09:47:24 +00:00
Ingo Weinhold 1851e9f3e0 * Added a stopped reason and additional info to Thread. ThreadHandler sets
both accordingly.
* The threads view shows the thread states now. Also added tool tips with
  additional info.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33591 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-15 04:40:33 +00:00
Ingo Weinhold acb006cb55 Added TableToolTipProvider interface that can be set on a Table to easily
provide per cell tool tips.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33590 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-15 04:40:04 +00:00
Ingo Weinhold c4a5ca9322 Added ReadMemoryString(), reading a string from the team's memory.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33589 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-15 04:34:59 +00:00
Ingo Weinhold c6952b68f0 Use debug_exception_type for the exception type.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33588 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-15 04:33:26 +00:00
Ingo Weinhold 2fc49d9b36 Added ColumnAt(BPoint) version.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33587 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-15 04:31:42 +00:00
Ingo Weinhold 9ea0d9494e Added BoolStringTableColumn for boolean values.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33579 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-14 05:04:36 +00:00
Ingo Weinhold 0fc8a75c02 * Moved TargetAddressTableColumn into own source file in gui/util.
* Fixed misspelled MSG_*_BREAKPONT constants.
* model/Team: Added separate event class UserBreakpointEvent for user
  breakpoints.
* SourceView::MarkerManager: Invalidate the markers when new source code is
  set.
* Added breakpoints view.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33578 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-14 05:03:00 +00:00
Ingo Weinhold 5f73bbcdce Don't crash on stack frames without recognized function.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33577 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-14 04:50:27 +00:00
Ingo Weinhold 42d7d768ca Removed unintentionally introduced code. Spotted by Stippi.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33567 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-13 03:17:35 +00:00
Ingo Weinhold d75e3d6c23 Ignore unnamed function parameters in the stack frame.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33542 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-12 03:17:17 +00:00
Ingo Weinhold fced6d136a Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33541 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-12 03:16:11 +00:00
Ingo Weinhold 6c4cad54ed Added TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33540 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-12 03:15:17 +00:00
Ingo Weinhold a7fb35d93d When rows are added to/removed from the model, we need to adjust the row
indices we store in the fields of subsequent BRows. Fixes the broken threads
list in Debugger (should be some ticket -- can't access Trac ATM).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33539 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-12 03:14:34 +00:00
Ingo Weinhold e8e4e613b2 The variables view does now save/restore part of its state when the stack
frame changes. Currently that's only the expanded/collapsed state of the
items in the tree view, but that already makes single stepping through code
much less annoying.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33512 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-11 05:46:45 +00:00
Ingo Weinhold 9f018b7c77 Fixed typos and indentation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33511 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-11 05:40:51 +00:00
Ingo Weinhold aa311fb590 More debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33510 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-11 05:37:51 +00:00
Ingo Weinhold 6d17ef0d59 TreeTable:
* IsNodeExpanded(): It always returned false due to a missing return.
* _SetNodeExpanded(): We must call our version of ExpandOrCollapse() or the
  listeners won't be notified.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33508 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-11 05:36:27 +00:00
Ingo Weinhold d054be0d8c * Moved the data location resolution methods from StackFrameDebugInfo to the
respective Type classes. StackFrameDebugInfo is pretty much out of work now,
  but maybe something comes up later.
* Renamed GlobalTypeLookupContext to GlobalTypeCache and renamed its methods.
* A TeamDebugInfo does now have a GlobalTypeCache which is used for resolving
  types. Formerly it was created per stack frame, so all types had to be
  resolved after each single step. Single-stepping is usably fast again.
  The disadvantage is that DWARF theoretically allows types properties to
  depend on instruction/frame/frame base pointer and we don't support that
  anymore. I can't think of a reasonable application for that feature, though.
* Refactored DwarfStackFrameDebugInfo:
  - Moved the type classes into new DwarfTypes.{h,cpp}.
  - Moved the creation of types into new class DwarfTypeFactory.
  - Added class DwarfTypeContext which bundles all the dependencies of the type
    classes.
* Made DwarfFile a BReferenceable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33495 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-10 05:05:33 +00:00
Ingo Weinhold aa6f54aa24 Amended the {user,debug}_strlcpy() fix: Due to the strlcpy() semantics to
always return the source string length, we can't really prevent an overflow
of the source address.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33489 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-09 03:07:11 +00:00
Ingo Weinhold 71f75cdcde * WIP regarding non comilation unit local types:
- Introduced GlobalTypeLookup interface and GlobalTypeLookupContext to look
    up types by name and cache them.
  - TeamDebugInfo implementes GlobalTypeLookup iterating through all
    ImageDebugInfos, which in turn iterate through all SpecificImageDebugInfos.
  - DwarfImageDebugInfo iterates through all compilation units, using
    a temporary DwarfStackFrameDebugInfo to create the type.
  - DwarfStackFrameDebugInfo no longer caches the types itself, but uses
    GlobalTypeLookupContext. It uses GlobalTypeLookup to look up types not
    defined in the compilation unit.
  - DwarfFile: Made expression evaluation more robust, so that it also works,
    when no subroutine entry, frame pointer, and instruction pointer are
    available (and not used by the expression).
  Basically works already, although the wrong compilation unit might be used
  when resolving values for global types. It's also horribly slow, when there
  are many types in the stack frame.
* DwarfStackFrameDebugInfo::ResolveArrayElementLocation(): The element location
  piece size was set incorrectly (multiplied by 8, although bytes were
  expected).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33477 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-07 03:17:22 +00:00
Ingo Weinhold d48ea308bf The type component path for the first array dimension was constructed
incorrectly. We must only replace the last component of the parent's path for
all following dimensions.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33476 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-07 03:16:43 +00:00
Ingo Weinhold 8a71915a9d Made the {debug,user}_{mem,strl}cpy() and user_memset() functions deal with
address overflows. Apparently at least the x86 string instructions generate
a general protection fault instead of a page fault, and we only use the fault
handler in the latter case (maybe we should change that, too). Fixes #4714.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33436 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-05 09:54:40 +00:00
Ingo Weinhold 4401e83384 Use correct tracing macros.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33435 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-05 03:13:20 +00:00
Ingo Weinhold e10cb2838b * ArrayIndexPath::SetTo(): Changed return type from bool to status_t.
* Finished support for retrieving and displaying array element values.
* Added work-around for pointer types, if the base type isn't specified in the
  debug info (as it should per specification).
* Added support for unspecified types, function types, and pointer to member
  types. All types relevant for C++ should be supported now. There are still
  quite a few TODOs, though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33434 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-05 03:12:16 +00:00
Ingo Weinhold bdfb434cba * Introduced common base class DIEArrayIndexType for enumeration and subrange
types.
* Added/fixed some accessors.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33433 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-05 03:11:41 +00:00
Ingo Weinhold 9cad16b96e Fixed drawing of the marker line backgrounds. They were off by the font
descent.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33432 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-05 03:11:04 +00:00
Ingo Weinhold 7326886515 Added support for displaying arrays. Their element's values aren't retrieved
yet, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33396 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 09:41:49 +00:00
Ingo Weinhold 9e4a5c5fdc Since arrays can be multi-dimensional, a single index does not suffice to
identify an element. We use the name string of the TypeComponent as index path.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33395 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 09:40:41 +00:00
Ingo Weinhold 84153f2c57 * Fixed typos in comparisons.
* Some more output on error.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33394 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 09:38:31 +00:00
Ingo Weinhold 4fc4757d3d Added ArrayIndexPath, a small class storing a index list for identifying an
element in a multi-dimensional array, featuring conversion from and to string.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33393 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 09:37:24 +00:00
Ingo Weinhold 8ad4a2e971 Improved comment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33392 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 09:31:20 +00:00
Ingo Weinhold d815bfef61 Fixed build with tracing enabled.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33391 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 09:30:46 +00:00
Ingo Weinhold 37e6de5d4c Don't destroy tracing entries. This is not necessary and even harmful, if the
code is no longer loaded, e.g. when the module has been unloaded or the tracing
buffer was reattached from a previous session.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33389 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 04:38:19 +00:00
Ingo Weinhold c37a305de6 Implemented a "vmdk" partitioning system. It allows to access the contents of
monolithic vmware images as produced by the build system (by registering such
an image via the "diskimage" tool).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33388 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 03:09:18 +00:00
Ingo Weinhold 7f16b78c41 Moved vmdkimage.h to a shareable place, cleaned it up a bit, and renamed it to
vmdk.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33387 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 03:08:46 +00:00
Ingo Weinhold d6778355ee * <DiskDeviceTypes.h>: Removed kPartitionTypeIntel{Primary,Logical} constants.
* Added new header headers/private/system/disk_device_types.h, which defines
  the <DiskDeviceTypes.h> constants as macros and which can be used where the
  constants cannot be used. The constants are defined using the macros, so now
  there's only one place where the string literals should be specified.
* Use the macros in the partitioning systems. I was too lazy to also adjust the
  file systems -- most of them seem to hard-code the string literal yet.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33386 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 03:07:42 +00:00
Ingo Weinhold a9689e8492 * VFS:
- Fixed vfs_get_vnode_from_fd() return type.
  - Added vfs_open_vnode().
  - Added a "bool traverseLeafLink" parameter to vfs_get_fs_node_from_path().
    It was always resolving symlinks.
* device manager/devfs:
  - devfs: get_node_for_path() no longer resolves leaf symlinks. That still
    doesn't help with file disk devices, as creating partition wouldn't work
    anyway.
  - Pulled the module-related implementation part of BaseDevice into new class
    AbstractModuleDevice and made all methods of BaseDevice virtual. Small
    adjustments to devfs to be happy with the new BaseDevice interface.
  - Added BaseDevice subclass FileDevice, which maps the interface to a file's
    file descriptor. Still got a few TODOs, but should basically work.
  - Use FileDevice for publishing file disk devices in devfs. Now those do
    actually work, though there's some BFS trouble with one of the images I
    tested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33385 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 03:06:34 +00:00
Ingo Weinhold 6cc1f01511 Implemented small tool diskimage, which allows to register/unregister files
as disk devices. It also demonstrates that the respective devfs functionality
is utterly broken.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33384 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 03:05:06 +00:00
Ingo Weinhold 3c4721f516 The B_DISK_DEVICE_IS_FILE flag is cleared by KDiskDevice and needs to be reset.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33383 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 03:04:32 +00:00
Ingo Weinhold 80ea5e3508 Fixed incorrect return value of _user_get_file_disk_device_path().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33382 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 03:03:56 +00:00
Ingo Weinhold c51d6579e4 Fixed incorrect uses of user_{strl,mem}cpy() in the kernel debugger. This could
break stack traces.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33381 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 03:03:16 +00:00
Ingo Weinhold be51dd0f4c Added debug_strlcpy() for use in the kernel debugger.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33380 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-01 03:02:34 +00:00
Ingo Weinhold 268335a069 After creating a userland thread we didn't set up the breakpoints for it.
Fixes #4665.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33369 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-30 08:40:55 +00:00
Ingo Weinhold ac106be534 Inherit the disable_debugger() flag to a fork()ed child. load_image() doesn't
-- I'm undecided whether it should, too. Fixes #4642.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33330 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-28 02:54:38 +00:00
Ingo Weinhold 23338ed551 Added -f/--fork option to test inheritance of disable_debugger().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33329 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-28 02:51:56 +00:00
Ingo Weinhold e82b494112 * ValueLocation:
- Changed the bit{Offset,Size} semantics. It's now more or less
    aligned with the semantics of the respective DWARF DIE attributes.
    DwarfStackFrameDebugInfo does now correctly translate the ValueLocations
    returned by the DWARF layer (the bit piece location expression semantics is
    different for some reason).
  - ValueLocation is now aware of the target's endianess. The SetTo() method
    needs that information to correctly meddle with the pieces.
  - Support normalizing the pieces.
* Fixed retrieving the values of bit fields in various places. We still don't
  handle the bit offset/size attributes of types correctly, but I haven't seen
  those in actual debug info yet.
* Added support for enumerations. The variable view shows the enumerator names,
  when available.
* Added partial support for subrange types. C++ doesn't have those -- we only
  need them for array dimensions.
* Started adding support for array types. Still work in progress.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33314 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-27 04:52:43 +00:00
Ingo Weinhold 7d82c6dd73 * Clarified the location expression evaluation semantics -- the ValueLocations
returned by the DWARF layer need to be translated to be usable in the generic
  code.
* DwarfFile::EvaluateDynamicValue(): Added optional parameter to return the type
  of the evaluated value, if available.
* Added source language info attribute to CompilationUnit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33313 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-27 04:25:23 +00:00
Ingo Weinhold 796f1b412c Added GetDIEByPredicate() template method simplifying the task of check an
entry, its abstract origin and specification for something.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33312 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-27 04:18:56 +00:00
Ingo Weinhold 569ac88d9c Added several accessors.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33311 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-27 04:17:10 +00:00
Ingo Weinhold 8fa563df31 Added subrangeLowerBound field to SourceLanguageInfo specifying the default
lower subrange type bound for the source language.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33310 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-27 04:15:58 +00:00
Ingo Weinhold 061c5fe806 Added AddZeroBits() method.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33309 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-27 04:10:40 +00:00
Ingo Weinhold 7dde9c1dab * Added operators == and !=.
* Added "bool* _isSigned" parameter to IsInteger().
* Added static TypeIs{Number,Integer,Float}() operating on type codes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33308 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-27 04:08:45 +00:00
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 7a6825716a Nested WaitForJob()s didn't work correctly, when the job an outer
_ProcessJobs() loop waited for was processed by an inner one. Instead the loops
now check the state of the waiting job -- it will be changed from waiting as
soon as the job it waits for is done.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33216 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-21 04:34:55 +00:00
Ingo Weinhold 3bd94918ed Reordered Reference::SetTo() operation so that it is safe to reinitialize to
the same referenceable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33215 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-21 04:29:27 +00:00
Ingo Weinhold b1c06fc64a Patch by Vincent Duvert: Added support for BSDish xattrs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32841 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-30 23:54:04 +00:00
Ingo Weinhold d34f83c2cd Rather use <sys/xattr.h>. <attr/xattr.h> belongs to libattr, which we don't
need.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32830 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-30 13:44:16 +00:00
Ingo Weinhold adbf8b25f8 * Added fdopendir() (POSIX).
* Got rid of <dirent_private.h> -- the __DIR structure is private to dirent.c,
  now. The attribute directory, index directory, and query functions use the
  the public POSIX API, so does the kernel module code. Those components were
  not initializing the structure correctly anymore since the introduction of
  telldir()/seekdir().

+alphabranch


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32819 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-29 20:25:24 +00:00
Ingo Weinhold 03e8d9bdf3 * Fixed attribute name mapping in both directions. One direction was appending
a '\n', the other cutting off the last char.
* *getxattr() is supposed to return the attribute size when a 0 sized buffer
  is supplied. Otherwise, if the buffer is too short, it needs to fail with
  ERANGE.
* *listxattr(): The buffer pointer wasn't adjusted after each iteration.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32682 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-26 01:07:46 +00:00
Ingo Weinhold 2fb48fb46b Added missing ENOATTR text.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32681 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-26 01:01:43 +00:00
Ingo Weinhold b02c147c05 Implemented seekdir() and telldir(). They were declared in <dirent.h> already.
So either +alphabranch or remove the declarations from <dirent.h>.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32679 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-25 22:16:40 +00:00
Ingo Weinhold fb7c02c215 Under Linux use BLKGETSIZE64 to get the device size, now, and only when that
fails fall back to HDIO_GETGEO. This hopefully fixes #3122, as I suspect
HDIO_GETGEO returned an incorrect size.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32674 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-25 20:31:21 +00:00
Ingo Weinhold f1f6eacd46 On Linux, FreeBSD, and friends print the partition map, if we could parse it,
but failed to get the specified partition.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32662 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-24 21:38:44 +00:00
Ingo Weinhold 8bc24c13ab * Moved termcap.h to headers/libs/termcap/, where it belongs.
* Removed the headers/gnu from the default headers (the Jamfiles needing it
  use it explicitly, now) and moved it under headers/compatibility/.
* Added libgnu.so to the image. Still untested, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-17 21:13:51 +00:00
Ingo Weinhold 9996b69b8b * Added new library libgnu.so, which will contain GNU compatibility interfaces
(analoguously to libbsd.so).
* Added an implementation of the GNU/Linux xattr interface. xattrs are mapped
  to Haiku attributes with type B_XATTR_TYPE. Haiku attributes are mapped to
  xattrs by moving them into the "user.haiku." namespace and appending the
  type to their name. Complete, but utterly untested yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32427 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 21:29:02 +00:00
Ingo Weinhold c527fef824 Added type constant B_XATTR_TYPE. This is not a data type, but rather a marker
that can be used for node attributes, when those originate from Linux xattrs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32426 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 21:22:25 +00:00
Ingo Weinhold 7c44760049 Added ENOATTR.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32425 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 21:20:05 +00:00
Ingo Weinhold e8cbd8db5d Use the handy B_CLOSE_ON_ESCAPE flag instead of fishing for the escape key in
DispatchMessage().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32419 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 17:02:21 +00:00
Ingo Weinhold 4e4ff20294 common_poll():
* Always select POLLNVAL. We wouldn't get notified, if the FD was closed while
  waiting.
* Skip negative FDs (as per POSIX standard).
* When encountering an invalid FD, we must not wait. Previously we did that as
  long as any FD was valid.
* The return count must consider all FDs with non-null revents, including
  invalid ones (revents is POLLNVAL then).

common_poll()/common_wait_for_objects():
* Don't bail out early, when no FDs/objects have been selected. We always want
  to wait.

_user_poll()/_user_wait_for_objects():
* Copy the array back to userland even if common_*() returned an error. The
  functions do now always fill in the resulting events.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32418 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 16:42:18 +00:00
Ingo Weinhold 57dc0e2a53 Changed the FD selection/deselection handling a bit:
* B_EVENT_INVALID is no longer passed to the FD's select()/deselect() hooks.
* Now we always attach the select info to the I/O context, even if no event has
  been selected. The reasoning is that B_EVENT_INVALID is always automatically
  selected and handled by the VFS, so we need the handle to notify on close().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32417 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 16:28:15 +00:00