aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2017-06-01 13:32:55 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2017-06-01 13:32:55 -0400
commite9a3c047a5fc701d2efb776be2b351645ea001c8 (patch)
tree3950f83c0f0290ab36248d47dc6b125b219b2b9c /src
parent2712da8b64b4e399a2666cce2c25329f4f834f2d (diff)
downloadpostgresql-e9a3c047a5fc701d2efb776be2b351645ea001c8.tar.gz
postgresql-e9a3c047a5fc701d2efb776be2b351645ea001c8.zip
Always use -fPIC, not -fpic, when building shared libraries with gcc.
On some platforms, -fpic fails for sufficiently large shared libraries. We've mostly not hit that boundary yet, but there are some extensions such as Citus and pglogical where it's becoming a problem. A bit of research suggests that the penalty for -fPIC is small, in the single-digit-percentage range --- and there's none at all on popular platforms such as x86_64. So let's just default to -fPIC everywhere and provide one less thing for extension developers to worry about. Per complaint from Christoph Berg. Back-patch to all supported branches. (I did not bother to touch the recently-removed Makefiles for sco and unixware in the back branches, though. We'd have no way to test that it doesn't break anything on those platforms.) Discussion: https://postgr.es/m/20170529155850.qojdfrwkkqnjb3ap@msg.df7cb.de
Diffstat (limited to 'src')
-rw-r--r--src/makefiles/Makefile.linux7
-rw-r--r--src/makefiles/Makefile.netbsd4
-rw-r--r--src/makefiles/Makefile.openbsd4
3 files changed, 3 insertions, 12 deletions
diff --git a/src/makefiles/Makefile.linux b/src/makefiles/Makefile.linux
index 52bf0b1e2ba..f4f091caef5 100644
--- a/src/makefiles/Makefile.linux
+++ b/src/makefiles/Makefile.linux
@@ -1,15 +1,14 @@
AROPT = crs
+
export_dynamic = -Wl,-E
# Use --enable-new-dtags to generate DT_RUNPATH instead of DT_RPATH.
# This allows LD_LIBRARY_PATH to still work when needed.
rpath = -Wl,-rpath,'$(rpathdir)',--enable-new-dtags
+
DLSUFFIX = .so
-ifeq "$(findstring sparc,$(host_cpu))" "sparc"
CFLAGS_SL = -fPIC
-else
-CFLAGS_SL = -fpic
-endif
+
# Rule for building a shared library from a single .o file
%.so: %.o
diff --git a/src/makefiles/Makefile.netbsd b/src/makefiles/Makefile.netbsd
index 31a52601aff..43841c15973 100644
--- a/src/makefiles/Makefile.netbsd
+++ b/src/makefiles/Makefile.netbsd
@@ -9,11 +9,7 @@ endif
DLSUFFIX = .so
-ifeq ($(findstring sparc,$(host_cpu)), sparc)
CFLAGS_SL = -fPIC -DPIC
-else
-CFLAGS_SL = -fpic -DPIC
-endif
# Rule for building a shared library from a single .o file
diff --git a/src/makefiles/Makefile.openbsd b/src/makefiles/Makefile.openbsd
index 7bf54933090..d8fde49d5c8 100644
--- a/src/makefiles/Makefile.openbsd
+++ b/src/makefiles/Makefile.openbsd
@@ -7,11 +7,7 @@ endif
DLSUFFIX = .so
-ifeq ($(findstring sparc,$(host_cpu)), sparc)
CFLAGS_SL = -fPIC -DPIC
-else
-CFLAGS_SL = -fpic -DPIC
-endif
# Rule for building a shared library from a single .o file