Thread

  1. Re: solaris 10 with gcc 3.3.2

    Belbin, Peter <pbelbin@mcleodusa.com> — 2004-12-16T23:15:12Z

    It seems that rather than using the /usr/include/sys/types.h, gcc 3.3.2 is
    instead, using a version of the same file, located at
    /usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/sys, which does
    not have a definition for ctid_t
    
    Presumedly there's either something bogus about the gcc for solaris 10, or
    perhaps there's a way to get gcc to ignore the gcc version, and use the
    'normal' version......?
    
    
     
    
    -----Original Message-----
    From: Tom Lane [mailto:tgl@sss.pgh.pa.us] 
    Sent: Sunday, December 12, 2004 12:04 AM
    To: Belbin, Peter
    Cc: pgsql-bugs@postgreSQL.org
    Subject: Re: [BUGS] solaris 10 with gcc 3.3.2 
    
    "Belbin, Peter" <PBelbin@McLeodUSA.com> writes:
    > Should I be able to compile with gcc 3.3.2 (from sunfreeware) on solaris
    10?
    
    Yes ...
    
    > gcc -DPOSIX -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels
    > -fno-strict-aliasing -I../../src/port -DFRONTEND -I../../src/include   -c
    -o
    > exec.o exec.c
    > In file included from /usr/include/sys/wait.h:24,
    >                  from exec.c:26:
    > /usr/include/sys/siginfo.h:259: error: parse error before "ctid_t"
    > /usr/include/sys/siginfo.h:292: error: parse error before '}' token
    
    This looks like your platform's <sys/wait.h> is not designed to be included
    free-standing, but requires certain other system headers to be included
    first.  (This is poor practice, but seen all too often :-() A fairly likely
    guess is that the missing header is <sys/types.h>.
    You might be able to find out for sure by checking the man page for
    waitpid() and related system calls ... or just try hacking exec.c till it
    compiles.
    
    It's likely that exec.c is not the only place missing the extra include(s).
    Please send a patch after you get it all to build.
    
    			regards, tom lane
    
    
    
    NOTICE: This electronic mail transmission may contain confidential
    information and is intended only for the person(s) named.  Any use, copying
    or disclosure by any other person is strictly prohibited. If you have
    received this transmission in error, please notify the sender via e-mail.
    
    
    
    
  2. Re: solaris 10 with gcc 3.3.2

    Tom Lane <tgl@sss.pgh.pa.us> — 2004-12-18T04:33:28Z

    "Belbin, Peter" <PBelbin@McLeodUSA.com> writes:
    > It seems that rather than using the /usr/include/sys/types.h, gcc 3.3.2 is
    > instead, using a version of the same file, located at
    > /usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/sys, which does
    > not have a definition for ctid_t
    
    This is standard practice for gcc: it tries to use "cleaned up" versions
    of system headers that will not elicit useless warnings from gcc.  It's
    a good idea, actually, because the degree of insanity in vendor-supplied
    system headers is pretty depressing.  But if the gcc install process
    generated an invalid "cleanup" file then you need to take that up with
    the gcc boys, not us.
    
    			regards, tom lane
    
    
  3. Re: solaris 10 with gcc 3.3.2

    Tom Lane <tgl@sss.pgh.pa.us> — 2004-12-18T06:00:05Z

    I wrote:
    > This is standard practice for gcc: it tries to use "cleaned up" versions
    > of system headers that will not elicit useless warnings from gcc.  It's
    > a good idea, actually, because the degree of insanity in vendor-supplied
    > system headers is pretty depressing.  But if the gcc install process
    > generated an invalid "cleanup" file then you need to take that up with
    > the gcc boys, not us.
    
    On rereading this, a nearly-dead neuron fired --- I have seen problems
    of this sort arise when someone took a gcc installation generated on
    NiftyVendorUnix M.N and copied it verbatim to NiftyVendorUnix M.N+1,
    or indeed any release other than M.N.  Then you have a situation where
    gcc is inserting cleaned-up versions of some system headers but not
    others (because it doesn't force the issue when it doesn't have to),
    and if the vendor did something like move a typedef from one header
    to another, you lose, because the cleaned-up headers are not in sync
    with the others.
    
    In short ... where'd you get your gcc installation from?
    
    			regards, tom lane
    
    
  4. Re: solaris 10 with gcc 3.3.2

    Mike Mascari <mascarm@mascari.com> — 2004-12-18T10:57:55Z

    Tom Lane wrote:
    
    >I wrote:
    >  
    >
    >>This is standard practice for gcc: it tries to use "cleaned up" versions
    >>of system headers that will not elicit useless warnings from gcc.  It's
    >>a good idea, actually, because the degree of insanity in vendor-supplied
    >>system headers is pretty depressing.  But if the gcc install process
    >>generated an invalid "cleanup" file then you need to take that up with
    >>the gcc boys, not us.
    >>    
    >>
    >
    >On rereading this, a nearly-dead neuron fired --- I have seen problems
    >of this sort arise when someone took a gcc installation generated on
    >NiftyVendorUnix M.N and copied it verbatim to NiftyVendorUnix M.N+1,
    >or indeed any release other than M.N.  
    >  
    >
    That nearly-dead neuron has value. The problem is that most people are 
    getting the Solaris 10 beta builds whose headers conflict with the gcc 
    3.3.2 package's 'adapted' headers they are acquiring from 
    sunfreeware.com, which, along with distributing other binary packages, 
    is the place referred to by gcc.gnu.org for pre-built Solaris binaries. 
    All the original poster needs to do is rebuild the gcc's 'adapted' 
    headers with:
    
    # cd /usr/local/lib/gcc-lib/i386-pc-solaris2.10/3.3.2/install-tools
    # ./mkheaders
    
    and they should be good to go....
    
    Mike Mascari
    
    
    
  5. Re: solaris 10 with gcc 3.3.2

    Mike Mascari <mascarm@mascari.com> — 2004-12-18T11:03:05Z

    Mike Mascari wrote:
    
    > Tom Lane wrote:
    >
    >> I wrote:
    >>  
    >>
    >>> This is standard practice for gcc: it tries to use "cleaned up" 
    >>> versions
    >>> of system headers that will not elicit useless warnings from gcc.  It's
    >>> a good idea, actually, because the degree of insanity in 
    >>> vendor-supplied
    >>> system headers is pretty depressing.  But if the gcc install process
    >>> generated an invalid "cleanup" file then you need to take that up with
    >>> the gcc boys, not us.
    >>>   
    >>
    >>
    >> On rereading this, a nearly-dead neuron fired --- I have seen problems
    >> of this sort arise when someone took a gcc installation generated on
    >> NiftyVendorUnix M.N and copied it verbatim to NiftyVendorUnix M.N+1,
    >> or indeed any release other than M.N.   
    >>
    > That nearly-dead neuron has value. The problem is that most people are 
    > getting the Solaris 10 beta builds whose headers conflict with the gcc 
    > 3.3.2 package's 'adapted' headers they are acquiring from 
    > sunfreeware.com, which, along with distributing other binary packages, 
    > is the place referred to by gcc.gnu.org for pre-built Solaris 
    > binaries. All the original poster needs to do is rebuild the gcc's 
    > 'adapted' headers with:
    >
    > # cd /usr/local/lib/gcc-lib/i386-pc-solaris2.10/3.3.2/install-tools
    > # ./mkheaders
    >
    > and they should be good to go....
    
    Actually, I see the original poster is on SPARC, so the correct path to 
    the 'mkheaders' utility is probably going to be:
    
    # cd /usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/install-tools
    # ./mkheaders
    
    Mike Mascari