Thread: Re: installing 7.2b3 on IRIX 6.5.13
[ redirected from pgsql-admin ] Luis Amigo <lamigo@atc.unican.es> writes: > When installing 7.2b3 we receive after gmake: > len = offsetof(PgStat_MsgTabpurge, m_tableid[msg.m_nentries]) > must have a constant value Indeed, a quick look in the C spec says that offsetof is required to have a constant value, so this coding is unportable. I've repaired it in CVS. Thanks for the report! It's not clear to me whether we should change template/irix5 or not. It sounds like gcc is misinstalled on your machine, but that doesn't necessarily mean that no one is using gcc successfully on IRIX, so I don't want to force CC=cc. Possibly this would make sense: if test "$GCC" = yes ; then CFLAGS="-O2" else CFLAGS="-n32 -O2 -r12000" LDFLAGS="-n32 -O2 -r12000" fi Comments anyone? regards, tom lane
Tom Lane writes: > It's not clear to me whether we should change template/irix5 or not. > It sounds like gcc is misinstalled on your machine, but that doesn't > necessarily mean that no one is using gcc successfully on IRIX, so > I don't want to force CC=cc. One of these days I'm going to write this down somewhere: GCC + Irix + PostgreSQL does not work -- until proven otherwise and/or GCC is fixed. (The reason that the assembly fails is unrelated to this bug; it's just that no one ever bothered to work on it because there's no use anyway.) I was going to suggest myself someday that we force CC=cc, but it should be done in configure.in (near line 274) and not in the template file. > Possibly this would make sense: > > if test "$GCC" = yes ; then > CFLAGS="-O2" > else > CFLAGS="-n32 -O2 -r12000" > LDFLAGS="-n32 -O2 -r12000" > fi We've had successful reports for Irix in the past, so I don't think the -n and -r flags are strictly necessary -- at least I'd like to see more information regarding them. What makes -n32 and -r12000 better than, say, -n64 and -r6000? The -O2 seems okay. Its lack is probably a remnant from the old fmgr times. -- Peter Eisentraut peter_e@gmx.net
Peter Eisentraut <peter_e@gmx.net> writes: > One of these days I'm going to write this down somewhere: GCC + Irix + > PostgreSQL does not work -- until proven otherwise and/or GCC is fixed. Oh. Yup, that should be documented or enforced by configure. > I was going to suggest myself someday that we force CC=cc, but it should > be done in configure.in (near line 274) and not in the template file. Makes sense to me to do it in configure.in. Shall we go ahead and put that in? > We've had successful reports for Irix in the past, so I don't think the -n > and -r flags are strictly necessary -- at least I'd like to see more > information regarding them. What makes -n32 and -r12000 better than, say, > -n64 and -r6000? Luis' followup indicated that -r wasn't really needed. Not sure about -n. regards, tom lane
Tom Lane wrote: > Peter Eisentraut <peter_e@gmx.net> writes: > > One of these days I'm going to write this down somewhere: GCC + Irix + > > PostgreSQL does not work -- until proven otherwise and/or GCC is fixed. > > Oh. Yup, that should be documented or enforced by configure. > > > I was going to suggest myself someday that we force CC=cc, but it should > > be done in configure.in (near line 274) and not in the template file. > > Makes sense to me to do it in configure.in. Shall we go ahead and put > that in? > > > We've had successful reports for Irix in the past, so I don't think the -n > > and -r flags are strictly necessary -- at least I'd like to see more > > information regarding them. What makes -n32 and -r12000 better than, say, > > -n64 and -r6000? > > Luis' followup indicated that -r wasn't really needed. Not sure about -n. > > regards, tom lane sorry for replying only to tom (a mouse mistake) In our case -n32 (force new 32 bit object(maybe -o32 in old platforms)) was necessary because with 64 bit object we were getting linking errors. -rx is processor instruction set, it is not necessary but I recommend it for better performance. I've been this afternoon search why it fails with gcc and I think I know the answer: from sgi.com gcc vs. cc Code that runs fine when compiled with SGI cc and doesn't run when compiled with gcc might be calling one of the following functions: inet_ntoa, inet_lnaof, inet_netof, inet_makeaddr, semctl (there may be others). These are functions that get passed or return structs that are smaller than 16 bytes but not 8 bytes long. gcc and SGI cc are incompatible in the way they pass these structs so compiling with gcc and linking with the SGI libc.so (which was compiled with the SGI cc) is likely to cause these problems. Note that this problem is pretty rare since such functions are not widely used. This may be considered a bug in gcc but is too involved to fix this is fixed in gcc libs libgcc.a I'm not sure if it works cause I can't drop the database just now maybe tomorrow, If I can test it tomorrow I'll tell you Hope it helps best wishes
Tom Lane wrote: > Peter Eisentraut <peter_e@gmx.net> writes: > > One of these days I'm going to write this down somewhere: GCC + Irix + > > PostgreSQL does not work -- until proven otherwise and/or GCC is fixed. > > Oh. Yup, that should be documented or enforced by configure. > > > I was going to suggest myself someday that we force CC=cc, but it should > > be done in configure.in (near line 274) and not in the template file. > > Makes sense to me to do it in configure.in. Shall we go ahead and put > that in? > > > We've had successful reports for Irix in the past, so I don't think the -n > > and -r flags are strictly necessary -- at least I'd like to see more > > information regarding them. What makes -n32 and -r12000 better than, say, > > -n64 and -r6000? > > Luis' followup indicated that -r wasn't really needed. Not sure about -n. > > regards, tom lane I forgot to say but sure you know that inet_ntoa is widely used but only critical is: ./postmaster/postmaster.c:2036: host_addr = inet_ntoa(port->raddr.in.sin_addr); sorry for repeating regards
Tom Lane wrote: > Peter Eisentraut <peter_e@gmx.net> writes: > > One of these days I'm going to write this down somewhere: GCC + Irix + > > PostgreSQL does not work -- until proven otherwise and/or GCC is fixed. > > Oh. Yup, that should be documented or enforced by configure. > > > I was going to suggest myself someday that we force CC=cc, but it should > > be done in configure.in (near line 274) and not in the template file. > > Makes sense to me to do it in configure.in. Shall we go ahead and put > that in? > > > We've had successful reports for Irix in the past, so I don't think the -n > > and -r flags are strictly necessary -- at least I'd like to see more > > information regarding them. What makes -n32 and -r12000 better than, say, > > -n64 and -r6000? > > Luis' followup indicated that -r wasn't really needed. Not sure about -n. > > regards, tom lane sorry for following to tom (a mouse mistake) In our case -n32 (force new 32 bit object(maybe -o32 in old platforms)) was necessary because with 64 bit object we were getting linking errors. -rx is processor instruction set, it is not necessary but I recommend it for better performance.
Luis Amigo <lamigo@atc.unican.es> writes: > In our case -n32 (force new 32 bit object(maybe -o32 in old platforms)) was > necessary because with 64 bit object we were getting linking errors. Is it worth trying to find and fix the cause of that? On other platforms that can build either 32- or 64-bit executables (eg, HPUX 11) Postgres works in either mode. So I think it's probably just some minor tweak needed for IRIX. It'd be better to let the user choose which he wants than to force it in the template. > -rx is processor instruction set, it is not necessary but I recommend it for > better performance. Again, it doesn't seem that we should try to guess the right value in the template (unless IRIX has some command that the template script could execute to get the right value?). The user can always specify the CFLAGS he wants configure to use. regards, tom lane