Commit Graph
100 Commits
Author SHA1 Message Date
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
Ingo Weinhold f64fcd3794 attr_info -> my_attr_info
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11584 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 20:38:01 +00:00
Ingo Weinhold 3eb4c2e0cd We also need to take care of the open flags, seek constants and the
BeOS specific structure attr_info (it contains an off_t).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11583 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 20:37:04 +00:00
Ingo Weinhold edbadbb0f3 * The build platform fstat() wrapper moved into stat_util.cpp/h.
* Added wrappers for open(), close(), and read_pos().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11582 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 20:34:39 +00:00
Ingo Weinhold d29e55d8ec Functions for converting between the build platform and emulated platform stat structures.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11581 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 20:32:40 +00:00
Ingo Weinhold 740f995468 Paths related utility functions.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11580 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-05 20:31:39 +00:00
Ingo Weinhold 2645d1f338 Use the fstat() wrapper only on non-BeOS systems.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11571 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-04 00:37:10 +00:00
Ingo Weinhold d139bc986a The st_rdev field was missing in our my_stat structure, so it wasn't binary compatible with R5 struct stat.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11570 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-04 00:36:14 +00:00
Ingo Weinhold c64ead1580 Accidentially gave a empty commit message when committing the changes to
the bfs_shell related files:
* Fixed a couple of `friend without struct/class' errors gcc 3
  complains about.
* Several adjustments do make the FS add-on build in a BeOS-like
  environment. E.g. the fs_shell header "myfs.h" is not longer included.
  For "cache.h" and "proto.h" the local copies are included.
* additional_commands.c must is part of the fs_shell and must be build in
  the same environment as the fs_shell. The fs_shell definitions must be
  used for system dependencies.
* The FS add-on has a platform dependency, since it opens and fstat()s
  the underlying device. open() is harmless, but we must wrap fstat().
* We don't longer compile in kernel_cpp.cpp, but rather use the
  platform C++ support directly.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11569 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 23:48:52 +00:00
Ingo Weinhold 105d7373e9 *** empty log message ***
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11568 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 23:36:57 +00:00
Ingo Weinhold efaa1f0e73 We now build a static library from the fs_shell sources. No need to compile them again for each FS.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11567 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 23:35:57 +00:00
Ingo Weinhold bc421eb5c9 Jam rule SetupFSShellIncludes that sets up the include search dirs for building the fs_shell. Reused, hence in a separate file.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11566 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 23:34:29 +00:00
Ingo Weinhold e6f3010336 A whole bunch of changes to make the fs_shell build (and work) under
Linux:
* Corrected use of error code. We consequently use the errors we
  defined to be compatible with BeOS and translate error code to and from
  the build platform where necessary.
* Consequently use the structs my_stat and my_dirent and the type
  fs_off_t when dealing with the guest FS. my_dirent had to be adjusted
  to be BeOS compatible.
  We wrap the platform fstat() now to translate the struct stat to the
  BeOS representation.
* Fixed a bug introduced with the last checkin: The fs_shell crashed after
  executing a command.
* Fixed printf() format warnings under Linux.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11565 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 23:32:35 +00:00
Ingo Weinhold 9b3fd9f88c Support for translating error codes between the build platform and the
emulated system (i.e. the FS).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11563 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 23:18:54 +00:00
Ingo Weinhold 81d91d7fcb Missing header.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11562 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 23:16:35 +00:00
Ingo Weinhold 3844cf706a * New variable DEBUG_FLAGS which can be used to specify the gcc debug
flags to be used. Defaults to -g. You might want to use -ggdb with
  gcc 3.x.
* Added variable C++_SUPPORT_LIBS. Is set to sup++ for gcc 3.x.
* ResComp can be built under BeOS only at the moment.
* Define _NO_INLINE_ASM when building for the build platform. Is not
  strictly necessary under BeOS, but helps under Linux.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11561 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 23:15:44 +00:00
Ingo Weinhold d2df6f5a20 We compile the fs_shell with BuildPlatformMain, which is more correct. We
use all Haiku headers save the POSIX and STL headers. Let's see how we
fare on Linux with this change...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11552 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 00:47:39 +00:00
Ingo Weinhold 2585523bed Changed since the fs_shell additional command mechanism has changed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11551 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 00:44:59 +00:00
Ingo Weinhold fc5863cce5 * Renamed fsh.c to fsh.cpp to have a more usable static initialization at
hand. Fixed all compiler errors.
* Changed the mechanism for including additional commands. Now an array
  is exported by the instance code.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11550 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 00:43:23 +00:00
Ingo Weinhold ea8e6dbaab Made C++ safe.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11548 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 00:40:03 +00:00
Ingo Weinhold 25209a1365 Commented out iso9660 and udf tests for the time being.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11547 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 00:39:20 +00:00
Ingo Weinhold 8dc98d6d85 BuildPlatformMain has a new boolean parameter to disable resetting the header search paths.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11546 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-03 00:38:19 +00:00
Ingo Weinhold a57bb4edc8 Added fs_shell (for fs_shell_command).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11544 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-02 22:23:54 +00:00
Ingo Weinhold 50329cd67c Added a BeOS specific command (using ports) to send commands to the
fs_shell. A Linux specific one will follow as soon as the fs_shell builds
under Linux.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11543 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-02 22:23:11 +00:00
Ingo Weinhold ce13a6d573 Follow-up changes to make the fs_shell instances build after adding the scripting extension.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11542 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-02 22:20:51 +00:00
Ingo Weinhold 87580cd7ab Extended fs_shell by an interface for external scripting.
This is the first step towards getting rid of the UserlandFS dependency
for building a HD image. Which is in turn the first step to being able to
build one under Linux.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11541 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-02 22:19:03 +00:00
Ingo Weinhold 121f7fb374 Allow setting a couple of EFLAGS bits.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11534 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-02 14:53:11 +00:00
Ingo Weinhold 935486a09f Added some more EFLAGS bits.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11533 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-02 14:51:48 +00:00
Ingo Weinhold 59ad83d0d9 Don't allow changing the segment registers.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11531 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-02 11:52:53 +00:00
Ingo Weinhold 5d2536d2af * Added functions for clearing/destroying the arch-specific thread debug
info.
* Implemented arch_set_cpu_state() (Axel, please check, what registers
  the debugger should actually be allowed to modify).
* Fixed arch_get_cpu_state(). We now explicitly copy the registers
  manually instead of using memcpy(). Added support for extended
  registers (FPU,...).
* Completed break- and watchpoint support.
* Implemented handling of debug and breakpoint exceptions.

The x86 specific part of the userland debugging support should be complete
now. That is in theory the entire debugging interface is available on x86
machines now. It's almost completely untested yet, though.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11526 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-02 00:14:38 +00:00
Ingo Weinhold 86cc722477 * DR3 is used for holding the pointer to the current struct thread*, so
we only have 3 debug registers available for break-/watchpoints.
* Added definitions for debug status register DR6. Reordered DR7 defs to
  ascending order. Added definitions for the EFLAGS flags we need.
* Added arch_thread_debug_info structure and related definitions.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11525 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-02 00:05:02 +00:00
Ingo Weinhold edd0aaeaee * Stop user debugging when entering the kernel and init it when leaving
it.
* Handle debug and breakpoint exceptions.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11524 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-01 23:59:23 +00:00
Ingo Weinhold 98b14f8a6a * Made i386_get_current_iframe() static again, since it wasn't what was
needed to get the topmost user iframe. Added i386_get_user_iframe() for
  exactly that purpose.
* Added reinitialization of user debugging for the new thread when
  switching the context.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11523 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-01 23:56:52 +00:00
Ingo Weinhold c8d7534e5d * Made C++ save.
* Made the parameter for restoring the FPU state const.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11522 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-01 23:52:09 +00:00
Ingo Weinhold 00a2b607d8 Added functions for clearing/destroying the architecture specific thread
debug info.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11521 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-01 23:49:20 +00:00
Ingo Weinhold ae7c619aae * Added architecture specific structure to thread_debug_info.
* Added event callbacks for break- and watchpoints and single stepping.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11520 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-01 23:47:59 +00:00
Ingo Weinhold 0d3bc46a84 * Added the extended (FP, MMX, SSE...) registers.
* Removed orig_e{a,d}x. We will always report those in e{a,d}x.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11519 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-01 23:46:08 +00:00
Ingo Weinhold 2b3216fc5a Correct terminology.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11518 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-01 23:44:23 +00:00
Ingo Weinhold feeee8dff5 Added function for setting the CPU state (not implemented yet) and
functions for setting break-/watchpoints (implemented).
Break-/watchpoints don't work yet, though. Missing is still the setting
of the debug control register DR7 somewhere in the interrupt code and
the handling of debug exceptions.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11509 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-28 00:48:31 +00:00
Ingo Weinhold 8ae64a82eb x86 specific user debugging support definitions.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11508 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-28 00:44:41 +00:00
Ingo Weinhold dd07f6001d * Added functions for clearing/destroying the architecture specific team
debug infos.
* Added function for setting the CPU state.
* Added functions for setting break-/watchpoints.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11507 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-28 00:43:43 +00:00
Ingo Weinhold 336b15cf0f Added musings about where to deal with debug registers.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11506 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-28 00:42:01 +00:00
Ingo Weinhold d906f5fc4b * Atomic access to team debug flags.
* thread_exit_args::teamID -> original_team_id.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11505 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-28 00:39:51 +00:00
Ingo Weinhold 9707863cc9 * Changes due to new team debug info locking strategy.
* In team_delete_team() we no longer explicitly destroy the team debug
  info. It is not necessary, since the terminating debug nub thread will
  do that anyway. Moreover we access the debugger port in a safer manner
  now.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11504 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-28 00:37:16 +00:00
Ingo Weinhold a7ad39fe09 * New locking strategy for the team debug info. It's no longer protected
by the team lock, but by a lock in the structure. This is necessary
  since we can't acquire the team lock while thread switching, for then the
  thread lock is already held.
* Added support for single stepping and break-/watchpoints.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11503 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-28 00:34:06 +00:00
Ingo Weinhold a67d62f1db Added definitions for supporting single step, break- and watchpoints,
and setting the CPU state.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11502 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-28 00:25:23 +00:00
Ingo Weinhold bd3b16ee7b Fixed warning.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11501 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-28 00:21:59 +00:00
Ingo Weinhold 37f7862ffb Missing \n at the end of the usage message.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11498 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 22:35:54 +00:00
Ingo Weinhold 71a0e3788d Compile the template madness with -O0. This significantly (by an order of
magnitude) reduces the compile time. It's almost acceptable now.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11497 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 22:35:13 +00:00
Ingo Weinhold 11fcd6e40a The size of the strace executable was ridiculous (1.8 MB). This attempt
to trim the templatized interface improves the situation, but we're still
quite heavy (400 KB).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11496 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 22:33:21 +00:00
Ingo Weinhold 50ff751805 * Don't use int32 in sources to be compiled for the build platform
(Daniel Furrer).
* The strace interface for the generated file changed.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11495 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 22:30:50 +00:00
Ingo Weinhold 9c1ea6d36e Launch the debug_server.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11494 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:39:36 +00:00
Ingo Weinhold f372ac983a Added the debug_server.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11493 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:38:13 +00:00
Ingo Weinhold 35e49f2582 Initial version of our debug server. This is the guy that hangs around
waiting for teams to crash to show our favorite alert.
Due to the missing app_server we don't show a alert yet. We just print
something to /dev/dprintf and kill the team. Unlike R5's debug server
ours will probably not provide any debugging functionality itself, but
rather employ gdb directly.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11492 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:37:36 +00:00
Ingo Weinhold 6d3794c0a1 * Correctly set debug_origin::nub_port in all concerned functions.
* Now a debugged thread and the debug nub thread are not longer blocking
  on ports when they receive a SIGKILL[THR] (we couldn't kill a debugged
  team before).
* Small fixes. More correct cleanup when the debug nub thread terminates.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11491 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:30:16 +00:00
Ingo Weinhold 3b28d367cb Implemented get_why_stopped_string().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11490 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:25:10 +00:00
Ingo Weinhold 540103da09 * New function get_why_stopped_string() to get a human-readable
translation for the debug_why_stopped codes.
* Added nub_port member to debug_origin structure, so that now all
  synchronous messages to the debugger also include the debug nub port.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11489 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:24:00 +00:00
Ingo Weinhold f75dc555fd * handle_signals(): If a SIGKILL[THR] is pending, ignore other signal.
* Added is_kill_signal_pending(). Can anyone tell me why the compiler
  complains about a missing previous prototype for it? <ksignal.h> is
  included, and when only preprocessing the file, the prototype is clearly
  there. I'm clueless.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11488 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:20:47 +00:00
Ingo Weinhold 782c98afd9 * Added KILL_SIGNALS, a signal mask for SIGKILL + SIGKILLTHR.
* Removed SIGKILLTHR from BLOCKABLE_SIGS.
* Made header C++ safe.
* Added function is_kill_signal_pending(), returning true, if a
  SIGKILL[THR] is pending for the current thread.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11487 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:16:07 +00:00
Ingo Weinhold 8c37e2348e Added support for new flag B_KILL_CAN_INTERRUPT. (Do ports really not support absolute timeouts?)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11486 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:13:00 +00:00
Ingo Weinhold 013d79a1b9 Added support for new flag B_KILL_CAN_INTERRUPT.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11485 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:11:52 +00:00
Ingo Weinhold 17e41f5251 Added new semaphore flag B_KILL_CAN_INTERRUPT. It makes acquire_sem_etc()
interruptable by SIGKILL[THR], even if B_CAN_INTERRUPT is not set. Not
sure, if this is the best solution, but it works.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11484 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-25 14:10:41 +00:00