GCC への CbC コンパイル機能の実装について BUILD方法 (作業ディレクトリとは別ディレクトリで) $ cd ../ $ mkdir build-test $ cd build-test $ CFLAGS=-O0 ../GCC/configure --disable-nls --disable-bootstrap \ --enable-languages=c --prefix=$PWD/INSTALL-DIR \ --enable-checking=tree,rtl,assert $ make $ make install installまでしないと環境によってはincludeに問題が出る場合がある 実際に使用する場合はconfigureには何もオプションはつけないでいい CFLAGSには "-O0 -gdwarf-2 -g3"をつけると gdbでのmacro表示できる $ CFLAGS="-O0 -gdwarf-2 -g3" ../GCC/configure --disable-nls --disable-bootstrap \ --enable-languages=c --prefix=$PWD/INSTALL-DIR \ --enable-checking=tree,rtl,assert CVS管理 GCC new release のインポート $ wget gcc-core-4.x.y.tar.gz $ tar xzvf gcc-core-4.x.y.tar.gz $ cd gcc-core-4.x.y.tar.gz $ cvs import -ko -m "comment" CbC_project/GCC FSF_GCC REL_4_x_y これでimportされる。 現在のローカルでの修正とのマージ なにもないディレクトリにて $ cvs checkout -jREL_4_._. -j REL_4_x_y CbC_project/GCC もしくは既にある作業ディレクトリにて $ cvs update -jREL_4_._. -j REL_4_x_y 4_._.は前のバージョン conflictがでたら手作業で修正(運が良ければなにもしないでいい) コンパイルして動作確認後、 $ cvs commit これであたらしいreleaseにマージ完了 DEBUG手法 gccコマンドではなくcc1コマンドに対してgdbを起動 $ ls GCC/ build-test/ test/ $ cd test $ gdb ../build-test/gcc/cc1 treeの表示 (gdb) p browse_tree (exp) <== expはtree構造体 rtxの表示 (gdb) p debug_rtx (exp) <== expはrtx構造体 browse_treeはtree, debug_rtxはrtxをconfigureの --enable-checkingで指定している必要がある ソースコードを読むために ディレクトリ内でbuild $ cd CbC_project/GCC $ cvs release (念のため) $ CFLAGS='-O0 -gdwarf-2 -g3' ../GCC/configure --disable-nls \ > --disable-bootstrap --enable-languages=c --prefix=$PWD/INSTALL-DIR \ > --enable-checking=tree,rtl,assert $ make $ gtags GDBでmacroを表示 上記のように CFLAGS='-O0 -gdwarf-2 -g3' をつけてbuild (gdb) macro expand MACRO(a) (gdb) info macro MACRO (gdb) help macro for spu on PS3 $ ../CbConGCC/configure --prefix=/usr/local/spu-cbc > --build=powerpc --target=spu --program-prefix=spu- > --disable-bootstrap --enable-checking=tree,rtl,assert > --disable-nls --disable-shared --disable-threads > --enable-languages=c --with-system-zlib --with-newlib > --enable-version-specific-runtime-libs --disable-libssp > --with-gnu-as -with-as=/usr/bin/spu-as --with-gnu-ld > --with-ld=/usr/bin/spu-ld $ make install $ cd /usr/local/spu-cbc $ ln -s /usr/spu spu for ppu on PS3 binutils $ tar xzvf binutils-...tar.gz $ mkdir binutils_4ps3 $ cd binutils_4ps3 $ ../binutils../configure --prefix=$PWD/INSTALL_DIR > --target=ppc64-yellowdog-linux $ make install $ cd .. cross gcc $ mkdir gcc_4ps3 $ PATH=$PWD/../binutils_4ps3/INSTALL_DIR/bin:$PATH $ ../CbConGCC/configure --prefix=$PWD/INSTALL_DIR > --enable-language=c --target=ppc64-yellowdog-linux > --with-newlib --with-included-gettext --enable-shared > --enable-threads $ make