Skip to content
Snippets Groups Projects
Commit aaf63e62 authored by Frans Kaashoek's avatar Frans Kaashoek
Browse files
parents ab777a9a 2c536bff
No related branches found
No related tags found
No related merge requests found
set $lastcs = -1
# This fails on Darwin because the default gdb has no ELF support
# echo + symbol-file obj/kern/kernel\n
# symbol-file obj/kern/kernel
define hook-stop
# There doesn't seem to be a good way to detect if we're in 16- or
# 32-bit mode, but in 32-bit mode we always run with CS == 8 in the
......@@ -26,3 +22,6 @@ end
echo + target remote localhost:1234\n
target remote localhost:1234
echo + symbol-file kernel\n
symbol-file kernel
......@@ -39,7 +39,7 @@ OBJCOPY = $(TOOLPREFIX)objcopy
OBJDUMP = $(TOOLPREFIX)objdump
CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32
CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 && echo -fno-stack-protector)
ASFLAGS = -m32
ASFLAGS = -m32 -gdwarf-2
# FreeBSD ld wants ``elf_i386_fbsd''
LDFLAGS += -m $(shell $(LD) -V | grep elf_i386 2>/dev/null)
......@@ -143,9 +143,9 @@ GDBPORT = $(shell expr `id -u` % 5000 + 25000)
QEMUOPTS = -smp 2 -hdb fs.img xv6.img
qemu: fs.img xv6.img
qemu -parallel mon:stdio $(QEMUOPTS)
qemu -serial mon:stdio $(QEMUOPTS)
qemutty: fs.img xv6.img
qemu-nox: fs.img xv6.img
qemu -nographic $(QEMUOPTS)
.gdbinit: .gdbinit.tmpl
......@@ -153,7 +153,11 @@ qemutty: fs.img xv6.img
qemu-gdb: fs.img xv6.img .gdbinit
@echo "*** Now run 'gdb'." 1>&2
qemu -parallel mon:stdio $(QEMUOPTS) -s -S -p $(GDBPORT)
qemu -serial mon:stdio $(QEMUOPTS) -s -S -p $(GDBPORT)
qemu-gdb-nox: fs.img xv6.img .gdbinit
@echo "*** Now run 'gdb'." 1>&2
qemu -nographic $(QEMUOPTS) -s -S -p $(GDBPORT)
# CUT HERE
# prepare dist for students
......
......@@ -163,7 +163,12 @@ consputc(int c)
;
}
uartputc(c);
if (c == BACKSPACE) {
uartputc('\b');
uartputc(' ');
uartputc('\b');
} else
uartputc(c);
cgaputc(c);
}
......@@ -198,6 +203,7 @@ consoleintr(int (*getc)(void))
}
break;
case C('H'): // Backspace
case '\x7f':
if(input.e != input.w){
input.e--;
consputc(BACKSPACE);
......@@ -205,6 +211,9 @@ consoleintr(int (*getc)(void))
break;
default:
if(c != 0 && input.e-input.r < INPUT_BUF){
// The serial port produces 0x13, not 0x10
if(c == '\r')
c = '\n';
input.buf[input.e++ % INPUT_BUF] = c;
consputc(c);
if(c == '\n' || c == C('D') || input.e == input.r+INPUT_BUF){
......
......@@ -44,6 +44,13 @@ memmove(void *dst, const void *src, uint n)
return dst;
}
// memcpy exists to placate GCC. Use memmove.
void*
memcpy(void *dst, const void *src, uint n)
{
return memmove(dst, src, n);
}
int
strncmp(const char *p, const char *q, uint n)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment