]> granicus.if.org Git - postgresql/commit
Prevent accidental linking of system-supplied copies of libpq.so etc.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 9 Jul 2018 21:23:32 +0000 (17:23 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 9 Jul 2018 21:23:32 +0000 (17:23 -0400)
commitdd4e836748cec3e361e3b52243137960557a000d
tree4ecadc3a9769984c06d8e097a527c8164ab59c67
parentf352f43d3f10a8491035cc3ccd6f85aa6215aead
Prevent accidental linking of system-supplied copies of libpq.so etc.

Back-patch commit dddfc4cb2, which broke LDFLAGS and related Makefile
variables into two parts, one for within-build-tree library references and
one for external libraries, to ensure that the order of -L flags has all
of the former before all of the latter.  This turns out to fix a problem
recently noted on buildfarm member peripatus, that we attempted to
incorporate code from libpgport.a into a shared library.  That will fail on
platforms that are sticky about putting non-PIC code into shared libraries.
(It's quite surprising we hadn't seen such failures before, since the code
in question has been like that for a long time.)

I think that peripatus' problem could have been fixed with just a subset
of this patch; but since the previous issue of accidentally linking to the
wrong copy of a Postgres shlib seems likely to bite people in the field,
let's just back-patch the whole change.  Now that commit dddfc4cb2 has
survived some beta testing, I'm less afraid to back-patch it than I was
at the time.

This also fixes undesired inclusion of "-DFRONTEND" in pg_config's CPPFLAGS
output (in 9.6 and up) and undesired inclusion of "-L../../src/common" in
its LDFLAGS output (in all supported branches).

Back-patch to v10 and older branches; this is already in v11.

Discussion: https://postgr.es/m/20180704234304.bq2dxispefl65odz@ler-imac.local
20 files changed:
contrib/dblink/Makefile
contrib/oid2name/Makefile
contrib/pgbench/Makefile
contrib/postgres_fdw/Makefile
contrib/spi/Makefile
contrib/vacuumlo/Makefile
src/Makefile.global.in
src/Makefile.shlib
src/backend/replication/libpqwalreceiver/Makefile
src/bin/pg_basebackup/Makefile
src/bin/pg_config/Makefile
src/bin/pg_ctl/Makefile
src/interfaces/ecpg/compatlib/Makefile
src/interfaces/ecpg/ecpglib/Makefile
src/interfaces/ecpg/pgtypeslib/Makefile
src/interfaces/ecpg/test/Makefile.regress
src/interfaces/ecpg/test/compat_informix/Makefile
src/interfaces/libpq/test/Makefile
src/makefiles/pgxs.mk
src/test/examples/Makefile