#
4be4fc6b |
|
15-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
More 64-bit compilation/safety fixes.
|
#
9536ec02 |
|
03-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Reimplemented the gdb stub support for the 'g' command (read registers): * Added an arch_debug_gdb_get_registers() interface that is supposed to provide the register values in the format expected by gdb and implemented it for x86. * Reimplemented gdb_regreply() to use that. Also made it buffer overflow safe. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41880 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c3676b54 |
|
13-Apr-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added vm_debug_copy_page_memory() which copies memory from a potentially not mapped page. * debug_{mem,strl}cpy(): - Added "team" parameter for specifying the address space the address are to be interpreted in. - When the standard memcpy() (with fault handler) fails, fall back to vm_debug_copy_page_memory(). * Added debug_is_debugged_team(): Predicate returning true, if the supplied team_id refers to the same team debug_get_debugged_thread() belongs to. * Added DebuggedThreadSetter class for scope-based debug_set_debugged_thread(). Made use of it in several debugger functions. * print_demangled_call() (x86): Fixed unsafe memory access. Allows KDL stack traces to work correctly again, even if the page daemon has already unmapped the concerned pages. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36230 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cfefeee3 |
|
18-Mar-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Changed arch_debug_save_registers() to take an arch-specific structure arch_debug_registers instead. * Call arch_debug_save_registers() on all CPUs when entering the kernel debugger. * Added debug_get_debug_registers() to return a specified CPU's saved registers. * x86: - Replaced the previous arch_debug_save_registers() implementation. Disabled getting the registers via the gdb interface for the time being. - Fixed the "sc", "call", and "calling" commands to also work for threads running on another CPU. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35907 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e50cf876 |
|
02-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved the VM headers into subdirectory vm/. * Renamed vm_cache.h/vm_address_space.h to VMCache.h/VMAddressSpace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34449 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ea2abd11 |
|
02-Aug-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Renamed the ROUNDOWN macro to ROUNDDOWN. Also changed the implementation of ROUNDUP to use '*' and '/' -- the compiler will optimize that for powers of two anyway and this implementation works for other numbers as well. * The thread::fault_handler use in C[++] code was broken with gcc 4. At least when other functions were invoked. Trying to trick the compiler wasn't a particularly good idea anyway, since the next compiler version could break the trick again. So the general policy is to use the fault handlers only in assembly code where we have full control. Changed that for x86 (save for the vm86 mode, which has a similar mechanism), but not for the other architectures. * Introduced fault_handler, fault_handler_stack_pointer, and fault_jump_buffer fields in the cpu_ent structure, which must be used instead of thread::fault_handler in the kernel debugger. Consequently user_memcpy() must not be used in the kernel debugger either. Introduced a debug_memcpy() instead. * Introduced debug_call_with_fault_handler() function which calls a function in a setjmp() and fault handler context. The architecture specific backend arch_debug_call_with_fault_handler() has only been implemented for x86 yet. * Introduced debug_is_kernel_memory_accessible() for use in the kernel debugger. It determines whether a range of memory can be accessed in the way specified. The architecture specific back end arch_vm_translation_map_is_kernel_page_accessible() has only been implemented for x86 yet. * Added arch_debug_unset_current_thread() (only implemented for x86) to unset the current thread pointer in the kernel debugger. When entering the kernel debugger we do some basic sanity checks of the currently set thread structure and unset it, if they fail. This allows certain commands (most importantly the stack trace command) to avoid accessing the thread structure. * x86: When handling a double fault, we do now install a special handler for page faults. This allows us to gracefully catch faulting commands, even if e.g. the thread structure is toast. We are now in much better shape to deal with double faults. Hopefully avoiding the triple faults that some people have been experiencing on their hardware and ideally even allowing to use the kernel debugger normally. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32073 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
90d46a5c |
|
08-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Fixed the "qOffsets" return value. At least how I understand the documentation the segment offsets it shall return are relative to the address specified in the program header. * Added "qSupported". * Added the mandatory commands and some additional ones. Partially implemented only. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30038 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
777ae2fb |
|
08-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
More style fixes. Sorry, missed those before. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30027 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c970c6e8 |
|
08-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Converted C to C++ comments. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30026 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ae2e6c43 |
|
07-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Style cleanup. * gdb.c -> gdb.cpp git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30025 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4be4fc6b1faddbd037146214a0011d320842b4f3 |
|
15-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
More 64-bit compilation/safety fixes.
|
#
9536ec02971d96e1941af928eb3645bc6e3133e3 |
|
03-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Reimplemented the gdb stub support for the 'g' command (read registers): * Added an arch_debug_gdb_get_registers() interface that is supposed to provide the register values in the format expected by gdb and implemented it for x86. * Reimplemented gdb_regreply() to use that. Also made it buffer overflow safe. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41880 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c3676b54bfd2e06b73646d1846b2ab0272cb96e2 |
|
13-Apr-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added vm_debug_copy_page_memory() which copies memory from a potentially not mapped page. * debug_{mem,strl}cpy(): - Added "team" parameter for specifying the address space the address are to be interpreted in. - When the standard memcpy() (with fault handler) fails, fall back to vm_debug_copy_page_memory(). * Added debug_is_debugged_team(): Predicate returning true, if the supplied team_id refers to the same team debug_get_debugged_thread() belongs to. * Added DebuggedThreadSetter class for scope-based debug_set_debugged_thread(). Made use of it in several debugger functions. * print_demangled_call() (x86): Fixed unsafe memory access. Allows KDL stack traces to work correctly again, even if the page daemon has already unmapped the concerned pages. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36230 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cfefeee3f81bd3ed97243986cdd6bf710d16d0bc |
|
18-Mar-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Changed arch_debug_save_registers() to take an arch-specific structure arch_debug_registers instead. * Call arch_debug_save_registers() on all CPUs when entering the kernel debugger. * Added debug_get_debug_registers() to return a specified CPU's saved registers. * x86: - Replaced the previous arch_debug_save_registers() implementation. Disabled getting the registers via the gdb interface for the time being. - Fixed the "sc", "call", and "calling" commands to also work for threads running on another CPU. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35907 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e50cf8765be50a7454c9488db38b638cf90805af |
|
02-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved the VM headers into subdirectory vm/. * Renamed vm_cache.h/vm_address_space.h to VMCache.h/VMAddressSpace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34449 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ea2abd110bd6a4518a954477562e2dd94a5fef9d |
|
02-Aug-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Renamed the ROUNDOWN macro to ROUNDDOWN. Also changed the implementation of ROUNDUP to use '*' and '/' -- the compiler will optimize that for powers of two anyway and this implementation works for other numbers as well. * The thread::fault_handler use in C[++] code was broken with gcc 4. At least when other functions were invoked. Trying to trick the compiler wasn't a particularly good idea anyway, since the next compiler version could break the trick again. So the general policy is to use the fault handlers only in assembly code where we have full control. Changed that for x86 (save for the vm86 mode, which has a similar mechanism), but not for the other architectures. * Introduced fault_handler, fault_handler_stack_pointer, and fault_jump_buffer fields in the cpu_ent structure, which must be used instead of thread::fault_handler in the kernel debugger. Consequently user_memcpy() must not be used in the kernel debugger either. Introduced a debug_memcpy() instead. * Introduced debug_call_with_fault_handler() function which calls a function in a setjmp() and fault handler context. The architecture specific backend arch_debug_call_with_fault_handler() has only been implemented for x86 yet. * Introduced debug_is_kernel_memory_accessible() for use in the kernel debugger. It determines whether a range of memory can be accessed in the way specified. The architecture specific back end arch_vm_translation_map_is_kernel_page_accessible() has only been implemented for x86 yet. * Added arch_debug_unset_current_thread() (only implemented for x86) to unset the current thread pointer in the kernel debugger. When entering the kernel debugger we do some basic sanity checks of the currently set thread structure and unset it, if they fail. This allows certain commands (most importantly the stack trace command) to avoid accessing the thread structure. * x86: When handling a double fault, we do now install a special handler for page faults. This allows us to gracefully catch faulting commands, even if e.g. the thread structure is toast. We are now in much better shape to deal with double faults. Hopefully avoiding the triple faults that some people have been experiencing on their hardware and ideally even allowing to use the kernel debugger normally. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32073 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
90d46a5c437502c8ec713db03347227ae12dde0b |
|
08-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Fixed the "qOffsets" return value. At least how I understand the documentation the segment offsets it shall return are relative to the address specified in the program header. * Added "qSupported". * Added the mandatory commands and some additional ones. Partially implemented only. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30038 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
777ae2fbb51bbc1b6d0950bd17d9d104e4bcc4cc |
|
08-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
More style fixes. Sorry, missed those before. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30027 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c970c6e8f36ddf2c7db2e483182863833628c520 |
|
08-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Converted C to C++ comments. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30026 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ae2e6c439f8615a9438a36222991ac94cc03f4b8 |
|
07-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Style cleanup. * gdb.c -> gdb.cpp git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30025 a95241bf-73f2-0310-859d-f6bbb57e9c96
|