Use -Bsymbolic for shared libraries on HP-UX and Solaris.
authorTom Lane
Tue, 11 Sep 2018 02:22:12 +0000 (22:22 -0400)
committerTom Lane
Tue, 11 Sep 2018 02:22:12 +0000 (22:22 -0400)
These platforms are also subject to the mis-linking problem addressed
in commit e3d77ea6b.  It's not clear whether we could solve it with
a solution equivalent to GNU ld's version scripts, but -Bsymbolic
appears to fix it, so let's use that.

Like the previous commit, back-patch as far as v10.

Discussion: https://postgr.es/m/153626613985.23143.4743626885618266803@wrigleys.postgresql.org

src/Makefile.shlib

index 2446074693ed8a9b3ac3817ebe0df030219f5ac9..c24ca309b7178431f25b5520722828afea682877 100644 (file)
@@ -197,12 +197,12 @@ ifeq ($(PORTNAME), hpux)
     shlib          = lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
   endif
   ifeq ($(with_gnu_ld), yes)
-    LINK.shared        = $(CC) -shared
+    LINK.shared        = $(CC) -shared -Wl,-Bsymbolic
     ifdef soname
       LINK.shared  += -Wl,-h -Wl,$(soname)
     endif
   else
-    LINK.shared        = $(LD) -b
+    LINK.shared        = $(LD) -b -Bsymbolic
     ifdef soname
       LINK.shared  += +h $(soname)
     endif
@@ -239,9 +239,9 @@ endif
 
 ifeq ($(PORTNAME), solaris)
   ifeq ($(GCC), yes)
-    LINK.shared        = $(COMPILER) -shared
+    LINK.shared        = $(COMPILER) -shared -Wl,-Bsymbolic
   else
-    LINK.shared        = $(COMPILER) -G
+    LINK.shared        = $(COMPILER) -G -Bsymbolic
   endif
   ifdef soname
     ifeq ($(with_gnu_ld), yes)