Re: configure can't detect proper pthread flags

From: Max Filippov <jcmvbkbc(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org, Peter Seiderer <ps(dot)report(at)gmx(dot)net>
Subject: Re: configure can't detect proper pthread flags
Date: 2015-03-20 01:51:55
Message-ID: CAMo8BfKg=Nd9s3V68yxxBbEtfao1C+EEAQVvnPK7ZwcaPn5-vw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Tom,

On Fri, Mar 20, 2015 at 3:50 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Max Filippov <jcmvbkbc(at)gmail(dot)com> writes:
>> when PostgreSQL is cross-compiled in the Buildroot with uClibc toolchain
>> it may not correctly detect compiler/linker flags for threading. [1]
>> The reason is that config/acx_pthread.m4:146 uses compiler and linker
>> stdout and stderr to make decision if acx_pthread_ok should be yes or no:
>
>> if test "`(eval $ac_link 2>&1 1>&5)`" = "" && test "`(eval
>> $ac_compile 2>&1 1>&5)`" = ""; then
>
>> and the toolchain emits the following warning at linking step:
>
>> libcrypto.so: warning: gethostbyname is obsolescent, use
>> getnameinfo() instead.
>
>> git log doesn't tell much why it is done that way. Does anybody know?
>
> The short answer is that the linker you're using is written by pedantic
> idiots.

Well... That doesn't answer my question.

> Notice that the gethostbyname call it's complaining about is
> somewhere inside libcrypto; it's *not* in Postgres, much less the test
> program being built here.

Actually it *is* in the program being built here, because it's being
linked with libcrypto. The full command line produced by the first eval
is this:

xtensa-linux-gcc -o conftest -Wall -Wmissing-prototypes
-Wpointer-arith -Wdeclaration-after-statement -Wendif-labels
-Wmissing-format-attribute -Wformat-security -fno-strict-aliasing
-fwrapv -fexcess-precision=standard -D_LARGEFILE_SOURCE
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -mlongcalls
-mtext-section-literals -Os -pthread -D_LARGEFILE_SOURCE
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE conftest.c
-lssl -lcrypto -lz -lreadline -lrt -lcrypt -ldl -lm

and if I drop irrelevant libraries from that command its stdout+stderr
will probably be empty.

But I was curious why this test is written *that* way.

--
Thanks.
-- Max

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2015-03-20 01:57:05 Re: Lets delete src/test/performance
Previous Message Andrew Gierth 2015-03-20 01:51:45 Re: configure can't detect proper pthread flags