Re: Bug fix for glibc broke freebsd build in REL_11_STABLE

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Andrew Gierth <andrew@tao11.riddles.org.uk>, Victor Wagner <vitus@wagner.pp.ru>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2018-09-05T18:15:49Z
Lists: pgsql-hackers
On 2018-09-05 14:08:11 -0400, Tom Lane wrote:
> Andres Freund <andres@anarazel.de> writes:
> > On 2018-09-05 10:05:26 -0400, Tom Lane wrote:
> >> One thought is that maybe we should provide a way to override this,
> >> in case somebody really can't or doesn't want to use -msse2, and
> >> is willing to put up with platform-dependent float behavior.
> 
> > IDK, people that are capable of making that decision can just hack
> > configure.
> 
> "Just hacking configure" is a pretty high bar for most folk.

Sure. But being able to accurately judge whether you're ok that math
behaviour doesn't work as documented seems like a high bar too.  And
this'd only be relevant if they insist on using clang rather than gcc.


> If you wanted to argue that the set of people who still want to run PG
> on pre-SSE2 hardware is the empty set, that'd be an easier sell
> really.

I think it's an empty set, yea, especially with clang.


> But what I'm really concerned about here, given that we're apparently
> talking about an ABI change, is that someone might want to run on a
> platform where the libraries insist on the x87 way.
> I'm actually a bit surprised to hear that you can just randomly add
> -msse2 on BSDen.  Do they ship separate copies of libc et al to make
> that work?

I don't think we're talking about an ABI change - with -msse2 the
calling conventions are unchanged, the stuff just gets moved out of the
x87 registers into SSE ones / xmm for the actual math. Which in turn
solves our "80bit register" problem.  There really shouldn't be any need
for libc6 itself to care.

Greetings,

Andres Freund


Commits

  1. Error out for clang on x86-32 without SSE2 support, no -fexcess-precision.

  2. Fix 8a934d677 for libc++ and make more include order resistant.