Commit Graph

302 Commits

Author SHA1 Message Date
peter
887fa28cea Call some helper routines to be supplied by kern_linker.c in order to
get to all the symbol tables for all modules, not just the core kernel
symbol table.  Yes, DDB can see KLD module symbols with this, both by
lookup and in tracebacks.  No more references to _end from tracebacks
within an LKM. :-)
1998-10-09 23:34:09 +00:00
peter
692ee06246 At the moment, the alpha tentatively uses the ddb elf code rather than KLD,
because the alpha boot loader hasn't been converted yet, and because
it needs the full symbol tables with local symbols in order to make sense
of stack tracebacks.  KLD will implement this (using full sybmol table
rather than the globals only) shortly.
1998-10-09 23:32:03 +00:00
peter
0ece9ad76d We don't compile this on an elf kernel (and explicitly not on alpha in
case it's possible to compile in something like ECOFF)
The three db_xxx.c symbol interfaces are "standard" because config isn't
flexible enough without forcing the user to know about it.
1998-10-09 23:29:44 +00:00
dfr
988c605cbc Update to work with the new elf headers. 1998-08-17 08:06:31 +00:00
bde
bf1a9b4c37 Added macros __printflike() and __scanflike() to <sys/cdefs.h>.
Use them to `make gcc -Wformat' check formats for all printf-like
and scanf-like functions in /usr/src except for the err()/warn()
family.  err() isn't quite printf-like since its format arg can
legitimately be NULL.  syslog() isn't quite printf-like, but gcc
already accepts %m, even for plain printf() when it shouldn't.
1998-07-13 06:45:23 +00:00
bde
c9efed72bc Use not-so-new printf formats %r and/or %z instead of %n and/or %+x. 1998-07-08 10:53:58 +00:00
bde
eee2789d0f 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.
1998-07-08 09:11:43 +00:00
bde
e4073f6c6f Fixed db_printf format errors. 1998-07-08 06:43:57 +00:00
bde
51d1a0c22d Fixed db_printf format errors (except for ones using broken extensions
(nonstandard %n and '+' with %x), and ones not found by -Wformat on
386's (some db_expr_t's are still printed as ints).

I decided not to change the arg type for %n from [unsigned] int to
register_t, since about half of the uses of %n are to print plain
ints and casting to [unsigned] long for %n is no harder than for %x.
1998-07-08 06:27:22 +00:00
dfr
03c89f33a9 Remove the two single step breakpoints in the reverse order of setting to
ensure that single stepping a branch to the next instruction works.
1998-07-05 10:12:18 +00:00
dfr
520ba75a03 Add symtab parameter to X_db_symbol_values. 1998-07-05 10:11:20 +00:00
dfr
8b469e8ce9 Support 'g' format for printing 8 byte values. 1998-07-05 10:10:33 +00:00
dfr
54c71cf68a Forgot to mention:
Obtained from: NetBSD
1998-06-28 00:59:26 +00:00
dfr
f0112afdb9 Add DDB symbol support for ELF and KLD. The KLD support only supports global
symbols so its not too useful.  Changes to the kernel linker to allow it to
supply DDB with symbols will come later.
1998-06-28 00:57:28 +00:00
dfr
0cc7230297 Supply the symbol table as an argument to X_db_symbol_values (required for elf). 1998-06-28 00:55:02 +00:00
dfr
e1316cb0ae Use db_addr_t for the breakpoint address in db_set_single_step. 1998-06-28 00:52:50 +00:00
dfr
3231ba4ceb Make db_tok_number a long to allow typing 64bit numbers on alpha. 1998-06-27 15:40:56 +00:00
dfr
1cc4fc358b Use %+11ln for printing in r format to make it work for 64bit registers. 1998-06-27 15:39:51 +00:00
dfr
224577d6cf Add initial support for the FreeBSD/alpha kernel. This is very much a
work in progress and has never booted a real machine.  Initial
development and testing was done using SimOS (see
http://simos.stanford.edu for details).  On the SimOS simulator, this
port successfully reaches single-user mode and has been tested with
loads as high as one copy of /bin/ls :-).

Obtained from: partly from NetBSD/alpha
1998-06-10 10:57:29 +00:00
dfr
a7c0d1c5c9 Make DDB work again after I broke it :-(. 1998-06-08 08:43:20 +00:00
bde
2f5fcc4998 Backed out previous commit, which just consisted of a 1-byte editing
error.
1998-06-08 02:15:37 +00:00
bde
9ac818096c Fixed missing ifdefs and disordering in previous commit. 1998-06-08 02:12:19 +00:00
bde
128c893269 Fixed ifdef bogotification in previous commit. 1998-06-08 02:11:19 +00:00
dfr
1d5f38ac22 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.
1998-06-07 17:13:14 +00:00
phk
d3d65c6b2e Some cleanups related to timecounters and weird ifdefs in <sys/time.h>.
Clean up (or if antipodic: down) some of the msgbuf stuff.

Use an inline function rather than a macro for timecounter delta.

Maintain process "on-cpu" time as 64 bits of microseconds to avoid
needless second rollover overhead.

Avoid calling microuptime the second time in mi_switch() if we do
not pass through _idle in cpu_switch()

This should reduce our context-switch overhead a bit, in particular
on pre-P5 and SMP systems.

WARNING:  Programs which muck about with struct proc in userland
will have to be fixed.

Reviewed, but found imperfect by:       bde
1998-05-28 09:30:28 +00:00
phk
af59853834 Redo the previous commit in a more Bruce-friendly fashion.
Urged by:	bde
1998-05-19 18:42:09 +00:00
phk
e9c01f2e74 Add "show msgbuf" command 1998-05-19 11:02:24 +00:00
bde
e159c8ff97 Ensure that the linker sets for commands exist by putting a standard
command in each of them.  This removes the need for hard-to-configure
dummy instantiations of the sets.
1998-02-13 02:19:29 +00:00
eivind
d7a6ab2803 Staticize. 1998-02-09 06:11:36 +00:00
dyson
0f54a3a55f Some fixes from John Hood:
1) Fix the initialization of malloc structure that changed
		due to perf opt.
	2) Remove unneeded include.
	3) An initialization assert added to malloc.
Submitted by:	John Hood <cgull@smoke.marlboro.vt.us>
1997-12-05 05:36:58 +00:00
bde
7cd32186da Cleaned up revs.1.19-1.21: 1997-11-20 16:53:23 +00:00
msmith
67ba7220fd A better fix for the ddb command history buffer problem; use a static
buffer instead of trying to use malloc() in the input routine.
Submitted by:	john hood <cgull@smoke.marlboro.vt.us>
1997-11-09 06:30:29 +00:00
msmith
cfad384768 Don't try to do anything with the input history if MALLOC() for the buffer
failed.

This broke early debugging.
1997-11-07 02:34:50 +00:00
bde
3ef4a761cf Fixed scrolling. Newline at the "--More--" prompt scrolled 2 lines. 1997-10-09 00:20:00 +00:00
phk
159b51570f Print the filename, not the directory we compiled in. 1997-09-28 08:34:46 +00:00
joerg
2819c5d8c9 Minor hack to also allow for syscons's "interesting" arrow keys.
I'm using "#if __i386__ && __FreeBSD__" to check for a ``potentially
syscons-relevant environment''.  Hope that's ok...
1997-08-17 21:21:50 +00:00
bde
0f00fbdf2b Some staticized variables were still declared to be extern. 1997-06-30 23:54:50 +00:00
bde
276d810752 Don't depend on gcc's feature of interpreting `int foo(c) char c; ...'
as `int foo(char c) ...' if there is a bogus prototype `int foo(char c);'
in scope.
1997-06-30 23:49:17 +00:00
bde
302a2f962e Removed unused #includes. 1997-06-14 11:52:37 +00:00
joerg
66e9a34c96 Everyone's favorite, i think: make DDB understand the arrow keys for the
basic cursor movements.  Assumes ANSI/DEC tty, but you can still resort
to plain emacs ^p/^n etc anyway.
1997-04-12 17:35:02 +00:00
bde
5ba45e8d33 Fixed gratuitous ANSIisms. 1997-04-01 14:31:06 +00:00
bde
b0b8f0ac08 Added a setjmp() so that an initial pc that points to unmapped memory
isn't fatal.  Backed out rev.1.6, which handled special cases of this.
1997-03-28 12:39:43 +00:00
peter
94b6d72794 Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not
ready for it yet.
1997-02-22 09:48:43 +00:00
dyson
10f666af84 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>
1997-02-10 02:22:35 +00:00
bde
42a95278a7 Fixed printing of small offsets. E.g., -4(%ebp) is now printed
as -0x4(%ebp) instead of as _APTD+0xffc(%ebp), and if GUPROF is
defined, 8(%ebp) is now printed as 0x8(%ebp) instead of as
GMON_PROF_HIRES+0x4(%ebp).
1997-01-16 11:27:11 +00:00
jkh
808a36ef65 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.
1997-01-14 07:20:47 +00:00
bde
aeabb37c7e Fixed bogus linkage of one of the ddb linker sets. 1996-12-18 17:58:24 +00:00
julian
e1b78916a4 if there is no console, cngetc should act like getc and return -1
make callers aware of this in those cases where it can occur.
1996-10-30 21:40:25 +00:00
bde
e9c09cbb61 Attached vm ddb commands show map', show vmochk', `show object',
`show vmopag', `show page' and `show pageq'.  Moved all vm ddb stuff
to the ends of the vm source files.

Changed printf() to db_printf(), `indent' to db_indent, and iprintf()
to db_iprintf() in ddb commands.  Moved db_indent and db_iprintf()
from vm to ddb.

