|
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
|
最近の日記 2025年06月13日 ・Let's Note CF-SV8 ・ 2025年02月13日 ・dvipdfmx ICC profile format spec. version 4.3.0 2025年01月29日 ・ham/wsjtx 2025年01月27日 ・wip/wsjtx 5.4.2 2025年01月25日 ・ham/wsjtx | ||