ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: Inet-Admins
Inet-Admins mailing list archive (inet-admins@info.east.ru)

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

Re: [inet-admins] CompiIing IPFilter 3.2.10 on Solaris 7 x86 with gcc 2.8.1



-----Original Message-----
From: -= ArkanoiD =- <ark@mpak.convey.ru>
To: inet-admins@info.east.ru <inet-admins@info.east.ru>
Date: 28 января 1999 г. 16:19
Subject: Re: [inet-admins] CompiIing IPFilter 3.2.10 on Solaris 7 x86 with
gcc 2.8.1

>
>Гмм.. а чем продиктован столь своеобразный выбор платформы?
>
Историческими причинами.

-----Original Message-----
From: Dmitry E. Kiselyov <dima@gssmp.sci-nnov.ru>
To: inet-admins@info.east.ru <inet-admins@info.east.ru>
Date: 28 января 1999 г. 18:15
Subject: Re: [inet-admins] CompiIing IPFilter 3.2.10 on Solaris 7 x86 with
gcc 2.8.1
>
> А как ты поборол первый момент?
>Как-то раз я попадал примерно в такую же ситуацию. Дело было в том, что
>в исходнике вместо stdarg.h подключался varargs.h или даже оба сразу.
>Использование только stdarg.h решило проблему.


Дело в том, что там в ipt.h описано:
#include <fcntl.h>
#ifdef  __STDC__
#include <stdarg.h>
#else
#include <varargs.h>
#endif
Конфликтовать в этом месте они не могут.

Собственно одна из причин пряталась в файле:
/usr/include/promif.h
в строчке #include <sys/varargs.h>
Заменено на
#ifdef __STDC__
#include <stdarg.h>
#else
#include <varargs.h>
/*
в этом месте я не уверен. Может быть надо использовать
системный include - <sys/varargs.h>
*/
#endif

После этого компиляция благополучно дошла до точки
gcc -g -I../.. -DSOLARIS2=7 -c ../../ip_state.c -o ip_state_u.o
In file included from /usr/include/sys/devops.h:20,
                 from /usr/include/sys/ddi_impldefs.h:15,
                 from /usr/include/sys/promif.h:16,
                 from /usr/include/inet/ip.h:797,
                 from ../../netinet/ip_compat.h:90,
                 from ../../ip_state.c:69:
/usr/include/sys/ddimapreq.h:60: parse error before `ddi_acc_hdl_t'
/usr/include/sys/ddimapreq.h:60: warning: no semicolon at end of struct or
union
/usr/include/sys/ddimapreq.h:62: parse error before `}'
/usr/include/sys/ddimapreq.h:62: warning: data definition has no type or
storage
class
In file included from /usr/include/sys/ddi_impldefs.h:15,
                 from /usr/include/sys/promif.h:16,
                 from /usr/include/inet/ip.h:797,
                 from ../../netinet/ip_compat.h:90,
                 from ../../ip_state.c:69:
/usr/include/sys/devops.h:148: parse error before `ddi_map_req_t'
/usr/include/sys/devops.h:202: parse error before `ddi_eventcookie_t'
/usr/include/sys/devops.h:205: parse error before `ddi_eventcookie_t'
/usr/include/sys/devops.h:207: parse error before `ddi_eventcookie_t'
/usr/include/sys/devops.h:208: `bus_add_eventcall' declared as function
returnin
g a function
/usr/include/sys/devops.h:208: warning: no semicolon at end of struct or
union
/usr/include/sys/devops.h:210: parse error before `ddi_eventcookie_t'
/usr/include/sys/devops.h:212: parse error before `ddi_eventcookie_t'
/usr/include/sys/devops.h:248: parse error before `ddi_map_req_t'
*** Error code 1
make: Fatal error: Command failed for target `ip_state_u.o'


Попытка откомпилировать с gcc -U__STDC__ приводит к следующему:
gcc -U__STDC__ -DNEED_INET_ATON -g -I../.. -DSOLARIS2=7 -c
../../inet_addr.c -o
inet_addr.o
*undef*:1: warning: undefining `__STDC__'
../../inet_addr.c:188: conflicting types for `inet_addr'
/usr/include/arpa/inet.h:62: previous declaration of `inet_addr'
*** Error code 1

В куске кода inet_addr.c явно рассчитывают на STDC и никаких проверок
не делают :-( (функция описана в inet.h, но с
#ifdef __STDC__
...
extern in_addr_t inet_addr(const char *);
...
#else
unsigned long inet_addr();
...
#endif

Если исправить здесь, то после этого возникает ошибка в
gcc -U__STDC__ -g -I../.. -DSOLARIS2=7 -c ../../ipt.c -o ipt.o
*undef*:1: warning: undefining `__STDC__'
../../ipt.c: In function `main':
../../ipt.c:163: `ipl' undeclared (first use in this function)
../../ipt.c:163: (Each undeclared identifier is reported only once
../../ipt.c:163: for each function it appears in.)
../../ipt.c:163: parse error before `ioctl'
*** Error code 1


>Dmitry E. Kiselyov
>Nizhny Novgorod City Health Emergency Station
>E-mail: dima@gssmp.sci-nnov.ru   ICQ: 2010591


Так что по прежнему ищу помощь (готов выдать shell-account
профессионалам для личного просмотра).
В общем-то совершенно ясно, что -U__STDC__ - это через пятую точку,
но _почему_ возникает parse error в совершенно (на мой,
непрофессиональный, взгляд) корректном описании -
typedef struct {
        ddi_map_op_t map_op;
        ddi_map_type_t map_type;
        ddi_map_obj_t map_obj;
        int map_flags;
        int map_prot;
        ddi_acc_hdl_t *map_handlep; /* это строка 60 */
        int map_vers;
} ddi_map_req_t;

остается большой загадкой.

С уважением,
==============================
Sergey Mokryshev <mokr@child.ru>
Moscow Children Computer Club
Network Administrator
http://www.child.ru/
==============================

=============================================================================
"inet-admins" Internet access mailing list. Maintained by East Connection ISP.
Mail "unsubscribe inet-admins" to Majordomo@info.east.ru if you want to quit.
Archive is accessible on http://info.east.ru/rus/inetadm.html



 




Copyright © Lexa Software, 1996-2009.