vm_page.c:
Don't use __pure.  Staticized.

db_output.c:
Reduced page width from 80 to 79 to inhibit double spacing for long
lines (there are still some problems if words are printed across
column 79).
1996-09-14 11:54:59 +00:00
bde
6145ccc494 Support statically attaching of ddb commands in non-ddb modules.
The details are hidden in the DB_COMMAND(cmd_name, func_name) and
DB_SHOW_COMMAND(cmd_name, func_name) macros.  DB_COMMAND() adds to
the top-level ddb command table and DB_SHOW_COMMAND adds to the
`show' subtable.  Most external commands will probably be `show'
commands with no side effects.  They should check their pointer
args more carefully than `show map' :-), or ddb should trap internal
faults better (like it does for memory accesses).

The vm ddb commands are temporarily unattached.

ddb.h:
Also declare `db_indent' and db_iprintf() which will replace vm's
`indent' and iprintf().
1996-09-14 09:13:15 +00:00
pst
8e672a5c30 Allow the user to switch into gdb mode from ddb 1996-08-27 19:46:28 +00:00
joerg
08f9d454e0 Finally implement a simple commandline history in DDB.
Emacs-style line editing has already been there (did anybody ever
notice this? :), so i `only' had to add ^P and ^N.  The approach is
fairly minimalistic, with the advantage of keeping the bloat as small
as 864 bytes of .text and 16 bytes of .bss, plus 10*120 bytes
malloc'ed history buffer at the first use.
1996-08-10 13:38:44 +00:00
peter
f420d94a19 A small bit of defensive programming in case the panic is during process
exit and cleanup.  the 'ps' command assumes that there are always 'nproc'
processes on the lists and will walk off the end without checking if not,
causing ddb to trap during the 'ps' command.
1996-06-15 07:08:02 +00:00
gpalmer
c79cc630ed Clean up various compiler warnings. Most (if not all) were benign
Reviewed by:	bde
1996-05-08 04:29:08 +00:00
hsu
7530dffb8e For Lite2: proc LIST changes.
Reviewed by:	david & bde
1996-03-11 05:55:56 +00:00
phk
5a1d479ab0 Remove some now unused printfoids. 1996-01-23 21:17:59 +00:00
bde
7e5df308af Fixed the one remaining %r. 1996-01-21 19:18:46 +00:00
phk
db9288fd24 One missed printf in the debugger.
Found By: bde
1996-01-21 16:30:43 +00:00
phk
c3e6222aa5 Get rid of two and a half printf in the kernel.
Add more features to the one remaining to handle the job:
	+	signed quantity.
	#	alternate format
	-	left padding
	*	read width as next arg.
	n	numeric in (argument specified) default radix.

