* 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
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
* 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
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
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
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
* 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
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
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
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
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
* 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
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
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
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
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
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
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
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
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
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
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
* 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
* 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
* 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
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
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
* 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
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
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
(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
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
* 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
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
* 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
* 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
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