Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold cafebc1db5 Added qemu_single_step_hack setting to enable the qemu single step hack.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11999 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 18:49:41 +00:00
Ingo Weinhold 85001a7cc6 * Fixed checking for DR6 bits after a debug exception (we were and'ing
with the bit number, not the respective mask).
* Added a small hack to allow single stepping to work in qemu.
  Apparently the BS bit in DR6 is not set when the debug exception
  is handled. So we always assume that a single step event occurred,
  when we couldn't recognize any other event, if the hack is enabled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 18:48:51 +00:00
Ingo Weinhold 3eae1fea40 * Added support for debugging through exec*().
* Added initialization function. Currently only need to init the
  single step hack for qemu.
* Fixed a deadlock when the nub thread destroyed the debug info. It was
  waiting for itself.
* Moved the filling in the origin info of the debug messages into
  thread_hit_debug_event_internal(). No need for code duplication.
* Writing to user memory can now be partial. We also change the area
  protection, if it wasn't writable. Necessary for setting software
  breakpoints.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11996 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 18:40:07 +00:00
Ingo Weinhold c650ac05fd Added user debug initialization call.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11994 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 18:29:12 +00:00
Ingo Weinhold 4f43c96006 * Dealt with a race condition on team exit. The death semaphore and
the thread count need to be accessed atomically.
* Made debugging through exec*() work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11993 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 18:28:24 +00:00
Ingo Weinhold d2c78559a0 We now also support partial writes to the debugged team's memory.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11992 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 18:23:33 +00:00
Ingo Weinhold edc2a86662 More debug output and a new ToDo item.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11991 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 18:22:27 +00:00
Ingo Weinhold ccba980438 Added haiku.image and svn-commit.tmp (don't know, why svn doesn't delete it) to svn:ignore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11933 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-20 23:00:24 +00:00
Ingo Weinhold f8e5453f2b Added a small program for testing unblocking on close and select support. Not quite exhaustive and tests for ECHO mode are missing, since I couldn't figure out how to turn it on.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11932 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-20 22:35:05 +00:00
Ingo Weinhold 27a5523990 * Dealt with (hopefully) all open/close race conditions.
* Implemented unblocking of pending operations when closing a cookie.
  Needed to change the simple one reader semaphore, one writer
  semaphore strategy for blocking to a request queue based approach
  (otherwise unblocking would have been really hairy).
* Implemented select() support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11931 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-20 22:31:35 +00:00
Ingo Weinhold fa062b9f09 Added SemaphorePool class.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11930 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-20 22:24:05 +00:00
Ingo Weinhold 2efc846c8a * Added delete_select_sync_pool().
* A new select sync pool entry wasn't really added to the pool.
* More debug output.
* The semaphore created in common_{select,poll}() needs to be created
  with count 0, otherwise we won't block.
* A serious race condition remains in common_{select,poll)(). When a
  selected FD is closed we can't deselect select events anymore, so
  that subsequent notify_select_events() issued by the FS/driver might
  write into already free()d memory. A solution would be to get_fd()
  the involved FDs and operate directly on them instead of using the
  indices. I'm just too lazy to do that now.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11929 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-20 22:15:33 +00:00
Ingo Weinhold 1cebd061c3 Added delete_select_sync_pool() to clean up.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11928 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-20 22:07:29 +00:00
Ingo Weinhold c379e6fed2 Added libdebug.so.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11927 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-20 22:06:29 +00:00
Ingo Weinhold 362e09b124 In case of a debugger() call now also prints the debug message. Makes use of the new libdebug.so.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11926 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-20 22:06:13 +00:00
Ingo Weinhold 0a064776ae Added the beginnings of a small private API for debug support.
Entirely implemented on top of the public <debugger.h> API, but more
convenient to use. Lives in a separate library libdebug.so.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11925 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-20 22:04:04 +00:00
Ingo Weinhold 8af41139d5 Added default constructor. Useful in combination with SetTo().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11924 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-20 21:59:51 +00:00
Ingo Weinhold 63531836b9 * Added a small private API (<fs/select_sync_pool.h>) to support FSs
and drivers that need to provide special select() support with
  managing select notification information.