Fix the DDB debugger to use these.
Use vprintf in debug routine in pcvt.

The warnings from gcc may become more wrong and  intolerable because
of this.

Warning:  I have not checked the entire source for unsupported or
changed constructs, but generally belive that there are only a few.

Suggested by: bde
1996-01-15 22:41:03 +00:00
bde
0cb993b9a2 Reduced and cleaned up #includes. 1995-12-10 19:08:32 +00:00
phk
a298a1843c Staticize and cleanup. 1995-12-10 13:32:43 +00:00
dg
c30f46c534 Untangled the vm.h include file spaghetti. 1995-12-07 12:48:31 +00:00
phk
6056f81916 Staticized and '#ifdef notused' stuff we don't use. 1995-11-29 10:25:50 +00:00
bde
ed3ff9247c Completed function declarations and/or added prototypes and/or #includes
to get the prototypes.

Changed some `int's to `boolean_t's.  boolean_t's are ints so they are
hard to distinguish from ints.

Converted function headers to old-style.  ddb is written in K&R1 C
except where we broke it.
1995-11-24 14:13:42 +00:00
bde
c14aa7ae48 Completed function declarations and/or added prototypes.
Removed `extern' from prototypes.
Sorted prototypes.
Uniformized idempotency ifdefs.
1995-11-24 13:53:05 +00:00
bde
c854b9d5a9 Change db_ps() to have the correct number and type of args for a ddb
command.
1995-08-27 02:40:39 +00:00
bde
aa76819f6f Change db_fncall() and db_panic() to have the correct number and type of
args for a ddb command.
1995-08-27 02:39:39 +00:00
dg
0ca978d61c Make db_ps tolerant of uninitialized struct proc fields. Improved 'more'
function to work like you'd expect. Other misc cleanup.
1995-08-20 05:25:11 +00:00
rgrimes
c86f0c7a71 Remove trailing whitespace. 1995-05-30 08:16:23 +00:00
dg
4c238c72a8 Print the address associated with an examine. Changed db_maxoff to
something more reasonable (64k). Suggested by Gordon Ross about a
year ago.
1995-05-22 13:07:12 +00:00
dg
27e6941140 Fixed the formatting breakage I added in the previous commit. 1995-04-04 01:35:33 +00:00
dg
14d50aee6d Fixed DDB's "ps" output formatting. 1995-03-28 23:29:52 +00:00
dg
9cd78521d8 Removed redundant newlines that were in some panic strings. 1995-03-19 14:29:26 +00:00
bde
289f11acb4 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.
1995-03-16 18:17:34 +00:00
joerg
a7aa212707 Make `p'' an explicit alias for `print'' instead of being an
implicit alias for ``panic'', since this seems to be more rational.
1995-03-05 22:56:21 +00:00
phk
df28946018 Added "panic" command to ddb, so we can do something sensible even if
we have no symbols.
1995-02-05 21:09:04 +00:00
bde
802677cea8 Load the kernel symbol table in the boot loader and not at compile time.
(Boot with the -D flag if you want symbols.)

Make it easier to extend `struct bootinfo' without losing either forwards
or backwards compatibility.

