宮前です。
h8-gccでstaticを使用したところ思ったとうり動作しません。
gcc version 2.95.3 20010315 です、カスタマイズしたのを入手しました。
static char ppp[]="12345678";
kkkを出力。
ppp[4]='Z';
kkkを出力。
ルネサスのHEW(3ヶ月限定)は、モニタープログラム配下でもROM化
(H8/3664)しても、 変更の前後の内容が確認できました。
GCCでは、モニター配下はOKですが,でROM化して実行すると変更
前後のデータが同じ 内容で表示されます。
GCC版をモニター配下で起動前後のメモリをダンプすると、kkkは下記の
.rodataに割り 当てられ、プログラムはここを変更していました。
ROMエリアなので、ROM化して変更され ないのはこの為のようです。
入手したサンプルのスタートアップでは、.dtorsから.data にコピーするように
なっていましたが、リンクマップを見ると.dtorsのサイズはゼロ、.dataは、kkkの
サイズのエリアが確保されていました。
HEWの方は、ramにコピーされた内容が変更されていました。(モニターで確認)
なにか、gccのコンパイラがまずいような気がしますが......。
アドバイスいただけるとありがたいです。
リンクスクリプトの一部です。
.text 0xF8AC : {
*(.text)
*(.strings)
*(.rodata)
_etext = . ;
} > rom
.tors : {
___ctors = . ;
*(.ctors)
___ctors_end = . ;
___dtors = . ;
*(.dtors)
___dtors_end = . ;
} > rom
.data : AT ( ADDR(.tors) + SIZEOF(.tors) ){
___data = . ;
*(.data)
*(.tiny)
_edata = .;
} > rom