|
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年12月25日 ・pbulk 11.99.3 (emacs30) 2025年11月22日 ・crash dump 2025年10月25日 ・recover from disk error 2025年10月23日 ・dd does not duplicate Windows 11 boot disk ? 2025年10月13日 ・missing package | ||