ddb_aout.c:
Get the symbol table from wherever the loader put it.
Nuke db_symtab[SYMTAB_SPACE].

boot.c:
Enable loading of symbols.  Align them on a page boundary.  Add printfs
about the symbol table sizes.
Pass the memory sizes to the kernel.
Fix initialization of `unit' (it got moved out of the loop).
Fix adding the bss size (it got moved inside an ifdef).
Initialize serial port when RB_SERIAL is toggled on.
Fix comments.
Clean up formatting of recently added code.

io.c:
Clean up formatting of recently added code.

netboot/main.c, machdep.c, wd.c:
Change names of bootinfo fields.

LINT:
Nuke SYMTAB_SPACE.
Fix comment about DODUMP.

Makefile.i386:
Nuke use of dbsym.
Exclude gcc symbols from kernel unless compiling with -g.
Remove unused macro.
Fix comments and formatting.

genassym.c:
Generate defines for some new bootinfo fields.  Change names of old ones.

locore.s:
Copy only the valid part of the `struct bootinfo' passed by the loader.
Reserve space for symbol table, if any.

machdep.c:
Check the memory sizes passed by the loader, if any.  Don't use them yet.

bootinfo.h:
Add a size field so that we can resolve some mismatches between the loader
bootinfo and the kernel boot info.  The version number is not so good for
this because of historical botches and because it's harder to maintain.
Add memory size and symbol table fields.  Change the names of everything.

Hacks to save a few bytes:

asm.S, boot.c, boot2.S:
Replace `ouraddr' by `(BOOTSEG << 4)'.

