Open Design Computer Project

オリジナルCPUから作る本格的自作コンピューター

ユーザ用ツール

サイト用ツール


software:compiler

Compiler (gcc)

GNU Compiler Collection (gcc) を mist32 アーキテクチャ向けに移植しました。

普通のアーキテクチャと同じように gcc をつかって、C 言語のクロスコンパイルが出来ます。

Code Repository

Porting gcc

gcc のターゲットの移植については、詳細は以下をご覧ください。

make

C 以外の言語は全くテストしてないので、動くかもしれないけど、動かないと思います。

Newlib (Standard Library) と一緒に build する場合には、–with-newlib を付けて、newlib と libgloss のシンボリックリンクを置く必要があります。

$ mkdir build
$ cd build
$ ../configure --target=mist32-elf --enable-languages=c --prefix=/usr/local --disable-shared --disable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-nls
$ make && sudo make install

使い方

Newlib を利用して、標準ライブラリ付きのバイナリを作成する手順を説明します。

Newlib を使えば、printf や malloc などの、stdio や stdlib の関数の一部が利用できます。

$ mist32-elf-gcc -Tmist32-elf-common.ld hello.c 
$ mist32-elf-readelf -h a.out
ELF ヘッダ:
  マジック:  7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00 
  クラス:                            ELF32
  データ:                            2 の補数、ビッグエンディアン
  バージョン:                        1 (current)
  OS/ABI:                            UNIX - System V
  ABI バージョン:                    0
  型:                                EXEC (実行可能ファイル)
  マシン:                            Open Architecture mist32
  バージョン:                        0x1
  エントリポイントアドレス:          0x0
  プログラムの開始ヘッダ:            52 (バイト)
  セクションヘッダ始点:              185084 (バイト)
  フラグ:                            0x0
  このヘッダのサイズ:                52 (バイト)
  プログラムヘッダサイズ:            32 (バイト)
  プログラムヘッダ数:                1
  セクションヘッダ:                  40 (バイト)
  セクションヘッダサイズ:            23
  セクションヘッダ文字列表索引:      20
$ mist32-elf-gcc -v
Using built-in specs.
COLLECT_GCC=mist32-elf-gcc
COLLECT_LTO_WRAPPER=/home/hirotaka/usr/libexec/gcc/mist32-elf/5.1.0/lto-wrapper
Target: mist32-elf
Configured with: /home/hirotaka/src/gcc-mist32/configure --target=mist32-elf --enable-languages=c --prefix=/home/hirotaka/usr --with-newlib --disable-shared --disable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-nls
Thread model: single
gcc version 5.1.0 (GCC) 

コンパイラ出力サンプル

testsuite

$ make -k check-gcc-c RUNTESTFLAGS="--target_board mist32-sim"

                === gcc Summary ===

# of expected passes            83284
# of unexpected failures        146
# of unexpected successes       1
# of expected failures          98
# of unresolved testcases       65
# of unsupported tests          1803
/build/gcc-mist32/gcc/xgcc  version 5.1.0 (GCC) 

参考資料

software/compiler.txt · 最終更新: 2015/06/14 23:14 by hktechno