[ZBX-8131] Can not compile Zabbix agent on AIX 7.1 Created: 2014 Apr 22  Updated: 2017 May 30  Resolved: 2014 May 09

Status: Closed
Project: ZABBIX BUGS AND ISSUES
Component/s: Agent (G)
Affects Version/s: 2.2.3
Fix Version/s: None

Type: Incident report Priority: Major
Reporter: Alexey Pustovalov Assignee: Unassigned
Resolution: Cannot Reproduce Votes: 1
Labels: agent, aix, compilation
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate

 Description   

Please check comments.



 Comments   
Comment by Alexey Pustovalov [ 2014 Apr 22 ]
make
Making all in src
Making all in libs
Making all in zbxcrypto
        depbase=`echo md5.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I. -I../../../include      -g -O2    -MT md5.o -MD -MP -MF $depbase.Tpo -c -o md5.o md5.c && mv -f $depbase.Tpo $depbase.Po
In file included from /usr/include/netdb.h:50,
                 from ../../../include/sysinc.h:192,
                 from ../../../include/common.h:23,
                 from md5.c:54:
/usr/include/netinet/in.h:98: error: two or more data types in declaration specifiers
In file included from /usr/include/sys/cred.h:52,
                 from /usr/include/sys/thread.h:42,
                 from /usr/include/sys/ptrace.h:28,
                 from /usr/include/sys/proc.h:42,
                 from /usr/include/sys/pri.h:43,
                 from /usr/include/sys/sched.h:38,
                 from /usr/include/sys/corral.h:22,
                 from /usr/include/libperfstat.h:28,
                 from ../../../include/sysinc.h:298,
                 from ../../../include/common.h:23,
                 from md5.c:54:
/usr/include/sys/secattr.h:50: error: expected specifier-qualifier-list before 'rid_t'
/usr/include/sys/secattr.h:70: error: expected specifier-qualifier-list before 'authnum_t'
In file included from /usr/include/sys/thread.h:42,
                 from /usr/include/sys/ptrace.h:28,
                 from /usr/include/sys/proc.h:42,
                 from /usr/include/sys/pri.h:43,
                 from /usr/include/sys/sched.h:38,
                 from /usr/include/sys/corral.h:22,
                 from /usr/include/libperfstat.h:28,
                 from ../../../include/sysinc.h:298,
                 from ../../../include/common.h:23,
                 from md5.c:54:
/usr/include/sys/cred.h:338: error: expected specifier-qualifier-list before 'rid_t'
In file included from /usr/include/net/if.h:148,
                 from /usr/include/sys/corral.h:24,
                 from /usr/include/libperfstat.h:28,
                 from ../../../include/sysinc.h:298,
                 from ../../../include/common.h:23,
                 from md5.c:54:
/usr/include/net/route.h:310: error: expected specifier-qualifier-list before 'eye_catch8b_t'
make: The error code from the last command is 1.


Stop.
make: The error code from the last command is 1.


Stop.
make: The error code from the last command is 1.


Stop.
make: The error code from the last command is 1.


Stop.
Comment by Alexey Pustovalov [ 2014 Apr 22 ]

/usr/include/netinet/in.h

+90  #include <end_strict_stdtypes.h>
   +91  /*
   +92   * socklen_t also has a similar definition in sys/socket.h
   +93   * If we need to change this typedef, it must be changed
   +94   * in sys/socket.h also
   +95   */
   +96  #ifndef __SOCKLEN_T
   +97  #define __SOCKLEN_T
   +98  typedef __ulong32_t socklen_t;
   +99  #endif
  +100
  +101  /*
  +102   * Constants and structures defined by the internet system,
  +103   * Per RFC 790, September 1981.
Comment by Alexey Pustovalov [ 2014 Apr 22 ]

/usr/include/sys/secattr.h

  +48  /* Security attributes for subjects (process) */
   +49  struct subsec_attr {
   +50          rid_t           roles[MAX_ROLES];  /* Maximum no. of supported roles */
   +51          short           nroles;         /* Number of roles */
   +52          short           ntrauths;       /* Number of traced auths */
   +53          uint32_t        flags;          /* Flags */
   +54          privg_t         effpriv;        /* Effective privilege vector */
   +55          privg_t         maxpriv;        /* Maximum privilege vector */
   +56          privg_t         inhpriv;        /* Inheritable privilege vector */
   +57          privg_t         limpriv;        /* Limited privilege vector */
   +58          privg_t         usedpriv;       /* Used privilege vector */
   +59  #ifdef _KERNEL
   +60          authnum_t       *trauths;       /* Buffer for tracing authorizations */
   +61  #else
   +62          int             reserved[2];    /* Reserved */
   +63  #endif
   +64          sec_labels_t    labels;         /* All Labels */
   +65  };
   +66  typedef struct subsec_attr  subsec_attr_t;
   +67
   +68  /* Security attributes for objects (File System, Privcmd) */
   +69  struct fsobjsec_attr {
   +70          authnum_t   accessAuths[MAX_AAS_SIZ];   /* Access Authorizations */
   +71          authnum_t   privAuths[MAX_APS_SIZ];     /* Privileged Authorizations */
   +72          privg_t     authPrivs[MAX_APS_SIZ];     /* Authorized Privileges */
   +73          privg_t     innatePrivs;                /* Innate Privileges */
   +74          privg_t     inheritPrivs;               /* Inheritable Privileges */
   +75          uint32_t    secFlags;                   /* File Security Flag */
   +76          rid_t       aroles[MAX_AROLES_SIZ];     /* Authenticated Roles */
   +77  };
   +78  typedef struct fsobjsec_attr  fsobjsec_attr_t;
   +79
   +80  /* Special auth ids for accessAuths */
   +81  #define ALLOW_OWNER 1   /* Allow file owner to execute */
   +82  #define ALLOW_GROUP 2   /* Allow file group member to execute */
   +83  #define ALLOW_ALL   3   /* Allow everyone to execute */
   +84  #define BYPASS_AUTH 4   /* Not to assign in privcmd, for traceauth only */
   +85

Comment by Aleksandrs Saveljevs [ 2014 Apr 22 ]

In order to proceed with this issue, please execute the following steps:

  1. run ./configure with whatever options you have;
  2. in ./configure output, note "compiler flags" line;
  3. create a separate directory;
  4. copy include/config.h to that directory;
  5. copy include/sysinc.h to that directory;
  6. create file test.c with the following content:
    #include "sysinc.h"
    
    int	main()
    {
    	return 0;
    }
    
  7. run "gcc $COMPILER_FLAGS -c test.c", where $COMPILER_FLAGS is what you noted in the output of ./configure;
  8. if compilation is successful, then something is wrong with my instructions, so please say so;
  9. if compilation is not successful, run "gcc $COMPILER_FLAGS -E test.c > test-preprocessed.c" to obtain preprocessed sources;
  10. run "gcc -c test-preprocessed.c" to try to compile preprocessed source;
  11. attach zipped directory and compiler output from the last step.
Comment by Aleksandrs Saveljevs [ 2014 Apr 22 ]

Also, could you please execute the following steps in a new directory:

  1. create file simple.c with the following content:
    #include <netdb.h>
    #include <libperfstat.h>
    
    int	main()
    {
    	return 0;
    }
    
  2. run "gcc $COMPILER_FLAGS -c simple.c";
  3. if compilation is not successful, then apparently you have a broken installation;
  4. if compilation is successful, run "gcc $COMPILER_FLAGS -E simple.c > simple-preprocessed.c";
  5. attach "simple-preprocessed.c".
Comment by Aleksandrs Saveljevs [ 2014 Apr 22 ]

Also, could you please tell us why compiler takes includes from locations like "/opt/freeware/lib/gcc/powerpc-ibm-aix5.3.0.0/4.2.0/include/stdio.h"? Here, "powerpc-ibm-aix5.3.0.0" is suspicious, considering that this issue is about AIX 7.1.

Comment by Marzena Piko [ 2014 Apr 22 ]

List of rpm-s

AIX-rpm-7.1.2.15-1
tcl-8.4.7-3
tk-8.4.7-3
expect-5.42.1-3
screen-3.9.10-2
sudo-1.6.9p23-2noldap
unzip-5.51-1

##### All next rpm-a are downloaded from http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/alpha.html#R
fo zabbix compilation:

autoconf-2.63-1
gcc-4.2.0-3
gcc-c++-4.2.0-3
libgcc-4.2.0-3
libstdc++-4.2.0-3
libstdc++-devel-4.2.0-3
m4-1.4.13-1
make-3.81-1
automake-1.11-1
libtool-1.5.8-2
coreutils-5.2.1-2
bash-4.2-1
cpio-2.11-1

http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/alpha.html#R

Comment by Marzena Piko [ 2014 Apr 22 ]

Compilation was not successfull:

[ZABBIX_DEV_TEST]root@p032063zabbixde:# gcc -g -O2 -c simple.c
In file included from /usr/include/sys/cred.h:52,
                 from /usr/include/sys/thread.h:42,
                 from /usr/include/sys/ptrace.h:28,
                 from /usr/include/sys/proc.h:42,
                 from /usr/include/sys/pri.h:43,
                 from /usr/include/sys/sched.h:38,
                 from /usr/include/sys/corral.h:22,
                 from /usr/include/libperfstat.h:28,
                 from simple.c:2:
/usr/include/sys/secattr.h:50: error: expected specifier-qualifier-list before 'rid_t'
/usr/include/sys/secattr.h:70: error: expected specifier-qualifier-list before 'authnum_t'
In file included from /usr/include/sys/thread.h:42,
                 from /usr/include/sys/ptrace.h:28,
                 from /usr/include/sys/proc.h:42,
                 from /usr/include/sys/pri.h:43,
                 from /usr/include/sys/sched.h:38,
                 from /usr/include/sys/corral.h:22,
                 from /usr/include/libperfstat.h:28,
                 from simple.c:2:
/usr/include/sys/cred.h:338: error: expected specifier-qualifier-list before 'rid_t'
In file included from /usr/include/net/if.h:148,
                 from /usr/include/sys/corral.h:24,
                 from /usr/include/libperfstat.h:28,
                 from simple.c:2:
/usr/include/net/route.h:310: error: expected specifier-qualifier-list before 'eye_catch8b_t'
Comment by Aleksandrs Saveljevs [ 2014 Apr 22 ]

It seems to me that if such a simple file including only <netdb.h> and <libperfstat.h> does not compile, then that probably suggests that system headers are not in order.

Comment by Alexey Pustovalov [ 2014 May 09 ]

corrupted OS header files.

Generated at Sat Apr 27 05:39:14 EEST 2024 using Jira 9.12.4#9120004-sha1:625303b708afdb767e17cb2838290c41888e9ff0.