Index: Makefile
===================================================================
--- Makefile	(revision 9bf0f8628504116a06dee9485de04cbc1168b670)
+++ Makefile	(revision 6dc5ea7000bff3bcffba6e41b975f23c1ce646eb)
@@ -6,4 +6,5 @@
 CROSS_AS :=		$(CROSS_PRE)-as
 CROSS_AR :=		$(CROSS_PRE)-ar
+CROSS_OBJC :=	$(CROSS_PRE)-objcopy
 
 # -mshort sets the size of an int to 16 bits; important for interop with
@@ -12,6 +13,6 @@
 FLAGS :=		-Os -m68000 -Wall -Wextra
 
-FLAGS_COM :=	$(FLAGS) -mshort -std=c99 -ffreestanding -nostdinc \
-				-fno-strict-aliasing -fno-inline -fno-omit-frame-pointer \
+FLAGS_COM :=	$(FLAGS) -mshort -std=c99 -fleading-underscore -ffreestanding \
+				-nostdinc -fno-strict-aliasing -fno-inline -fno-omit-frame-pointer \
 				-Wpedantic -Wcast-align -Wcast-qual -Wconversion -Wsign-conversion \
 				-Wshadow -Wmissing-declarations -Wredundant-decls \
@@ -30,10 +31,9 @@
 PROLOG_CO :=	$(PROLOG_C:.c=.o)
 PROLOG_SO :=	$(PROLOG_S:.s=.o)
-
-PROLOG_SRC :=	$(PROLOG_C:%=prolog/%) $(PROLOG_S:%=prolog/%)
 PROLOG_OBJ :=	$(PROLOG_CO:%=build/%) $(PROLOG_SO:%=build/%)
 
 build/%.o:		prolog/%.c $(HEADERS) | build
 				$(CROSS_GCC) $(FLAGS_COM) -c -o $@ $<
+				$(CROSS_OBJC) --redefine-syms misc/rewrite.txt $@
 
 build/%.o:		prolog/%.s $(HEADERS) | build
@@ -49,10 +49,9 @@
 IOLIB_CO :=		$(IOLIB_C:.c=.o)
 IOLIB_SO :=		$(IOLIB_S:.s=.o)
-
-IOLIB_SRC :=	$(IOLIB_C:%=iolib/%) $(IOLIB_S:%=iolib/%)
 IOLIB_OBJ :=	$(IOLIB_CO:%=build/%) $(IOLIB_SO:%=build/%)
 
 build/%.o:		iolib/%.c $(HEADERS) | build
 				$(CROSS_GCC) $(FLAGS_COM) -c -o $@ $<
+				$(CROSS_OBJC) --redefine-syms misc/rewrite.txt $@
 
 build/%.o:		iolib/%.s $(HEADERS) | build
@@ -74,10 +73,9 @@
 LIBCIO_CO :=	$(LIBCIO_C:.c=.o)
 LIBCIO_SO :=	$(LIBCIO_S:.s=.o)
-
-LIBCIO_SRC :=	$(LIBCIO_C:%=libcio/%) $(LIBCIO_S:%=libcio/%)
 LIBCIO_OBJ :=	$(LIBCIO_CO:%=build/%) $(LIBCIO_SO:%=build/%)
 
 build/%.o:		libcio/%.c $(HEADERS) | build
 				$(CROSS_GCC) $(FLAGS_COM) -c -o $@ $<
+				$(CROSS_OBJC) --redefine-syms misc/rewrite.txt $@
 
 build/%.o:		libcio/%.s $(HEADERS) | build
@@ -95,10 +93,9 @@
 
 LIBSM_CO :=		$(LIBSM_C:.c=.o)
-
-LIBSM_SRC :=	$(LIBSM_C:%=libsm/%)
 LIBSM_OBJ :=	$(LIBSM_CO:%=build/%)
 
 build/%.o:		libsm/%.c $(HEADERS) | build
 				$(CROSS_GCC) $(FLAGS_COM) -c -o $@ $<
+				$(CROSS_OBJC) --redefine-syms misc/rewrite.txt $@
 
 libsm.a:		$(LIBSM_OBJ)
@@ -113,10 +110,9 @@
 LIB700_CO :=	$(LIB700_C:.c=.o)
 LIB700_SO :=	$(LIB700_S:.s=.o)
-
-LIB700_SRC :=	$(LIB700_C:%=lib700/%) $(LIB700_S:%=lib700/%)
 LIB700_OBJ :=	$(LIB700_CO:%=build/%) $(LIB700_SO:%=build/%)
 
 build/%.o:		lib700/%.c $(HEADERS) | build
 				$(CROSS_GCC) $(FLAGS_COM) -c -o $@ $<
