1 %
2 % diff Makefile Makefile.ori
3 17c17
4 < OBJS += serial.o
5 ---
6 > OBJS += lib.o serial.o
7
8 % diff ld.scr ld.scr.ori
9 7d6
10 < romall(rx) : o = 0x000000, l = 0x080000
11 18,34d16
12 < /*
13 < * Define symbols for library functions from lib.c
14 < */
15 < _memset = 0x00045e;
16 < _memcpy = 0x000478;
17 < _memcmp = 0x0004a0;
18 < _strlen = 0x0004da;
19 < _strcpy = 0x0004f4;
20 < _strcmp = 0x000512;
21 < _strncmp = 0x000544;
22 < _putc = 0x000586;
23 < _getc = 0x0005b4;
24 < _puts = 0x0005e4;
25 < _gets = 0x000608;
26 < _putxval = 0x000642;
27 < /* END library symbols definitions. */
28 <
29
30 % cd ../bootload
31 % readelf -s kzload.elf | grep strcpy
32 115: 000004f4 30 NOTYPE GLOBAL DEFAULT 2 _strcpy
33 %
os/Makefile から、lib.o を削除して、lib.o が、kozos にリンクされないようにしました。
ld.scr に、memset などのシンボルを定義しました。値は、kozload に定義されている値を使いました。(例えば strcpy の値は上の31行目のように readelf で調べます。環境によって、値は異なると思います。)
PS.
熱血ペン」も読もうと思います。