Re: [Fwd: DBD::Pg on HP-UX 11.31 64bit]
От | H.Merijn Brand |
---|---|
Тема | Re: [Fwd: DBD::Pg on HP-UX 11.31 64bit] |
Дата | |
Msg-id | 20101216183902.5aaa8d35@pc09.procura.nl обсуждение исходный текст |
Ответ на | Re: [Fwd: DBD::Pg on HP-UX 11.31 64bit] (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-bugs |
On Thu, 16 Dec 2010 12:24:01 -0500, Tom Lane <tgl@sss.pgh.pa.us> wrote: > "H.Merijn Brand" <h.m.brand@xs4all.nl> writes: > > This is what the docs on HP-UX say: > > > int getsockopt ( > > int s, > > int level, > > int optname, > > void *optval, > > int *optlen > > ); > > > UNIX 03 Only (X/Open Sockets) > > > int getsockopt ( > > int s, > > int level, > > int optname, > > void *__restrict optval, > > socklen_t *__restrict optlen > > ); > > Mmm, fun. And what is socklen_t defined as? sys/types.h 473:typedef size_t socklen_t; > > the includes tell me > > src/include/pg_config.h:#define ACCEPT_TYPE_ARG3 size_t > > Hmm, that suggests that configure was already seeing the socklen_t > variant ... That was my conclusion too > > To use X/Open sockets, which seems to me the better option for > > postgresql, I changed scr/Makefile.global => > > > CC = cc > > CFLAGS = -O2 -g -Ae -z +Z +DD64 -D_XOPEN_SOURCE=600 > > LIBS = -lssl -lcrypto -lxnet -lz -lm > > LDFLAGS = -Wl,+vnocompatwarnings +DD64 -L/usr/local/ia64/lib \ > > -L/usr/lib/hpux64 -L/usr/contrib/X11R6/lib/hpux64 -s \ > > -L/usr/local/lib -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib > > Screwing around with CFLAGS in an already-generated Makefile.global > is definitely *not* the way to approach this; you need configure to > have seen the same switches, else it will have selected the wrong > ACCEPT_TYPE_ARG3. Try it with > configure CPPFLAGS="-D_XOPEN_SOURCE=600" > or something like that. I know, but I first wanted to nail down the real cause of failure > > To ensure optimal alignment, I also added > > #pragma pack 16 > > to all header files > > And please do not inject random other ways of breaking things at the > same time --- there's no good reason to believe that that will even > work, and it's surely complicating trying to solve the immediate > problem. I did this because of the truckload of warnings I got. I'll do a fresh checkout on my next attempt > > # PostgreSQL (reported) PostgreSQL 8.4.4 on x86_64-unknown-linux-gnu, compiled by GCC gcc (SUSE Linux) 4.4.1 [gcc-4_4-branchrevision 150839], 64-bit > > Where'd that come from? Seems a bit weird that this is referring to > something other than your HPUX build. $PGHOST is set to our postgres server One of the reasons is that *that* is what I eventually have to get working: 64bit perl on HP-UX 11.31 talking through DBD::Pg to a remote postgres server. > > As, at this point, there is no control over the library that perl > > itself is linked with: > > Hmm. I wonder whether perl is built with libraries that expect the > "int" definition instead of the "socklen_t" definition, or vice versa > (whichever way is not what libpq expects). Do you know exactly how HP > is managing to support both of those ABIs? It is, as getsockopt () is in libc. All executables - of course - are linked to libc, so unless they were *also* linked to libxnet, the libc variant will be chosen. I might find some time to rebuild perl from scratch with the -D option and the addition of libxnet and see it that causes a different result -- H.Merijn Brand http://tux.nl Perl Monger http://amsterdam.pm.org/ using 5.00307 through 5.12 and porting perl5.13.x on HP-UX 10.20, 11.00, 11.11, 11.23 and 11.31, OpenSuSE 10.1, 11.0 .. 11.3 and AIX 5.2 and 5.3. http://mirrors.develooper.com/hpux/ http://www.test-smoke.org/ http://qa.perl.org http://www.goldmark.org/jeff/stupid-disclaimers/
В списке pgsql-bugs по дате отправления: