Отправляет email-рассылки с помощью сервиса Sendsay

Ошибка при компиляции glibc-2.3.2

Здрасте Всем.

У меня такая проблема - при компиляции glibc версии 2.3.2 (последняя
версия) выползает такая ошибка:

.... тут разные сообщения компилятора ....
sscanf.c:31: warning: conflicting types for built-in function `sscanf'
sscanf.c: In function `sscanf':
sscanf.c:37: error: `va_start' used in function with fixed args
../stdio-common/_itoa.h: At top level:
../stdio-common/_itoa.h:40: warning: inlining failed in call to `_itoa_word'
../stdio-common/_itoa.h:76: warning: called from here
make[2]: *** [/dist/glibc/glibc-build/stdio-common/sscanf.o] Ошибка 1
make[1]: *** [stdio-common/subdir_lib] Ошибка 2
make: *** [all] Ошибка 2
..........................................

Полез в модуль sscanf.c. Там все нормально. Все переменные и объявления
соответствуют (man sscanf && man va_start). Вот кусок из sscanf.c:

..........................................
int
sscanf (s, format)
const char *s; <- строка ╧31
const char *format;
{
va_list arg;
int done;

va_start (arg, format); <- строка ╧37
done = __vsscanf (s, format, arg);
va_end (arg);

return done;
}
..........................................

Ядро 2.4.22. GCC 3.3.2.

Текущая glibc - 2.2.3 (из слака 8.0).

Помогите, пожалуйста разобраться с этой проблемой.

С уважением
Демиров Р.Р.
ost@e*****.com

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.discuss&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   d2r Wed, 29 Oct 2003 11:29:10 +0200 (#13137)

 

Ответы:

В сообщении от 29 Октябрь 2003 14:29 d2r написал(a):

GCC 3.3.2. ы?

Ответить   Stanislav Karchebny Wed, 29 Oct 2003 14:43:41 +0500 (#13144)

 

Hello Stanislav,

Wednesday, October 29, 2003, 11:43:41 AM, you wrote:

Простите, что-то не совсем понял Вашего ответа.
Можно немного поподробнее и на русском языке

Спасибо.

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.discuss&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   d2r Wed, 29 Oct 2003 11:58:02 +0200 (#13178)

 

В сообщении от 29 Октябрь 2003 14:58 d2r написал(a):

ругается ли gcc при сборке версией скажем 3.2.3?
3.3.2 - свежая версия и весьма вероятно что может поглючивать.

Ответить   Stanislav Karchebny Wed, 29 Oct 2003 15:15:29 +0500 (#13199)

 

On Wednesday 29 October 2003 12:29, d2r <d2r
<ost@e*****.com>> wrote:

(...)

Это было нормально для K&R сомпилятора, а для gcc совсем не
нормально. Должно быть:

int sscanf (const char *s, const char *format, ...)

во всяком случае многоточие тут обязательно

И в man-е это недвусмысленно написано.

--
Serge B. Khvatov Phone:+7(812)1133186 //
+7(812)1106579 //echno
mailto:xbat***@t*****.ru // St-Petersburg

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.discuss&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "Serguei B. Khvatov" Wed, 29 Oct 2003 12:49:48 +0300 (#13155)

 

On Wed Oct 29, 2003 at 11:29:10AM +0200, d2r wrote:

а, по моему, нет.

Интересно где это они соотвествуют? man sscanf говорит:

int sscanf(const char *str, const char *format, ...);

а в коде

int sscanf(const char *s, const char *format);

объявление должно быть
int sscanf (s, format, ...)
const char *s;
const char *format;
или
int sscanf(const char *s, const char *format, ...)

А патч будет выглядеть следующим образом

stdio-common/sscanf.c.~1.8.~ 2003-01-16 11:25:20.000000000
+0100
+++ stdio-common/sscanf.c 2003-03-05 12:07:34.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,95,96,98,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991,95,96,98,2002, 2003 Free Software Foundation,
Inc.
This file is part of the GNU C Library.

The GNU C Library is free software; you can redistribute it
and/or
@@ -27,9 +27,7 @@
/* Read formatted input from S, according to the format string
* FORMAT. */
/* VARARGS2 */
int
-sscanf (s, format)
- const char *s;
- const char *format;
+sscanf (const char *s, const char *format, ...)
{
va_list arg;
int done;

ps: можно найти во вложении (если сервер не обрубит)
pss: компилятор-то, наверное, gcc-3.3.x?

:ChiP:.

:wq

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.discuss&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   ChiP Wed, 29 Oct 2003 13:00:08 +0300 (#13183)

 

В сообщении от 29 Октябрь 2003 15:00 ChiP написал(a):

Точно. Именно так.

Ответить   Stanislav Karchebny Wed, 29 Oct 2003 15:25:24 +0500 (#13207)

 

Hello ChiP,

Wednesday, October 29, 2003, 12:00:08 PM, you wrote:

Меня это вначале тоже смутило, но я решил, что в мане - способ вызова
функции.

Кстати, далее в коде вроде идет разбор полученных параметров через va_start.

Точно, самый свежий (пробовал и с 3.3.1 - та же беда).
А вот со старым gcc 2.95.3 glibc собираться не захотела. Сказала, версия
компилятора старая.

За патч огромное спасибо, но мне проще ручками.

Короче, я так понял, проблема в отсутствии ",..." в строке параметров
функции. Сейчас попробую.

Интересен другой вопрос, а как же у других? Неужели никто не столкнулся с
такой проблемой ранее? А если столкнулись, то почему нет патча на сайте
GNU? Что, сами программеры из FSF не тестировали свое творение. Я проверял
sscanf.c в версии 2.2.5 - точно такой-же файл.

В общем, решение ясно, всем огромное спасибо!

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.discuss&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   d2r Wed, 29 Oct 2003 13:29:50 +0200 (#13239)

 

В сообщении от 29 Октябрь 2003 16:29 d2r написал(a):

И именно на него gcc и ругается, т.к. собсно ellipsis параметров то и нету.

Лежит файл в дистрибе glibc точно такой-же, но например я щаз проверил у
Gentoo скачан под это дело патчик который зовется gcc33-sscanf.patch.
Вероятно у более старых gcc такой проблемы нет из-за более loose проверки
некоторых условий =)

Ответить   Stanislav Karchebny Wed, 29 Oct 2003 17:38:48 +0500 (#13303)