boot.c:
Don't statically initialize `loadflags' to 0.  Disable the "REDUNDANT"
code that skips the BIOS variables.  Eliminate `total'.  Combine some
more printfs.

boot.h, disk.c, io.c, table.c:
Move all statically initialzed data to table.c.

io.c:
Don't put the A20 gate bits in a variable.
1995-01-25 21:40:47 +00:00
bde
423f808042 Print "(null)" instead of crashing for null strings. Null names are
often generated for stack traces.  Now inspection of unmapped addresses
no longer panics the system.
1994-10-30 20:55:44 +00:00
phk
1f6d0ff1e2 Avoid ddb getting a panic if the code-segment isn't the usual one... 1994-10-02 19:36:30 +00:00
phk
ad1c6ca62b #include ddb.h not db_output.h 1994-09-28 19:16:24 +00:00
phk
2f56b9ec91 Added include of <machine/cons.h> so that cngetc() gets declared. 1994-09-27 20:35:55 +00:00
dg
0b0fbe4d94 Woops, wrong solution to the problem. Backed out previous fix to ddb.h, and
nuked the db_printf() declaration from db_output.h.
Reviewed by:
Submitted by:
Obtained from:
1994-09-27 12:15:56 +00:00
dg
ae77edd20e Nuked db_printf() prototype; it now clashes with the one in db_output.h. 1994-09-27 12:11:09 +00:00
phk
e3b14acab7 Makes gcc silent in sys/ddb. 1994-09-27 03:34:58 +00:00
bde
6e409adfcf 386bsd -> kernel in strings. 1994-09-05 14:04:56 +00:00
dg
991b08fc7a ddb ps function from 1.1.5. Moved into its own file and cleaned up a bit
by me.
1994-08-27 16:28:45 +00:00
dg
4d4250da00 1) Changed ddb into a option rather than a pseudo-device (use options DDB
in your kernel config now).
2) Added ps ddb function from 1.1.5. Cleaned it up a bit and moved into its
   own file.
3) Added \r handing in db_printf.
4) Added missing memory usage stats to statclock().
5) Added dummy function to pseudo_set so it will be emitted if there
   are no other pseudo declarations.
1994-08-27 16:14:39 +00:00
dg
c97639b923 1) cleaned up after Garrett - fixed more redundant declarations, changed
use of timeout_t -> timeout_func_t in aha1542 and aha1742 drivers.
2) fix a bug in the portalfs that was uncovered by better prototyping -
   specifically, the time must be converted from timeval to timespec
   before storing in va_atime.
3) fixed/added some miscellaneous prototypes
1994-08-20 03:49:02 +00:00
wollman
f9fc827448 Fix up some sloppy coding practices:
- Delete redundant declarations.
- Add -Wredundant-declarations to Makefile.i386 so they don't come back.
- Delete sloppy COMMON-style declarations of uninitialized data in
  header files.
- Add a few prototypes.
- Clean up warnings resulting from the above.

NB: ioconf.c will still generate a redundant-declaration warning, which
is unavoidable unless somebody volunteers to make `config' smarter.
1994-08-18 22:36:09 +00:00
wollman
07e1c7f69d 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
1994-08-13 03:50:34 +00:00
rgrimes
2469c867a1 The big 4.4BSD Lite to FreeBSD 2.0.0 (Development) patch.
Reviewed by:	Rodney W. Grimes
Submitted by:	John Dyson and David Greenman
1994-05-25 09:21:21 +00:00
guido
d19a3ef167 ps works inside ddb now. 1994-02-11 21:14:52 +00:00
dg
fff1da2aba "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).
1994-01-14 16:25:31 +00:00
dg
17916ffcbb Patches from John Brezak (necessary for the syscall->trapframe conversion
as well as add additional functionality):

Print symbolic args and line no's in stack traces.
1994-01-03 07:54:10 +00:00
wollman
71b67e5a56 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.
1993-12-19 00:55:01 +00:00
wollman
8e24073a9b Make the LINT kernel compile with -W -Wreturn-type -Wcomment -Werror, and
add same (sans -Werror) to Makefile for future compilations.
1993-11-25 01:38:01 +00:00
wollman
f76e5f0160 Make all headers idempotent. All incorrect common data moved out of header
files and into a related source file.
1993-11-07 17:39:25 +00:00
rgrimes
36dd77db35 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
1993-10-16 16:47:35 +00:00
rgrimes
39522705b5 >From: rich@id.slip.bcm.tmc.edu.cdrom.com (Rich Murphey)
I'd like to be able to say:

options         "SYMTAB_SPACE=78000"    # Kernel debugger symbol table size

If this seems a reasonable interim solution for freebsd, here's the
patch.. Rich
1993-09-12 21:56:50 +00:00
rgrimes
cd0e0e6cee Moved db_end_line after db_printf to eliminate forward reference and
shut up the compiler about prototype mismatch.
1993-09-09 23:03:24 +00:00
dg
ed0c248040 * Applied fixes from Bruce Evans to fix COW bugs, >1MB kernel loading,
profiling, and various protection checks that cause security holes
  and system crashes.
* Changed min/max/bcmp/ffs/strlen to be static inline functions
  - included from cpufunc.h in via systm.h. This change
  improves performance in many parts of the kernel - up to 5% in the
  networking layer alone. Note that this requires systm.h to be included
  in any file that uses these functions otherwise it won't be able to
  find them during the load.
* Fixed incorrect call to splx() in if_is.c
* Fixed bogus variable assignment to splx() in if_ed.c
1993-07-27 10:52:31 +00:00
rgrimes
25062ba061 Initial import, 0.1 + pk 0.2.4-B1 1993-06-12 14:58:17 +00:00