* Renamed vfs_select.c to *.cpp and fixed the resulting C++ compiler
  errors. Added tracing macros.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11886 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 21:27:01 +00:00
Ingo Weinhold cbc6d404f9 Added missing select()/deselect() Hooks to the file system interface
and made sure they are called by the VFS, if existent.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11884 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 21:04:25 +00:00
Ingo Weinhold d49f1b87a0 We were handling closing of file descriptors incorrectly. The close_*()
and free_*_cookie() hooks of the underlying FS were always called
together when the reference count of the FD dropped to zero. When
blocking operations (reading/writing) on the FD were still in progress
this would never happen, though. Now we additionally maintain an open
count and call the close_*() hook when it drops to zero.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11882 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 20:25:07 +00:00
Ingo Weinhold 92290ecd54 Added support for the ll' size qualifier. Supported was only L'.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11881 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 19:45:45 +00:00
Ingo Weinhold f9ac365bc0 Removed version number from directory names.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11880 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:51:51 +00:00
Ingo Weinhold f422d333a9 Removed version number from directory name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11875 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:21:52 +00:00
Ingo Weinhold 0603429c37 Removed version number from directory name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11874 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:21:38 +00:00
Ingo Weinhold b438e86d9d Removed version number from directory name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11873 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:21:21 +00:00
Ingo Weinhold c6733267a8 Removed version number from directory name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:20:55 +00:00
Ingo Weinhold 6029f1e42b Removed version number from directory name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11871 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:20:38 +00:00
Ingo Weinhold 733fed3a6f CVS -> .svn.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11867 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 10:33:36 +00:00
Ingo Weinhold e9e207dd50 Move trunk into respective module.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11769 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 08:30:54 +00:00
Ingo Weinhold 0f6fa84153 The beginnings of the mountvolume command, using the DiskDevice API. Interrupted work. Probably doesn't even compile yet.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11745 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 22:10:26 +00:00
Ingo Weinhold 8a9c34bcfb Added `-i <include file>' option. If specified, the file is included
(sourced) before unmounting the image. That solve my problem that mounting
and copying things onto the image after makehdimage is done, damages the
FS integrity for any reason (Axel can't reproduce it, of course :-).
Maybe others have the same problem.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11744 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 22:08:28 +00:00
Ingo Weinhold edc47dd584 The debugger interface has changed a bit.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11716 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-13 23:59:20 +00:00
Ingo Weinhold b24684af25 There are now two different callbacks for break- and watchpoints.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11715 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-13 23:58:36 +00:00
Ingo Weinhold 823f4c5bf4 * Various modifications needed due to the changes in <debugger.h>.
* user_debug_break_or_watchpoint_hit() into separate functions for
  break- and watchpoints. The one for breakpoints gets another parameter
  which indicates whether the breakpoint was a soft- or hardware
  breakpoint. This info is also sent to the debugger.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11714 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-13 23:57:34 +00:00
Ingo Weinhold 4991e4c9c5 * get_debug_why_stopped_string() -> get_debug_message_string().
* Changed the index-based lookup of strings for debug message and
  exception codes to a search through entry lists. A bit slower, but more
  robust with respect to changes of the underlying enumerations.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11713 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-13 23:48:37 +00:00
Ingo Weinhold 291e414a9e * Somehow this B_DEBUGGER_MESSAGE_THREAD_STOPPED message bothered me.
Most of the debug events had their own message, but some were grouped
  into this `stopped' message with a `why' field to describe what kind
  of event it actually was. Hence the user had to check two levels until
  they could know what event occurred. So I got rid of this message and
  provided separate messages for the concerned events.
* Got rid of B_DEBUG_MESSAGE_GET_WHY_STOPPED and introduced
  B_DEBUG_MESSAGE_GET_CPU_STATE which is pretty much the same.
