newlib-1.9.x をベースにしてppcsim用のCライブラリとして構築したものです。
2001.3.29時点では公開されていない ppcsim Ver0.50に対応するライブラリの
構築方法です。
まず、最寄のサイトからnewlib-1.9.xのソースファイルをダウンロードしてください。
あまりミラーサイトが存在していない様なので、私は
RedHatサイトの
CVSダウンロードを利用しています。
そして、「ppcsim用差分」を
ダウンロードします。
次に以下の手順でクロスコンパイルを行います。
ずっこけた場合は、原因を調べて適当に対処してください(^^;
includeファイルは newlib/libc/include 以下のファイルをそのまま使用します。
gccの-Iオプションで指定するようにしてください。
以下はMakefileの例です。
SHELL=/bin/sh LIBPATH = ../../lib INCPATH = ../../include BINPATH = ../../../../ppcgcc CC = $(BINPATH)/gcc -B$(BINPATH)/ OPT = -O2 -mcpu=750 #-v -dr CFLAGS= $(OPT) -I. -I$(INCPATH) LD = $(BINPATH)/ld -V -Qy -dn -Bstatic -Ttext 0x10000 \ -Tdata 0x20000 -Tbss 0x30000 LDFLAGS = -Map map.log foo.s: foo.c foo.o: foo.c foo: foo.c %.s:%.c $(CC) -S $(CFLAGS) $< %.o:%.c $(CC) -c $(CFLAGS) $< %:%.c $(CC) -c $(CFLAGS) $< $(LD) $(LDFLAGS) $(LIBPATH)/crt0.o \ $*.o -L$(LIBPATH) -lc -lm \ $(LIBPATH)/libgcc.a -o $@ %.bin:% bcut -s 0x10000 $< > $*.bin $(BINPATH)/objdump --source $< > $*.dis
前のppclib2ではスタートアップをstart.oとしていましたが、crt0.oをmakeする
様に変更しました。ただ、syscallライブラリをsys/powerxの下に入れるのは
作法に外れていると思いますが。
システムコールは libc/include/powerx/syscalls.hで定義されている通りです。
glibcのsysdepから拾ってきたLinuxシステムコールから、必要最低限と思われる
ものと、コンパイルテスト中にどうしても必要となったものを追加しています。
2001/03/29 newlib-1.9.xパッチとして書いた