Re: Allowing printf("%m") only where it actually works

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Michael Paquier <michael(at)paquier(dot)xyz>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Allowing printf("%m") only where it actually works
Date: 2018-09-26 20:21:19
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Andres Freund <andres(at)anarazel(dot)de> writes:
> The strerror push, I assume it's that at least, broke something on icc:

Yeah. It looks like the problem is that configure's test for strerror_r's
return type does not work on icc:

onfigure:10784: checking whether strerror_r returns int
configure:10805: icc -std=gnu99 -c -mp1 -fno-strict-aliasing -g -O2 -pthread -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c >&5
conftest.c(45): warning #159: declaration is incompatible with previous "strerror_r" (declared at line 438 of "/usr/include/string.h")
int strerror_r(int, char *, size_t);

configure:10805: $? = 0
configure:10812: result: yes

Configure is expecting this to throw a hard error (if the platform
declares strerror_r to return char*) but icc only makes it a warning.

What I am not quite figuring out here is how the code seemed to work
before. Before this patch, it only mattered in libpq because that was the
only place using pqStrerror. Maybe the regression tests don't ever
produce a strerror output from libpq?

regards, tom lane

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Laurenz Albe 2018-09-26 20:36:03 Re: pg_ls_tmpdir()
Previous Message Tomas Vondra 2018-09-26 19:49:30 Re: [PATCH] Improve geometric types