* Put B_DEBUG_MESSAGE_RUN_THREAD and B_DEBUG_MESSAGE_STEP_THREAD into
  a single B_DEBUG_MESSAGE_CONTINUE_THREAD message with a boolean
  `single_step' field.
* get_debug_why_stopped_string() -> get_debug_message_string().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11712 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-13 23:43:05 +00:00
Ingo Weinhold 3a3b405008 Adjustions due to changes in the debugger interface
(there's a separate B_DEBUGGER_MESSAGE_EXCEPTION_OCCURRED now).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11707 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 21:56:31 +00:00
Ingo Weinhold ebac278f8f Some simplifications. Also tried to get rid of the ostensible error
condition when the traced team exits, but this seems to be a inherent
problem. The thread that calls _kern_exit_team() apparently still manages
to send the post-syscall message, but when the debugger tries to continue
it, it is already gone. Not really harmful. We'll probably find a remedy
later.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11706 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 21:55:03 +00:00
Ingo Weinhold d00bf1778d * user_debug_fault_occurred() -> user_debug_exception_occurred().
* No longer kill the time when a page fault occurs, but rather send a
  SIGSEGV.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11705 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 21:47:21 +00:00
Ingo Weinhold 20b656f066 * Check the thread debug signal ignore masks before notifying the debugger
of a signal.
* Added sigaction_etc(). It's just a sigaction() for which the thread
  in question can be specified.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11704 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 21:45:49 +00:00
Ingo Weinhold 293a59b0e9 * The debug_thread_info records now, which signals the debugger wishes
not to be notified.
* Added debugger commands for setting/getting of thread signal ignore
  masks and signal handlers.
* Renamed user_debug_fault_occurred() to a more correct
  user_debug_exception_occurred(). It no longer sends a `stopped' message,
  but the new one dedicated to exceptions. Additionally the number of the
  signal is supplied that will be sent, when the thread continues (without
  indicating to ignore the event).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11703 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 21:43:35 +00:00
Ingo Weinhold 03f92cacce Added new function get_debug_exception_string(). Refactored a bit.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11702 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 21:37:01 +00:00
Ingo Weinhold 1619a2e5b4 * The exceptions now have their own debugger message. Added
get_debug_exception_string() to get a user-readable string for an
  exception type.
* Added more signal support. Now the debugger can set per thread which
  signals it wishes to be notified of. It can also just ignore the next
  occurrence of a signal.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11701 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 21:35:31 +00:00
Ingo Weinhold 4ef509f03b New switch '-l' which allows to debug the loading of the traced application.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11698 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 15:24:00 +00:00
Ingo Weinhold 0b5637ed3a Argh! This change should have been checked in two days ago!
* Added support for debugger handover. The current debugger need to send
  a B_DEBUG_MESSAGE_HANDED_OVER message. The rest is completely
  transparent to the new debugger. It simply calls install_team_debugger().
* Implemented _user_wait_for_debugger().
* Reworked a few bits to ensure that after a remove_team_debugger() or
  after requesting a debugger handover the debugger doesn't get any more
  messages.
* When the debugger is removed or dies, the debugged threads should now
  cleanup their debug info and continue, instead of waiting at their
  debug port forever.
