トップ «前の日記(2004年08月15日) 最新 次の日記(2004年08月20日)» 編集
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2004年08月17日

gcc

昔のCコンパイラはC言語ソースのアセンブラ出力に、アンダースコア _ を前につけていたが、最近のgccは付けない。
void sub(){
}
int test(){
        sub();
}
を普通にコンパイルすると
00000000 <sub>:
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   5d                      pop    %ebp
   4:   c3                      ret
   5:   8d 76 00                lea    0x0(%esi),%esi
00000008 <test>:
   8:   55                      push   %ebp
   9:   89 e5                   mov    %esp,%ebp
   b:   83 ec 08                sub    $0x8,%esp
   e:   c9                      leave
   f:   e9 fc ff ff ff          jmp    10 <test+0x8>
オプション -fleading-underscore をつけるとアンダースコア付きになる。古いアセンブラーソースとのリンクをするときに使う。-fleading-underscore をつけてコンパイルした結果
00000000 <_sub>:
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   5d                      pop    %ebp
   4:   c3                      ret
   5:   8d 76 00                lea    0x0(%esi),%esi
00000008 <_test>:
   8:   55                      push   %ebp
   9:   89 e5                   mov    %esp,%ebp
   b:   83 ec 08                sub    $0x8,%esp
   e:   c9                      leave
   f:   e9 fc ff ff ff          jmp    10 <_test+0x8>

CAT709

toppers jsp のコンパイルと動作確認ができた。やっと1年前に戻れた。
結論からすると、sh3-linux-gccは使えなかった。上記のように--taget=sh3-linuxでconfigureされているgccはアセンブラ出力のときにシンボル名に_アンダースコアはつけない。ところがjspは古いコンパイラを意識してアセンブラシンボルに_が付いている。だからといって sh3-linux-gcc -fleading-underscore でコンパイルすると今度はlibgccの数値演算ライブラリとリンクでできなくなる。結局libgccを再構築するくらいならnewlib仕様にしたsh-hitachi-gccを作ったほうが正しいと思ったわけで、gcc-3.0.4は同じながらconfigureを変えて --terget=sh-hitachi-elf でツールチェインを作り直した。
http://www.ebimemo.net/wiki/index.php?TOPPERS
とりあえず 自分用のえびwikiに置いたけど、見やすくしたらcat709wikiに引越しさせるつもり。