(toppers-users 4314) Re: TOPPERS/ASP1.8+TINET1.5.3でビルドできません

Hiroaki TAKADA hiro @ ertl.jp
2014年 12月 9日 (火) 16:49:01 JST


阿部先生,塩見様,皆様

JSP と ASPで,ENDIALマクロの構成を変更したのが原因のようです。

SIL_ENDIAN_BIG と SIL_ENDIAN_LITTLE の2つのマクロがありますが,
JSP では,「該当する方を 1 に,該当しない方を 0 に定義する」と
していたのを,ASP では,「該当する方のみを定義する」と変更して
います。TINET では,ASP においても,JSP と同様のマクロに定義し
なおしているわけですが,それが,ASP の方に悪さをしているという
ことです。

塩見様へ。

とりあえず,ASP側を修正して回避する方法をお知らせします。

kernel/kernel_def.csv の最初の2行を,以下の2行に入れ換えてみて
ください。

----------
SIL_ENDIAN_BIG,#defined(SIL_ENDIAN_BIG),,SIL_ENDIAN_BIG+0
SIL_ENDIAN_LITTLE,#defined(SIL_ENDIAN_LITTLE),,SIL_ENDIAN_LITTLE+0
----------

高田広章
名古屋大学

On 2014/12/09 8:41, 阿部 司 wrote:
> SCREENホールディングス 塩見様、高田先生、皆様
> 
> 苫小牧高専の阿部です。
> 
>> 開発環境がGCCの簡易パッケージを使用しておりますので、target/apsh4_gccの
>> target_sil.hになりますが、確実にSIL_ENDIAN_LITTLEになっています。
>>
>> エンディアン関係の問題とのサジェスチョンを頂いたので、TINETを含て全ソー
>> スのエンディアン関係の記述を調べてみました。その結果、tinet/net/net.hに
>> 以下のような記述がありました。
>>
>> ーーここからーー
>> /*
>>   *  バイトオーダ変換の定義
>>   */
>>
>> #ifdef TARGET_KERNEL_ASP
>>
>> #if defined(SIL_ENDIAN_BIG)
>>
>> #undef  SIL_ENDIAN_BIG
>> #define SIL_ENDIAN_LITTLE	0
>> #define SIL_ENDIAN_BIG		1
>> #define SIL_ENDIAN		SIL_ENDIAN_BIG
>>
>> #elif defined(SIL_ENDIAN_LITTLE)
>>
>> #undef  SIL_ENDIAN_LITTLE
>> #define SIL_ENDIAN_LITTLE	0
>> #define SIL_ENDIAN_BIG		1
>> #define SIL_ENDIAN		SIL_ENDIAN_LITTLE
>>
>> #endif	/* of #if defined(SIL_ENDIAN_BIG) */
>>
>> #endif	/* of #ifdef TARGET_KERNEL_ASP */
>> ーーここまでーー
>>
>> この記述だと、SIL_ENDIAN_LITTLEとSIL_ENDIAN_BIGが両方定義されることにな
>> るので問題だと思い、#elif defined(SIL_ENDIAN_LITTLE)側のSIL_ENDIAN_BIG
>> の定義をコメントアウトしてmake dependしたところ正常に終了しました。但
>> し、その後のmakeでエラーになりました。ソースを追いかけていないので不明
>> ですが、無理やり変更した影響ではと考えています。
>>
>> とりあえず、速報でした。もう少し、ソースを追いかけてみます。
>>
>> 以上、よろしくお願いいたします。
>>
> 
> バイトオーダーの問題でしたか。
> 昔からのトラブルで、ご迷惑をおかけして申し訳ありません。
> こちらでも調べてみます。
>