[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:14534] Re: fail to port; ne



後藤といいます。

On Thu, 23 Aug 2001 16:55:35 +0900
Atsuhito Kohda <kohda@xxxxxxxxxxxxxxxxxxxx> wrote:

> PowerPC への port で ne が失敗します。
> 
> gcc `cat __OPT__` -c -o list.o list.c
> gcc `cat __OPT__` -c -o menu.o menu.c
> menu.c: In function `makev_proc':
> menu.c:104: incompatible types in assignment
> menu.c:111: incompatible types in assignment
> 
> i386 では build できるようですし potato 版は Sparc で
> build できてるのでこちらのミスかもわかりませんが該当個所
>
> 
> 	args=*(va_list *)vp;
> 
> 	p=va_arg(args,char *);
> 	if (p==NULL)
> 		strcpy(mip->str,"null"); else
> 		strcpy(mip->str,p);
> 
> 	*(va_list *)vp=args;
> 
> です。

どのバージョンについてなのかよくわからないですが、
    #BTSにつっこんだほうがいいと私も思います。こういう部分が
    #はっきりするし、解決するまでの課程が記録に残るので。
3+00pre16-2 では、以下のように変更すると、とりあえず一見正常に動作する
バイナリが出来ます。100%正しく動作するかはチェックしていません。

--- menu.c.orig
+++ menu.c
@@ -101,14 +101,14 @@
        va_list         args;
        char    *p;
 
-       args=*(va_list *)vp;
+       *args=*(*(va_list *)vp);
 
        p=va_arg(args,char *);
        if (p==NULL)
                strcpy(mip->str,"null"); else
                strcpy(mip->str,p);
 
-       *(va_list *)vp=args;
+       *(*(va_list *)vp)=*args;
 }
 
 
ただし、 この変更をすると今度はi386で動作しなくなると思います。
どうやら、va_listの実装がアーキテクチャによって異なる模様です。
/usr/include/glib-1.2/glib.h 内には、以下のようなマクロの定義が
ありました。(実は、上に示した変更はこの記述を参考にしています)。

/* Define G_VA_COPY() to do the right thing for copying va_list variables.
 * glibconfig.h may have already defined G_VA_COPY as va_copy or __va_copy.
 */
#if !defined (G_VA_COPY)
#  if defined (__GNUC__) && defined (__PPC__) && (defined (_CALL_SYSV) || defined (_WIN32))
#  define G_VA_COPY(ap1, ap2)     (*(ap1) = *(ap2))
#  elif defined (G_VA_COPY_AS_ARRAY)
#  define G_VA_COPY(ap1, ap2)     g_memmove ((ap1), (ap2), sizeof (va_list))
#  else /* va_list is a pointer */
#  define G_VA_COPY(ap1, ap2)     ((ap1) = (ap2))
#  endif /* va_list is a pointer */
#endif /* !G_VA_COPY */

この記述を参考にして#ifでくくればいいと思いますが、そうすると
autoconfに組み込みたくなるわけで、作者に連絡してしっかりと対応して
もらうべきだと思います(が、まだ何もしていません)。

-- 
後藤 直久  ngoto@xxxxxxxxxxxxxxxxxxxxxx
大阪大学 遺伝情報実験センター  ゲノム情報解析分野 (安永研究室) D1
         (理学研究科 生物科学専攻 D1)