+				$(CROSS_OBJC) --redefine-syms misc/rewrite.txt $@
 
 build/%.o:		lib700/%.s $(HEADERS) | build
@@ -137,10 +133,9 @@
 VLIB_CO :=		$(VLIB_C:.c=.o)
 VLIB_SO :=		$(VLIB_S:.s=.o)
-
-VLIB_SRC :=		$(VLIB_C:%=vlib/%) $(VLIB_S:%=vlib/%)
 VLIB_OBJ :=		$(VLIB_CO:%=build/%) $(VLIB_SO:%=build/%)
 
 build/%.o:		vlib/%.c $(HEADERS) | build
 				$(CROSS_GCC) $(FLAGS_COM) -c -o $@ $<
+				$(CROSS_OBJC) --redefine-syms misc/rewrite.txt $@
 
 build/%.o:		vlib/%.s $(HEADERS) | build
@@ -152,21 +147,27 @@
 
 ROM_C :=		booter.c romp.c
-ROM_S :=		bios.s lowram.s timeint.s
+ROM_S :=		bios.s timeint.s
 
 ROM_CO :=		$(ROM_C:.c=.o)
 ROM_SO :=		$(ROM_S:.s=.o)
-
-ROM_SRC :=		$(ROM_C:%=rom/%) $(ROM_S:%=rom/%)
 ROM_OBJ :=		$(ROM_CO:%=build/%) $(ROM_SO:%=build/%)
 
+LOWRAM_S :=		lowram.s
+
+LOWRAM_SO :=	$(LOWRAM_S:.s=.o)
+LOWRAM_OBJ :=	$(LOWRAM_SO:%=build/%)
+
 build/%.o:		rom/%.c $(HEADERS) | build
 				$(CROSS_GCC) $(FLAGS_COM) -c -o $@ $<
+				$(CROSS_OBJC) --redefine-syms misc/rewrite.txt $@
 
 build/%.o:		rom/%.s $(HEADERS) | build
 				$(CROSS_GCC) $(FLAGS_ASM) -c -o $@ $<
 
-rom.abs:		prolog.a iolib.a libcio.a libsm.a lib700.a vlib.a $(ROM_OBJ)
-				$(CROSS_GCC) $(FLAGS_LNK) -o rom.abs $(ROM_OBJ) \
-				prolog.a libcio.a vlib.a iolib.a libsm.a lib700.a
+rom.abs:		$(ROM_OBJ) \
+				prolog.a iolib.a libcio.a libsm.a lib700.a vlib.a
+				$(CROSS_GCC) $(FLAGS_LNK) -Wl,--script misc/rom.ld -o rom.abs \
+				$(ROM_OBJ) \
+				prolog.a libcio.a vlib.a iolib.a libsm.a lib700.a -lgcc
 
 RAM_C :=		addfpu.c adfield.c adselbx.c asgdsp.c asgvce.c barbadj.c chgsef.c \
@@ -194,17 +195,18 @@
 RAM_CO :=		$(RAM_C:.c=.o)
 RAM_SO :=		$(RAM_S:.s=.o)
-
-RAM_SRC :=		$(RAM_C:%=rom/%) $(RAM_S:%=rom/%)
 RAM_OBJ :=		$(RAM_CO:%=build/%) $(RAM_SO:%=build/%)
 
 build/%.o:		ram/%.c $(HEADERS) | build
 				$(CROSS_GCC) $(FLAGS_COM) -c -o $@ $<
+				$(CROSS_OBJC) --redefine-syms misc/rewrite.txt $@
 
 build/%.o:		ram/%.s $(HEADERS) | build
 				$(CROSS_GCC) $(FLAGS_ASM) -c -o $@ $<
 
-midas.abs:		prolog.a iolib.a libcio.a libsm.a lib700.a vlib.a $(RAM_OBJ)
-				$(CROSS_GCC) $(FLAGS_LNK) -o midas.abs $(RAM_OBJ) \
-				prolog.a libcio.a vlib.a iolib.a libsm.a lib700.a
+midas.abs:		$(LOWRAM_OBJ) prolog.a $(RAM_OBJ) \
+				iolib.a libcio.a libsm.a lib700.a vlib.a
+				$(CROSS_GCC) $(FLAGS_LNK) -Wl,--script misc/ram.ld -o midas.abs \
+				$(LOWRAM_OBJ) prolog.a $(RAM_OBJ) \
+				libcio.a vlib.a iolib.a libsm.a lib700.a -lgcc
 
 build:
