Re: master make check fails on Solaris 10
Victor Wagner <vitus@wagner.pp.ru>
From: Victor Wagner <vitus@wagner.pp.ru>
To: pgsql-hackers@lists.postgresql.org
Date: 2018-01-17T15:13:59Z
Lists: pgsql-hackers
Attachments
- align_test.c (text/x-c++src)
- align_test8.s (application/octet-stream)
- align_test16.s (application/octet-stream)
On Wed, 17 Jan 2018 18:02:26 +0300 Marina Polyakova <m.polyakova@postgrespro.ru> wrote: > > Attached is a possible test program. I can confirm it passes on a > > machine with working __int128, but I have no idea whether it will > > detect the problem on yours. If not, maybe you can tweak it? > > Thank you! Using gcc 5.5.0 it prints that everything is ok. But, > investigating the regression diffs, we found out that the error > occurs when we pass int128 as not the first argument to the function > (perhaps its value is replaced by the value of some address): I'm attaching stripped-down version of test program, which demonstrate the problem and two assembler listings produced with this C source using alignment 8 and 16. May be this stripped-down version can be used as base for configure test. As it turns out, Sparc GCC passes function arguments via register ring which is referenced as %on in the calling code and as %in in function. And somehow it happens that alignment attribute of typedef affects access to arguments in the function, but doesn't affect how regiser ring is filled before call. Looks like bug in GCC. Unfortunately, we have only one Sparc machine and started our investigation by upgrading GCC 5.2.0 to GCC 5.5.0, so it is hard to downgrade and test with older GCC. --
Commits
-
Extend configure's __int128 test to check for a known gcc bug.
- 5dcbdcbdda48 10.2 landed
- 456cab29df65 9.6.7 landed
- 31635bc1d107 9.5.11 landed
- 2082b3745a71 11.0 landed
-
Reorder C includes
- f033462d8f77 11.0 cited
-
Ability to advance replication slots
- 9c7d06d60680 11.0 cited
-
doc: add JSON acronym
- ca454b9bd34c 11.0 cited
-
Expression evaluation based aggregate transition invocation.
- 69c3936a1499 11.0 cited
-
Change some bogus PageGetLSN calls to BufferGetLSNAtomic
- 272c2ab9fd0a 11.0 cited
-
Prevent int128 from requiring more than MAXALIGN alignment.
- 7518049980be 11.0 cited
-
Rearrange c.h to create a "compiler characteristics" section.
- 91aec93e6089 11.0 cited
-
Make OWNER TO subcommand mention consistent
- bf54c0f05c0a 11.0 cited