#
1027e838 |
|
02-Feb-2024 |
John Baldwin <jhb@FreeBSD.org> |
ddb: Use bool for boolean variables in MD code Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D43695
|
#
03d04bf4 |
|
12-Jan-2024 |
Minsoo Choo <minsoochoo0122@proton.me> |
Stop using expressions in _Alignof() _Alignof(expression) is a non-standard extension. This is not allowed in gnu11 and gnu17 which follow the C11 standard _Alignof(type). Reviewed by: arichardson, imp, jhb Fixes: 4a9cd9fc22d7 amd64 db_trace: Reject unaligned frame pointers Fixes: 7ccaf76a27f1 riscv db_trace: Ensure trapframe pointer is suitably aligned. Fixes: 638c68897fbd arm64 db_trace: Ensure trapframe pointer is suitably aligned. Differential Revision: https://reviews.freebsd.org/D43409
|
#
fdafd315 |
|
24-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Automated cleanup of cdefs and other formatting Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row. Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/ Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/ Remove /\n+#if.*\n#endif.*\n+/ Remove /^#if.*\n#endif.*\n/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/ Sponsored by: Netflix
|
#
4a9cd9fc |
|
01-Sep-2023 |
John Baldwin <jhb@FreeBSD.org> |
amd64 db_trace: Reject unaligned frame pointers Switch to using db_addr_t to hold frame pointer values until they are verified to be suitably aligned. Reviewed by: kib, markj Differential Revision: https://reviews.freebsd.org/D41532
|
#
685dc743 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
aba921bd |
|
28-Oct-2022 |
Mitchell Horne <mhorne@FreeBSD.org> |
ddb: print the actual syscall name Some architectures will pretty-print a system call trap in the backtrace. Rather than printing the symbol, use the syscallname() function to pull the string from the sv_syscallnames array corresponding to the process. This simplifies the function somewhat. Mostly, this will result in dropping the "sys" prefix, e.g. "sys_exit" will now be printed simply as "exit". Make two minor tweaks to the function signature: use a u_int for the syscall number since this is a more correct type (see the 'code' member of struct syscall_args), and make the thread pointer the first argument. The latter is more natural and conventional. Suggested by: jrtc27 Reviewed by: jrtc27, markj, jhb MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D37200
|
#
85b715ba |
|
03-Oct-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64/db_trace.c: remove stray prototype Sponsored by: NVIDIA networking MFC after: 1 week
|
#
754cb545 |
|
02-Oct-2022 |
Mitchell Horne <mhorne@FreeBSD.org> |
ddb: de-duplicate decode_syscall() Only i386 and amd64 print the decoded syscall name in the backtrace. This de-duplication facilitates further changes and adoption by other platforms. Reviewed by: jrtc27, markj, jhb MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D36565
|
#
b7924341 |
|
27-Aug-2021 |
Andrew Turner <andrew@FreeBSD.org> |
Create sys/reg.h for the common code previously in machine/reg.h Move the common kernel function signatures from machine/reg.h to a new sys/reg.h. This is in preperation for adding PT_GETREGSET to ptrace(2). Reviewed by: imp, markj Sponsored by: DARPA, AFRL (original work) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D19830
|
#
f95e683f |
|
23-Jul-2021 |
Mark Johnston <markj@FreeBSD.org> |
Annotate amd64 stack unwinders with __nomemorysanitize Sponsored by: The FreeBSD Foundation
|
#
9d81dd54 |
|
08-Mar-2021 |
Mitchell Horne <mhorne@FreeBSD.org> |
ddb: replace watchpoint set/clear functions Use the new kdb variants. Print more specific error messages. Reviewed by: jhb, markj MFC after: 3 weeks Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D29156
|
#
15dc1d44 |
|
19-Feb-2021 |
Mitchell Horne <mhorne@FreeBSD.org> |
x86: implement kdb watchpoint functions Add wrappers around the dbreg interface that can be consumed by MI kernel debugger code. The dbreg functions themselves are updated to return error codes, not just -1. dbreg_set_watchpoint() is extended to accept access bits as an argument. Reviewed by: jhb, kib, markj MFC after: 3 weeks Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D29155
|
#
c02c04f1 |
|
19-Mar-2021 |
Mitchell Horne <mhorne@FreeBSD.org> |
x86: consolidate hw watchpoint logic into new file This is a prerequisite to using these functions outside of ddb, but also provides some cleanup and minor refactoring. This code is almost entirely duplicated between the two implementations, the only significant difference being the lack of dbreg synchronization on i386. Cleanups are: - demote some internal functions to static - use the constant NDBREGS instead of a '4' literal - remove K&R definitions - some added comments Reviewed by: kib, jhb Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D29153
|
#
543769bf |
|
01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
amd64: clean up empty lines in .c and .h files
|
#
78f18516 |
|
12-Nov-2019 |
Andriy Gapon <avg@FreeBSD.org> |
teach db_nextframe/x86 about [X]xen_intr_upcall interrupt handler Discussed with: kib, royger MFC after: 3 weeks Sponsored by: Panzura
|
#
2961e6ef |
|
11-Nov-2019 |
Andriy Gapon <avg@FreeBSD.org> |
db_nextframe/amd64: remove TRAP_INTERRUPT frame type Besides the confusing name, this type is effectively unused. In all cases where it could be set, the INTERRUPT type is set by the earlier code. The conditions for TRAP_INTERRUPT are a subset of the conditions for INTERRUPT. Reviewed by: kib, markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D22305
|
#
6469bdcd |
|
06-Apr-2018 |
Brooks Davis <brooks@FreeBSD.org> |
Move most of the contents of opt_compat.h to opt_global.h. opt_compat.h is mentioned in nearly 180 files. In-progress network driver compabibility improvements may add over 100 more so this is closer to "just about everywhere" than "only some files" per the guidance in sys/conf/options. Keep COMPAT_LINUX32 in opt_compat.h as it is confined to a subset of sys/compat/linux/*.c. A fake _COMPAT_LINUX option ensure opt_compat.h is created on all architectures. Move COMPAT_LINUXKPI to opt_dontuse.h as it is only used to control the set of compiled files. Reviewed by: kib, cem, jhb, jtl Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14941
|
#
ae0eceab |
|
03-Mar-2018 |
Andriy Gapon <avg@FreeBSD.org> |
db_nextframe/amd64: catch up with r328083 to recognize fast_syscall_common Since that change the system call stack traces look like this: ... sys___sysctl() at sys___sysctl+0x5f/frame 0xfffffe0028e13ac0 amd64_syscall() at amd64_syscall+0x79b/frame 0xfffffe0028e13bf0 fast_syscall_common() at fast_syscall_common+0x101/frame 0xfffffe0028e13bf0 So, db_nextframe() stopped recognizing the system call frame. This commit should fix that. Reviewed by: kib MFC after: 4 days
|
#
05d56d83 |
|
30-Jan-2018 |
John Baldwin <jhb@FreeBSD.org> |
Ensure 'name' is not NULL before passing to strcmp(). This avoids a nested page fault when obtaining a stack trace in DDB if the address from the first frame does not resolve to a known symbol. MFC after: 1 week Sponsored by: Chelsio Communications
|
#
68fd3b0e |
|
18-Jan-2018 |
John Baldwin <jhb@FreeBSD.org> |
Use a dedicated per-CPU stack for machine check exceptions. Similar to NMIs, machine check exceptions can fire at any time and are not masked by IF. This means that machine checks can fire when the kstack is too deep to hold a trap frame, or at critical sections in trap handlers when a user %gs is used with a kernel %cs. Use the same strategy used for NMIs of using a dedicated per-CPU stack configured in IST 3. Store the CPU's pcpu pointer at the stop of the stack so that the machine check handler can reliably find the proper value for %gs (also borrowed from NMIs). This should also fix a similar issue with PTI with a MC# occurring while the CPU is executing on the trampoline stack. While here, bypass trap() entirely and just call mca_intr(). This avoids a bogus call to kdb_reenter() (there's no reason to try to reenter kdb if a MC# is raised). Reviewed by: kib Tested by: avg (on AMD without PTI) Differential Revision: https://reviews.freebsd.org/D13962
|
#
ff17a677 |
|
17-Mar-2017 |
Bruce Evans <bde@FreeBSD.org> |
Don't access the reserved registers %dr4 and %dr5 on i386. On the original i386, %dr[4-5] were unimplemented but not very clearly reserved, so debuggers read them to print them. i386 was still doing this. On the original athlon64, %dr[4-5] are documented as reserved but are aliased to %dr[6-7] unless CR4_DE is set, when accessing them traps. On 2 of my systems, accessing %dr[4-5] trapped sometimes. On my Haswell system, the apparent randomness was because the boot CPU starts with CR4_DE set while all other CPUs start with CR4_DE clear. FreeBSD doesn't support the data breakpoints enabled by CR4_DE and it never changes this flag, so the flag remains different across CPUs and the behaviour seemed inconsistent except while booting when the CPU doesn't change. The invalid accesses broke: - read access for printing the registers in ddb "show watches" on CPUs with CR4_DE set - read accesses in fill_dbregs() on CPUs with CR4_DE set. This didn't implement panic(3) since the user case always skipped %dr[4-5]. - write accesses in set_dbregs(). This also didn't affect userland. When it didn't trap, the aliasing made it fragile. Don't print the dummy (zero) values of %dr[4-5] in "show watches" for i386 or amd64. Fix style bugs near this printing. amd64 also has space in the dbregs struct for the reserved %dr[8-15] and already didn't print the dummy values for these, and never accessed any of the 10 reserved debug registers. Remove cpufuncs for making the invalid accesses. Even amd64 had these.
|
#
b4b4b530 |
|
28-Jan-2017 |
Baptiste Daroussin <bapt@FreeBSD.org> |
Revert crap accidentally committed
|
#
814aaaa7 |
|
28-Jan-2017 |
Baptiste Daroussin <bapt@FreeBSD.org> |
Revert r312923 a better approach will be taken later
|
#
9a2d6ab9 |
|
21-Jul-2015 |
John Baldwin <jhb@FreeBSD.org> |
Various changes to the registers displayed in DDB for x86. - Fix segment registers to only display the low 16 bits. - Remove unused handlers and entries for the debug registers. - Display xcr0 (if valid) in 'show sysregs'. - Add '0x' prefix to MSR values to match other values in 'show sysregs'. - MFamd64: Display various MSRs in 'show sysregs'. - Add a 'show dbregs' to display the value of debug registers. - Dynamically size the column width for register values to properly align columns on 64-bit platforms. - Display %gs for i386 in 'show registers'. Differential Revision: https://reviews.freebsd.org/D2784 Reviewed by: kib, markj MFC after: 2 weeks
|
#
a5cbf8b9 |
|
21-Jul-2015 |
Mark Johnston <markj@FreeBSD.org> |
Let the unwinder handle faults during function prologues or epilogues. The i386 and amd64 DDB stack unwinders contain code to detect and handle the case where the first frame is not completely set up or torn down. This code was accidentally unused however, since db_backtrace() was never called with a non-NULL trap frame. This change fixes that. Also remove get_rsp() from the amd64 code. It appears to have come from i386, which needs to take into account whether the exception triggered a CPL switch, since SS:ESP is only pushed onto the stack if so. On amd64, SS:RSP is pushed regardless, so get_rsp() was doing the wrong thing for kernel-mode exceptions. As a result, we can also remove custom print functions for these registers. Reviewed by: jhb Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D2881
|
#
f8a757d0 |
|
21-Jul-2015 |
Mark Johnston <markj@FreeBSD.org> |
Improve stack unwinding on i386 and amd64 after an IP fault. If we can't find a symbol corresponding to the faulting instruction, assume that the previously-executed function is a call and attempt to find the calling function using the return address on the stack. Otherwise we end up associating the last stack frame with the current call, which is incorrect and causes the unwinder to skip printing of the calling function, resulting in a confusing backtrace. Reviewed by: jhb Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D2859
|
#
1a5bee08 |
|
21-Jul-2015 |
Mark Johnston <markj@FreeBSD.org> |
Remove some dead code from DDB's amd64 stack unwinder. The amd64 port copied some code from i386 to fetch function arguments and display them in backtraces. However, it was commented out and can't easily be implemented since the function arguments are passed in registers rather than on the stack in amd64. Remove it in preparation for some bug fixes in this area. Reviewed by: jhb Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D2857
|
#
4f493a25 |
|
21-May-2013 |
Konstantin Belousov <kib@FreeBSD.org> |
Fix the hardware watchpoints on SMP amd64. Load the updated %dr registers also on other CPUs, besides the CPU which happens to execute the ddb. The debugging registers are stored in the pcpu area, together with the command which is executed by the IPI stop handler upon resume. Reviewed by: jhb Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
349438a2 |
|
03-Dec-2012 |
Konstantin Belousov <kib@FreeBSD.org> |
Print the frame addresses for the backtraces on i386 and amd64. It allows both to inspect the frame sizes and to manually peek into the frames from ddb, if needed. Reviewed by: dim MFC after: 2 weeks
|
#
a7d5f7eb |
|
19-Oct-2010 |
Jamie Gritton <jamie@FreeBSD.org> |
A new jail(8) with a configuration file, to replace the work currently done by /etc/rc.d/jail.
|
#
4ccf64eb |
|
06-Apr-2010 |
Nathan Whitehorn <nwhitehorn@FreeBSD.org> |
MFC r205014,205015: Provide groundwork for 32-bit binary compatibility on non-x86 platforms, for upcoming 64-bit PowerPC and MIPS support. This renames the COMPAT_IA32 option to COMPAT_FREEBSD32, removes some IA32-specific code from MI parts of the kernel and enhances the freebsd32 compatibility code to support big-endian platforms. This MFC is required for MFCs of later changes to the freebsd32 compatibility from HEAD. Requested by: kib
|
#
841c0c7e |
|
11-Mar-2010 |
Nathan Whitehorn <nwhitehorn@FreeBSD.org> |
Provide groundwork for 32-bit binary compatibility on non-x86 platforms, for upcoming 64-bit PowerPC and MIPS support. This renames the COMPAT_IA32 option to COMPAT_FREEBSD32, removes some IA32-specific code from MI parts of the kernel and enhances the freebsd32 compatibility code to support big-endian platforms. Reviewed by: kib, jhb
|
#
2c66ccca |
|
01-Apr-2009 |
Konstantin Belousov <kib@FreeBSD.org> |
Save and restore segment registers on amd64 when entering and leaving the kernel on amd64. Fill and read segment registers for mcontext and signals. Handle traps caused by restoration of the invalidated selectors. Implement user-mode creation and manipulation of the process-specific LDT descriptors for amd64, see sysarch(2). Implement support for TSS i/o port access permission bitmap for amd64. Context-switch LDT and TSS. Do not save and restore segment registers on the context switch, that is handled by kernel enter/leave trampolines now. Remove segment restore code from the signal trampolines for freebsd/amd64, freebsd/ia32 and linux/i386 for the same reason. Implement amd64-specific compat shims for sysarch. Linuxolator (temporary ?) switched to use gsbase for thread_area pointer. TODO: Currently, gdb is not adapted to show segment registers from struct reg. Also, no machine-depended ptrace command is added to set segment registers for debugged process. In collaboration with: pho Discussed with: peter Reviewed by: jhb Linuxolator tested by: dchagin
|
#
c66d2b38 |
|
16-Mar-2009 |
Jung-uk Kim <jkim@FreeBSD.org> |
Initial suspend/resume support for amd64. This code is heavily inspired by Takanori Watanabe's experimental SMP patch for i386 and large portion was shamelessly cut and pasted from Peter Wemm's AP boot code.
|
#
482b7172 |
|
05-Dec-2008 |
Konstantin Belousov <kib@FreeBSD.org> |
Improve db_backtrace() for compat ia32 on amd64. 32bit image enters the kernel via Xint0x80_syscall(). Submitted by: dchagin MFC after: 1 week
|
#
d7f03759 |
|
19-Oct-2008 |
Ulf Lilleengen <lulf@FreeBSD.org> |
- Import the HEAD csup code which is the basis for the cvsmode work.
|
#
3c90d1ea |
|
02-Dec-2007 |
Robert Watson <rwatson@FreeBSD.org> |
Break out stack(9) from ddb(4): - Introduce per-architecture stack_machdep.c to hold stack_save(9). - Introduce per-architecture machine/stack.h to capture any common definitions required between db_trace.c and stack_machdep.c. - Add new kernel option "options STACK"; we will build in stack(9) if it is defined, or also if "options DDB" is defined to provide compatibility with existing users of stack(9). Add new stack_save_td(9) function, which allows the capture of a stacktrace of another thread rather than the current thread, which the existing stack_save(9) was limited to. It requires that the thread be neither swapped out nor running, which is the responsibility of the consumer to enforce. Update stack(9) man page. Build tested: amd64, arm, i386, ia64, powerpc, sparc64, sun4v Runtime tested: amd64 (rwatson), arm (cognet), i386 (rwatson)
|
#
185250da |
|
15-Nov-2007 |
John Baldwin <jhb@FreeBSD.org> |
Add support for cross double fault frames in stack traces: - Populate the register values for the trapframe put on the stack by the double fault handler. - Teach DDB's trace routine to treat a double fault like other trap frames. MFC after: 3 days
|
#
81efc3d9 |
|
17-Nov-2006 |
John Baldwin <jhb@FreeBSD.org> |
Add support for 8 byte hardware watches in long mode. Kernel hardware watches support 8 byte watches. For userland, we disallow 8 byte watches for 32-bit tasks.
|
#
7693afca |
|
17-Nov-2006 |
John Baldwin <jhb@FreeBSD.org> |
- Add macro constants for the various fields in %dr7 and use them in place of various scattered magic values. - Pretty print the address of hardware watchpoints in 'show watch' rather than just displaying hex. - Expand address field width on amd64 for 64-bit pointers.
|
#
5d346a56 |
|
17-Nov-2006 |
John Baldwin <jhb@FreeBSD.org> |
A few more style fixes.
|
#
71f40077 |
|
15-Nov-2006 |
John Baldwin <jhb@FreeBSD.org> |
Various whitespace and style fixes.
|
#
045f738b |
|
20-Oct-2006 |
Bruce Evans <bde@FreeBSD.org> |
Don't show debug registers in "show registers". Special registers should be displayed specially, and debug registers are among of the least interesting special registers (far behind %cr3). The debug registers are still accessible as variables and displayed in another bogus place ("show watches").
|
#
19e9205a |
|
12-Jul-2006 |
John Baldwin <jhb@FreeBSD.org> |
Simplify the pager support in DDB. Allowing different db commands to install custom pager functions didn't actually happen in practice (they all just used the simple pager and passed in a local quit pointer). So, just hardcode the simple pager as the only pager and make it set a global db_pager_quit flag that db commands can check when the user hits 'q' (or a suitable variant) at the pager prompt. Also, now that it's easy to do so, enable paging by default for all ddb commands. Any command that wishes to honor the quit flag can do so by checking db_pager_quit. Note that the pager can also be effectively disabled by setting $lines to 0. Other fixes: - 'show idt' on i386 and pc98 now actually checks the quit flag and terminates early. - 'show intr' now actually checks the quit flag and terminates early.
|
#
c8df6893 |
|
13-Mar-2006 |
Peter Wemm <peter@FreeBSD.org> |
MFi386: add a TRAP_INTERRUPT case
|
#
70665fda |
|
27-Dec-2005 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Fix watch address truncation. The address was truncated when it was passed to amd64_set_watch() as 'unsigned int' and 'unsigned int' is 32bit long on amd64. Even with that fix hardware watchpoint don't work for me on amd64, ie. when I set the watchpoint and write a byte there, nothing happens.
|
#
660002d3 |
|
23-Dec-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Improve the INKERNEL macro such that it can no longer give false positives. This fixes the stack(9) functionality. Submitted by: Antoine Brodin <antoine.brodin@laposte.net>
|
#
333b8de5 |
|
08-Dec-2005 |
John Baldwin <jhb@FreeBSD.org> |
MFi386: - Move PUSH_FRAME and POP_FRAME to asmacros.h and use PUSH_FRAME in atpic entry points. - Move PCPU_* asm macros out of the middle of the asm profiling macros. - Pass IRQ vector argument as an int rather than void * to reduce diffs with i386. - EOI the lapic in C for the lapic timer handler. - GC unused Xcpuast function. - Split IPI_STOP handling code of ipi_nmi_handler() out into a cpustop_handler() function and call it from Xcpustop rather than duplicating all the logic in assembly. - Fixup the list of symbols with interrupt frames in ddb traces. Xatpic_fastintr* have never existed on amd64, and the lapic timer handler and various IPI handlers were missing. - Use trapframe instead of intrframe for interrupt entry points (on amd64 the interrupt vector was already a separate argument, so the two frames were already identical) and GC intrframe. Submitted by: peter (3)
|
#
216e80c2 |
|
09-Sep-2005 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Move the prototypes of db_md_set_watchpoint(), db_md_clr_watchpoint() and db_md_list_watchpoints() to ddb/ddb.h.
|
#
7ef5ed2b |
|
27-Aug-2005 |
Joseph Koshy <jkoshy@FreeBSD.org> |
- Special-case NMI handling on the AMD64. On entry or exit from the kernel the 'alltraps' and 'doreti' code used taken by normal traps disables interrupts to protect the critical sections where it is setting up %gs. This protection is insufficient in the presence of NMIs since NMIs can be taken even when the processor has disabled normal interrupts. Thus the NMI handler needs to actually read MSR_GBASE on entry to the kernel to determine whether a swap of %gs using 'swapgs' is needed. However, reads of MSRs are expensive and integrating this check into the 'alltraps'/'doreti' path would penalize normal interrupts. - Teach DDB about the 'nmi_calltrap' symbol. Reviewed by: bde, peter (older versions of this change)
|
#
d0f5f62d |
|
02-Aug-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Add support for saving stack traces and displaying them via printf(9) and KTR. Contributed by: Antoine Brodin <antoine.brodin@laposte.net> Concept code from: Neal Fachan <neal@isilon.com>
|
#
bb2fd058 |
|
02-Aug-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Improve the definition of INKERNEL() to include the DMAP area and the proper start of the kernel area. Discussed with: peter
|
#
6db058b5 |
|
20-Jan-2005 |
Peter Wemm <peter@FreeBSD.org> |
MFi386: use %rip - 1 for the symbol search address (for noreturn funcs)
|
#
46280ae7 |
|
05-Jan-2005 |
Warner Losh <imp@FreeBSD.org> |
Begin all license/copyright comments with /*-
|
#
d39d4a6e |
|
01-Nov-2004 |
John Baldwin <jhb@FreeBSD.org> |
- Change the ddb paging "support" to use a variable (db_lines_per_page) to control the number of lines per page rather than a constant. The variable can be examined and changed in ddb as '$lines'. Setting the variable to 0 will effectively turn off paging. - Change db_putchar() to force out pending whitespace before outputting newlines and carriage returns so that one can rub out content on the current line via '\r \r' type strings. - Change the simple pager to rub out the --More-- prompt explicitly when the routine exits. - Add some aliases to the simple pager to make it more compatible with more(1): 'e' and 'j' do a single line. 'd' does half a page, and 'f' does a full page. MFC after: 1 month Inspired by: kris
|
#
76764432 |
|
20-Sep-2004 |
John Baldwin <jhb@FreeBSD.org> |
- Add support for "paging" in stack trace output. That is, when you do a stack trace from ddb, the output will pause with a '--More--' prompt every 18 lines. If you hit Enter, it will print another line and prompt again. If you hit space it will output another page and then prompt. If you hit 'q' or 'x' it will abort the rest of the stack trace. - Fix the sparc64 userland stack trace to honor the total count of lines to print. This is useful if your trace happens to walk back onto 0xdeadc0de and gets stuck in an endless loop. MFC after: 1 month Tested on: i386, alpha, sparc64
|
#
fd32d93b |
|
20-Jul-2004 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Unify db_stack_trace_cmd(). All it did was look up the thread given the thread ID and call db_trace_thread(). Since arm has all the logic in db_stack_trace_cmd(), rename the new DB_COMMAND function to db_stack_trace to avoid conflicts on arm. While here, have db_stack_trace parse its own arguments so that we can use a more natural radix for IDs. If the ID is not a thread ID, or more precisely when no thread exists with the ID, try if there's a process with that ID and return the first thread in it. This makes it easier to print stack traces from the ps output. requested by: rwatson@ tested on: amd64, i386, ia64
|
#
37224cd3 |
|
10-Jul-2004 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Mega update for the KDB framework: turn DDB into a KDB backend. Most of the changes are a direct result of adding thread awareness. Typically, DDB_REGS is gone. All registers are taken from the trapframe and backtraces use the PCB based contexts. DDB_REGS was defined to be a trapframe on all platforms anyway. Thread awareness introduces the following new commands: thread X switch to thread X (where X is the TID), show threads list all threads. The backtrace code has been made more flexible so that one can create backtraces for any thread by giving the thread ID as an argument to trace. With this change, ia64 has support for breakpoints.
|
#
bb2fbc41 |
|
28-Jan-2004 |
Peter Wemm <peter@FreeBSD.org> |
Un-stub the hardware debug register stuff.
|
#
0d2a2989 |
|
17-Nov-2003 |
Peter Wemm <peter@FreeBSD.org> |
Initial landing of SMP support for FreeBSD/amd64. - This is heavily derived from John Baldwin's apic/pci cleanup on i386. - I have completely rewritten or drastically cleaned up some other parts. (in particular, bootstrap) - This is still a WIP. It seems that there are some highly bogus bioses on nVidia nForce3-150 boards. I can't stress how broken these boards are. I have a workaround in mind, but right now the Asus SK8N is broken. The Gigabyte K8NPro (nVidia based) is also mind-numbingly hosed. - Most of my testing has been with SCHED_ULE. SCHED_4BSD works. - the apic and acpi components are 'standard'. - If you have an nVidia nForce3-150 board, you are stuck with 'device atpic' in addition, because they somehow managed to forget to connect the 8254 timer to the apic, even though its in the same silicon! ARGH! This directly violates the ACPI spec.
|
#
56ae44c5 |
|
25-Jul-2003 |
David E. O'Brien <obrien@FreeBSD.org> |
Use __FBSDID(). Brought to you by: a boring talk at Ottawa Linux Symposium
|
#
395aac85 |
|
31-May-2003 |
Peter Wemm <peter@FreeBSD.org> |
MFi386: rev 1.56: remove break after return
|
#
5feb2148 |
|
29-May-2003 |
Peter Wemm <peter@FreeBSD.org> |
Initial port to amd64 after repocopy from i386. Note that the disassembler has not been updated yet, and will do some very strange things. It does tracebacks (without function arguments due to regparm calling conventions) if -fno-omit-frame-pointer is used (to come later). This achieves basic functionality. Approved by: re (amd64/* blanket)
|
#
93a7aa79 |
|
27-Dec-2002 |
Julian Elischer <julian@FreeBSD.org> |
Add code to ddb to allow backtracing an arbitrary thread. (show thread {address}) Remove the IDLE kse state and replace it with a change in the way threads sahre KSEs. Every KSE now has a thread, which is considered its "owner" however a KSE may also be lent to other threads in the same group to allow completion of in-kernel work. n this case the owner remains the same and the KSE will revert to the owner when the other work has been completed. All creations of upcalls etc. is now done from kse_reassign() which in turn is called from mi_switch or thread_exit(). This means that special code can be removed from msleep() and cv_wait(). kse_release() does not leave a KSE with no thread any more but converts the existing thread into teh KSE's owner, and sets it up for doing an upcall. It is just inhibitted from being scheduled until there is some reason to do an upcall. Remove all trace of the kse_idle queue since it is no-longer needed. "Idle" KSEs are now on the loanable queue.
|
#
50c026e5 |
|
20-Oct-2002 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Change the definition of the debugging registers to be an array, so that we can index into it, rather than do pointer gymnastics on a structure containing 8 elements. Verified by: MD5 hash on the produced .o files.
|
#
fc028b4e |
|
20-Sep-2002 |
John Baldwin <jhb@FreeBSD.org> |
fork_trampoline() marks a trap frame. Submitted by: bde
|
#
6beff25e |
|
20-Sep-2002 |
John Baldwin <jhb@FreeBSD.org> |
Use proper type for a variable used as a DDB symbol.
|
#
f4684dbc |
|
20-Sep-2002 |
John Baldwin <jhb@FreeBSD.org> |
Trim includes. Submitted by: bde
|
#
9c89a3d5 |
|
20-Sep-2002 |
John Baldwin <jhb@FreeBSD.org> |
Various style fixes, including moving db_print_backtrace() out of the middle of the watchpoint code. Submitted by: bde
|
#
c79408a0 |
|
19-Sep-2002 |
John Baldwin <jhb@FreeBSD.org> |
Implement db_print_backtrace() if DDB is compiled into the kernel. This MD function is just a wrapper around db_stack_trace_cmd() that prints out a backtrace of curthread. Currently, this function is only implemented on i386 and alpha (and the alpha version isn't quite tested yet, will do that in a bit). Other changes: - For i386, fix a bug in the raw frame address case. The eip we extract from the passed in frame address does not match the frame we received. Thus, instead of printing a bogus frame with the wrong eip, go ahead and advance frame down to the same frame as the eip we are using. - For alpha, attempt to add a way of doing a raw trace for alpha. Instead of passing a frame address in 'addr', pass in a pointer to a structure containing PC and KSP and use those to start the backtrace. The alpha db_print_backtrace() uses asm to read in the current PC and KSP values into such a request. Tested on: i386 Requested by: many
|
#
23efa1f8 |
|
27-Jul-2002 |
Peter Wemm <peter@FreeBSD.org> |
Unwind the syscall_with_err_pushed tweak that jake did some time back. OK'ed by: jake
|
#
fa9c948c |
|
23-Mar-2002 |
Bruce Evans <bde@FreeBSD.org> |
Fixed some style bugs in the removal of __P(()). The main ones were not removing tabs before "__P((", and not outdenting continuation lines to preserve non-KNF lining up of code with parentheses. Switch to KNF formatting and/or rewrap the whole prototype in some cases.
|
#
15fe3067 |
|
20-Mar-2002 |
Alfred Perlstein <alfred@FreeBSD.org> |
Remove __P.
|
#
079b7bad |
|
07-Feb-2002 |
Julian Elischer <julian@FreeBSD.org> |
Pre-KSE/M3 commit. this is a low-functionality change that changes the kernel to access the main thread of a process via the linked list of threads rather than assuming that it is embedded in the process. It IS still embeded there but remove all teh code that assumes that in preparation for the next commit which will actually move it out. Reviewed by: peter@freebsd.org, gallatin@cs.duke.edu, benno rice,
|
#
3c7bcedd |
|
09-Oct-2001 |
Ian Dowse <iedowse@FreeBSD.org> |
Remove the Xresume* labels from the i386 interrupt handlers; the code in ipl.s and icu_ipl.s that used them was removed when the interrupt thread system was committed. Debuggers also knew about Xresume* because these labels hide the real names of the interrupt handlers (Xintr*), and debuggers need to special-case interrupt handlers to get the interrupt frame. Both gdb and ddb will now use the Xintr* and Xfastintr* symbols to detect interrupt frames. Fast interrupt frames were never identified correctly before, so this fixes the problem of the running stack frame getting lost in a ddb or gdb trace generated from a fast interrupt - e.g. when debugging a simple infinite loop in the kernel using a serial console, the frame containing the loop would never appear in a gdb or ddb trace. Reviewed by: jhb, bde
|
#
b40ce416 |
|
12-Sep-2001 |
Julian Elischer <julian@FreeBSD.org> |
KSE Milestone 2 Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process. Sorry john! (your next MFC will be a doosie!) Reviewed by: peter@freebsd.org, dillon@freebsd.org X-MFC after: ha ha ha ha
|
#
17bbfb58 |
|
10-Jul-2001 |
Brian S. Dean <bsd@FreeBSD.org> |
Add 'hwatch' and 'dhwatch' ddb commands analogous to 'watch' and 'dwatch'. The new commands install hardware watchpoints if supported by the architecture and if there are enough registers to cover the desired memory area. No objection by: audit@, hackers@ MFC after: 2 weeks
|
#
6eda157e |
|
27-Jun-2001 |
Brian S. Dean <bsd@FreeBSD.org> |
Provide access to the IA32 hardware debug registers from the ddb kernel debugger. Proper use of these registers allows setting hardware watchpoints for use in kernel debugging. MFC after: 2 weeks
|
#
0865563a |
|
18-Jun-2001 |
John Baldwin <jhb@FreeBSD.org> |
- Add support for decoding syscall names. (Brought over from the new alpha trace code that was brought over from NetBSD.) - Check for "syscall_with_err_pushed" as the label prior to a syscall trap frame rather than "Xlcall_syscall" and "Xint0x80_syscall". We don't have a valid trapframe during the short range of code that those two symbols now cover. - Simplify db_next_frame() to avoid duplicating the code for the different trap frame types. - Don't try to trace a swapped-out process. (Brought over from NetBSD via the new alpha trace code.)
|
#
7d8e84e3 |
|
09-Apr-2001 |
John Baldwin <jhb@FreeBSD.org> |
- One can now specify the decimal pid of a process to trace as a parameter. Since pid's are not in the kernel address space, this doesn't conflict with the funcionality of specifying an arbitrary frame pointer to the trace command. - If the first function of a backtrace maps to fork_trampoline, then this is a newly fork'd process that has not been executed yet, so just print out the first frame and then return for that case. - Lower the default count from 65535 to 1024. ddb doesn't trace into userland, and if the stack gets hosed and starts looping it's less annoying.
|
#
631d7bf3 |
|
24-Feb-2001 |
Jake Burkholder <jake@FreeBSD.org> |
- Rename the lcall system call handler from Xsyscall to Xlcall_syscall to be more like Xint0x80_syscall and less like c function syscall(). - Reduce code duplication between the int0x80 and lcall handlers by shuffling the elfags into the right place, saving the sizeof the instruction in tf_err and jumping into the common int0x80 code. Reviewed by: peter
|
#
67b00ca8 |
|
07-Feb-2001 |
John Baldwin <jhb@FreeBSD.org> |
When SMPng was first committed, we removed 'cpl' from the interrupt frame. Teach ddb about this as there is one less word for it to skip over when finding a trapframe on the interrupt frame stack.
|
#
07a79932 |
|
19-Jan-2001 |
Peter Wemm <peter@FreeBSD.org> |
Catch a few alternative names for the syscall entry frame, eg: post-ELF and int $0x80 entry methods.
|
#
c3aac50f |
|
27-Aug-1999 |
Peter Wemm <peter@FreeBSD.org> |
$Id$ -> $FreeBSD$
|
#
5206bca1 |
|
27-Apr-1999 |
Luoqi Chen <luoqi@FreeBSD.org> |
Enable vmspace sharing on SMP. Major changes are, - %fs register is added to trapframe and saved/restored upon kernel entry/exit. - Per-cpu pages are no longer mapped at the same virtual address. - Each cpu now has a separate gdt selector table. A new segment selector is added to point to per-cpu pages, per-cpu global variables are now accessed through this new selector (%fs). The selectors in gdt table are rearranged for cache line optimization. - fask_vfork is now on as default for both UP and SMP. - Some aio code cleanup. Reviewed by: Alan Cox <alc@cs.rice.edu> John Dyson <dyson@iquest.net> Julian Elischer <julian@whistel.com> Bruce Evans <bde@zeta.org.au> David Greenman <dg@root.com>
|
#
0a5e03dd |
|
27-Jan-1999 |
Matthew Dillon <dillon@FreeBSD.org> |
Fix warnings in preparation for adding -Wall -Wcast-qual to the kernel compile
|
#
fe08c21a |
|
27-Jan-1999 |
Matthew Dillon <dillon@FreeBSD.org> |
Fix warnings in preparation for adding -Wall -Wcast-qual to the kernel compile. This commit includes significant work to proper handle const arguments for the DDB symbol routines.
|
#
0fc3927d |
|
15-Jul-1998 |
Bruce Evans <bde@FreeBSD.org> |
%n in a comment was a poor abbreviation for Immediate-byte-signed, especially now that %n format has almost gone away.
|
#
596dfc04 |
|
08-Jul-1998 |
Bruce Evans <bde@FreeBSD.org> |
Use not-so-new printf formats %r and/or %z instead of %n and/or %+x.
|
#
3da6ef3c |
|
08-Jul-1998 |
Bruce Evans <bde@FreeBSD.org> |
Fixed bogus type of valuep in struct db_variable. It was `int *' and became `long *' for alpha, but should always have been `db_expr_t *'. Fixed variable types to match.
|
#
ecbb00a2 |
|
07-Jun-1998 |
Doug Rabson <dfr@FreeBSD.org> |
This commit fixes various 64bit portability problems required for FreeBSD/alpha. The most significant item is to change the command argument to ioctl functions from int to u_long. This change brings us inline with various other BSD versions. Driver writers may like to use (__FreeBSD_version == 300003) to detect this change. The prototype FreeBSD/alpha machdep will follow in a couple of days time.
|
#
eb0fb17e |
|
20-Nov-1997 |
Bruce Evans <bde@FreeBSD.org> |
Fixed wrong limits for the kernel text in db_numargs(). The interval [VM_MIN_KERNEL_ADDRESS, etext] was used instead of [btext, etext). Added a comment about this being completely wrong for LKMs. This only affects interpreting the instructions after the return to attempt decide the number of args. The attempt usually fails anyway.
|
#
4090154b |
|
27-Oct-1997 |
Bruce Evans <bde@FreeBSD.org> |
Moved declaration of etext from <machine/md_var.h> to <machine/cpu.h> and fixed everything that dependended on it being declared in the old place. It is used in "machine-independent" code in subr_prof.c. Moved declaration of btext from subr_prof.c to <machine/cpu.h>. It is machine-dependent.
|
#
40d50994 |
|
21-Aug-1997 |
Philippe Charnier <charnier@FreeBSD.org> |
Revert my previous commit about using CS_SECURE macro. Requested by: Bruce.
|
#
15f35491 |
|
18-Aug-1997 |
Philippe Charnier <charnier@FreeBSD.org> |
Use CS_SECURE macro. Reviewed by: John Dyson
|
#
e31521c3 |
|
20-Jul-1997 |
Bruce Evans <bde@FreeBSD.org> |
Removed unused #includes.
|
#
73f4384d |
|
26-Apr-1997 |
Peter Wemm <peter@FreeBSD.org> |
Remove the curproc printing on trap/interrupt/etc. It's outlived it's usefulness, and there were problems with it anyway. Found by: bde
|
#
477a642c |
|
26-Apr-1997 |
Peter Wemm <peter@FreeBSD.org> |
Man the liferafts! Here comes the long awaited SMP -> -current merge! There are various options documented in i386/conf/LINT, there is more to come over the next few days. The kernel should run pretty much "as before" without the options to activate SMP mode. There are a handful of known "loose ends" that need to be fixed, but have been put off since the SMP kernel is in a moderately good condition at the moment. This commit is the result of the tinkering and testing over the last 14 months by many people. A special thanks to Steve Passe for implementing the APIC code!
|
#
50ac8e2f |
|
28-Feb-1997 |
Andrey A. Chernov <ache@FreeBSD.org> |
Add missing #include <machine/segments.h> for ISPL and SEL_UPL macros
|
#
9bb932b6 |
|
27-Feb-1997 |
Bruce Evans <bde@FreeBSD.org> |
Print function args in the current radix instead of always in hex. Print the stack pointer together with the frame pointer in the trap, syscall and interrupt messages. The frame pointer is not very useful for locating syscall args since syscall functions don't have a frame pointer. Print all the numbers in the trap, syscall and interrupt messages in the default radix. The syscall number was confusing because it was printed in decimal. Use %#n format more and 0x%x less. 0x%x of course doesn't work with a variable radix. ddb is now fairly consistent about using %+#n to print all numbers. It omits the '+' for signed numbers the '#' in a few cases (e.g., for function args) to save space.
|
#
6875d254 |
|
22-Feb-1997 |
Peter Wemm <peter@FreeBSD.org> |
Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not ready for it yet.
|
#
996c772f |
|
09-Feb-1997 |
John Dyson <dyson@FreeBSD.org> |
This is the kernel Lite/2 commit. There are some requisite userland changes, so don't expect to be able to run the kernel as-is (very well) without the appropriate Lite/2 userland changes. The system boots and can mount UFS filesystems. Untested: ext2fs, msdosfs, NFS Known problems: Incorrect Berkeley ID strings in some files. Mount_std mounts will not work until the getfsent library routine is changed. Reviewed by: various people Submitted by: Jeffery Hsu <hsu@freebsd.org>
|
#
1130b656 |
|
14-Jan-1997 |
Jordan K. Hubbard <jkh@FreeBSD.org> |
Make the long-awaited change from $Id$ to $FreeBSD$ This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
#
6003d411 |
|
27-Mar-1996 |
Bruce Evans <bde@FreeBSD.org> |
Fixed traceback for the following cases: - legitimate null frames from idle() (traceback was aborted after a null pointer trap) - second instruction of normal function prologue, and last instruction of a function (caller wasn't reported). Reviewed by: davidg
|
#
b0aa8fc3 |
|
22-Dec-1995 |
David Greenman <dg@FreeBSD.org> |
Fix a small logic bug that caused the arguments of the previous frame to be used instead of the ones for the current frame if a breakpoint had been set at the entry to a function.
|
#
32831552 |
|
21-Dec-1995 |
David Greenman <dg@FreeBSD.org> |
Rewrote most of the ddb stack traceback code. These changes are smarter about decoding trap/syscall/interrupt frames and generally works better than the previous stuff. Removed some special (incorrect) frobbing of the frame pointer that was messing some things up with the new traceback code.
|
#
7f0e0625 |
|
24-Nov-1995 |
Bruce Evans <bde@FreeBSD.org> |
Staticized. Moved some ero-initialized values to the bss. Added prototypes.
|
#
9b2e5354 |
|
30-May-1995 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
Remove trailing whitespace.
|
#
b5e8ce9f |
|
16-Mar-1995 |
Bruce Evans <bde@FreeBSD.org> |
Add and move declarations to fix all of the warnings from `gcc -Wimplicit' (except in netccitt, netiso and netns) and most of the warnings from `gcc -Wnested-externs'. Fix all the bugs found. There were no serious ones.
|
#
54ab0730 |
|
01-Mar-1995 |
David Greenman <dg@FreeBSD.org> |
Slight change to include file order to accommodate upcoming changes.
|
#
f540b106 |
|
12-Aug-1994 |
Garrett Wollman <wollman@FreeBSD.org> |
Change all #includes to follow the current Berkeley style. Some of these ``changes'' are actually not changes at all, but CVS sometimes has trouble telling the difference. This also includes support for second-directory compiles. This is not quite complete yet, as `config' doesn't yet do the right thing. You can still make it work trivially, however, by doing the following: rm /sys/compile mkdir /usr/obj/sys/compile ln -s M-. /sys/compile cd /sys/i386/conf config MYKERNEL cd ../../compile/MYKERNEL ln -s /sys @ rm machine ln -s @/i386/include machine make depend make
|
#
c87801fe |
|
06-Aug-1994 |
David Greenman <dg@FreeBSD.org> |
Fixed various prototype problems with the pmap functions and the subsequent problems that fixing them caused.
|
#
26f9a767 |
|
25-May-1994 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
The big 4.4BSD Lite to FreeBSD 2.0.0 (Development) patch. Reviewed by: Rodney W. Grimes Submitted by: John Dyson and David Greenman
|
#
7f8cb368 |
|
14-Jan-1994 |
David Greenman <dg@FreeBSD.org> |
"New" VM system from John Dyson & myself. For a run-down of the major changes, see the log of any effected file in the sys/vm directory (swap_pager.c for instance).
|
#
c8a13ecd |
|
03-Jan-1994 |
David Greenman <dg@FreeBSD.org> |
Convert syscall to trapframe. Based on work done by John Brezak.
|
#
aaf08d94 |
|
18-Dec-1993 |
Garrett Wollman <wollman@FreeBSD.org> |
Make everything compile with -Wtraditional. Make it easier to distribute a binary link-kit. Make all non-optional options (pagers, procfs) standard, and update LINT to reflect new symtab requirements. NB: -Wtraditional will henceforth be forgotten. This editing pass was primarily intended to detect any constructions where the old code might have been relying on traditional C semantics or syntax. These were all fixed, and the result of fixing some of them means that -Wall is now a realistic possibility within a few weeks.
|
#
47cacd38 |
|
16-Oct-1993 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
Removed all patch kit headers, sccsid and rcsid strings, put $Id$ in, some minor cleanup. Added $Id$ to files that did not have any version info, etc
|
#
5b81b6b3 |
|
12-Jun-1993 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
Initial import, 0.1 + pk 0.2.4-B1
|