All the new features are not tested. Will happen, when gdb will be
debugged.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11697 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 15:22:28 +00:00
Ingo Weinhold 4d5289b7f0 load_team_etc() now optionally waits for the new team to be loaded
(new `flags' parameter, flag B_WAIT_TILL_LOADED). This is the default
behaviour for load_image(), so it behaves like R5's implementation now,
i.e. errors while loading are reported to the caller.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11696 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 15:13:51 +00:00
Ingo Weinhold 0dd3a50bb3 _user_load_image() has a flags parameter now. Added a new structure team_loading_info, which is referenced by the team structure while the team is being loaded..
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11695 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 15:11:08 +00:00
Ingo Weinhold 0e83032441 * Added _user_image_relocated() and _user_loading_app_failed().
* We no longer notify the debugger about a new image when it is registered,
  but when it has been relocated.
* When the application image has been relocated, we notify the one who
  initiated its loading.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11694 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 15:09:09 +00:00
Ingo Weinhold 3a96ba0bed Added _user_image_relocated() and _user_loading_app_failed().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11693 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 15:05:12 +00:00
Ingo Weinhold 5935412cad load_image(): _kern_load_image() now has a flags parameter. We pass B_WAIT_TILL_LOADED.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11692 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 15:04:03 +00:00
Ingo Weinhold b484724711 Ugh! Forgot to add ffs.cpp.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11691 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 15:02:46 +00:00
Ingo Weinhold 9a28130b32 Added (currently only) flag B_WAIT_TILL_LOADED for _kern_load_image()
(maybe this should better go into a private header?). If given the function
waits till the loader is done with loading and relocating the executable.
Otherwise it returns before the loader starts.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11690 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 15:01:25 +00:00
Ingo Weinhold 7884e8986b * _kern_load_image() has a `flags' parameter now.
* Added _kern_image_relocated() and  _kern_loading_app_failed(), which
  are invoked by the loader to provide the kernel with more info.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11689 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 14:58:39 +00:00
Ingo Weinhold 0a5054d17f * Renamed the RFLAG_SORTED flag to RFLAG_INITIALIZED, since that is what
it actually meant.
* Refactored the image initialization process (init_dependencies()) a bit.
  topological_sort() is now more flexible.
* The image relocation is now done by relocate_dependencies(). The order
  of relocating the images is the same as the initialization order, so
  that the app image is the last to be relocated. After having relocated
  an image the kernel is notified.
* The FATAL() macro has another parameter, an error code now, and calls
  the new syscall _kern_loading_app_failed() instead of _kern_exit_team().
  So the error can be reported to the team that called load_image().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11688 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 14:56:18 +00:00
Ingo Weinhold 54c3baf3b6 Renamed relocate_image() to arch_relocate_image() and removed the RFLAG_RELOCATED flag handling (done by the architecture independent code now).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11687 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 14:47:32 +00:00
Ingo Weinhold adc9c4c556 [un]load_library() now also supports add-ons. [un]load_addon() is no longer needed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11686 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 00:00:04 +00:00
Ingo Weinhold 2d890ffaa2 * Introduced a new flag for preventing load_dependencies() to be run a
second time for already loaded libraries, when a library/add-on is
  loaded.
* image_t features now both, a path and a name. The name is the DT_SONAME,
  if present, the leaf name otherwise.
* Modified find_image() to compare both path and name, if necessary.
  Added a type mask parameter to specify what image types one is
  interested.
* Refactored open_container(). We now also support DT_RPATH, a dependency
  search path list that can be specified for the dependencies of a shared
  object.
* Extended [un]load_library() to support add-ons.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11685 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-11 23:36:32 +00:00
Ingo Weinhold 0b4af91dad The bfs_shell xcp has been renamed to cp.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11684 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-11 17:59:41 +00:00
Ingo Weinhold 01203fdf42 Made a bit more compliant to the shell `cp':
* When the target is a symlink, it is tried to be resolved before making
  the decision what to do.
* If the (resolved) target is a file and the source is a file, we don't
  fail anymore, if `-f' wasn't specified. We truncate the target file
  instead and copy the source data into it.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11683 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-11 17:52:29 +00:00
Ingo Weinhold 2c05bc8a8d Move to_platform_open_mode() to stat_util.cpp/h and made it available to other source files. It has little to do with stat data, but it fits with the other conversion functions at least and I found no better place.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11682 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-11 17:48:21 +00:00
Ingo Weinhold 6ce30cc809 Made xcp the default cp/copy command. The code for it is still there, for it is also used in other tests.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11681 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-11 17:45:59 +00:00
Ingo Weinhold f277fb639d * Prevent double deletion when setting to an object that is already set.
* Added Unset() and Delete() methods.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11680 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-11 17:44:55 +00:00
Ingo Weinhold 2eece8633c * Added support for debugger handover.
* Implemented _user_wait_for_debugger().
* Reworked a few bits to ensure that after a remove_team_debugger() or
  after requesting a debugger handover the debugger doesn't get any more
  messages.
* When the debugger is removed or dies, the debugged threads should now
  cleanup their debug info and continue, instead of waiting at their
  debug port forever.
All the new features are not tested. Will happen, when gdb will be
debugged.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11664 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-10 22:04:27 +00:00
Ingo Weinhold 1c7fbde145 Added message def for preparing to hand over a debugged team to another
debugger. After successful reply to the message the debugger won't receive
any more messages from the debugged team. The mechanism is completely
transparent to the target debugger. It simply installs itself as debugger
for the team.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11662 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-10 21:56:23 +00:00
Ingo Weinhold 836d23b08e * Added empty _user_wait_for_debugger() implementation.
* Added some musings about what is missing, when a debugger is removed and
  how _user_wait_for_debugger() shall be supported.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11636 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-09 22:49:13 +00:00
Ingo Weinhold 6bbfd2627b New syscall _kern_wait_for_debugger().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-09 22:46:31 +00:00
Ingo Weinhold a29ecae5f0 New debug function wait_for_debugger(). Useful when creating teams to be debugged via fork().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11634 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-09 22:45:41 +00:00
Ingo Weinhold 2562e5185c Command B_DEBUG_MESSAGE_GET_WHY_STOPPED supports a reply port now.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11633 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-09 22:05:43 +00:00
Ingo Weinhold 9b92e8c011 Added missing reply port for message B_DEBUG_MESSAGE_GET_WHY_STOPPED. Removed unnecessary alignment in debug_nub_set_cpu_state.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11632 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-09 22:04:38 +00:00
Ingo Weinhold cb01a20237 The debugger API changed slightly.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11626 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-08 23:11:21 +00:00
Ingo Weinhold bd5d59c4cc Support partial reads from memory.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11625 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-08 23:10:55 +00:00
Ingo Weinhold 7586a0f3d6 Reading memory is more handy, if it allows for partial reads. So now the size is returned with the reply.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11624 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-08 23:09:31 +00:00
Ingo Weinhold fe99e18c3c spawn_kernel_thread_etc() has one more argument now.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-08 18:18:55 +00:00
Ingo Weinhold 6c2560b50e team_ids are now aligned with the team main thread IDs.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11622 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-08 18:18:10 +00:00
Ingo Weinhold 5939c4d7a9 Added functions allocate_thread_id() and peek_next_thread_id() and a
threadID parameter to spawn_kernel_thread_etc(). It's now possible to
set the ID of a new thread. Used in team.c to make team ID and the ID of
the main thread equal.

Fascinatingly the two added functions prompt my compiler to issue
`missing prototype' warnings, although those are obviously there. It would
be nice if someone could solve that riddle.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11621 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-08 18:16:16 +00:00
Ingo Weinhold 08f3210dcf Added empty implementations of tc{get,set}pgrp().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11615 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-07 22:07:26 +00:00
Ingo Weinhold 5141596a69 Added ffs().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11614 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-07 22:02:50 +00:00
Ingo Weinhold 99801d4a88 * Added variables KERNEL_C++_SUPPORT_LIBS and STL_HEADERS to aid support
for building under Linux.
* Tried to get the header setup into a shape that would allow us to build
  under Linux with gcc 3.x. But I give up for the moment. The C++ support
  headers don't seem to be separate from the STL headers, which makes it
  virtually impossible to use our STL together with gcc 3.x.
  Worse, I don't even think, how we build under BeOS at the moment is
  correct. The _G_config.h (glibc configuration) header is included from
  some public headers, but is itself not made available. This causes the
  R5 header to be used, which belongs to a completely different glibc
  version. But when building our libroot we use the new header. I wouldn't
  be surprised, if that could cause all kinds of subtle problems. Maybe
  even the STL string problem I encountered recently.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11607 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 17:03:29 +00:00
Ingo Weinhold a8e00c29fe Add the newly introduced src/build/cpp_support.cpp to the sources when building under Linux.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11606 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 16:51:58 +00:00
Ingo Weinhold 8b737816c4 Added KERNEL_C++_SUPPORT_LIBS to the libs the kernel links against. Required under Linux.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11605 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 16:50:24 +00:00
Ingo Weinhold a8bd76eb3f Required for the build under Linux. Defines dl_iterate_phdr() which is a Linux specific glibc dependency.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11604 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 16:49:13 +00:00
Ingo Weinhold 078898ebf8 Not longer needed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11603 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 15:58:35 +00:00
Ingo Weinhold 61f6087c2a Define _GNU_SOURCE for GNU extensions.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11602 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 13:42:17 +00:00
Ingo Weinhold 9c523f7e48 * Added source for scripting support under Linux.
* Define _GNU_SOURCE for GNU extension.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11601 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 13:40:54 +00:00
Ingo Weinhold 0adb8b09ca Implemented fs_shell scripting under UNIX using UNIX sockets. Refactored
the platform independent code out of fs_shell_command_beos.cpp.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11600 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 13:39:17 +00:00
Ingo Weinhold 58183b99ff * dirent::d_dev is not POSIX. Use it only under BeOS.
* Make return value of implementations of Directory::GetNextEntry()
  match the base class version.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11599 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 13:36:25 +00:00
Ingo Weinhold 19de31b510 B_OK -> FS_OK
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11598 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 13:33:25 +00:00
Ingo Weinhold 76a14666e0 * As read_pos() and write_pos() are supposed to be platform functions,
they return the respective error codes.
* Fixed the open mode conversion function.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11597 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 13:32:33 +00:00
Ingo Weinhold 7d0617a836 Er, the last change was quite wrong. Correctly define O_NOTRAVERSE to O_NOFOLLOW, if available.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11596 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 13:31:26 +00:00
Ingo Weinhold cc13340e9a Fixed struct stat conversion functions for non-BeOS.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11595 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 13:09:50 +00:00
Ingo Weinhold 16157ab59e ioctx::lock was not initialized properly.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11594 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 13:08:58 +00:00
Ingo Weinhold 875d890122 O_NOTRAVERSE is called O_NOFOLLOW under Linux.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11593 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 13:07:41 +00:00
Ingo Weinhold b84eae0a6f Changed the script to make use of bfs_shell and fs_shell_command to
populate an image. The UserlandFS dependency is hereby gone.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11592 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 00:15:26 +00:00
Ingo Weinhold 6ff9fee56f Improved the output in case the command failed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11591 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-06 00:13:39 +00:00
Ingo Weinhold a34fce7356 Rewrote the mkdir command to support option -p and multiple directories.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11590 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 21:37:09 +00:00
Ingo Weinhold 6bc2ff3471 Reverted the kludge introduced to wrap the build platform fstat() and
switch to Axel's hack to just redefine the critical functions via macro
definition in the Jamfile.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11589 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 21:01:56 +00:00
Ingo Weinhold 0bd9d4d1c0 Added new source files xcp.cpp, path_util.cpp, stat_util.cpp.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11588 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 20:59:47 +00:00
Ingo Weinhold 4a91298cbb * Use our open mode flags and seek modes instead of the build platform
ones.
* Added listattr command.
* Added cd command. It can change the CWD of the emulated as well as of
  the host OS (prefix `:').
* Changed do_dir() to print symlinks with their target.
* Rewrote the rm command. It now support the options -r and -f
  and multiple files.
* Rewrote the symlink command (and renamed it to link, alias ln). It now
  supports creating hardlinks and understands the options -s and -f.
* Added command xcp, with support for options -r, -f, -d, and pretty
  close approximation of the shell command cp, save for the fact, that it
  copies attributes and can freely copy in the emulated and host OS
  (and between them, of course; prefix `:').

Now it should be possible to change makehdimage to use a scripted
bfs_shell instead of UserlandFS to build a HD image.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11587 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 20:58:58 +00:00
Ingo Weinhold c5126c5985 * Write buffers should be const.
* Added sys_stat_attr().
* Added sys_open_attr_dir(). Extended the directory functions to be able
  to deal with attribute directories.
* Init the current directory, so we can use it (the support is there
  already).
* Use our open modes instead of the platform ones.
* Added O_NOTRAVERSE support to sys_open().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11586 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 20:45:45 +00:00
Ingo Weinhold e19f027e30 Change into the root dir of the FS directly after mounting.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11585 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 20:39:02 +00:00