|
Namazu for hns による簡易全文検索 詳しくは 詳細指定/ヘルプを参照して下さい |
|||||||||||||||||||||||||||||||||||||||||||||||
2010年09月07日(火) 旧暦 [n年日記] [更新:"2010/09/09 13:23:12"]#1 [comp] 同じプログラムが 32bit/64bit OS で動作が違う
自分がかかわっている、C で書かれた、大きなプログラムがあって、
NetBSD/amd64 で動くのに NetBSD/i386 で動かない(らしい)。
本来 long int と書く必要があるところを int と書いているのかなぁ。 でも 64bit が必要な変数やデータ構造なんてないはずだけれど。 動かないと書いているけれど、殆ど動く。ある動作だけ変なのです。 また「らしい」と書いたけれど、全て自分の手元の話。どうもそうらしい、 という意味。問題の再現方法は分っています。 「gcc の warning を良く見る」というのもあるかな。 unsigned int と書くべきところを int としていると、そういう問題が起きることがある ? はい、何か分ったら、ここか、ここから分るところに書きます (9/20 日頃までには解決する必要があるのです)。 実は、多分つまらない理由だった気がします。for 文の終了条件が不充分で、 暴走していたのですが、 64bit だと、偶然止ってくれたというような ことかと思います。 --- src/bfd/reloc.c 23 Feb 2010 06:53:43 -0000 1.23 +++ src/bfd/reloc.c 8 Sep 2010 03:09:51 -0000 @@ -5201,10 +5201,11 @@ (unsigned int) reloc_count ); #endif + int count = reloc_count; if (reloc_count > 0) { arelent **parent; - for (parent = reloc_vector; *parent != NULL; parent++) + for (parent = reloc_vector; *parent != NULL && count-- > 1 ; parent++) { char *error_message = NULL; bfd_reloc_status_type r =でも実は cygwin (gcc-3.4.4) ではまだ動いていなくて gcc を 4 にすれば 良いのかなと思っています。(最新の cygwin でも 3.4.4.999 ?) gcc4 という選択肢があったけれど、それを見る前に自分で gcc-4.2.1 を ./configure だけで make。しかし動作がおかしいのは変らない。 ( Read More... (4) | つっこみ )
Comments related this article
|
最近の日記 2024年04月29日 ・dkim 2024年03月10日 ・停電 (瞬電) 2024年03月03日 ・the second try on bare-metal ・useradd 2024年02月29日 ・opendkim and senmail 2024年01月24日 ・chat/iam 0.0.8 | ||