From 53e1a849b33cc53a86597b4843444ae2be6526aa Mon Sep 17 00:00:00 2001 From: mickey Date: Tue, 1 Apr 1997 04:52:44 +0000 Subject: [PATCH] debugger started. only one entry for now: chek_regs (use DUMP_REGS macro instead) dumps registers. must be called by lcall or so (to push %cs) --- sys/arch/i386/stand/libsa/Makefile | 15 ++-- sys/arch/i386/stand/libsa/debug.c | 64 ++++++++++++++++ sys/arch/i386/stand/libsa/debug.h | 39 ++++++++++ sys/arch/i386/stand/libsa/debug_aout.c | 43 +++++++++++ sys/arch/i386/stand/libsa/debug_i386.S | 101 +++++++++++++++++++++++++ sys/arch/i386/stand/libsa/debug_md.h | 51 +++++++++++++ 6 files changed, 307 insertions(+), 6 deletions(-) create mode 100644 sys/arch/i386/stand/libsa/debug.c create mode 100644 sys/arch/i386/stand/libsa/debug.h create mode 100644 sys/arch/i386/stand/libsa/debug_aout.c create mode 100644 sys/arch/i386/stand/libsa/debug_i386.S create mode 100644 sys/arch/i386/stand/libsa/debug_md.h diff --git a/sys/arch/i386/stand/libsa/Makefile b/sys/arch/i386/stand/libsa/Makefile index 23103a5ca61..87ff92e9159 100644 --- a/sys/arch/i386/stand/libsa/Makefile +++ b/sys/arch/i386/stand/libsa/Makefile @@ -1,19 +1,19 @@ -# $OpenBSD: Makefile,v 1.4 1997/03/31 23:06:25 mickey Exp $ +# $OpenBSD: Makefile,v 1.5 1997/04/01 04:52:44 mickey Exp $ LIB= sa +S=${.CURDIR}/../../../.. +DIR_SA= $S/lib/libsa +DIR_KERN=$S/lib/libkern + CFLAGS+=$(SACFLAGS) -D__INTERNAL_LIBSA_CREAD CFLAGS+=-DHEAP_START=$(HEAP_START) -DHEAP_LIMIT=$(HEAP_LIMIT) CFLAGS+=${DEBUGFLAGS} -I${.CURDIR} -I${.CURDIR}/.. -CFLAGS+=-I${.CURDIR}/../../../.. -I${.CURDIR}/../../../../lib/libsa +CFLAGS+=-I$(S)/lib/libsa -I$(S) AS+= -R #AS+= -Wa,-a -S=${.CURDIR}/../../../.. -DIR_SA= $S/lib/libsa -DIR_KERN=$S/lib/libkern - # stand routines SRCS= alloc.c exit.c exec.c getfile.c gets.c globals.c strcmp.c strlen.c \ strncmp.c memcmp.c memcpy.c memset.c printf.c strerror.c strncpy.c @@ -34,6 +34,9 @@ SRCS+= bootp.c bootparam.c rarp.c # boot filesystems SRCS+= ufs.c nfs.c cd9660.c +# debugger +SRCS+= debug.c debug_aout.c debug_i386.S + # i386 stuff SRCS+= asm.S bioscom.S biosdev.c biosdisk.S bioskbd.S biostime.S biosmem.S \ dev_i386.c gateA20.c memprobe.c real_prot.S unixsys.S exec_i386.S diff --git a/sys/arch/i386/stand/libsa/debug.c b/sys/arch/i386/stand/libsa/debug.c new file mode 100644 index 00000000000..9ecd8468190 --- /dev/null +++ b/sys/arch/i386/stand/libsa/debug.c @@ -0,0 +1,64 @@ +/* $OpenBSD: debug.c,v 1.1 1997/04/01 04:52:45 mickey Exp $ */ + +/* + * Copyright (c) 1997 Michael Shalayeff + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Michael Shalayeff. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +#include + +const char *reg_names[] = { REG_NAMES }; +const int nreg = NENTS(reg_names); +struct reg reg; +const u_int32_t *reg_values[] = { REG_VALUES(reg) }; + +int +debug_init() +{ + return 0; +} + +void +dump_regs() +{ + int i; + + for (i = 0; i < nreg; putchar((++i % 4)?' ':'\n')) + printf ("%s=0x%x", reg_names[i], *reg_values[i]); + if (i % 4) + putchar('\n'); +} + +void +dump_mem() +{ + +} diff --git a/sys/arch/i386/stand/libsa/debug.h b/sys/arch/i386/stand/libsa/debug.h new file mode 100644 index 00000000000..d14e17b4da3 --- /dev/null +++ b/sys/arch/i386/stand/libsa/debug.h @@ -0,0 +1,39 @@ +/* $OpenBSD: debug.h,v 1.1 1997/04/01 04:52:45 mickey Exp $ */ + +/* + * Copyright (c) 1997 Michael Shalayeff + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Michael Shalayeff. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +#include + +extern const char *reg_names[]; +extern const size_t nregs; diff --git a/sys/arch/i386/stand/libsa/debug_aout.c b/sys/arch/i386/stand/libsa/debug_aout.c new file mode 100644 index 00000000000..b410b7fac55 --- /dev/null +++ b/sys/arch/i386/stand/libsa/debug_aout.c @@ -0,0 +1,43 @@ +/* $OpenBSD: debug_aout.c,v 1.1 1997/04/01 04:52:46 mickey Exp $ */ + +/* + * Copyright (c) 1997 Michael Shalayeff + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Michael Shalayeff. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +#include +#include + +int +aout_init() +{ + return 0; +} diff --git a/sys/arch/i386/stand/libsa/debug_i386.S b/sys/arch/i386/stand/libsa/debug_i386.S new file mode 100644 index 00000000000..a111e24fa84 --- /dev/null +++ b/sys/arch/i386/stand/libsa/debug_i386.S @@ -0,0 +1,101 @@ +/* $OpenBSD: debug_i386.S,v 1.1 1997/04/01 04:52:46 mickey Exp $ */ + +/* + * Copyright (c) 1997 Michael Shalayeff + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Michael Shalayeff. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +#include +#define _LOCORE +#include +#include +#undef _LOCORE + + .data +#ifndef NO_IDTR + .align 3 + .globl _Idtr_real +_Idtr_real: + .word 1024 + .long 0 + + .align 3 + .globl _Idtr_prot +idt: + .long 0, 0 + +_Idtr_prot: + .word . - idt + .long idt +#endif + + .text + +ENTRY(check_regs) + pushal # 8 ones + pushl %ds + pushl %es + pushl %fs + pushl %gs + pushfl + movl $0x10, %eax + movl %ax, %ds + movl $_reg, %edi + cld + movl 0xc*4(%esp), %eax; stosl # %eax + movl 0xb*4(%esp), %eax; stosl # %ecx + movl 0xa*4(%esp), %eax; stosl # %edx + movl 0x9*4(%esp), %eax; stosl # %ebx + movl 0x8*4(%esp), %eax; stosl # %esp + movl 0x7*4(%esp), %eax; stosl # %ebp + movl 0x6*4(%esp), %eax; stosl # %esi + movl 0x5*4(%esp), %eax; stosl # %edi + movl 0xd*4(%esp), %eax; stosl # %eip + movl 0x0*4(%esp), %eax; stosl # %eflags + movl 0xe*4(%esp), %eax; stosl # %cs + movl %ss, %eax; stosl # %ss + movl 0x4*4(%esp), %eax; stosl # %ds + movl 0x3*4(%esp), %eax; stosl # %es + movl 0x2*4(%esp), %eax; stosl # %fs + movl 0x1*4(%esp), %eax; stosl # %gs + + call _C_LABEL(dump_regs) + + popfl + popl %gs + popl %fs + popl %es + popl %ds + popal + lret + + + diff --git a/sys/arch/i386/stand/libsa/debug_md.h b/sys/arch/i386/stand/libsa/debug_md.h new file mode 100644 index 00000000000..3d2cc9283b7 --- /dev/null +++ b/sys/arch/i386/stand/libsa/debug_md.h @@ -0,0 +1,51 @@ +/* $OpenBSD: debug_md.h,v 1.1 1997/04/01 04:52:47 mickey Exp $ */ + +/* + * Copyright (c) 1997 Michael Shalayeff + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Michael Shalayeff. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#define REG_NAMES \ + "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", \ + "eip", "eflags", "cs", "ss", "ds", "es", "fs", "gs" +#define REG_VALUES(r) \ + &(r).r_eax, &(r).r_ecx, &(r).r_edx, &(r).r_ebx, &(r).r_esp, \ + &(r).r_ebp, &(r).r_esi, &(r).r_edi, &(r).r_eip, &(r).r_eflags, \ + &(r).r_cs , &(r).r_ss, &(r).r_ds, &(r).r_es, &(r).r_fs, \ + &(r).r_gs + +#ifdef _LOCORE + .globl _reg +#define DUMP_REGS pushl %cs; call _check_regs +#else +#define DUMP_REGS __asm("pushl %cs; call _check_regs") +extern struct reg reg; +#endif + -- 2.20.1