postgres.git / summary / log / commit / refs

commit    aae398a87cfafcb1d62fd1e464b2c4d2525a039a
Author:   Noah Misch <noah@leadboat.com>
Date:     Mon Sep 06 18:27:59 2021 +0000
First released in: 15.0, 13.5, 14.0

    AIX: Fix missing libpq symbols by respecting SHLIB_EXPORTS.
    
    We make each AIX shared library export all globals found in .o files
    that originate in the library.  That doesn't include symbols acquired by
    -lpgcommon_shlib.  That is good on average, but it became a problem for
    libpq when commit e6afa8918c461c1dd80c5063a950518fa4e950cd moved five
    official libpq API symbols into src/common.  Fix this by implementing
    the SHLIB_EXPORTS mechanism for AIX, so affected libraries export the
    same symbols that they export on Linux.  This reintroduces symbols
    pg_encoding_to_char, pg_utf_mblen, pg_char_to_encoding,
    pg_valid_server_encoding, and pg_valid_server_encoding_id.  Back-patch
    to v13, where the aforementioned commit first appeared.  While a minor
    release is usually the wrong time to add or remove symbol exports in
    libpq or libecpg, we should expect users to want each documented symbol.
    
    Tony Reix
    
    Discussion: https://postgr.es/m/PR3PR02MB6396742E2FC3E77D37A920BC86C79@PR3PR02MB6396.eurprd02.prod.outlook.com


src/Makefile.shlib | 4 ++++ src/port/README | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Makefile.shlib b/src/Makefile.shlib index 1e08698b497..b8cbc96b28b 100644 --- a/src/Makefile.shlib +++ b/src/Makefile.shlib @@ -329,7 +329,11 @@ $(shlib): $(OBJS) | $(SHLIB_PREREQS) rm -f $(stlib) $(LINK.static) $(stlib) $^ $(RANLIB) $(stlib) +ifeq (,$(SHLIB_EXPORTS)) $(MKLDEXPORT) $(stlib) $(shlib) >$(exports_file) +else + ( echo '#! $(shlib)'; $(AWK) '/^[^#]/ {printf "%s\n",$$1}' $(SHLIB_EXPORTS) ) >$(exports_file) +endif $(COMPILER) -o $(shlib) $(stlib) -Wl,-bE:$(exports_file) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) rm -f $(stlib) $(AR) $(AROPT) $(stlib) $(shlib) diff --git a/src/port/README b/src/port/README index c446b46e26e..97f18a62338 100644 --- a/src/port/README +++ b/src/port/README @@ -28,5 +28,5 @@ applications. from libpgport are linked first. This avoids having applications dependent on symbols that are _used_ by libpq, but not intended to be exported by libpq. libpq's libpgport usage changes over time, so such a -dependency is a problem. Windows, Linux, and macOS use an export list to -control the symbols exported by libpq. +dependency is a problem. Windows, Linux, AIX, and macOS use an export +list to control the symbols exported by libpq. [parent: d8a266c5e1bd]