debugger started.
authormickey <mickey@openbsd.org>
Tue, 1 Apr 1997 04:52:44 +0000 (04:52 +0000)
committermickey <mickey@openbsd.org>
Tue, 1 Apr 1997 04:52:44 +0000 (04:52 +0000)
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
sys/arch/i386/stand/libsa/debug.c [new file with mode: 0644]
sys/arch/i386/stand/libsa/debug.h [new file with mode: 0644]
sys/arch/i386/stand/libsa/debug_aout.c [new file with mode: 0644]
sys/arch/i386/stand/libsa/debug_i386.S [new file with mode: 0644]
sys/arch/i386/stand/libsa/debug_md.h [new file with mode: 0644]

index 23103a5..87ff92e 100644 (file)
@@ -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 (file)
index 0000000..9ecd846
--- /dev/null
@@ -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 <stand.h>
+#include <debug.h>
+
+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 (file)
index 0000000..d14e17b
--- /dev/null
@@ -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 <debug_md.h>
+#include <machine/reg.h>
+
+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 (file)
index 0000000..b410b7f
--- /dev/null
@@ -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 <stand.h>
+#include <debug.h>
+#include <sys/exec.h>
+
+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 (file)
index 0000000..a111e24
--- /dev/null
@@ -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 <machine/asm.h>
+#include <machine/psl.h>
+#define _LOCORE
+#include <machine/segments.h>
+#include <debug_md.h>
+#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 (file)
index 0000000..3d2cc92
--- /dev/null
@@ -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
+