mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Prevent accidental linking of system-supplied copies of libpq.so etc.
Back-patch commitdddfc4cb2
, 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 commitdddfc4cb2
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
This commit is contained in:
@ -22,8 +22,8 @@ override CPPFLAGS := -I../include -I$(top_srcdir)/src/interfaces/ecpg/include \
|
||||
-I$(libpq_srcdir) -DFRONTEND $(CPPFLAGS)
|
||||
override CFLAGS += $(PTHREAD_CFLAGS)
|
||||
|
||||
SHLIB_LINK = -L../ecpglib -lecpg -L../pgtypeslib -lpgtypes $(libpq) \
|
||||
$(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS)
|
||||
SHLIB_LINK_INTERNAL = -L../ecpglib -lecpg -L../pgtypeslib -lpgtypes $(libpq)
|
||||
SHLIB_LINK = $(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS)
|
||||
SHLIB_PREREQS = submake-ecpglib submake-pgtypeslib
|
||||
|
||||
SHLIB_EXPORTS = exports.txt
|
||||
|
@ -34,7 +34,8 @@ ifneq ($(PORTNAME), win32)
|
||||
OBJS += thread.o
|
||||
endif
|
||||
|
||||
SHLIB_LINK = -L../pgtypeslib -lpgtypes $(libpq) $(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS)
|
||||
SHLIB_LINK_INTERNAL = -L../pgtypeslib -lpgtypes $(libpq)
|
||||
SHLIB_LINK = $(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS)
|
||||
SHLIB_PREREQS = submake-libpq submake-pgtypeslib
|
||||
|
||||
SHLIB_EXPORTS = exports.txt
|
||||
|
@ -25,7 +25,7 @@ override CFLAGS += $(PTHREAD_CFLAGS)
|
||||
# Need to recompile any libpgport object files
|
||||
LIBS := $(filter-out -lpgport, $(LIBS))
|
||||
|
||||
SHLIB_LINK += -lm
|
||||
SHLIB_LINK += $(filter -lm, $(LIBS))
|
||||
|
||||
SHLIB_EXPORTS = exports.txt
|
||||
|
||||
|
@ -5,8 +5,9 @@ override CPPFLAGS := -I../../include -I$(top_srcdir)/src/interfaces/ecpg/include
|
||||
-I$(libpq_srcdir) $(CPPFLAGS)
|
||||
override CFLAGS += $(PTHREAD_CFLAGS)
|
||||
|
||||
override LDFLAGS := -L../../ecpglib -L../../pgtypeslib $(filter-out -l%, $(libpq)) $(LDFLAGS)
|
||||
override LIBS := -lecpg -lpgtypes $(filter -l%, $(libpq)) $(LIBS) $(PTHREAD_LIBS)
|
||||
LDFLAGS_INTERNAL += -L../../ecpglib -lecpg -L../../pgtypeslib -lpgtypes $(libpq)
|
||||
|
||||
override LIBS += $(PTHREAD_LIBS)
|
||||
|
||||
# Standard way to invoke the ecpg preprocessor
|
||||
ECPG = ../../preproc/ecpg --regression -I$(srcdir)/../../include -I$(srcdir)
|
||||
|
@ -6,8 +6,7 @@ include $(top_srcdir)/$(subdir)/../Makefile.regress
|
||||
# Use special informix compatibility switch for all tests in this directory
|
||||
ECPG += -C INFORMIX
|
||||
|
||||
override LDFLAGS := -L../../compatlib $(LDFLAGS)
|
||||
override LIBS := -lecpg_compat $(LIBS)
|
||||
LDFLAGS_INTERNAL += -L../../compatlib -lecpg_compat
|
||||
|
||||
TESTS = test_informix test_informix.c \
|
||||
test_informix2 test_informix2.c \
|
||||
|
@ -3,11 +3,11 @@ top_builddir = ../../../..
|
||||
include $(top_builddir)/src/Makefile.global
|
||||
|
||||
ifeq ($(PORTNAME), win32)
|
||||
LDLIBS += -lws2_32
|
||||
LDFLAGS += -lws2_32
|
||||
endif
|
||||
|
||||
override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
|
||||
override LDLIBS := $(libpq_pgport) $(LDLIBS)
|
||||
LDFLAGS_INTERNAL += $(libpq_pgport)
|
||||
|
||||
PROGS = uri-regress
|
||||
|
||||
|
Reference in New Issue
Block a user