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

[debian-devel:08952] Re: Failed packages to build for sparc-jp recently.



<14121.9642.468798.29929M@xxxxxxxxxxxxxxxxxxxxx>の記事において
ukai@debian.or.jpさんは書きました。

>> > : iotool.c:28: initializer element is not constant
>> > 
>> >   となって止まっているのですが、ここは
>> > 
>> > : FILE *Cha_stderr = stderr;
>> > 
>> >   となっています。sparcのlibcのstderrはconstantじゃないんでしょうか?
>> 
>> これは glibc2.1 問題だと思います。

  glibc2.1のFAQに記述がありました。

: 3.9.    I get compiler messages "Initializer element not constant" with
:         stdin/stdout/stderr. Why?
: 
: {RM,AJ} Constructs like:
: static FILE *InPtr = stdin;
: 
: lead to this message.  This is correct behaviour with glibc since stdin is
: not a constant expression.  Please note that a strict reading of ISO C does
: not allow above constructs.
: 
: One of the advantages of this is that you can assign to stdin, stdout, and
: stderr just like any other global variable (e.g. `stdout = my_stream;'),
: which can be very useful with custom streams that you can write with libio
: (but beware this is not necessarily portable).  The reason to implement it
: this way were versioning problems with the size of the FILE structure.
: 
: To fix those programs you've got to initialize the variable at run time.
: This can be done, e.g. in main, like:
: 
: static FILE *InPtr;
: int main(void)
: {
:   InPtr = stdin;
: }
: 
: or by constructors (beware this is gcc specific):
: 
: static FILE *InPtr;
: static void inPtr_construct (void) __attribute__((constructor));
: static void inPtr_construct (void) { InPtr = stdin; }

# ISO Cに反しているとは知りませんでした。

>> なので fix しないと potato で compile できないのでは?

  了解しました。上流にも報告しておきます。

# ってもうchasen2.0b6が出てる... しかも辞書の形式が変わってる...
-- 
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx, knok@xxxxxxxxxxxxxxxx (private)
        nokubi@xxxxxxxxx (official)
        knok@xxxxxxxxxxxxx (Isoternet)