gdbstub/Makefile

44 lines
1.1 KiB
Makefile
Executable File

CFLAGS = -I../include -Wall -Wextra
LDFLAGS =
CURDIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
OUT := build
BIN = $(OUT)/
SHELL_HACK := $(shell mkdir -p $(OUT))
TEST_OBJ = $(OUT)/kernel.elf
TEST_DUMP = $(OUT)/kernel.dump
TEST_BIN = $(OUT)/kernel.bin
.PHONY: kernel clean
kernel: $(TEST_OBJ) $(TEST_BIN)
$(TEST_OBJ):
# riscv64-unknown-elf-gcc -march=rv32i -mabi=ilp32 -Wl,-Ttext=0x0 -nostdlib -g -o $@ $<
# riscv64-unknown-elf-gcc -march=rv64gc -mabi=lp64 -Wl,-Ttext=0x0 -nostdlib -g -o $@ $<
riscv64-unknown-elf-gcc -g -march=rv64gc -mabi=lp64d -nostdlib -T link.ld -o $@ kernel.c start.s
riscv64-unknown-elf-objdump -d -S $@ > $(TEST_DUMP)
$(TEST_BIN): $(TEST_OBJ)
riscv64-unknown-elf-objcopy -O binary $< $@
clean:
$(RM) -r $(BIN)
qemu: kernel
qemu-system-riscv64 -machine virt -smp 1 -bios none -kernel $(TEST_OBJ) -nographic -s -S
# gdb: kernel
# gdb-multiarch \
# -ex "file $(TEST_OBJ)" \
# -ex "set debug remote 1" \
# -ex "target remote localhost:1234" \
gdb: kernel
gdb-multiarch $(TEST_OBJ) -ex "target remote localhost:1234"